ibus-1.5.11/0000755000000000000000000000000012551655056007522 500000000000000ibus-1.5.11/ibus.spec.in0000644000000000000000000002221712551654123011663 00000000000000%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %{!?gtk2_binary_version: %define gtk2_binary_version %(pkg-config --variable=gtk_binary_version gtk+-2.0)} %{!?gtk3_binary_version: %define gtk3_binary_version %(pkg-config --variable=gtk_binary_version gtk+-3.0)} # Build flags %define build_python_library 0 %define glib_ver %([ -a %{_libdir}/pkgconfig/glib-2.0.pc ] && pkg-config --modversion glib-2.0 | cut -d. -f 1,2 || echo -n "999") %define gconf2_version 2.12.0 %define dbus_python_version 0.83.0 %define im_chooser_version 1.2.5 Name: ibus Version: @IBUS_VERSION@ Release: 1%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries URL: https://github.com/ibus/ibus/wiki Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz Source1: xinput-ibus # Patch0: ibus-HEAD.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: cvs BuildRequires: gettext-devel BuildRequires: libtool BuildRequires: python BuildRequires: gtk2-devel BuildRequires: gtk3-devel BuildRequires: dbus-glib-devel BuildRequires: dbus-python-devel >= %{dbus_python_version} BuildRequires: desktop-file-utils BuildRequires: gtk-doc BuildRequires: GConf2-devel BuildRequires: dconf-devel BuildRequires: pygobject2-devel BuildRequires: intltool BuildRequires: iso-codes-devel Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-gtk2 = %{version}-%{release} Requires: %{name}-gtk3 = %{version}-%{release} Requires: %{name}-conf = %{version}-%{release} Requires: pygtk2 Requires: iso-codes Requires: dbus-python >= %{dbus_python_version} Requires: im-chooser >= %{im_chooser_version} Requires: notify-python Requires: librsvg2 Requires(post): desktop-file-utils Requires(postun): desktop-file-utils Requires(post): %{_sbindir}/alternatives Requires(postun): %{_sbindir}/alternatives Obsoletes: ibus-qt < 1.1.0 %define _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf %description IBus means Intelligent Input Bus. It is an input framework for Linux OS. %package libs Summary: IBus libraries Group: System Environment/Libraries Requires: glib2 >= %{glib_ver} Requires: dbus >= 1.2.4 %description libs This package contains the libraries for IBus %package gconf Summary: IBus configuration module using GConf Group: System Environment/Libraries Provides: %{name}-conf = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: GConf2 >= %{gconf2_version} Requires(pre): GConf2 >= %{gconf2_version} Requires(post): GConf2 >= %{gconf2_version} Requires(preun): GConf2 >= %{gconf2_version} %description gconf This package contains ibus configuration module using GConf %package dconf Summary: IBus configuration module using DConf Group: System Environment/Libraries Provides: %{name}-conf = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires(posttrans): dconf %description dconf This package contains ibus configuration module using DConf %package gtk2 Summary: IBus im module for gtk2 Group: System Environment/Libraries Requires: %{name} = %{version}-%{release} Requires(post): glib2 >= %{glib_ver} %description gtk2 This package contains ibus im module for gtk2 %package gtk3 Summary: IBus im module for gtk3 Group: System Environment/Libraries Requires: %{name} = %{version}-%{release} Requires(post): glib2 >= %{glib_ver} %description gtk3 This package contains ibus im module for gtk3 %package devel Summary: Development tools for ibus Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: glib2-devel Requires: dbus-devel %description devel The ibus-devel package contains the header files and developer docs for ibus. %package devel-docs Summary: Developer documents for ibus Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: gtk-doc %description devel-docs The ibus-devel-docs package contains developer documentation for ibus %prep %setup -q # %patch0 -p1 %build OPTIONS="--disable-static --enable-gtk2 --enable-gtk3 --enable-xim --disable-gtk-doc --enable-introspection --enable-gconf" %if %{build_python_library} OPTIONS="$OPTIONS --enable-python-library" %else OPTIONS="$OPTIONS --disable-python-library" %endif %configure $OPTIONS # make -C po update-gmo make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install rm -f $RPM_BUILD_ROOT%{_libdir}/libibus-1.0.la rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{gtk2_binary_version}/immodules/im-ibus.la rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/%{gtk3_binary_version}/immodules/im-ibus.la # install xinput config file install -pm 644 -D %{SOURCE1} $RPM_BUILD_ROOT%{_xinputconf} # install .desktop files echo "NoDisplay=true" >> $RPM_BUILD_ROOT%{_datadir}/applications/ibus.desktop echo "NoDisplay=true" >> $RPM_BUILD_ROOT%{_datadir}/applications/ibus-setup.desktop desktop-file-install --delete-original \ --dir $RPM_BUILD_ROOT%{_datadir}/applications \ $RPM_BUILD_ROOT%{_datadir}/applications/* %find_lang %{name}10 %clean rm -rf $RPM_BUILD_ROOT %post # recreate icon cache touch --no-create %{_datadir}/icons/hicolor || : [ -x %{_bindir}/gtk-update-icon-cache ] && \ %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : %{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || : %post gconf export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : %pre gconf if [ "$1" -gt 1 ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : fi %preun gconf if [ "$1" -eq 0 ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : fi %postun # recreate icon cache touch --no-create %{_datadir}/icons/hicolor || : [ -x %{_bindir}/gtk-update-icon-cache ] && \ %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : if [ "$1" = "0" ]; then %{_sbindir}/alternatives --remove xinputrc %{_xinputconf} || : # if alternative was set to manual, reset to auto [ -L %{_sysconfdir}/alternatives/xinputrc -a "`readlink %{_sysconfdir}/alternatives/xinputrc`" = "%{_xinputconf}" ] && %{_sbindir}/alternatives --auto xinputrc || : fi %postun dconf if [ "$1" -eq 0 ] ; then /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : rm -f %{_sysconfdir}/dconf/db/ibus fi %posttrans dconf /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : dconf update &> /dev/null || : %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig %post gtk2 %{_bindir}/update-gtk-immodules %{_host} %postun gtk2 %{_bindir}/update-gtk-immodules %{_host} %post gtk3 %{_bindir}/gtk-query-immodules-3.0-%{__isa_bits} --update-cache %postun gtk3 %{_bindir}/gtk-query-immodules-3.0-%{__isa_bits} --update-cache %files -f %{name}10.lang %defattr(-,root,root,-) %doc AUTHORS COPYING README %if %{build_python_library} %dir %{python_sitelib}/ibus %{python_sitelib}/ibus/* %endif %{python_sitearch}/gi/overrides/IBus.py* %dir %{_datadir}/ibus/ %{_bindir}/ibus %{_bindir}/ibus-daemon %{_bindir}/ibus-setup %{_datadir}/ibus/component/gtkpanel.xml %{_datadir}/ibus/component/simple.xml %{_datadir}/ibus/keymaps/* %{_datadir}/ibus/setup/* %{_datadir}/applications/* %{_datadir}/icons/hicolor/*/apps/* %if %{build_python_library} %{_libexecdir}/ibus-ui-gtk %endif %{_libexecdir}/ibus-ui-gtk3 %{_libexecdir}/ibus-x11 %{_libexecdir}/ibus-engine-simple # %{_sysconfdir}/xdg/autostart/ibus.desktop %{_datadir}/bash-completion/completions/ibus.bash %config %{_xinputconf} %files libs %defattr(-,root,root,-) %{_libdir}/libibus-1.0.so.* %{_libdir}/girepository-1.0/IBus-1.0.typelib %files gconf %defattr(-,root,root,-) %{_datadir}/ibus/component/gconf.xml %{_libexecdir}/ibus-gconf %{_sysconfdir}/gconf/schemas/ibus.schemas %files dconf %defattr(-,root,root,-) %{_datadir}/ibus/component/dconf.xml %{_libexecdir}/ibus-dconf %{_sysconfdir}/dconf/db/ibus.d %{_sysconfdir}/dconf/profile/ibus %{_datadir}/GConf/gsettings/ibus.convert %{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.gschema.xml %files gtk2 %defattr(-,root,root,-) %{_libdir}/gtk-2.0/%{gtk2_binary_version}/immodules/im-ibus.so %files gtk3 %defattr(-,root,root,-) %{_libdir}/gtk-3.0/%{gtk3_binary_version}/immodules/im-ibus.so %files devel %defattr(-,root,root,-) %{_libdir}/lib*.so %{_libdir}/pkgconfig/* %{_includedir}/* %{_datadir}/gir-1.0/IBus-1.0.gir %{_datadir}/vala/vapi/ibus-1.0.vapi %{_datadir}/vala/vapi/ibus-1.0.deps %files devel-docs %defattr(-,root,root,-) %{_datadir}/gtk-doc/html/* %changelog * @DATE_DISPLAY@ Peng Huang - @IBUS_VERSION@-1 - Current version. ibus-1.5.11/bindings/0000755000000000000000000000000012551654523011315 500000000000000ibus-1.5.11/bindings/vala/0000755000000000000000000000000012551654523012240 500000000000000ibus-1.5.11/bindings/vala/ibus-1.0.vapi0000644000000000000000000160273712551654523014317 00000000000000/* ibus-1.0.vapi generated by vapigen-0.28, do not modify. */ [CCode (cprefix = "IBus", gir_namespace = "IBus", gir_version = "1.0", lower_case_cprefix = "ibus_")] namespace IBus { [CCode (cheader_filename = "ibus.h", type_id = "ibus_attr_list_get_type ()")] public class AttrList : IBus.Serializable { public weak GLib.Array attributes; [CCode (has_construct_function = false)] public AttrList (); public void append (IBus.Attribute attr); public unowned IBus.Attribute @get (uint index); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_attribute_get_type ()")] public class Attribute : IBus.Serializable { public uint end_index; public uint start_index; public uint type; public uint value; [CCode (has_construct_function = false)] public Attribute (uint type, uint value, uint start_index, uint end_index); public uint get_attr_type (); public uint get_end_index (); public uint get_start_index (); public uint get_value (); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_bus_get_type ()")] public class Bus : IBus.Object { [CCode (has_construct_function = false)] public Bus (); public bool add_match (string rule); public async void add_match_async (string rule, int timeout_msec, GLib.Cancellable? cancellable); public bool add_match_async_finish (GLib.AsyncResult res) throws GLib.Error; [CCode (has_construct_function = false)] public Bus.@async (); public IBus.InputContext create_input_context (string client_name); public async void create_input_context_async (string client_name, int timeout_msec, GLib.Cancellable? cancellable); public IBus.InputContext create_input_context_async_finish (GLib.AsyncResult res) throws GLib.Error; public string current_input_context (); public async void current_input_context_async (int timeout_msec, GLib.Cancellable? cancellable); public string current_input_context_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool exit (bool restart); public async void exit_async (bool restart, int timeout_msec, GLib.Cancellable? cancellable); public bool exit_async_finish (GLib.AsyncResult res) throws GLib.Error; public unowned IBus.Config get_config (); public unowned GLib.DBusConnection get_connection (); [CCode (array_length = false, array_null_terminated = true)] public IBus.EngineDesc[] get_engines_by_names ([CCode (array_length = false, array_null_terminated = true)] string[] names); public unowned IBus.EngineDesc get_global_engine (); public async void get_global_engine_async (int timeout_msec, GLib.Cancellable? cancellable); public unowned IBus.EngineDesc get_global_engine_async_finish (GLib.AsyncResult res) throws GLib.Error; public GLib.Variant get_ibus_property (string property_name); public async void get_ibus_property_async (string property_name, int timeout_msec, GLib.Cancellable? cancellable); public GLib.Variant get_ibus_property_async_finish (GLib.AsyncResult res) throws GLib.Error; public string get_name_owner (string name); public async void get_name_owner_async (string name, int timeout_msec, GLib.Cancellable? cancellable); public string get_name_owner_async_finish (GLib.AsyncResult res) throws GLib.Error; [Deprecated (since = "1.5.3")] public bool get_use_global_engine (); [Deprecated (since = "1.5.3")] public async void get_use_global_engine_async (int timeout_msec, GLib.Cancellable? cancellable); [Deprecated (since = "1.5.3")] public bool get_use_global_engine_async_finish (GLib.AsyncResult res) throws GLib.Error; [Deprecated (since = "1.5.3")] public bool get_use_sys_layout (); [Deprecated (since = "1.5.3")] public async void get_use_sys_layout_async (int timeout_msec, GLib.Cancellable? cancellable); [Deprecated (since = "1.5.3")] public bool get_use_sys_layout_async_finish (GLib.AsyncResult res) throws GLib.Error; public unowned string hello (); public bool is_connected (); [Deprecated (since = "1.5.3")] public bool is_global_engine_enabled (); [Deprecated (since = "1.5.3")] public async void is_global_engine_enabled_async (int timeout_msec, GLib.Cancellable? cancellable); [Deprecated (since = "1.5.3")] public bool is_global_engine_enabled_async_finish (GLib.AsyncResult res) throws GLib.Error; [Deprecated (since = "1.5.3")] public GLib.List list_active_engines (); [Deprecated (since = "1.5.3")] public async void list_active_engines_async (int timeout_msec, GLib.Cancellable? cancellable); [Deprecated (since = "1.5.3")] public GLib.List list_active_engines_async_finish (GLib.AsyncResult res) throws GLib.Error; public GLib.List list_engines (); public async void list_engines_async (int timeout_msec, GLib.Cancellable? cancellable); public GLib.List list_engines_async_finish (GLib.AsyncResult res) throws GLib.Error; public GLib.List list_names (); public GLib.List list_queued_owners (string name); public bool name_has_owner (string name); public async void name_has_owner_async (string name, int timeout_msec, GLib.Cancellable? cancellable); public bool name_has_owner_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool preload_engines ([CCode (array_length = false, array_null_terminated = true)] string[] names); public async void preload_engines_async ([CCode (array_length = false, array_null_terminated = true)] string[] names, int timeout_msec, GLib.Cancellable? cancellable); public bool preload_engines_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool register_component (IBus.Component component); public async void register_component_async (IBus.Component component, int timeout_msec, GLib.Cancellable? cancellable); public bool register_component_async_finish (GLib.AsyncResult res) throws GLib.Error; public uint release_name (string name); public async void release_name_async (string name, int timeout_msec, GLib.Cancellable? cancellable); public uint release_name_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool remove_match (string rule); public async void remove_match_async (string rule, int timeout_msec, GLib.Cancellable? cancellable); public bool remove_match_async_finish (GLib.AsyncResult res) throws GLib.Error; public uint32 request_name (string name, uint32 flags); public async void request_name_async (string name, uint flags, int timeout_msec, GLib.Cancellable? cancellable); public uint request_name_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool set_global_engine (string global_engine); public async void set_global_engine_async (string global_engine, int timeout_msec, GLib.Cancellable? cancellable); public bool set_global_engine_async_finish (GLib.AsyncResult res) throws GLib.Error; public void set_ibus_property (string property_name, GLib.Variant value); public async void set_ibus_property_async (string property_name, GLib.Variant value, int timeout_msec, GLib.Cancellable? cancellable); public bool set_ibus_property_async_finish (GLib.AsyncResult res) throws GLib.Error; public void set_watch_dbus_signal (bool watch); public void set_watch_ibus_signal (bool watch); [NoAccessorMethod] public bool connect_async { get; construct; } public signal void connected (); public signal void disconnected (); public signal void global_engine_changed (string name); public signal void name_owner_changed (string name, string old_owner, string new_owner); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_component_get_type ()")] public class Component : IBus.Serializable { [CCode (has_construct_function = false)] public Component (string name, string description, string version, string license, string author, string homepage, string command_line, string textdomain); public void add_engine (IBus.EngineDesc engine); public void add_observed_path (string path, bool access_fs); public bool check_modification (); [CCode (has_construct_function = false)] public Component.from_file (string filename); [CCode (has_construct_function = false)] public Component.from_xml_node (IBus.XML node); public unowned string get_author (); public unowned string get_description (); public GLib.List get_engines (); public unowned string get_exec (); public unowned string get_homepage (); public unowned string get_license (); public unowned string get_name (); public GLib.List get_observed_paths (); public unowned string get_textdomain (); public unowned string get_version (); public void output (GLib.StringBuilder output, int indent); public void output_engines (GLib.StringBuilder output, int indent); public string author { get; construct; } [NoAccessorMethod] public string command_line { owned get; construct; } public string description { get; construct; } public string homepage { get; construct; } public string license { get; construct; } public string name { get; construct; } public string textdomain { get; construct; } public string version { get; construct; } } [CCode (cheader_filename = "ibus.h", type_id = "ibus_config_get_type ()")] public class Config : IBus.Proxy, GLib.AsyncInitable, GLib.DBusInterface, GLib.Initable { [CCode (has_construct_function = false)] public Config (GLib.DBusConnection connection, GLib.Cancellable? cancellable = null) throws GLib.Error; [CCode (has_construct_function = false)] public Config.async_finish (GLib.AsyncResult res) throws GLib.Error; public GLib.Variant get_value (string section, string name); public async void get_value_async (string section, string name, int timeout_ms, GLib.Cancellable? cancellable); public GLib.Variant get_value_async_finish (GLib.AsyncResult result) throws GLib.Error; public GLib.Variant get_values (string section); public async void get_values_async (string section, int timeout_ms, GLib.Cancellable? cancellable); public GLib.Variant get_values_async_finish (GLib.AsyncResult result) throws GLib.Error; public static async void new_async (GLib.DBusConnection connection, GLib.Cancellable? cancellable); public bool set_value (string section, string name, GLib.Variant value); public async void set_value_async (string section, string name, GLib.Variant value, int timeout_ms, GLib.Cancellable? cancellable); public bool set_value_async_finish (GLib.AsyncResult result) throws GLib.Error; public bool unset (string section, string name); public bool unwatch (string? section, string? name); public bool watch (string? section, string? name); public signal void value_changed (string section, string name, GLib.Variant value); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_config_service_get_type ()")] public class ConfigService : IBus.Service { [CCode (has_construct_function = false)] public ConfigService (GLib.DBusConnection connection); [NoWrapper] public virtual GLib.Variant get_value (string section, string name) throws GLib.Error; [NoWrapper] public virtual GLib.Variant get_values (string section) throws GLib.Error; [NoWrapper] public virtual bool set_value (string section, string name, GLib.Variant value) throws GLib.Error; [NoWrapper] public virtual bool unset_value (string section, string name) throws GLib.Error; public void value_changed (string section, string name, GLib.Variant value); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_engine_get_type ()")] public class Engine : IBus.Service { public uint client_capabilities; public IBus.Rectangle cursor_area; public bool enabled; public bool has_focus; [CCode (has_construct_function = false)] public Engine (string engine_name, string object_path, GLib.DBusConnection connection); public void commit_text (IBus.Text text); public void delete_surrounding_text (int offset, uint nchars); public void forward_key_event (uint keyval, uint keycode, uint state); public void get_content_type (out uint purpose, out uint hints); public unowned string get_name (); public void get_surrounding_text (out unowned IBus.Text text, out uint cursor_pos, out uint anchor_pos); public void hide_auxiliary_text (); public void hide_lookup_table (); public void hide_preedit_text (); public void register_properties (IBus.PropList prop_list); public void show_auxiliary_text (); public void show_lookup_table (); public void show_preedit_text (); public void update_auxiliary_text (IBus.Text text, bool visible); public void update_lookup_table (IBus.LookupTable lookup_table, bool visible); public void update_lookup_table_fast (IBus.LookupTable lookup_table, bool visible); public void update_preedit_text (IBus.Text text, uint cursor_pos, bool visible); public void update_preedit_text_with_mode (IBus.Text text, uint cursor_pos, bool visible, IBus.PreeditFocusMode mode); public void update_property (IBus.Property prop); [CCode (has_construct_function = false)] public Engine.with_type (GLib.Type engine_type, string engine_name, string object_path, GLib.DBusConnection connection); [NoAccessorMethod] public string engine_name { owned get; construct; } public virtual signal void cancel_hand_writing (uint n_strokes); public virtual signal void candidate_clicked (uint index, uint button, uint state); public virtual signal void cursor_down (); public virtual signal void cursor_up (); public virtual signal void disable (); public virtual signal void enable (); public virtual signal void focus_in (); public virtual signal void focus_out (); public virtual signal void page_down (); public virtual signal void page_up (); public virtual signal void process_hand_writing_event (void* coordinates, uint coordinates_len); public virtual signal bool process_key_event (uint keyval, uint keycode, uint state); public virtual signal void property_activate (string prop_name, uint prop_state); public virtual signal void property_hide (string prop_name); public virtual signal void property_show (string prop_name); public virtual signal void reset (); public virtual signal void set_capabilities (uint caps); public virtual signal void set_content_type (uint purpose, uint hints); public virtual signal void set_cursor_location (int x, int y, int w, int h); public virtual signal void set_surrounding_text (GLib.Object text, uint cursor_index, uint anchor_pos); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_engine_desc_get_type ()")] public class EngineDesc : IBus.Serializable { [CCode (has_construct_function = false)] public EngineDesc (string name, string longname, string description, string language, string license, string author, string icon, string layout); [CCode (has_construct_function = false)] public EngineDesc.from_xml_node (IBus.XML node); public unowned string get_author (); public unowned string get_description (); public unowned string get_hotkeys (); public unowned string get_icon (); public unowned string get_icon_prop_key (); public unowned string get_language (); public unowned string get_layout (); public unowned string get_layout_option (); public unowned string get_layout_variant (); public unowned string get_license (); public unowned string get_longname (); public unowned string get_name (); public uint get_rank (); public unowned string get_setup (); public unowned string get_symbol (); public unowned string get_textdomain (); public unowned string get_version (); public void output (GLib.StringBuilder output, int indent); public string author { get; construct; } public string description { get; construct; } public string hotkeys { get; construct; } public string icon { get; construct; } public string icon_prop_key { get; construct; } public string language { get; construct; } public string layout { get; construct; } public string layout_option { get; construct; } public string layout_variant { get; construct; } public string license { get; construct; } public string longname { get; construct; } public string name { get; construct; } public uint rank { get; construct; } public string setup { get; construct; } public string symbol { get; construct; } public string textdomain { get; construct; } public string version { get; construct; } } [CCode (cheader_filename = "ibus.h", type_id = "ibus_engine_simple_get_type ()")] public class EngineSimple : IBus.Engine { [CCode (has_construct_function = false)] protected EngineSimple (); public bool add_compose_file (string file); public void add_table ([CCode (array_length = false)] uint16[] data, int max_seq_len, int n_seqs); public bool add_table_by_locale (string? locale); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_factory_get_type ()")] public class Factory : IBus.Service { [CCode (has_construct_function = false)] public Factory (GLib.DBusConnection connection); public void add_engine (string engine_name, GLib.Type engine_type); [HasEmitter] public virtual signal IBus.Engine? create_engine (string engine_name); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_hotkey_profile_get_type ()")] public class HotkeyProfile : IBus.Serializable { [CCode (has_construct_function = false)] public HotkeyProfile (); public bool add_hotkey (uint keyval, uint modifiers, GLib.Quark event); public bool add_hotkey_from_string (string str, GLib.Quark event); public GLib.Quark filter_key_event (uint keyval, uint modifiers, uint prev_keyval, uint prev_modifiers, void* user_data); public GLib.Quark lookup_hotkey (uint keyval, uint modifiers); public bool remove_hotkey (uint keyval, uint modifiers); public bool remove_hotkey_by_event (GLib.Quark event); public virtual signal void trigger (uint event, void* user_data); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_input_context_get_type ()")] public class InputContext : IBus.Proxy, GLib.AsyncInitable, GLib.DBusInterface, GLib.Initable { [CCode (has_construct_function = false)] public InputContext (string path, GLib.DBusConnection connection, GLib.Cancellable? cancellable = null) throws GLib.Error; [CCode (has_construct_function = false)] public InputContext.async_finish (GLib.AsyncResult res) throws GLib.Error; public void cancel_hand_writing (uint n_strokes); public void focus_in (); public void focus_out (); public unowned IBus.EngineDesc get_engine (); public async void get_engine_async (int timeout_msec, GLib.Cancellable? cancellable); public unowned IBus.EngineDesc get_engine_async_finish (GLib.AsyncResult res) throws GLib.Error; public static unowned IBus.InputContext get_input_context (string path, GLib.DBusConnection connection); public static async void get_input_context_async (string path, GLib.DBusConnection connection, GLib.Cancellable? cancellable); public static unowned IBus.InputContext get_input_context_async_finish (GLib.AsyncResult res) throws GLib.Error; public bool needs_surrounding_text (); public static async void new_async (string path, GLib.DBusConnection connection, GLib.Cancellable? cancellable); public void process_hand_writing_event (double coordinates, uint coordinates_len); public bool process_key_event (uint32 keyval, uint32 keycode, uint32 state); public async void process_key_event_async (uint32 keyval, uint32 keycode, uint32 state, int timeout_msec, GLib.Cancellable? cancellable); public bool process_key_event_async_finish (GLib.AsyncResult res) throws GLib.Error; public void property_activate (string prop_name, uint32 state); public void reset (); public void set_capabilities (uint32 capabilities); public void set_content_type (uint purpose, uint hints); public void set_cursor_location (int32 x, int32 y, int32 w, int32 h); public void set_engine (string name); public void set_surrounding_text (IBus.Text text, uint32 cursor_pos, uint32 anchor_pos); public signal void commit_text (IBus.Text text); public signal void cursor_down_lookup_table (); public signal void cursor_up_lookup_table (); public signal void delete_surrounding_text (int offset, uint n_chars); public signal void disabled (); public signal void enabled (); public signal void forward_key_event (uint keyval, uint keycode, uint modifiers); public signal void hide_auxiliary_text (); public signal void hide_lookup_table (); public signal void hide_preedit_text (); public signal void page_down_lookup_table (); public signal void page_up_lookup_table (); public signal void register_properties (IBus.PropList props); public signal void show_auxiliary_text (); public signal void show_lookup_table (); public signal void show_preedit_text (); public signal void update_auxiliary_text (IBus.Text text, bool visible); public signal void update_lookup_table (IBus.LookupTable table, bool visible); public signal void update_preedit_text (IBus.Text text, uint cursor_pos, bool visible); public signal void update_property (IBus.Property prop); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_keymap_get_type ()")] public class Keymap : IBus.Object { [CCode (array_length = false, array_null_terminated = true)] public weak uint[] keymap; public weak string name; [CCode (has_construct_function = false)] [Deprecated] public Keymap (string name); public static IBus.Keymap @get (string name); public uint lookup_keysym (uint16 keycode, uint32 state); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_lookup_table_get_type ()")] public class LookupTable : IBus.Serializable { public weak GLib.Array candidates; public uint cursor_pos; public bool cursor_visible; public weak GLib.Array labels; public int orientation; public uint page_size; public bool round; [CCode (has_construct_function = false)] public LookupTable (uint page_size, uint cursor_pos, bool cursor_visible, bool round); public void append_candidate (IBus.Text text); public void append_label (IBus.Text text); public void clear (); public bool cursor_down (); public bool cursor_up (); public unowned IBus.Text get_candidate (uint index); public uint get_cursor_in_page (); public uint get_cursor_pos (); public unowned IBus.Text get_label (uint index); public uint get_number_of_candidates (); public int get_orientation (); public uint get_page_size (); public bool is_cursor_visible (); public bool is_round (); public bool page_down (); public bool page_up (); public void set_cursor_pos (uint cursor_pos); public void set_cursor_visible (bool visible); public void set_label (uint index, IBus.Text text); public void set_orientation (int orientation); public void set_page_size (uint page_size); public void set_round (bool round); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_object_get_type ()")] public class Object : GLib.InitiallyUnowned { public uint32 flags; [CCode (has_construct_function = false)] public Object (); [HasEmitter] public virtual signal void destroy (); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_observed_path_get_type ()")] public class ObservedPath : IBus.Serializable { public bool is_dir; public bool is_exist; public long mtime; public weak string path; [CCode (has_construct_function = false)] public ObservedPath (string path, bool fill_stat); public bool check_modification (); [CCode (has_construct_function = false)] public ObservedPath.from_xml_node (IBus.XML node, bool fill_stat); public void output (GLib.StringBuilder output, int indent); public GLib.List traverse (bool dir_only); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_panel_service_get_type ()")] public class PanelService : IBus.Service { [CCode (has_construct_function = false)] public PanelService (GLib.DBusConnection connection); public void candidate_clicked (uint index, uint button, uint state); public void cursor_down (); public void cursor_up (); public void page_down (); public void page_up (); public void property_activate (string prop_name, uint prop_state); public void property_hide (string prop_name); public void property_show (string prop_name); public virtual signal void cursor_down_lookup_table (); public virtual signal void cursor_up_lookup_table (); public virtual signal void destroy_context (string input_context_path); public virtual signal void focus_in (string input_context_path); public virtual signal void focus_out (string input_context_path); public virtual signal void hide_auxiliary_text (); public virtual signal void hide_language_bar (); public virtual signal void hide_lookup_table (); public virtual signal void hide_preedit_text (); public virtual signal void page_down_lookup_table (); public virtual signal void page_up_lookup_table (); public virtual signal void register_properties (IBus.PropList prop_list); public virtual signal void reset (); public virtual signal void set_content_type (uint purpose, uint hints); public virtual signal void set_cursor_location (int x, int y, int w, int h); public virtual signal void show_auxiliary_text (); public virtual signal void show_language_bar (); public virtual signal void show_lookup_table (); public virtual signal void show_preedit_text (); public virtual signal void start_setup (); public virtual signal void state_changed (); public virtual signal void update_auxiliary_text (IBus.Text text, bool visible); public virtual signal void update_lookup_table (IBus.LookupTable lookup_table, bool visible); public virtual signal void update_preedit_text (IBus.Text text, uint cursor_pos, bool visible); public virtual signal void update_property (IBus.Property prop); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_prop_list_get_type ()")] public class PropList : IBus.Serializable { public weak GLib.Array properties; [CCode (has_construct_function = false)] public PropList (); public void append (IBus.Property prop); public unowned IBus.Property @get (uint index); public bool update_property (IBus.Property prop); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_property_get_type ()")] public class Property : IBus.Serializable { [CCode (has_construct_function = false)] public Property (string key, IBus.PropType type, IBus.Text label, string? icon, IBus.Text tooltip, bool sensitive, bool visible, IBus.PropState state, IBus.PropList? prop_list); public unowned string get_icon (); public unowned string get_key (); public unowned IBus.Text get_label (); public IBus.PropType get_prop_type (); public bool get_sensitive (); public IBus.PropState get_state (); public unowned IBus.PropList get_sub_props (); public unowned IBus.Text get_symbol (); public unowned IBus.Text get_tooltip (); public bool get_visible (); public void set_icon (string icon); public void set_label (IBus.Text label); public void set_sensitive (bool sensitive); public void set_state (IBus.PropState state); public void set_sub_props (IBus.PropList prop_list); public void set_symbol (IBus.Text symbol); public void set_tooltip (IBus.Text tooltip); public void set_visible (bool visible); public bool update (IBus.Property prop_update); public string icon { get; set; } public string key { get; construct; } public IBus.Text label { get; set construct; } public IBus.PropType prop_type { get; construct; } public bool sensitive { get; set; } public IBus.PropState state { get; set; } public IBus.PropList sub_props { get; set; } public IBus.Text symbol { get; set construct; } public IBus.Text tooltip { get; set; } public bool visible { get; set; } } [CCode (cheader_filename = "ibus.h", type_id = "ibus_proxy_get_type ()")] public class Proxy : GLib.DBusProxy, GLib.AsyncInitable, GLib.DBusInterface, GLib.Initable { public uint32 flags; public bool own; [CCode (has_construct_function = false)] protected Proxy (); [HasEmitter] public virtual signal void destroy (); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_registry_get_type ()")] public class Registry : IBus.Serializable { [CCode (has_construct_function = false)] public Registry (); public bool check_modification (); public GLib.List get_components (); public GLib.List get_observed_paths (); public void load (); public bool load_cache (bool is_user); public bool load_cache_file (string filename); public void load_in_dir (string dirname); public void output (GLib.StringBuilder output, int indent); public bool save_cache (bool is_user); public bool save_cache_file (string filename); public void start_monitor_changes (); public signal void changed (); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_serializable_get_type ()")] public class Serializable : IBus.Object { [CCode (has_construct_function = false)] public Serializable (); [NoWrapper] public virtual bool copy (IBus.Serializable src); [NoWrapper] public virtual int deserialize (GLib.Variant variant); public GLib.Variant get_qattachment (GLib.Quark key); public void remove_qattachment (GLib.Quark key); [NoWrapper] public virtual bool serialize (GLib.VariantBuilder builder); public void set_qattachment (GLib.Quark key, GLib.Variant value); } [CCode (cheader_filename = "ibus.h", type_id = "ibus_service_get_type ()")] public class Service : IBus.Object { [CCode (has_construct_function = false)] public Service (GLib.DBusConnection connection, string path); [CCode (cname = "ibus_service_class_add_interfaces")] public class bool add_interfaces (string xml_data); public bool emit_signal (string dest_bus_name, string interface_name, string signal_name, GLib.Variant parameters) throws GLib.Error; public unowned GLib.DBusConnection get_connection (); public unowned string get_object_path (); public bool register (GLib.DBusConnection connection) throws GLib.Error; [NoWrapper] public virtual GLib.Variant? service_get_property (GLib.DBusConnection connection, string sender, string object_path, string interface_name, string property_name) throws GLib.Error; [NoWrapper] public virtual void service_method_call (GLib.DBusConnection connection, string sender, string object_path, string interface_name, string method_name, GLib.Variant parameters, GLib.DBusMethodInvocation invocation); [NoWrapper] public virtual bool service_set_property (GLib.DBusConnection connection, string sender, string object_path, string interface_name, string property_name, GLib.Variant value) throws GLib.Error; public void unregister (GLib.DBusConnection connection); public GLib.DBusConnection connection { get; construct; } public string object_path { get; construct; } } [CCode (cheader_filename = "ibus.h", type_id = "ibus_text_get_type ()")] public class Text : IBus.Serializable { public weak IBus.AttrList attrs; public bool is_static; public weak string text; [CCode (has_construct_function = false)] protected Text (); public void append_attribute (uint type, uint value, uint start_index, int end_index); [CCode (cname = "ibus_text_new_from_static_string", has_construct_function = false)] public Text.from_static_string (string str); [CCode (has_construct_function = false)] public Text.from_string (string str); [CCode (has_construct_function = false)] public Text.from_ucs4 (unichar str); [CCode (has_construct_function = false)] public Text.from_unichar (unichar c); public unowned IBus.AttrList get_attributes (); public uint get_length (); public unowned string get_text (); public void set_attributes (IBus.AttrList attrs); } [CCode (cheader_filename = "ibus.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "ibus_xml_get_type ()")] [Compact] public class XML { public weak string attributes; public weak string name; public weak GLib.List sub_nodes; public weak string text; public IBus.XML copy (); public void free (); public void output (GLib.StringBuilder output); public static IBus.XML parse_buffer (string buffer); public static IBus.XML parse_file (string name); } [CCode (cheader_filename = "ibus.h", has_type_id = false)] public struct Rectangle { public int x; public int y; public int width; public int height; } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_ATTR_TYPE_", type_id = "ibus_attr_type_get_type ()")] public enum AttrType { UNDERLINE, FOREGROUND, BACKGROUND } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_ATTR_UNDERLINE_", type_id = "ibus_attr_underline_get_type ()")] public enum AttrUnderline { NONE, SINGLE, DOUBLE, LOW, ERROR; public static unowned IBus.Attribute @new (uint underline_type, uint start_index, uint end_index); } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_BUS_NAME_FLAG_", type_id = "ibus_bus_name_flag_get_type ()")] [Flags] public enum BusNameFlag { ALLOW_REPLACEMENT, REPLACE_EXISTING, DO_NOT_QUEUE } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_BUS_REQUEST_NAME_REPLY_", type_id = "ibus_bus_request_name_reply_get_type ()")] public enum BusRequestNameReply { PRIMARY_OWNER, IN_QUEUE, EXISTS, ALREADY_OWNER } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_BUS_START_REPLY_", type_id = "ibus_bus_start_service_by_name_reply_get_type ()")] public enum BusStartServiceByNameReply { SUCCESS, ALREADY_RUNNING } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_CAP_", type_id = "ibus_capabilite_get_type ()")] [Flags] public enum Capabilite { PREEDIT_TEXT, AUXILIARY_TEXT, LOOKUP_TABLE, FOCUS, PROPERTY, SURROUNDING_TEXT } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_INPUT_HINT_", type_id = "ibus_input_hints_get_type ()")] [Flags] public enum InputHints { NONE, SPELLCHECK, NO_SPELLCHECK, WORD_COMPLETION, LOWERCASE, UPPERCASE_CHARS, UPPERCASE_WORDS, UPPERCASE_SENTENCES, INHIBIT_OSK, VERTICAL_WRITING } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_INPUT_PURPOSE_", type_id = "ibus_input_purpose_get_type ()")] public enum InputPurpose { FREE_FORM, ALPHA, DIGITS, NUMBER, PHONE, URL, EMAIL, NAME, PASSWORD, PIN } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_", type_id = "ibus_modifier_type_get_type ()")] [Flags] public enum ModifierType { SHIFT_MASK, LOCK_MASK, CONTROL_MASK, MOD1_MASK, MOD2_MASK, MOD3_MASK, MOD4_MASK, MOD5_MASK, BUTTON1_MASK, BUTTON2_MASK, BUTTON3_MASK, BUTTON4_MASK, BUTTON5_MASK, HANDLED_MASK, FORWARD_MASK, IGNORED_MASK, SUPER_MASK, HYPER_MASK, META_MASK, RELEASE_MASK, MODIFIER_MASK } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_", type_id = "ibus_object_flags_get_type ()")] [Flags] public enum ObjectFlags { IN_DESTRUCTION, DESTROYED, RESERVED_1, RESERVED_2 } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_ORIENTATION_", type_id = "ibus_orientation_get_type ()")] public enum Orientation { HORIZONTAL, VERTICAL, SYSTEM } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_ENGINE_PREEDIT_", type_id = "ibus_preedit_focus_mode_get_type ()")] public enum PreeditFocusMode { CLEAR, COMMIT } [CCode (cheader_filename = "ibus.h", cprefix = "PROP_STATE_", type_id = "ibus_prop_state_get_type ()")] public enum PropState { UNCHECKED, CHECKED, INCONSISTENT } [CCode (cheader_filename = "ibus.h", cprefix = "PROP_TYPE_", type_id = "ibus_prop_type_get_type ()")] public enum PropType { NORMAL, TOGGLE, RADIO, MENU, SEPARATOR } [CCode (cheader_filename = "ibus.h", cprefix = "IBUS_ERROR_")] public errordomain Error { NO_ENGINE, NO_CONFIG, FAILED; public static GLib.Quark quark (); } [CCode (cheader_filename = "ibus.h", has_target = false)] public delegate void FreeFunc (void* object); [CCode (cheader_filename = "ibus.h", has_target = false)] public delegate void ObjectDestroyFunc (IBus.Object object); [CCode (cheader_filename = "ibus.h", has_target = false)] public delegate bool SerializableCopyFunc (IBus.Serializable dest, IBus.Serializable src); [CCode (cheader_filename = "ibus.h", has_target = false)] public delegate int SerializableDeserializeFunc (IBus.Serializable serializable, GLib.Variant variant); [CCode (cheader_filename = "ibus.h", has_target = false)] public delegate bool SerializableSerializeFunc (IBus.Serializable serializable, GLib.VariantBuilder builder); [CCode (cheader_filename = "ibus.h", cname = "IBUS_0")] public const int @0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_1")] public const int @1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_2")] public const int @2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3")] public const int @3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_AltCursor")] public const int @3270_AltCursor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Attn")] public const int @3270_Attn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_BackTab")] public const int @3270_BackTab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_ChangeScreen")] public const int @3270_ChangeScreen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Copy")] public const int @3270_Copy; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_CursorBlink")] public const int @3270_CursorBlink; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_CursorSelect")] public const int @3270_CursorSelect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_DeleteWord")] public const int @3270_DeleteWord; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Duplicate")] public const int @3270_Duplicate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Enter")] public const int @3270_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_EraseEOF")] public const int @3270_EraseEOF; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_EraseInput")] public const int @3270_EraseInput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_ExSelect")] public const int @3270_ExSelect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_FieldMark")] public const int @3270_FieldMark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Ident")] public const int @3270_Ident; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Jump")] public const int @3270_Jump; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_KeyClick")] public const int @3270_KeyClick; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Left2")] public const int @3270_Left2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_PA1")] public const int @3270_PA1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_PA2")] public const int @3270_PA2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_PA3")] public const int @3270_PA3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Play")] public const int @3270_Play; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_PrintScreen")] public const int @3270_PrintScreen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Quit")] public const int @3270_Quit; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Record")] public const int @3270_Record; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Reset")] public const int @3270_Reset; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Right2")] public const int @3270_Right2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Rule")] public const int @3270_Rule; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Setup")] public const int @3270_Setup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_3270_Test")] public const int @3270_Test; [CCode (cheader_filename = "ibus.h", cname = "IBUS_4")] public const int @4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_5")] public const int @5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_6")] public const int @6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_7")] public const int @7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_8")] public const int @8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_9")] public const int @9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_A")] public const int A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_AE")] public const int AE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Aacute")] public const int Aacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abelowdot")] public const int Abelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abreve")] public const int Abreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abreveacute")] public const int Abreveacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abrevebelowdot")] public const int Abrevebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abrevegrave")] public const int Abrevegrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abrevehook")] public const int Abrevehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Abrevetilde")] public const int Abrevetilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_AccessX_Enable")] public const int AccessX_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_AccessX_Feedback_Enable")] public const int AccessX_Feedback_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflex")] public const int Acircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflexacute")] public const int Acircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflexbelowdot")] public const int Acircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflexgrave")] public const int Acircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflexhook")] public const int Acircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Acircumflextilde")] public const int Acircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Adiaeresis")] public const int Adiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Agrave")] public const int Agrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ahook")] public const int Ahook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Alt_L")] public const int Alt_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Alt_R")] public const int Alt_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Amacron")] public const int Amacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Aogonek")] public const int Aogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_0")] public const int Arabic_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_1")] public const int Arabic_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_2")] public const int Arabic_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_3")] public const int Arabic_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_4")] public const int Arabic_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_5")] public const int Arabic_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_6")] public const int Arabic_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_7")] public const int Arabic_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_8")] public const int Arabic_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_9")] public const int Arabic_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_ain")] public const int Arabic_ain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_alef")] public const int Arabic_alef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_alefmaksura")] public const int Arabic_alefmaksura; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_beh")] public const int Arabic_beh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_comma")] public const int Arabic_comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_dad")] public const int Arabic_dad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_dal")] public const int Arabic_dal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_damma")] public const int Arabic_damma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_dammatan")] public const int Arabic_dammatan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_ddal")] public const int Arabic_ddal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_farsi_yeh")] public const int Arabic_farsi_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_fatha")] public const int Arabic_fatha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_fathatan")] public const int Arabic_fathatan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_feh")] public const int Arabic_feh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_fullstop")] public const int Arabic_fullstop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_gaf")] public const int Arabic_gaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_ghain")] public const int Arabic_ghain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_ha")] public const int Arabic_ha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hah")] public const int Arabic_hah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamza")] public const int Arabic_hamza; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamza_above")] public const int Arabic_hamza_above; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamza_below")] public const int Arabic_hamza_below; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamzaonalef")] public const int Arabic_hamzaonalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamzaonwaw")] public const int Arabic_hamzaonwaw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamzaonyeh")] public const int Arabic_hamzaonyeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_hamzaunderalef")] public const int Arabic_hamzaunderalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_heh")] public const int Arabic_heh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_heh_doachashmee")] public const int Arabic_heh_doachashmee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_heh_goal")] public const int Arabic_heh_goal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_jeem")] public const int Arabic_jeem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_jeh")] public const int Arabic_jeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_kaf")] public const int Arabic_kaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_kasra")] public const int Arabic_kasra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_kasratan")] public const int Arabic_kasratan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_keheh")] public const int Arabic_keheh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_khah")] public const int Arabic_khah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_lam")] public const int Arabic_lam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_madda_above")] public const int Arabic_madda_above; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_maddaonalef")] public const int Arabic_maddaonalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_meem")] public const int Arabic_meem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_noon")] public const int Arabic_noon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_noon_ghunna")] public const int Arabic_noon_ghunna; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_peh")] public const int Arabic_peh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_percent")] public const int Arabic_percent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_qaf")] public const int Arabic_qaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_question_mark")] public const int Arabic_question_mark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_ra")] public const int Arabic_ra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_rreh")] public const int Arabic_rreh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_sad")] public const int Arabic_sad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_seen")] public const int Arabic_seen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_semicolon")] public const int Arabic_semicolon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_shadda")] public const int Arabic_shadda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_sheen")] public const int Arabic_sheen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_sukun")] public const int Arabic_sukun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_superscript_alef")] public const int Arabic_superscript_alef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_switch")] public const int Arabic_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_tah")] public const int Arabic_tah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_tatweel")] public const int Arabic_tatweel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_tcheh")] public const int Arabic_tcheh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_teh")] public const int Arabic_teh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_tehmarbuta")] public const int Arabic_tehmarbuta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_thal")] public const int Arabic_thal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_theh")] public const int Arabic_theh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_tteh")] public const int Arabic_tteh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_veh")] public const int Arabic_veh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_waw")] public const int Arabic_waw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_yeh")] public const int Arabic_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_yeh_baree")] public const int Arabic_yeh_baree; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_zah")] public const int Arabic_zah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Arabic_zain")] public const int Arabic_zain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Aring")] public const int Aring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_AT")] public const int Armenian_AT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_AYB")] public const int Armenian_AYB; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_BEN")] public const int Armenian_BEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_CHA")] public const int Armenian_CHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_DA")] public const int Armenian_DA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_DZA")] public const int Armenian_DZA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_E")] public const int Armenian_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_FE")] public const int Armenian_FE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_GHAT")] public const int Armenian_GHAT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_GIM")] public const int Armenian_GIM; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_HI")] public const int Armenian_HI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_HO")] public const int Armenian_HO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_INI")] public const int Armenian_INI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_JE")] public const int Armenian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_KE")] public const int Armenian_KE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_KEN")] public const int Armenian_KEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_KHE")] public const int Armenian_KHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_LYUN")] public const int Armenian_LYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_MEN")] public const int Armenian_MEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_NU")] public const int Armenian_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_O")] public const int Armenian_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_PE")] public const int Armenian_PE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_PYUR")] public const int Armenian_PYUR; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_RA")] public const int Armenian_RA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_RE")] public const int Armenian_RE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_SE")] public const int Armenian_SE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_SHA")] public const int Armenian_SHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_TCHE")] public const int Armenian_TCHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_TO")] public const int Armenian_TO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_TSA")] public const int Armenian_TSA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_TSO")] public const int Armenian_TSO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_TYUN")] public const int Armenian_TYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_VEV")] public const int Armenian_VEV; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_VO")] public const int Armenian_VO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_VYUN")] public const int Armenian_VYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_YECH")] public const int Armenian_YECH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ZA")] public const int Armenian_ZA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ZHE")] public const int Armenian_ZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_accent")] public const int Armenian_accent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_amanak")] public const int Armenian_amanak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_apostrophe")] public const int Armenian_apostrophe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_at")] public const int Armenian_at; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ayb")] public const int Armenian_ayb; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ben")] public const int Armenian_ben; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_but")] public const int Armenian_but; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_cha")] public const int Armenian_cha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_da")] public const int Armenian_da; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_dza")] public const int Armenian_dza; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_e")] public const int Armenian_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_exclam")] public const int Armenian_exclam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_fe")] public const int Armenian_fe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_full_stop")] public const int Armenian_full_stop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ghat")] public const int Armenian_ghat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_gim")] public const int Armenian_gim; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_hi")] public const int Armenian_hi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ho")] public const int Armenian_ho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_hyphen")] public const int Armenian_hyphen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ini")] public const int Armenian_ini; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_je")] public const int Armenian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ke")] public const int Armenian_ke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ken")] public const int Armenian_ken; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_khe")] public const int Armenian_khe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ligature_ew")] public const int Armenian_ligature_ew; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_lyun")] public const int Armenian_lyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_men")] public const int Armenian_men; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_nu")] public const int Armenian_nu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_o")] public const int Armenian_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_paruyk")] public const int Armenian_paruyk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_pe")] public const int Armenian_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_pyur")] public const int Armenian_pyur; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_question")] public const int Armenian_question; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_ra")] public const int Armenian_ra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_re")] public const int Armenian_re; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_se")] public const int Armenian_se; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_separation_mark")] public const int Armenian_separation_mark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_sha")] public const int Armenian_sha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_shesht")] public const int Armenian_shesht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_tche")] public const int Armenian_tche; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_to")] public const int Armenian_to; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_tsa")] public const int Armenian_tsa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_tso")] public const int Armenian_tso; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_tyun")] public const int Armenian_tyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_verjaket")] public const int Armenian_verjaket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_vev")] public const int Armenian_vev; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_vo")] public const int Armenian_vo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_vyun")] public const int Armenian_vyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_yech")] public const int Armenian_yech; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_yentamna")] public const int Armenian_yentamna; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_za")] public const int Armenian_za; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Armenian_zhe")] public const int Armenian_zhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Atilde")] public const int Atilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_AudibleBell_Enable")] public const int AudibleBell_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_B")] public const int B; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Babovedot")] public const int Babovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_BackSpace")] public const int BackSpace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Begin")] public const int Begin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_BounceKeys_Enable")] public const int BounceKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Break")] public const int Break; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Byelorussian_SHORTU")] public const int Byelorussian_SHORTU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Byelorussian_shortu")] public const int Byelorussian_shortu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_C")] public const int C; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cabovedot")] public const int Cabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cacute")] public const int Cacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cancel")] public const int Cancel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Caps_Lock")] public const int Caps_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ccaron")] public const int Ccaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ccedilla")] public const int Ccedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ccircumflex")] public const int Ccircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Clear")] public const int Clear; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Codeinput")] public const int Codeinput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ColonSign")] public const int ColonSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Control_L")] public const int Control_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Control_R")] public const int Control_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_CruzeiroSign")] public const int CruzeiroSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_A")] public const int Cyrillic_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_BE")] public const int Cyrillic_BE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_CHE")] public const int Cyrillic_CHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_CHE_descender")] public const int Cyrillic_CHE_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_CHE_vertstroke")] public const int Cyrillic_CHE_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_DE")] public const int Cyrillic_DE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_DZHE")] public const int Cyrillic_DZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_E")] public const int Cyrillic_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_EF")] public const int Cyrillic_EF; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_EL")] public const int Cyrillic_EL; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_EM")] public const int Cyrillic_EM; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_EN")] public const int Cyrillic_EN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_EN_descender")] public const int Cyrillic_EN_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ER")] public const int Cyrillic_ER; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ES")] public const int Cyrillic_ES; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_GHE")] public const int Cyrillic_GHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_GHE_bar")] public const int Cyrillic_GHE_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_HA")] public const int Cyrillic_HA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_HARDSIGN")] public const int Cyrillic_HARDSIGN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_HA_descender")] public const int Cyrillic_HA_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_I")] public const int Cyrillic_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_IE")] public const int Cyrillic_IE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_IO")] public const int Cyrillic_IO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_I_macron")] public const int Cyrillic_I_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_JE")] public const int Cyrillic_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_KA")] public const int Cyrillic_KA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_KA_descender")] public const int Cyrillic_KA_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_KA_vertstroke")] public const int Cyrillic_KA_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_LJE")] public const int Cyrillic_LJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_NJE")] public const int Cyrillic_NJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_O")] public const int Cyrillic_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_O_bar")] public const int Cyrillic_O_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_PE")] public const int Cyrillic_PE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SCHWA")] public const int Cyrillic_SCHWA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SHA")] public const int Cyrillic_SHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SHCHA")] public const int Cyrillic_SHCHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SHHA")] public const int Cyrillic_SHHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SHORTI")] public const int Cyrillic_SHORTI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_SOFTSIGN")] public const int Cyrillic_SOFTSIGN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_TE")] public const int Cyrillic_TE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_TSE")] public const int Cyrillic_TSE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_U")] public const int Cyrillic_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_U_macron")] public const int Cyrillic_U_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_U_straight")] public const int Cyrillic_U_straight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_U_straight_bar")] public const int Cyrillic_U_straight_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_VE")] public const int Cyrillic_VE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_YA")] public const int Cyrillic_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_YERU")] public const int Cyrillic_YERU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_YU")] public const int Cyrillic_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ZE")] public const int Cyrillic_ZE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ZHE")] public const int Cyrillic_ZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ZHE_descender")] public const int Cyrillic_ZHE_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_a")] public const int Cyrillic_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_be")] public const int Cyrillic_be; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_che")] public const int Cyrillic_che; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_che_descender")] public const int Cyrillic_che_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_che_vertstroke")] public const int Cyrillic_che_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_de")] public const int Cyrillic_de; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_dzhe")] public const int Cyrillic_dzhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_e")] public const int Cyrillic_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ef")] public const int Cyrillic_ef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_el")] public const int Cyrillic_el; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_em")] public const int Cyrillic_em; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_en")] public const int Cyrillic_en; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_en_descender")] public const int Cyrillic_en_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_er")] public const int Cyrillic_er; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_es")] public const int Cyrillic_es; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ghe")] public const int Cyrillic_ghe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ghe_bar")] public const int Cyrillic_ghe_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ha")] public const int Cyrillic_ha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ha_descender")] public const int Cyrillic_ha_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_hardsign")] public const int Cyrillic_hardsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_i")] public const int Cyrillic_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_i_macron")] public const int Cyrillic_i_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ie")] public const int Cyrillic_ie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_io")] public const int Cyrillic_io; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_je")] public const int Cyrillic_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ka")] public const int Cyrillic_ka; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ka_descender")] public const int Cyrillic_ka_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ka_vertstroke")] public const int Cyrillic_ka_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_lje")] public const int Cyrillic_lje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_nje")] public const int Cyrillic_nje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_o")] public const int Cyrillic_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_o_bar")] public const int Cyrillic_o_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_pe")] public const int Cyrillic_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_schwa")] public const int Cyrillic_schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_sha")] public const int Cyrillic_sha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_shcha")] public const int Cyrillic_shcha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_shha")] public const int Cyrillic_shha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_shorti")] public const int Cyrillic_shorti; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_softsign")] public const int Cyrillic_softsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_te")] public const int Cyrillic_te; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_tse")] public const int Cyrillic_tse; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_u")] public const int Cyrillic_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_u_macron")] public const int Cyrillic_u_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_u_straight")] public const int Cyrillic_u_straight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_u_straight_bar")] public const int Cyrillic_u_straight_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ve")] public const int Cyrillic_ve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ya")] public const int Cyrillic_ya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_yeru")] public const int Cyrillic_yeru; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_yu")] public const int Cyrillic_yu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_ze")] public const int Cyrillic_ze; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_zhe")] public const int Cyrillic_zhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Cyrillic_zhe_descender")] public const int Cyrillic_zhe_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_D")] public const int D; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Dabovedot")] public const int Dabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Dcaron")] public const int Dcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Delete")] public const int Delete; [CCode (cheader_filename = "ibus.h", cname = "IBUS_DongSign")] public const int DongSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Down")] public const int Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Dstroke")] public const int Dstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_E")] public const int E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ENG")] public const int ENG; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ETH")] public const int ETH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eabovedot")] public const int Eabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eacute")] public const int Eacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ebelowdot")] public const int Ebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecaron")] public const int Ecaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflex")] public const int Ecircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflexacute")] public const int Ecircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflexbelowdot")] public const int Ecircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflexgrave")] public const int Ecircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflexhook")] public const int Ecircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ecircumflextilde")] public const int Ecircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_EcuSign")] public const int EcuSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ediaeresis")] public const int Ediaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Egrave")] public const int Egrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ehook")] public const int Ehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eisu_Shift")] public const int Eisu_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eisu_toggle")] public const int Eisu_toggle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Emacron")] public const int Emacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_End")] public const int End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eogonek")] public const int Eogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Escape")] public const int Escape; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Eth")] public const int Eth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Etilde")] public const int Etilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_EuroSign")] public const int EuroSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Execute")] public const int Execute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F")] public const int F; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F1")] public const int F1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F10")] public const int F10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F11")] public const int F11; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F12")] public const int F12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F13")] public const int F13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F14")] public const int F14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F15")] public const int F15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F16")] public const int F16; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F17")] public const int F17; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F18")] public const int F18; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F19")] public const int F19; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F2")] public const int F2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F20")] public const int F20; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F21")] public const int F21; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F22")] public const int F22; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F23")] public const int F23; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F24")] public const int F24; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F25")] public const int F25; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F26")] public const int F26; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F27")] public const int F27; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F28")] public const int F28; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F29")] public const int F29; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F3")] public const int F3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F30")] public const int F30; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F31")] public const int F31; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F32")] public const int F32; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F33")] public const int F33; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F34")] public const int F34; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F35")] public const int F35; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F4")] public const int F4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F5")] public const int F5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F6")] public const int F6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F7")] public const int F7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F8")] public const int F8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_F9")] public const int F9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_FFrancSign")] public const int FFrancSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Fabovedot")] public const int Fabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_0")] public const int Farsi_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_1")] public const int Farsi_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_2")] public const int Farsi_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_3")] public const int Farsi_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_4")] public const int Farsi_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_5")] public const int Farsi_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_6")] public const int Farsi_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_7")] public const int Farsi_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_8")] public const int Farsi_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_9")] public const int Farsi_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Farsi_yeh")] public const int Farsi_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Find")] public const int Find; [CCode (cheader_filename = "ibus.h", cname = "IBUS_First_Virtual_Screen")] public const int First_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_G")] public const int G; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Gabovedot")] public const int Gabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Gbreve")] public const int Gbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Gcaron")] public const int Gcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Gcedilla")] public const int Gcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Gcircumflex")] public const int Gcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_an")] public const int Georgian_an; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_ban")] public const int Georgian_ban; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_can")] public const int Georgian_can; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_char")] public const int Georgian_char; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_chin")] public const int Georgian_chin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_cil")] public const int Georgian_cil; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_don")] public const int Georgian_don; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_en")] public const int Georgian_en; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_fi")] public const int Georgian_fi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_gan")] public const int Georgian_gan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_ghan")] public const int Georgian_ghan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_hae")] public const int Georgian_hae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_har")] public const int Georgian_har; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_he")] public const int Georgian_he; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_hie")] public const int Georgian_hie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_hoe")] public const int Georgian_hoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_in")] public const int Georgian_in; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_jhan")] public const int Georgian_jhan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_jil")] public const int Georgian_jil; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_kan")] public const int Georgian_kan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_khar")] public const int Georgian_khar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_las")] public const int Georgian_las; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_man")] public const int Georgian_man; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_nar")] public const int Georgian_nar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_on")] public const int Georgian_on; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_par")] public const int Georgian_par; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_phar")] public const int Georgian_phar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_qar")] public const int Georgian_qar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_rae")] public const int Georgian_rae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_san")] public const int Georgian_san; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_shin")] public const int Georgian_shin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_tan")] public const int Georgian_tan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_tar")] public const int Georgian_tar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_un")] public const int Georgian_un; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_vin")] public const int Georgian_vin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_we")] public const int Georgian_we; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_xan")] public const int Georgian_xan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_zen")] public const int Georgian_zen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Georgian_zhar")] public const int Georgian_zhar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_ALPHA")] public const int Greek_ALPHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_ALPHAaccent")] public const int Greek_ALPHAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_BETA")] public const int Greek_BETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_CHI")] public const int Greek_CHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_DELTA")] public const int Greek_DELTA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_EPSILON")] public const int Greek_EPSILON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_EPSILONaccent")] public const int Greek_EPSILONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_ETA")] public const int Greek_ETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_ETAaccent")] public const int Greek_ETAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_GAMMA")] public const int Greek_GAMMA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_IOTA")] public const int Greek_IOTA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_IOTAaccent")] public const int Greek_IOTAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_IOTAdiaeresis")] public const int Greek_IOTAdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_IOTAdieresis")] public const int Greek_IOTAdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_KAPPA")] public const int Greek_KAPPA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_LAMBDA")] public const int Greek_LAMBDA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_LAMDA")] public const int Greek_LAMDA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_MU")] public const int Greek_MU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_NU")] public const int Greek_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_OMEGA")] public const int Greek_OMEGA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_OMEGAaccent")] public const int Greek_OMEGAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_OMICRON")] public const int Greek_OMICRON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_OMICRONaccent")] public const int Greek_OMICRONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_PHI")] public const int Greek_PHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_PI")] public const int Greek_PI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_PSI")] public const int Greek_PSI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_RHO")] public const int Greek_RHO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_SIGMA")] public const int Greek_SIGMA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_TAU")] public const int Greek_TAU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_THETA")] public const int Greek_THETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_UPSILON")] public const int Greek_UPSILON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_UPSILONaccent")] public const int Greek_UPSILONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_UPSILONdieresis")] public const int Greek_UPSILONdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_XI")] public const int Greek_XI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_ZETA")] public const int Greek_ZETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_accentdieresis")] public const int Greek_accentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_alpha")] public const int Greek_alpha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_alphaaccent")] public const int Greek_alphaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_beta")] public const int Greek_beta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_chi")] public const int Greek_chi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_delta")] public const int Greek_delta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_epsilon")] public const int Greek_epsilon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_epsilonaccent")] public const int Greek_epsilonaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_eta")] public const int Greek_eta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_etaaccent")] public const int Greek_etaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_finalsmallsigma")] public const int Greek_finalsmallsigma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_gamma")] public const int Greek_gamma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_horizbar")] public const int Greek_horizbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_iota")] public const int Greek_iota; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_iotaaccent")] public const int Greek_iotaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_iotaaccentdieresis")] public const int Greek_iotaaccentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_iotadieresis")] public const int Greek_iotadieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_kappa")] public const int Greek_kappa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_lambda")] public const int Greek_lambda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_lamda")] public const int Greek_lamda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_mu")] public const int Greek_mu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_nu")] public const int Greek_nu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_omega")] public const int Greek_omega; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_omegaaccent")] public const int Greek_omegaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_omicron")] public const int Greek_omicron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_omicronaccent")] public const int Greek_omicronaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_phi")] public const int Greek_phi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_pi")] public const int Greek_pi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_psi")] public const int Greek_psi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_rho")] public const int Greek_rho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_sigma")] public const int Greek_sigma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_switch")] public const int Greek_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_tau")] public const int Greek_tau; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_theta")] public const int Greek_theta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_upsilon")] public const int Greek_upsilon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_upsilonaccent")] public const int Greek_upsilonaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_upsilonaccentdieresis")] public const int Greek_upsilonaccentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_upsilondieresis")] public const int Greek_upsilondieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_xi")] public const int Greek_xi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Greek_zeta")] public const int Greek_zeta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_H")] public const int H; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul")] public const int Hangul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_A")] public const int Hangul_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_AE")] public const int Hangul_AE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_AraeA")] public const int Hangul_AraeA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_AraeAE")] public const int Hangul_AraeAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Banja")] public const int Hangul_Banja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Cieuc")] public const int Hangul_Cieuc; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Codeinput")] public const int Hangul_Codeinput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Dikeud")] public const int Hangul_Dikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_E")] public const int Hangul_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_EO")] public const int Hangul_EO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_EU")] public const int Hangul_EU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_End")] public const int Hangul_End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Hanja")] public const int Hangul_Hanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Hieuh")] public const int Hangul_Hieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_I")] public const int Hangul_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Ieung")] public const int Hangul_Ieung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Cieuc")] public const int Hangul_J_Cieuc; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Dikeud")] public const int Hangul_J_Dikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Hieuh")] public const int Hangul_J_Hieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Ieung")] public const int Hangul_J_Ieung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Jieuj")] public const int Hangul_J_Jieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Khieuq")] public const int Hangul_J_Khieuq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Kiyeog")] public const int Hangul_J_Kiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_KiyeogSios")] public const int Hangul_J_KiyeogSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_KkogjiDalrinIeung")] public const int Hangul_J_KkogjiDalrinIeung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Mieum")] public const int Hangul_J_Mieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Nieun")] public const int Hangul_J_Nieun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_NieunHieuh")] public const int Hangul_J_NieunHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_NieunJieuj")] public const int Hangul_J_NieunJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_PanSios")] public const int Hangul_J_PanSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Phieuf")] public const int Hangul_J_Phieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Pieub")] public const int Hangul_J_Pieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_PieubSios")] public const int Hangul_J_PieubSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Rieul")] public const int Hangul_J_Rieul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulHieuh")] public const int Hangul_J_RieulHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulKiyeog")] public const int Hangul_J_RieulKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulMieum")] public const int Hangul_J_RieulMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulPhieuf")] public const int Hangul_J_RieulPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulPieub")] public const int Hangul_J_RieulPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulSios")] public const int Hangul_J_RieulSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_RieulTieut")] public const int Hangul_J_RieulTieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Sios")] public const int Hangul_J_Sios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_SsangKiyeog")] public const int Hangul_J_SsangKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_SsangSios")] public const int Hangul_J_SsangSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_Tieut")] public const int Hangul_J_Tieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_J_YeorinHieuh")] public const int Hangul_J_YeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Jamo")] public const int Hangul_Jamo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Jeonja")] public const int Hangul_Jeonja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Jieuj")] public const int Hangul_Jieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Khieuq")] public const int Hangul_Khieuq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Kiyeog")] public const int Hangul_Kiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_KiyeogSios")] public const int Hangul_KiyeogSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_KkogjiDalrinIeung")] public const int Hangul_KkogjiDalrinIeung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Mieum")] public const int Hangul_Mieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_MultipleCandidate")] public const int Hangul_MultipleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Nieun")] public const int Hangul_Nieun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_NieunHieuh")] public const int Hangul_NieunHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_NieunJieuj")] public const int Hangul_NieunJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_O")] public const int Hangul_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_OE")] public const int Hangul_OE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_PanSios")] public const int Hangul_PanSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Phieuf")] public const int Hangul_Phieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Pieub")] public const int Hangul_Pieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_PieubSios")] public const int Hangul_PieubSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_PostHanja")] public const int Hangul_PostHanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_PreHanja")] public const int Hangul_PreHanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_PreviousCandidate")] public const int Hangul_PreviousCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Rieul")] public const int Hangul_Rieul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulHieuh")] public const int Hangul_RieulHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulKiyeog")] public const int Hangul_RieulKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulMieum")] public const int Hangul_RieulMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulPhieuf")] public const int Hangul_RieulPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulPieub")] public const int Hangul_RieulPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulSios")] public const int Hangul_RieulSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulTieut")] public const int Hangul_RieulTieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_RieulYeorinHieuh")] public const int Hangul_RieulYeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Romaja")] public const int Hangul_Romaja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SingleCandidate")] public const int Hangul_SingleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Sios")] public const int Hangul_Sios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Special")] public const int Hangul_Special; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SsangDikeud")] public const int Hangul_SsangDikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SsangJieuj")] public const int Hangul_SsangJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SsangKiyeog")] public const int Hangul_SsangKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SsangPieub")] public const int Hangul_SsangPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SsangSios")] public const int Hangul_SsangSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Start")] public const int Hangul_Start; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SunkyeongeumMieum")] public const int Hangul_SunkyeongeumMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SunkyeongeumPhieuf")] public const int Hangul_SunkyeongeumPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_SunkyeongeumPieub")] public const int Hangul_SunkyeongeumPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_Tieut")] public const int Hangul_Tieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_U")] public const int Hangul_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_WA")] public const int Hangul_WA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_WAE")] public const int Hangul_WAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_WE")] public const int Hangul_WE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_WEO")] public const int Hangul_WEO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_WI")] public const int Hangul_WI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YA")] public const int Hangul_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YAE")] public const int Hangul_YAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YE")] public const int Hangul_YE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YEO")] public const int Hangul_YEO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YI")] public const int Hangul_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YO")] public const int Hangul_YO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YU")] public const int Hangul_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_YeorinHieuh")] public const int Hangul_YeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hangul_switch")] public const int Hangul_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hankaku")] public const int Hankaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hcircumflex")] public const int Hcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hebrew_switch")] public const int Hebrew_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Help")] public const int Help; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Henkan")] public const int Henkan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Henkan_Mode")] public const int Henkan_Mode; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hiragana")] public const int Hiragana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hiragana_Katakana")] public const int Hiragana_Katakana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Home")] public const int Home; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hstroke")] public const int Hstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hyper_L")] public const int Hyper_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Hyper_R")] public const int Hyper_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_I")] public const int I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_CONFIG")] public const string INTERFACE_CONFIG; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_ENGINE")] public const string INTERFACE_ENGINE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_FACTORY")] public const string INTERFACE_FACTORY; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_IBUS")] public const string INTERFACE_IBUS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_INPUT_CONTEXT")] public const string INTERFACE_INPUT_CONTEXT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_NOTIFICATIONS")] public const string INTERFACE_NOTIFICATIONS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_INTERFACE_PANEL")] public const string INTERFACE_PANEL; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Center_Object")] public const int ISO_Center_Object; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Continuous_Underline")] public const int ISO_Continuous_Underline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Discontinuous_Underline")] public const int ISO_Discontinuous_Underline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Emphasize")] public const int ISO_Emphasize; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Enter")] public const int ISO_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Fast_Cursor_Down")] public const int ISO_Fast_Cursor_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Fast_Cursor_Left")] public const int ISO_Fast_Cursor_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Fast_Cursor_Right")] public const int ISO_Fast_Cursor_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Fast_Cursor_Up")] public const int ISO_Fast_Cursor_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_First_Group")] public const int ISO_First_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_First_Group_Lock")] public const int ISO_First_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Group_Latch")] public const int ISO_Group_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Group_Lock")] public const int ISO_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Group_Shift")] public const int ISO_Group_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Last_Group")] public const int ISO_Last_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Last_Group_Lock")] public const int ISO_Last_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Left_Tab")] public const int ISO_Left_Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level2_Latch")] public const int ISO_Level2_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level3_Latch")] public const int ISO_Level3_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level3_Lock")] public const int ISO_Level3_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level3_Shift")] public const int ISO_Level3_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level5_Latch")] public const int ISO_Level5_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level5_Lock")] public const int ISO_Level5_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Level5_Shift")] public const int ISO_Level5_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Lock")] public const int ISO_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Move_Line_Down")] public const int ISO_Move_Line_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Move_Line_Up")] public const int ISO_Move_Line_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Next_Group")] public const int ISO_Next_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Next_Group_Lock")] public const int ISO_Next_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Partial_Line_Down")] public const int ISO_Partial_Line_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Partial_Line_Up")] public const int ISO_Partial_Line_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Partial_Space_Left")] public const int ISO_Partial_Space_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Partial_Space_Right")] public const int ISO_Partial_Space_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Prev_Group")] public const int ISO_Prev_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Prev_Group_Lock")] public const int ISO_Prev_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Release_Both_Margins")] public const int ISO_Release_Both_Margins; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Release_Margin_Left")] public const int ISO_Release_Margin_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Release_Margin_Right")] public const int ISO_Release_Margin_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Set_Margin_Left")] public const int ISO_Set_Margin_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ISO_Set_Margin_Right")] public const int ISO_Set_Margin_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Iabovedot")] public const int Iabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Iacute")] public const int Iacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ibelowdot")] public const int Ibelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ibreve")] public const int Ibreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Icircumflex")] public const int Icircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Idiaeresis")] public const int Idiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Igrave")] public const int Igrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ihook")] public const int Ihook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Imacron")] public const int Imacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Insert")] public const int Insert; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Iogonek")] public const int Iogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Itilde")] public const int Itilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_J")] public const int J; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Jcircumflex")] public const int Jcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_K")] public const int K; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_0")] public const int KEY_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_1")] public const int KEY_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_2")] public const int KEY_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3")] public const int KEY_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_AltCursor")] public const int KEY_3270_AltCursor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Attn")] public const int KEY_3270_Attn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_BackTab")] public const int KEY_3270_BackTab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_ChangeScreen")] public const int KEY_3270_ChangeScreen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Copy")] public const int KEY_3270_Copy; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_CursorBlink")] public const int KEY_3270_CursorBlink; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_CursorSelect")] public const int KEY_3270_CursorSelect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_DeleteWord")] public const int KEY_3270_DeleteWord; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Duplicate")] public const int KEY_3270_Duplicate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Enter")] public const int KEY_3270_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_EraseEOF")] public const int KEY_3270_EraseEOF; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_EraseInput")] public const int KEY_3270_EraseInput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_ExSelect")] public const int KEY_3270_ExSelect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_FieldMark")] public const int KEY_3270_FieldMark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Ident")] public const int KEY_3270_Ident; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Jump")] public const int KEY_3270_Jump; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_KeyClick")] public const int KEY_3270_KeyClick; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Left2")] public const int KEY_3270_Left2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_PA1")] public const int KEY_3270_PA1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_PA2")] public const int KEY_3270_PA2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_PA3")] public const int KEY_3270_PA3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Play")] public const int KEY_3270_Play; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_PrintScreen")] public const int KEY_3270_PrintScreen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Quit")] public const int KEY_3270_Quit; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Record")] public const int KEY_3270_Record; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Reset")] public const int KEY_3270_Reset; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Right2")] public const int KEY_3270_Right2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Rule")] public const int KEY_3270_Rule; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Setup")] public const int KEY_3270_Setup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_3270_Test")] public const int KEY_3270_Test; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_4")] public const int KEY_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_5")] public const int KEY_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_6")] public const int KEY_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_7")] public const int KEY_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_8")] public const int KEY_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_9")] public const int KEY_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_A")] public const int KEY_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_AE")] public const int KEY_AE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Aacute")] public const int KEY_Aacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abelowdot")] public const int KEY_Abelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abreve")] public const int KEY_Abreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abreveacute")] public const int KEY_Abreveacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abrevebelowdot")] public const int KEY_Abrevebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abrevegrave")] public const int KEY_Abrevegrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abrevehook")] public const int KEY_Abrevehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Abrevetilde")] public const int KEY_Abrevetilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_AccessX_Enable")] public const int KEY_AccessX_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_AccessX_Feedback_Enable")] public const int KEY_AccessX_Feedback_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflex")] public const int KEY_Acircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflexacute")] public const int KEY_Acircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflexbelowdot")] public const int KEY_Acircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflexgrave")] public const int KEY_Acircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflexhook")] public const int KEY_Acircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Acircumflextilde")] public const int KEY_Acircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Adiaeresis")] public const int KEY_Adiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Agrave")] public const int KEY_Agrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ahook")] public const int KEY_Ahook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Alt_L")] public const int KEY_Alt_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Alt_R")] public const int KEY_Alt_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Amacron")] public const int KEY_Amacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Aogonek")] public const int KEY_Aogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_0")] public const int KEY_Arabic_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_1")] public const int KEY_Arabic_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_2")] public const int KEY_Arabic_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_3")] public const int KEY_Arabic_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_4")] public const int KEY_Arabic_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_5")] public const int KEY_Arabic_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_6")] public const int KEY_Arabic_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_7")] public const int KEY_Arabic_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_8")] public const int KEY_Arabic_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_9")] public const int KEY_Arabic_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_ain")] public const int KEY_Arabic_ain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_alef")] public const int KEY_Arabic_alef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_alefmaksura")] public const int KEY_Arabic_alefmaksura; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_beh")] public const int KEY_Arabic_beh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_comma")] public const int KEY_Arabic_comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_dad")] public const int KEY_Arabic_dad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_dal")] public const int KEY_Arabic_dal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_damma")] public const int KEY_Arabic_damma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_dammatan")] public const int KEY_Arabic_dammatan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_ddal")] public const int KEY_Arabic_ddal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_farsi_yeh")] public const int KEY_Arabic_farsi_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_fatha")] public const int KEY_Arabic_fatha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_fathatan")] public const int KEY_Arabic_fathatan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_feh")] public const int KEY_Arabic_feh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_fullstop")] public const int KEY_Arabic_fullstop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_gaf")] public const int KEY_Arabic_gaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_ghain")] public const int KEY_Arabic_ghain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_ha")] public const int KEY_Arabic_ha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hah")] public const int KEY_Arabic_hah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamza")] public const int KEY_Arabic_hamza; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamza_above")] public const int KEY_Arabic_hamza_above; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamza_below")] public const int KEY_Arabic_hamza_below; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamzaonalef")] public const int KEY_Arabic_hamzaonalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamzaonwaw")] public const int KEY_Arabic_hamzaonwaw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamzaonyeh")] public const int KEY_Arabic_hamzaonyeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_hamzaunderalef")] public const int KEY_Arabic_hamzaunderalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_heh")] public const int KEY_Arabic_heh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_heh_doachashmee")] public const int KEY_Arabic_heh_doachashmee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_heh_goal")] public const int KEY_Arabic_heh_goal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_jeem")] public const int KEY_Arabic_jeem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_jeh")] public const int KEY_Arabic_jeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_kaf")] public const int KEY_Arabic_kaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_kasra")] public const int KEY_Arabic_kasra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_kasratan")] public const int KEY_Arabic_kasratan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_keheh")] public const int KEY_Arabic_keheh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_khah")] public const int KEY_Arabic_khah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_lam")] public const int KEY_Arabic_lam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_madda_above")] public const int KEY_Arabic_madda_above; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_maddaonalef")] public const int KEY_Arabic_maddaonalef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_meem")] public const int KEY_Arabic_meem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_noon")] public const int KEY_Arabic_noon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_noon_ghunna")] public const int KEY_Arabic_noon_ghunna; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_peh")] public const int KEY_Arabic_peh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_percent")] public const int KEY_Arabic_percent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_qaf")] public const int KEY_Arabic_qaf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_question_mark")] public const int KEY_Arabic_question_mark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_ra")] public const int KEY_Arabic_ra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_rreh")] public const int KEY_Arabic_rreh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_sad")] public const int KEY_Arabic_sad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_seen")] public const int KEY_Arabic_seen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_semicolon")] public const int KEY_Arabic_semicolon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_shadda")] public const int KEY_Arabic_shadda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_sheen")] public const int KEY_Arabic_sheen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_sukun")] public const int KEY_Arabic_sukun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_superscript_alef")] public const int KEY_Arabic_superscript_alef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_switch")] public const int KEY_Arabic_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_tah")] public const int KEY_Arabic_tah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_tatweel")] public const int KEY_Arabic_tatweel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_tcheh")] public const int KEY_Arabic_tcheh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_teh")] public const int KEY_Arabic_teh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_tehmarbuta")] public const int KEY_Arabic_tehmarbuta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_thal")] public const int KEY_Arabic_thal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_theh")] public const int KEY_Arabic_theh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_tteh")] public const int KEY_Arabic_tteh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_veh")] public const int KEY_Arabic_veh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_waw")] public const int KEY_Arabic_waw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_yeh")] public const int KEY_Arabic_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_yeh_baree")] public const int KEY_Arabic_yeh_baree; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_zah")] public const int KEY_Arabic_zah; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Arabic_zain")] public const int KEY_Arabic_zain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Aring")] public const int KEY_Aring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_AT")] public const int KEY_Armenian_AT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_AYB")] public const int KEY_Armenian_AYB; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_BEN")] public const int KEY_Armenian_BEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_CHA")] public const int KEY_Armenian_CHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_DA")] public const int KEY_Armenian_DA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_DZA")] public const int KEY_Armenian_DZA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_E")] public const int KEY_Armenian_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_FE")] public const int KEY_Armenian_FE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_GHAT")] public const int KEY_Armenian_GHAT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_GIM")] public const int KEY_Armenian_GIM; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_HI")] public const int KEY_Armenian_HI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_HO")] public const int KEY_Armenian_HO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_INI")] public const int KEY_Armenian_INI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_JE")] public const int KEY_Armenian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_KE")] public const int KEY_Armenian_KE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_KEN")] public const int KEY_Armenian_KEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_KHE")] public const int KEY_Armenian_KHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_LYUN")] public const int KEY_Armenian_LYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_MEN")] public const int KEY_Armenian_MEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_NU")] public const int KEY_Armenian_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_O")] public const int KEY_Armenian_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_PE")] public const int KEY_Armenian_PE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_PYUR")] public const int KEY_Armenian_PYUR; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_RA")] public const int KEY_Armenian_RA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_RE")] public const int KEY_Armenian_RE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_SE")] public const int KEY_Armenian_SE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_SHA")] public const int KEY_Armenian_SHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_TCHE")] public const int KEY_Armenian_TCHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_TO")] public const int KEY_Armenian_TO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_TSA")] public const int KEY_Armenian_TSA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_TSO")] public const int KEY_Armenian_TSO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_TYUN")] public const int KEY_Armenian_TYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_VEV")] public const int KEY_Armenian_VEV; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_VO")] public const int KEY_Armenian_VO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_VYUN")] public const int KEY_Armenian_VYUN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_YECH")] public const int KEY_Armenian_YECH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ZA")] public const int KEY_Armenian_ZA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ZHE")] public const int KEY_Armenian_ZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_accent")] public const int KEY_Armenian_accent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_amanak")] public const int KEY_Armenian_amanak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_apostrophe")] public const int KEY_Armenian_apostrophe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_at")] public const int KEY_Armenian_at; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ayb")] public const int KEY_Armenian_ayb; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ben")] public const int KEY_Armenian_ben; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_but")] public const int KEY_Armenian_but; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_cha")] public const int KEY_Armenian_cha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_da")] public const int KEY_Armenian_da; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_dza")] public const int KEY_Armenian_dza; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_e")] public const int KEY_Armenian_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_exclam")] public const int KEY_Armenian_exclam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_fe")] public const int KEY_Armenian_fe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_full_stop")] public const int KEY_Armenian_full_stop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ghat")] public const int KEY_Armenian_ghat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_gim")] public const int KEY_Armenian_gim; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_hi")] public const int KEY_Armenian_hi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ho")] public const int KEY_Armenian_ho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_hyphen")] public const int KEY_Armenian_hyphen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ini")] public const int KEY_Armenian_ini; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_je")] public const int KEY_Armenian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ke")] public const int KEY_Armenian_ke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ken")] public const int KEY_Armenian_ken; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_khe")] public const int KEY_Armenian_khe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ligature_ew")] public const int KEY_Armenian_ligature_ew; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_lyun")] public const int KEY_Armenian_lyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_men")] public const int KEY_Armenian_men; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_nu")] public const int KEY_Armenian_nu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_o")] public const int KEY_Armenian_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_paruyk")] public const int KEY_Armenian_paruyk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_pe")] public const int KEY_Armenian_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_pyur")] public const int KEY_Armenian_pyur; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_question")] public const int KEY_Armenian_question; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_ra")] public const int KEY_Armenian_ra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_re")] public const int KEY_Armenian_re; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_se")] public const int KEY_Armenian_se; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_separation_mark")] public const int KEY_Armenian_separation_mark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_sha")] public const int KEY_Armenian_sha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_shesht")] public const int KEY_Armenian_shesht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_tche")] public const int KEY_Armenian_tche; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_to")] public const int KEY_Armenian_to; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_tsa")] public const int KEY_Armenian_tsa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_tso")] public const int KEY_Armenian_tso; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_tyun")] public const int KEY_Armenian_tyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_verjaket")] public const int KEY_Armenian_verjaket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_vev")] public const int KEY_Armenian_vev; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_vo")] public const int KEY_Armenian_vo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_vyun")] public const int KEY_Armenian_vyun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_yech")] public const int KEY_Armenian_yech; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_yentamna")] public const int KEY_Armenian_yentamna; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_za")] public const int KEY_Armenian_za; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Armenian_zhe")] public const int KEY_Armenian_zhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Atilde")] public const int KEY_Atilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_AudibleBell_Enable")] public const int KEY_AudibleBell_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_B")] public const int KEY_B; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Babovedot")] public const int KEY_Babovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_BackSpace")] public const int KEY_BackSpace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Begin")] public const int KEY_Begin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_BounceKeys_Enable")] public const int KEY_BounceKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Break")] public const int KEY_Break; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Byelorussian_SHORTU")] public const int KEY_Byelorussian_SHORTU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Byelorussian_shortu")] public const int KEY_Byelorussian_shortu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_C")] public const int KEY_C; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_CH")] public const int KEY_CH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_C_H")] public const int KEY_C_H; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_C_h")] public const int KEY_C_h; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cabovedot")] public const int KEY_Cabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cacute")] public const int KEY_Cacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cancel")] public const int KEY_Cancel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Caps_Lock")] public const int KEY_Caps_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ccaron")] public const int KEY_Ccaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ccedilla")] public const int KEY_Ccedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ccircumflex")] public const int KEY_Ccircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ch")] public const int KEY_Ch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Clear")] public const int KEY_Clear; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Codeinput")] public const int KEY_Codeinput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ColonSign")] public const int KEY_ColonSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Control_L")] public const int KEY_Control_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Control_R")] public const int KEY_Control_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_CruzeiroSign")] public const int KEY_CruzeiroSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_A")] public const int KEY_Cyrillic_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_BE")] public const int KEY_Cyrillic_BE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_CHE")] public const int KEY_Cyrillic_CHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_CHE_descender")] public const int KEY_Cyrillic_CHE_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_CHE_vertstroke")] public const int KEY_Cyrillic_CHE_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_DE")] public const int KEY_Cyrillic_DE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_DZHE")] public const int KEY_Cyrillic_DZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_E")] public const int KEY_Cyrillic_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_EF")] public const int KEY_Cyrillic_EF; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_EL")] public const int KEY_Cyrillic_EL; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_EM")] public const int KEY_Cyrillic_EM; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_EN")] public const int KEY_Cyrillic_EN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_EN_descender")] public const int KEY_Cyrillic_EN_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ER")] public const int KEY_Cyrillic_ER; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ES")] public const int KEY_Cyrillic_ES; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_GHE")] public const int KEY_Cyrillic_GHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_GHE_bar")] public const int KEY_Cyrillic_GHE_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_HA")] public const int KEY_Cyrillic_HA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_HARDSIGN")] public const int KEY_Cyrillic_HARDSIGN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_HA_descender")] public const int KEY_Cyrillic_HA_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_I")] public const int KEY_Cyrillic_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_IE")] public const int KEY_Cyrillic_IE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_IO")] public const int KEY_Cyrillic_IO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_I_macron")] public const int KEY_Cyrillic_I_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_JE")] public const int KEY_Cyrillic_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_KA")] public const int KEY_Cyrillic_KA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_KA_descender")] public const int KEY_Cyrillic_KA_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_KA_vertstroke")] public const int KEY_Cyrillic_KA_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_LJE")] public const int KEY_Cyrillic_LJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_NJE")] public const int KEY_Cyrillic_NJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_O")] public const int KEY_Cyrillic_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_O_bar")] public const int KEY_Cyrillic_O_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_PE")] public const int KEY_Cyrillic_PE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SCHWA")] public const int KEY_Cyrillic_SCHWA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SHA")] public const int KEY_Cyrillic_SHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SHCHA")] public const int KEY_Cyrillic_SHCHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SHHA")] public const int KEY_Cyrillic_SHHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SHORTI")] public const int KEY_Cyrillic_SHORTI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_SOFTSIGN")] public const int KEY_Cyrillic_SOFTSIGN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_TE")] public const int KEY_Cyrillic_TE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_TSE")] public const int KEY_Cyrillic_TSE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_U")] public const int KEY_Cyrillic_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_U_macron")] public const int KEY_Cyrillic_U_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_U_straight")] public const int KEY_Cyrillic_U_straight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_U_straight_bar")] public const int KEY_Cyrillic_U_straight_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_VE")] public const int KEY_Cyrillic_VE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_YA")] public const int KEY_Cyrillic_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_YERU")] public const int KEY_Cyrillic_YERU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_YU")] public const int KEY_Cyrillic_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ZE")] public const int KEY_Cyrillic_ZE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ZHE")] public const int KEY_Cyrillic_ZHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ZHE_descender")] public const int KEY_Cyrillic_ZHE_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_a")] public const int KEY_Cyrillic_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_be")] public const int KEY_Cyrillic_be; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_che")] public const int KEY_Cyrillic_che; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_che_descender")] public const int KEY_Cyrillic_che_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_che_vertstroke")] public const int KEY_Cyrillic_che_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_de")] public const int KEY_Cyrillic_de; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_dzhe")] public const int KEY_Cyrillic_dzhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_e")] public const int KEY_Cyrillic_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ef")] public const int KEY_Cyrillic_ef; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_el")] public const int KEY_Cyrillic_el; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_em")] public const int KEY_Cyrillic_em; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_en")] public const int KEY_Cyrillic_en; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_en_descender")] public const int KEY_Cyrillic_en_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_er")] public const int KEY_Cyrillic_er; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_es")] public const int KEY_Cyrillic_es; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ghe")] public const int KEY_Cyrillic_ghe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ghe_bar")] public const int KEY_Cyrillic_ghe_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ha")] public const int KEY_Cyrillic_ha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ha_descender")] public const int KEY_Cyrillic_ha_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_hardsign")] public const int KEY_Cyrillic_hardsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_i")] public const int KEY_Cyrillic_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_i_macron")] public const int KEY_Cyrillic_i_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ie")] public const int KEY_Cyrillic_ie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_io")] public const int KEY_Cyrillic_io; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_je")] public const int KEY_Cyrillic_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ka")] public const int KEY_Cyrillic_ka; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ka_descender")] public const int KEY_Cyrillic_ka_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ka_vertstroke")] public const int KEY_Cyrillic_ka_vertstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_lje")] public const int KEY_Cyrillic_lje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_nje")] public const int KEY_Cyrillic_nje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_o")] public const int KEY_Cyrillic_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_o_bar")] public const int KEY_Cyrillic_o_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_pe")] public const int KEY_Cyrillic_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_schwa")] public const int KEY_Cyrillic_schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_sha")] public const int KEY_Cyrillic_sha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_shcha")] public const int KEY_Cyrillic_shcha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_shha")] public const int KEY_Cyrillic_shha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_shorti")] public const int KEY_Cyrillic_shorti; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_softsign")] public const int KEY_Cyrillic_softsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_te")] public const int KEY_Cyrillic_te; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_tse")] public const int KEY_Cyrillic_tse; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_u")] public const int KEY_Cyrillic_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_u_macron")] public const int KEY_Cyrillic_u_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_u_straight")] public const int KEY_Cyrillic_u_straight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_u_straight_bar")] public const int KEY_Cyrillic_u_straight_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ve")] public const int KEY_Cyrillic_ve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ya")] public const int KEY_Cyrillic_ya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_yeru")] public const int KEY_Cyrillic_yeru; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_yu")] public const int KEY_Cyrillic_yu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_ze")] public const int KEY_Cyrillic_ze; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_zhe")] public const int KEY_Cyrillic_zhe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Cyrillic_zhe_descender")] public const int KEY_Cyrillic_zhe_descender; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_D")] public const int KEY_D; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Dabovedot")] public const int KEY_Dabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Dcaron")] public const int KEY_Dcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Delete")] public const int KEY_Delete; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_DongSign")] public const int KEY_DongSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Down")] public const int KEY_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Dstroke")] public const int KEY_Dstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_E")] public const int KEY_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ENG")] public const int KEY_ENG; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ETH")] public const int KEY_ETH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_EZH")] public const int KEY_EZH; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eabovedot")] public const int KEY_Eabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eacute")] public const int KEY_Eacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ebelowdot")] public const int KEY_Ebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecaron")] public const int KEY_Ecaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflex")] public const int KEY_Ecircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflexacute")] public const int KEY_Ecircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflexbelowdot")] public const int KEY_Ecircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflexgrave")] public const int KEY_Ecircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflexhook")] public const int KEY_Ecircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ecircumflextilde")] public const int KEY_Ecircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_EcuSign")] public const int KEY_EcuSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ediaeresis")] public const int KEY_Ediaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Egrave")] public const int KEY_Egrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ehook")] public const int KEY_Ehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eisu_Shift")] public const int KEY_Eisu_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eisu_toggle")] public const int KEY_Eisu_toggle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Emacron")] public const int KEY_Emacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_End")] public const int KEY_End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eogonek")] public const int KEY_Eogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Escape")] public const int KEY_Escape; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Eth")] public const int KEY_Eth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Etilde")] public const int KEY_Etilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_EuroSign")] public const int KEY_EuroSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Execute")] public const int KEY_Execute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F")] public const int KEY_F; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F1")] public const int KEY_F1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F10")] public const int KEY_F10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F11")] public const int KEY_F11; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F12")] public const int KEY_F12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F13")] public const int KEY_F13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F14")] public const int KEY_F14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F15")] public const int KEY_F15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F16")] public const int KEY_F16; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F17")] public const int KEY_F17; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F18")] public const int KEY_F18; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F19")] public const int KEY_F19; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F2")] public const int KEY_F2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F20")] public const int KEY_F20; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F21")] public const int KEY_F21; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F22")] public const int KEY_F22; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F23")] public const int KEY_F23; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F24")] public const int KEY_F24; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F25")] public const int KEY_F25; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F26")] public const int KEY_F26; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F27")] public const int KEY_F27; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F28")] public const int KEY_F28; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F29")] public const int KEY_F29; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F3")] public const int KEY_F3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F30")] public const int KEY_F30; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F31")] public const int KEY_F31; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F32")] public const int KEY_F32; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F33")] public const int KEY_F33; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F34")] public const int KEY_F34; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F35")] public const int KEY_F35; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F4")] public const int KEY_F4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F5")] public const int KEY_F5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F6")] public const int KEY_F6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F7")] public const int KEY_F7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F8")] public const int KEY_F8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_F9")] public const int KEY_F9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_FFrancSign")] public const int KEY_FFrancSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Fabovedot")] public const int KEY_Fabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_0")] public const int KEY_Farsi_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_1")] public const int KEY_Farsi_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_2")] public const int KEY_Farsi_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_3")] public const int KEY_Farsi_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_4")] public const int KEY_Farsi_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_5")] public const int KEY_Farsi_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_6")] public const int KEY_Farsi_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_7")] public const int KEY_Farsi_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_8")] public const int KEY_Farsi_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_9")] public const int KEY_Farsi_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Farsi_yeh")] public const int KEY_Farsi_yeh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Find")] public const int KEY_Find; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_First_Virtual_Screen")] public const int KEY_First_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_G")] public const int KEY_G; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Gabovedot")] public const int KEY_Gabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Gbreve")] public const int KEY_Gbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Gcaron")] public const int KEY_Gcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Gcedilla")] public const int KEY_Gcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Gcircumflex")] public const int KEY_Gcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_an")] public const int KEY_Georgian_an; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_ban")] public const int KEY_Georgian_ban; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_can")] public const int KEY_Georgian_can; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_char")] public const int KEY_Georgian_char; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_chin")] public const int KEY_Georgian_chin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_cil")] public const int KEY_Georgian_cil; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_don")] public const int KEY_Georgian_don; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_en")] public const int KEY_Georgian_en; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_fi")] public const int KEY_Georgian_fi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_gan")] public const int KEY_Georgian_gan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_ghan")] public const int KEY_Georgian_ghan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_hae")] public const int KEY_Georgian_hae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_har")] public const int KEY_Georgian_har; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_he")] public const int KEY_Georgian_he; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_hie")] public const int KEY_Georgian_hie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_hoe")] public const int KEY_Georgian_hoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_in")] public const int KEY_Georgian_in; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_jhan")] public const int KEY_Georgian_jhan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_jil")] public const int KEY_Georgian_jil; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_kan")] public const int KEY_Georgian_kan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_khar")] public const int KEY_Georgian_khar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_las")] public const int KEY_Georgian_las; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_man")] public const int KEY_Georgian_man; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_nar")] public const int KEY_Georgian_nar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_on")] public const int KEY_Georgian_on; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_par")] public const int KEY_Georgian_par; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_phar")] public const int KEY_Georgian_phar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_qar")] public const int KEY_Georgian_qar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_rae")] public const int KEY_Georgian_rae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_san")] public const int KEY_Georgian_san; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_shin")] public const int KEY_Georgian_shin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_tan")] public const int KEY_Georgian_tan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_tar")] public const int KEY_Georgian_tar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_un")] public const int KEY_Georgian_un; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_vin")] public const int KEY_Georgian_vin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_we")] public const int KEY_Georgian_we; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_xan")] public const int KEY_Georgian_xan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_zen")] public const int KEY_Georgian_zen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Georgian_zhar")] public const int KEY_Georgian_zhar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_ALPHA")] public const int KEY_Greek_ALPHA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_ALPHAaccent")] public const int KEY_Greek_ALPHAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_BETA")] public const int KEY_Greek_BETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_CHI")] public const int KEY_Greek_CHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_DELTA")] public const int KEY_Greek_DELTA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_EPSILON")] public const int KEY_Greek_EPSILON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_EPSILONaccent")] public const int KEY_Greek_EPSILONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_ETA")] public const int KEY_Greek_ETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_ETAaccent")] public const int KEY_Greek_ETAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_GAMMA")] public const int KEY_Greek_GAMMA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_IOTA")] public const int KEY_Greek_IOTA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_IOTAaccent")] public const int KEY_Greek_IOTAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_IOTAdiaeresis")] public const int KEY_Greek_IOTAdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_IOTAdieresis")] public const int KEY_Greek_IOTAdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_KAPPA")] public const int KEY_Greek_KAPPA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_LAMBDA")] public const int KEY_Greek_LAMBDA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_LAMDA")] public const int KEY_Greek_LAMDA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_MU")] public const int KEY_Greek_MU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_NU")] public const int KEY_Greek_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_OMEGA")] public const int KEY_Greek_OMEGA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_OMEGAaccent")] public const int KEY_Greek_OMEGAaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_OMICRON")] public const int KEY_Greek_OMICRON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_OMICRONaccent")] public const int KEY_Greek_OMICRONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_PHI")] public const int KEY_Greek_PHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_PI")] public const int KEY_Greek_PI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_PSI")] public const int KEY_Greek_PSI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_RHO")] public const int KEY_Greek_RHO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_SIGMA")] public const int KEY_Greek_SIGMA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_TAU")] public const int KEY_Greek_TAU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_THETA")] public const int KEY_Greek_THETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_UPSILON")] public const int KEY_Greek_UPSILON; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_UPSILONaccent")] public const int KEY_Greek_UPSILONaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_UPSILONdieresis")] public const int KEY_Greek_UPSILONdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_XI")] public const int KEY_Greek_XI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_ZETA")] public const int KEY_Greek_ZETA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_accentdieresis")] public const int KEY_Greek_accentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_alpha")] public const int KEY_Greek_alpha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_alphaaccent")] public const int KEY_Greek_alphaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_beta")] public const int KEY_Greek_beta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_chi")] public const int KEY_Greek_chi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_delta")] public const int KEY_Greek_delta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_epsilon")] public const int KEY_Greek_epsilon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_epsilonaccent")] public const int KEY_Greek_epsilonaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_eta")] public const int KEY_Greek_eta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_etaaccent")] public const int KEY_Greek_etaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_finalsmallsigma")] public const int KEY_Greek_finalsmallsigma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_gamma")] public const int KEY_Greek_gamma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_horizbar")] public const int KEY_Greek_horizbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_iota")] public const int KEY_Greek_iota; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_iotaaccent")] public const int KEY_Greek_iotaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_iotaaccentdieresis")] public const int KEY_Greek_iotaaccentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_iotadieresis")] public const int KEY_Greek_iotadieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_kappa")] public const int KEY_Greek_kappa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_lambda")] public const int KEY_Greek_lambda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_lamda")] public const int KEY_Greek_lamda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_mu")] public const int KEY_Greek_mu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_nu")] public const int KEY_Greek_nu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_omega")] public const int KEY_Greek_omega; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_omegaaccent")] public const int KEY_Greek_omegaaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_omicron")] public const int KEY_Greek_omicron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_omicronaccent")] public const int KEY_Greek_omicronaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_phi")] public const int KEY_Greek_phi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_pi")] public const int KEY_Greek_pi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_psi")] public const int KEY_Greek_psi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_rho")] public const int KEY_Greek_rho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_sigma")] public const int KEY_Greek_sigma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_switch")] public const int KEY_Greek_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_tau")] public const int KEY_Greek_tau; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_theta")] public const int KEY_Greek_theta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_upsilon")] public const int KEY_Greek_upsilon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_upsilonaccent")] public const int KEY_Greek_upsilonaccent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_upsilonaccentdieresis")] public const int KEY_Greek_upsilonaccentdieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_upsilondieresis")] public const int KEY_Greek_upsilondieresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_xi")] public const int KEY_Greek_xi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Greek_zeta")] public const int KEY_Greek_zeta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_H")] public const int KEY_H; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul")] public const int KEY_Hangul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_A")] public const int KEY_Hangul_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_AE")] public const int KEY_Hangul_AE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_AraeA")] public const int KEY_Hangul_AraeA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_AraeAE")] public const int KEY_Hangul_AraeAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Banja")] public const int KEY_Hangul_Banja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Cieuc")] public const int KEY_Hangul_Cieuc; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Codeinput")] public const int KEY_Hangul_Codeinput; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Dikeud")] public const int KEY_Hangul_Dikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_E")] public const int KEY_Hangul_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_EO")] public const int KEY_Hangul_EO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_EU")] public const int KEY_Hangul_EU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_End")] public const int KEY_Hangul_End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Hanja")] public const int KEY_Hangul_Hanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Hieuh")] public const int KEY_Hangul_Hieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_I")] public const int KEY_Hangul_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Ieung")] public const int KEY_Hangul_Ieung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Cieuc")] public const int KEY_Hangul_J_Cieuc; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Dikeud")] public const int KEY_Hangul_J_Dikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Hieuh")] public const int KEY_Hangul_J_Hieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Ieung")] public const int KEY_Hangul_J_Ieung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Jieuj")] public const int KEY_Hangul_J_Jieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Khieuq")] public const int KEY_Hangul_J_Khieuq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Kiyeog")] public const int KEY_Hangul_J_Kiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_KiyeogSios")] public const int KEY_Hangul_J_KiyeogSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_KkogjiDalrinIeung")] public const int KEY_Hangul_J_KkogjiDalrinIeung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Mieum")] public const int KEY_Hangul_J_Mieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Nieun")] public const int KEY_Hangul_J_Nieun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_NieunHieuh")] public const int KEY_Hangul_J_NieunHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_NieunJieuj")] public const int KEY_Hangul_J_NieunJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_PanSios")] public const int KEY_Hangul_J_PanSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Phieuf")] public const int KEY_Hangul_J_Phieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Pieub")] public const int KEY_Hangul_J_Pieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_PieubSios")] public const int KEY_Hangul_J_PieubSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Rieul")] public const int KEY_Hangul_J_Rieul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulHieuh")] public const int KEY_Hangul_J_RieulHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulKiyeog")] public const int KEY_Hangul_J_RieulKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulMieum")] public const int KEY_Hangul_J_RieulMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulPhieuf")] public const int KEY_Hangul_J_RieulPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulPieub")] public const int KEY_Hangul_J_RieulPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulSios")] public const int KEY_Hangul_J_RieulSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_RieulTieut")] public const int KEY_Hangul_J_RieulTieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Sios")] public const int KEY_Hangul_J_Sios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_SsangKiyeog")] public const int KEY_Hangul_J_SsangKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_SsangSios")] public const int KEY_Hangul_J_SsangSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_Tieut")] public const int KEY_Hangul_J_Tieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_J_YeorinHieuh")] public const int KEY_Hangul_J_YeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Jamo")] public const int KEY_Hangul_Jamo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Jeonja")] public const int KEY_Hangul_Jeonja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Jieuj")] public const int KEY_Hangul_Jieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Khieuq")] public const int KEY_Hangul_Khieuq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Kiyeog")] public const int KEY_Hangul_Kiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_KiyeogSios")] public const int KEY_Hangul_KiyeogSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_KkogjiDalrinIeung")] public const int KEY_Hangul_KkogjiDalrinIeung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Mieum")] public const int KEY_Hangul_Mieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_MultipleCandidate")] public const int KEY_Hangul_MultipleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Nieun")] public const int KEY_Hangul_Nieun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_NieunHieuh")] public const int KEY_Hangul_NieunHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_NieunJieuj")] public const int KEY_Hangul_NieunJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_O")] public const int KEY_Hangul_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_OE")] public const int KEY_Hangul_OE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_PanSios")] public const int KEY_Hangul_PanSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Phieuf")] public const int KEY_Hangul_Phieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Pieub")] public const int KEY_Hangul_Pieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_PieubSios")] public const int KEY_Hangul_PieubSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_PostHanja")] public const int KEY_Hangul_PostHanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_PreHanja")] public const int KEY_Hangul_PreHanja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_PreviousCandidate")] public const int KEY_Hangul_PreviousCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Rieul")] public const int KEY_Hangul_Rieul; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulHieuh")] public const int KEY_Hangul_RieulHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulKiyeog")] public const int KEY_Hangul_RieulKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulMieum")] public const int KEY_Hangul_RieulMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulPhieuf")] public const int KEY_Hangul_RieulPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulPieub")] public const int KEY_Hangul_RieulPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulSios")] public const int KEY_Hangul_RieulSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulTieut")] public const int KEY_Hangul_RieulTieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_RieulYeorinHieuh")] public const int KEY_Hangul_RieulYeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Romaja")] public const int KEY_Hangul_Romaja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SingleCandidate")] public const int KEY_Hangul_SingleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Sios")] public const int KEY_Hangul_Sios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Special")] public const int KEY_Hangul_Special; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SsangDikeud")] public const int KEY_Hangul_SsangDikeud; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SsangJieuj")] public const int KEY_Hangul_SsangJieuj; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SsangKiyeog")] public const int KEY_Hangul_SsangKiyeog; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SsangPieub")] public const int KEY_Hangul_SsangPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SsangSios")] public const int KEY_Hangul_SsangSios; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Start")] public const int KEY_Hangul_Start; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SunkyeongeumMieum")] public const int KEY_Hangul_SunkyeongeumMieum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SunkyeongeumPhieuf")] public const int KEY_Hangul_SunkyeongeumPhieuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_SunkyeongeumPieub")] public const int KEY_Hangul_SunkyeongeumPieub; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_Tieut")] public const int KEY_Hangul_Tieut; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_U")] public const int KEY_Hangul_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_WA")] public const int KEY_Hangul_WA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_WAE")] public const int KEY_Hangul_WAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_WE")] public const int KEY_Hangul_WE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_WEO")] public const int KEY_Hangul_WEO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_WI")] public const int KEY_Hangul_WI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YA")] public const int KEY_Hangul_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YAE")] public const int KEY_Hangul_YAE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YE")] public const int KEY_Hangul_YE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YEO")] public const int KEY_Hangul_YEO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YI")] public const int KEY_Hangul_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YO")] public const int KEY_Hangul_YO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YU")] public const int KEY_Hangul_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_YeorinHieuh")] public const int KEY_Hangul_YeorinHieuh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hangul_switch")] public const int KEY_Hangul_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hankaku")] public const int KEY_Hankaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hcircumflex")] public const int KEY_Hcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hebrew_switch")] public const int KEY_Hebrew_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Help")] public const int KEY_Help; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Henkan")] public const int KEY_Henkan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Henkan_Mode")] public const int KEY_Henkan_Mode; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hiragana")] public const int KEY_Hiragana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hiragana_Katakana")] public const int KEY_Hiragana_Katakana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Home")] public const int KEY_Home; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hstroke")] public const int KEY_Hstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hyper_L")] public const int KEY_Hyper_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Hyper_R")] public const int KEY_Hyper_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_I")] public const int KEY_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Center_Object")] public const int KEY_ISO_Center_Object; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Continuous_Underline")] public const int KEY_ISO_Continuous_Underline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Discontinuous_Underline")] public const int KEY_ISO_Discontinuous_Underline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Emphasize")] public const int KEY_ISO_Emphasize; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Enter")] public const int KEY_ISO_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Fast_Cursor_Down")] public const int KEY_ISO_Fast_Cursor_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Fast_Cursor_Left")] public const int KEY_ISO_Fast_Cursor_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Fast_Cursor_Right")] public const int KEY_ISO_Fast_Cursor_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Fast_Cursor_Up")] public const int KEY_ISO_Fast_Cursor_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_First_Group")] public const int KEY_ISO_First_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_First_Group_Lock")] public const int KEY_ISO_First_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Group_Latch")] public const int KEY_ISO_Group_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Group_Lock")] public const int KEY_ISO_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Group_Shift")] public const int KEY_ISO_Group_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Last_Group")] public const int KEY_ISO_Last_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Last_Group_Lock")] public const int KEY_ISO_Last_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Left_Tab")] public const int KEY_ISO_Left_Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level2_Latch")] public const int KEY_ISO_Level2_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level3_Latch")] public const int KEY_ISO_Level3_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level3_Lock")] public const int KEY_ISO_Level3_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level3_Shift")] public const int KEY_ISO_Level3_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level5_Latch")] public const int KEY_ISO_Level5_Latch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level5_Lock")] public const int KEY_ISO_Level5_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Level5_Shift")] public const int KEY_ISO_Level5_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Lock")] public const int KEY_ISO_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Move_Line_Down")] public const int KEY_ISO_Move_Line_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Move_Line_Up")] public const int KEY_ISO_Move_Line_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Next_Group")] public const int KEY_ISO_Next_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Next_Group_Lock")] public const int KEY_ISO_Next_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Partial_Line_Down")] public const int KEY_ISO_Partial_Line_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Partial_Line_Up")] public const int KEY_ISO_Partial_Line_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Partial_Space_Left")] public const int KEY_ISO_Partial_Space_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Partial_Space_Right")] public const int KEY_ISO_Partial_Space_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Prev_Group")] public const int KEY_ISO_Prev_Group; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Prev_Group_Lock")] public const int KEY_ISO_Prev_Group_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Release_Both_Margins")] public const int KEY_ISO_Release_Both_Margins; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Release_Margin_Left")] public const int KEY_ISO_Release_Margin_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Release_Margin_Right")] public const int KEY_ISO_Release_Margin_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Set_Margin_Left")] public const int KEY_ISO_Set_Margin_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ISO_Set_Margin_Right")] public const int KEY_ISO_Set_Margin_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Iabovedot")] public const int KEY_Iabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Iacute")] public const int KEY_Iacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ibelowdot")] public const int KEY_Ibelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ibreve")] public const int KEY_Ibreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Icircumflex")] public const int KEY_Icircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Idiaeresis")] public const int KEY_Idiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Igrave")] public const int KEY_Igrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ihook")] public const int KEY_Ihook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Imacron")] public const int KEY_Imacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Insert")] public const int KEY_Insert; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Iogonek")] public const int KEY_Iogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Itilde")] public const int KEY_Itilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_J")] public const int KEY_J; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Jcircumflex")] public const int KEY_Jcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_K")] public const int KEY_K; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_0")] public const int KEY_KP_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_1")] public const int KEY_KP_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_2")] public const int KEY_KP_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_3")] public const int KEY_KP_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_4")] public const int KEY_KP_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_5")] public const int KEY_KP_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_6")] public const int KEY_KP_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_7")] public const int KEY_KP_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_8")] public const int KEY_KP_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_9")] public const int KEY_KP_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Add")] public const int KEY_KP_Add; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Begin")] public const int KEY_KP_Begin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Decimal")] public const int KEY_KP_Decimal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Delete")] public const int KEY_KP_Delete; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Divide")] public const int KEY_KP_Divide; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Down")] public const int KEY_KP_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_End")] public const int KEY_KP_End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Enter")] public const int KEY_KP_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Equal")] public const int KEY_KP_Equal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_F1")] public const int KEY_KP_F1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_F2")] public const int KEY_KP_F2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_F3")] public const int KEY_KP_F3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_F4")] public const int KEY_KP_F4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Home")] public const int KEY_KP_Home; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Insert")] public const int KEY_KP_Insert; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Left")] public const int KEY_KP_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Multiply")] public const int KEY_KP_Multiply; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Next")] public const int KEY_KP_Next; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Page_Down")] public const int KEY_KP_Page_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Page_Up")] public const int KEY_KP_Page_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Prior")] public const int KEY_KP_Prior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Right")] public const int KEY_KP_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Separator")] public const int KEY_KP_Separator; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Space")] public const int KEY_KP_Space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Subtract")] public const int KEY_KP_Subtract; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Tab")] public const int KEY_KP_Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_KP_Up")] public const int KEY_KP_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Kana_Lock")] public const int KEY_Kana_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Kana_Shift")] public const int KEY_Kana_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Kanji")] public const int KEY_Kanji; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Kanji_Bangou")] public const int KEY_Kanji_Bangou; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Katakana")] public const int KEY_Katakana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Kcedilla")] public const int KEY_Kcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Korean_Won")] public const int KEY_Korean_Won; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L")] public const int KEY_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L1")] public const int KEY_L1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L10")] public const int KEY_L10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L2")] public const int KEY_L2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L3")] public const int KEY_L3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L4")] public const int KEY_L4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L5")] public const int KEY_L5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L6")] public const int KEY_L6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L7")] public const int KEY_L7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L8")] public const int KEY_L8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_L9")] public const int KEY_L9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Lacute")] public const int KEY_Lacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Last_Virtual_Screen")] public const int KEY_Last_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Lbelowdot")] public const int KEY_Lbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Lcaron")] public const int KEY_Lcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Lcedilla")] public const int KEY_Lcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Left")] public const int KEY_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Linefeed")] public const int KEY_Linefeed; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_LiraSign")] public const int KEY_LiraSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Lstroke")] public const int KEY_Lstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_M")] public const int KEY_M; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Mabovedot")] public const int KEY_Mabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_DSE")] public const int KEY_Macedonia_DSE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_GJE")] public const int KEY_Macedonia_GJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_KJE")] public const int KEY_Macedonia_KJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_dse")] public const int KEY_Macedonia_dse; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_gje")] public const int KEY_Macedonia_gje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Macedonia_kje")] public const int KEY_Macedonia_kje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Mae_Koho")] public const int KEY_Mae_Koho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Massyo")] public const int KEY_Massyo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Menu")] public const int KEY_Menu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Meta_L")] public const int KEY_Meta_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Meta_R")] public const int KEY_Meta_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_MillSign")] public const int KEY_MillSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Mode_switch")] public const int KEY_Mode_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_MouseKeys_Accel_Enable")] public const int KEY_MouseKeys_Accel_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_MouseKeys_Enable")] public const int KEY_MouseKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Muhenkan")] public const int KEY_Muhenkan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Multi_key")] public const int KEY_Multi_key; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_MultipleCandidate")] public const int KEY_MultipleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_N")] public const int KEY_N; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Nacute")] public const int KEY_Nacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_NairaSign")] public const int KEY_NairaSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ncaron")] public const int KEY_Ncaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ncedilla")] public const int KEY_Ncedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_NewSheqelSign")] public const int KEY_NewSheqelSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Next")] public const int KEY_Next; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Next_Virtual_Screen")] public const int KEY_Next_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ntilde")] public const int KEY_Ntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Num_Lock")] public const int KEY_Num_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_O")] public const int KEY_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_OE")] public const int KEY_OE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Oacute")] public const int KEY_Oacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Obarred")] public const int KEY_Obarred; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Obelowdot")] public const int KEY_Obelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocaron")] public const int KEY_Ocaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflex")] public const int KEY_Ocircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflexacute")] public const int KEY_Ocircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflexbelowdot")] public const int KEY_Ocircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflexgrave")] public const int KEY_Ocircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflexhook")] public const int KEY_Ocircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ocircumflextilde")] public const int KEY_Ocircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Odiaeresis")] public const int KEY_Odiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Odoubleacute")] public const int KEY_Odoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ograve")] public const int KEY_Ograve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohook")] public const int KEY_Ohook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohorn")] public const int KEY_Ohorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohornacute")] public const int KEY_Ohornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohornbelowdot")] public const int KEY_Ohornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohorngrave")] public const int KEY_Ohorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohornhook")] public const int KEY_Ohornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ohorntilde")] public const int KEY_Ohorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Omacron")] public const int KEY_Omacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ooblique")] public const int KEY_Ooblique; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Oslash")] public const int KEY_Oslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Otilde")] public const int KEY_Otilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Overlay1_Enable")] public const int KEY_Overlay1_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Overlay2_Enable")] public const int KEY_Overlay2_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_P")] public const int KEY_P; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pabovedot")] public const int KEY_Pabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Page_Down")] public const int KEY_Page_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Page_Up")] public const int KEY_Page_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pause")] public const int KEY_Pause; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_PesetaSign")] public const int KEY_PesetaSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Accelerate")] public const int KEY_Pointer_Accelerate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button1")] public const int KEY_Pointer_Button1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button2")] public const int KEY_Pointer_Button2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button3")] public const int KEY_Pointer_Button3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button4")] public const int KEY_Pointer_Button4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button5")] public const int KEY_Pointer_Button5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Button_Dflt")] public const int KEY_Pointer_Button_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick1")] public const int KEY_Pointer_DblClick1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick2")] public const int KEY_Pointer_DblClick2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick3")] public const int KEY_Pointer_DblClick3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick4")] public const int KEY_Pointer_DblClick4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick5")] public const int KEY_Pointer_DblClick5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DblClick_Dflt")] public const int KEY_Pointer_DblClick_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DfltBtnNext")] public const int KEY_Pointer_DfltBtnNext; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DfltBtnPrev")] public const int KEY_Pointer_DfltBtnPrev; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Down")] public const int KEY_Pointer_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DownLeft")] public const int KEY_Pointer_DownLeft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_DownRight")] public const int KEY_Pointer_DownRight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag1")] public const int KEY_Pointer_Drag1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag2")] public const int KEY_Pointer_Drag2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag3")] public const int KEY_Pointer_Drag3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag4")] public const int KEY_Pointer_Drag4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag5")] public const int KEY_Pointer_Drag5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Drag_Dflt")] public const int KEY_Pointer_Drag_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_EnableKeys")] public const int KEY_Pointer_EnableKeys; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Left")] public const int KEY_Pointer_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Right")] public const int KEY_Pointer_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_Up")] public const int KEY_Pointer_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_UpLeft")] public const int KEY_Pointer_UpLeft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Pointer_UpRight")] public const int KEY_Pointer_UpRight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Prev_Virtual_Screen")] public const int KEY_Prev_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_PreviousCandidate")] public const int KEY_PreviousCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Print")] public const int KEY_Print; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Prior")] public const int KEY_Prior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Q")] public const int KEY_Q; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R")] public const int KEY_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R1")] public const int KEY_R1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R10")] public const int KEY_R10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R11")] public const int KEY_R11; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R12")] public const int KEY_R12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R13")] public const int KEY_R13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R14")] public const int KEY_R14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R15")] public const int KEY_R15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R2")] public const int KEY_R2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R3")] public const int KEY_R3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R4")] public const int KEY_R4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R5")] public const int KEY_R5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R6")] public const int KEY_R6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R7")] public const int KEY_R7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R8")] public const int KEY_R8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_R9")] public const int KEY_R9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Racute")] public const int KEY_Racute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Rcaron")] public const int KEY_Rcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Rcedilla")] public const int KEY_Rcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Redo")] public const int KEY_Redo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_RepeatKeys_Enable")] public const int KEY_RepeatKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Return")] public const int KEY_Return; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Right")] public const int KEY_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Romaji")] public const int KEY_Romaji; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_RupeeSign")] public const int KEY_RupeeSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_S")] public const int KEY_S; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_SCHWA")] public const int KEY_SCHWA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sabovedot")] public const int KEY_Sabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sacute")] public const int KEY_Sacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Scaron")] public const int KEY_Scaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Scedilla")] public const int KEY_Scedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Scircumflex")] public const int KEY_Scircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Scroll_Lock")] public const int KEY_Scroll_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Select")] public const int KEY_Select; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_DJE")] public const int KEY_Serbian_DJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_DZE")] public const int KEY_Serbian_DZE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_JE")] public const int KEY_Serbian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_LJE")] public const int KEY_Serbian_LJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_NJE")] public const int KEY_Serbian_NJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_TSHE")] public const int KEY_Serbian_TSHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_dje")] public const int KEY_Serbian_dje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_dze")] public const int KEY_Serbian_dze; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_je")] public const int KEY_Serbian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_lje")] public const int KEY_Serbian_lje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_nje")] public const int KEY_Serbian_nje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Serbian_tshe")] public const int KEY_Serbian_tshe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Shift_L")] public const int KEY_Shift_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Shift_Lock")] public const int KEY_Shift_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Shift_R")] public const int KEY_Shift_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_SingleCandidate")] public const int KEY_SingleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_a")] public const int KEY_Sinh_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_aa")] public const int KEY_Sinh_aa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_aa2")] public const int KEY_Sinh_aa2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ae")] public const int KEY_Sinh_ae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ae2")] public const int KEY_Sinh_ae2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_aee")] public const int KEY_Sinh_aee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_aee2")] public const int KEY_Sinh_aee2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ai")] public const int KEY_Sinh_ai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ai2")] public const int KEY_Sinh_ai2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_al")] public const int KEY_Sinh_al; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_au")] public const int KEY_Sinh_au; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_au2")] public const int KEY_Sinh_au2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ba")] public const int KEY_Sinh_ba; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_bha")] public const int KEY_Sinh_bha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ca")] public const int KEY_Sinh_ca; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_cha")] public const int KEY_Sinh_cha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_dda")] public const int KEY_Sinh_dda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ddha")] public const int KEY_Sinh_ddha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_dha")] public const int KEY_Sinh_dha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_dhha")] public const int KEY_Sinh_dhha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_e")] public const int KEY_Sinh_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_e2")] public const int KEY_Sinh_e2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ee")] public const int KEY_Sinh_ee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ee2")] public const int KEY_Sinh_ee2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_fa")] public const int KEY_Sinh_fa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ga")] public const int KEY_Sinh_ga; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_gha")] public const int KEY_Sinh_gha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_h2")] public const int KEY_Sinh_h2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ha")] public const int KEY_Sinh_ha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_i")] public const int KEY_Sinh_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_i2")] public const int KEY_Sinh_i2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ii")] public const int KEY_Sinh_ii; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ii2")] public const int KEY_Sinh_ii2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ja")] public const int KEY_Sinh_ja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_jha")] public const int KEY_Sinh_jha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_jnya")] public const int KEY_Sinh_jnya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ka")] public const int KEY_Sinh_ka; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_kha")] public const int KEY_Sinh_kha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_kunddaliya")] public const int KEY_Sinh_kunddaliya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_la")] public const int KEY_Sinh_la; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_lla")] public const int KEY_Sinh_lla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_lu")] public const int KEY_Sinh_lu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_lu2")] public const int KEY_Sinh_lu2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_luu")] public const int KEY_Sinh_luu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_luu2")] public const int KEY_Sinh_luu2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ma")] public const int KEY_Sinh_ma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_mba")] public const int KEY_Sinh_mba; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_na")] public const int KEY_Sinh_na; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ndda")] public const int KEY_Sinh_ndda; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ndha")] public const int KEY_Sinh_ndha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ng")] public const int KEY_Sinh_ng; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ng2")] public const int KEY_Sinh_ng2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_nga")] public const int KEY_Sinh_nga; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_nja")] public const int KEY_Sinh_nja; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_nna")] public const int KEY_Sinh_nna; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_nya")] public const int KEY_Sinh_nya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_o")] public const int KEY_Sinh_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_o2")] public const int KEY_Sinh_o2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_oo")] public const int KEY_Sinh_oo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_oo2")] public const int KEY_Sinh_oo2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_pa")] public const int KEY_Sinh_pa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_pha")] public const int KEY_Sinh_pha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ra")] public const int KEY_Sinh_ra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ri")] public const int KEY_Sinh_ri; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_rii")] public const int KEY_Sinh_rii; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ru2")] public const int KEY_Sinh_ru2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ruu2")] public const int KEY_Sinh_ruu2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_sa")] public const int KEY_Sinh_sa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_sha")] public const int KEY_Sinh_sha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ssha")] public const int KEY_Sinh_ssha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_tha")] public const int KEY_Sinh_tha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_thha")] public const int KEY_Sinh_thha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_tta")] public const int KEY_Sinh_tta; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ttha")] public const int KEY_Sinh_ttha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_u")] public const int KEY_Sinh_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_u2")] public const int KEY_Sinh_u2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_uu")] public const int KEY_Sinh_uu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_uu2")] public const int KEY_Sinh_uu2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_va")] public const int KEY_Sinh_va; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sinh_ya")] public const int KEY_Sinh_ya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_SlowKeys_Enable")] public const int KEY_SlowKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_StickyKeys_Enable")] public const int KEY_StickyKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Super_L")] public const int KEY_Super_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Super_R")] public const int KEY_Super_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Sys_Req")] public const int KEY_Sys_Req; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_T")] public const int KEY_T; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_THORN")] public const int KEY_THORN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Tab")] public const int KEY_Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Tabovedot")] public const int KEY_Tabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Tcaron")] public const int KEY_Tcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Tcedilla")] public const int KEY_Tcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Terminate_Server")] public const int KEY_Terminate_Server; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_baht")] public const int KEY_Thai_baht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_bobaimai")] public const int KEY_Thai_bobaimai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_chochan")] public const int KEY_Thai_chochan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_chochang")] public const int KEY_Thai_chochang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_choching")] public const int KEY_Thai_choching; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_chochoe")] public const int KEY_Thai_chochoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_dochada")] public const int KEY_Thai_dochada; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_dodek")] public const int KEY_Thai_dodek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_fofa")] public const int KEY_Thai_fofa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_fofan")] public const int KEY_Thai_fofan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_hohip")] public const int KEY_Thai_hohip; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_honokhuk")] public const int KEY_Thai_honokhuk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_khokhai")] public const int KEY_Thai_khokhai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_khokhon")] public const int KEY_Thai_khokhon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_khokhuat")] public const int KEY_Thai_khokhuat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_khokhwai")] public const int KEY_Thai_khokhwai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_khorakhang")] public const int KEY_Thai_khorakhang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_kokai")] public const int KEY_Thai_kokai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lakkhangyao")] public const int KEY_Thai_lakkhangyao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lekchet")] public const int KEY_Thai_lekchet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lekha")] public const int KEY_Thai_lekha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lekhok")] public const int KEY_Thai_lekhok; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lekkao")] public const int KEY_Thai_lekkao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_leknung")] public const int KEY_Thai_leknung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lekpaet")] public const int KEY_Thai_lekpaet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_leksam")] public const int KEY_Thai_leksam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_leksi")] public const int KEY_Thai_leksi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_leksong")] public const int KEY_Thai_leksong; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_leksun")] public const int KEY_Thai_leksun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lochula")] public const int KEY_Thai_lochula; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_loling")] public const int KEY_Thai_loling; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_lu")] public const int KEY_Thai_lu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maichattawa")] public const int KEY_Thai_maichattawa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maiek")] public const int KEY_Thai_maiek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maihanakat")] public const int KEY_Thai_maihanakat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maihanakat_maitho")] public const int KEY_Thai_maihanakat_maitho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maitaikhu")] public const int KEY_Thai_maitaikhu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maitho")] public const int KEY_Thai_maitho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maitri")] public const int KEY_Thai_maitri; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_maiyamok")] public const int KEY_Thai_maiyamok; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_moma")] public const int KEY_Thai_moma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_ngongu")] public const int KEY_Thai_ngongu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_nikhahit")] public const int KEY_Thai_nikhahit; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_nonen")] public const int KEY_Thai_nonen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_nonu")] public const int KEY_Thai_nonu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_oang")] public const int KEY_Thai_oang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_paiyannoi")] public const int KEY_Thai_paiyannoi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_phinthu")] public const int KEY_Thai_phinthu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_phophan")] public const int KEY_Thai_phophan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_phophung")] public const int KEY_Thai_phophung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_phosamphao")] public const int KEY_Thai_phosamphao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_popla")] public const int KEY_Thai_popla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_rorua")] public const int KEY_Thai_rorua; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_ru")] public const int KEY_Thai_ru; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraa")] public const int KEY_Thai_saraa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraaa")] public const int KEY_Thai_saraaa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraae")] public const int KEY_Thai_saraae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraaimaimalai")] public const int KEY_Thai_saraaimaimalai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraaimaimuan")] public const int KEY_Thai_saraaimaimuan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraam")] public const int KEY_Thai_saraam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarae")] public const int KEY_Thai_sarae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarai")] public const int KEY_Thai_sarai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraii")] public const int KEY_Thai_saraii; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarao")] public const int KEY_Thai_sarao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarau")] public const int KEY_Thai_sarau; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_saraue")] public const int KEY_Thai_saraue; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarauee")] public const int KEY_Thai_sarauee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sarauu")] public const int KEY_Thai_sarauu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sorusi")] public const int KEY_Thai_sorusi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sosala")] public const int KEY_Thai_sosala; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_soso")] public const int KEY_Thai_soso; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_sosua")] public const int KEY_Thai_sosua; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thanthakhat")] public const int KEY_Thai_thanthakhat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thonangmontho")] public const int KEY_Thai_thonangmontho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thophuthao")] public const int KEY_Thai_thophuthao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thothahan")] public const int KEY_Thai_thothahan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thothan")] public const int KEY_Thai_thothan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thothong")] public const int KEY_Thai_thothong; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_thothung")] public const int KEY_Thai_thothung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_topatak")] public const int KEY_Thai_topatak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_totao")] public const int KEY_Thai_totao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_wowaen")] public const int KEY_Thai_wowaen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_yoyak")] public const int KEY_Thai_yoyak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thai_yoying")] public const int KEY_Thai_yoying; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Thorn")] public const int KEY_Thorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Touroku")] public const int KEY_Touroku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Tslash")] public const int KEY_Tslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_U")] public const int KEY_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uacute")] public const int KEY_Uacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ubelowdot")] public const int KEY_Ubelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ubreve")] public const int KEY_Ubreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ucircumflex")] public const int KEY_Ucircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Udiaeresis")] public const int KEY_Udiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Udoubleacute")] public const int KEY_Udoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ugrave")] public const int KEY_Ugrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhook")] public const int KEY_Uhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhorn")] public const int KEY_Uhorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhornacute")] public const int KEY_Uhornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhornbelowdot")] public const int KEY_Uhornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhorngrave")] public const int KEY_Uhorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhornhook")] public const int KEY_Uhornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uhorntilde")] public const int KEY_Uhorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_GHE_WITH_UPTURN")] public const int KEY_Ukrainian_GHE_WITH_UPTURN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_I")] public const int KEY_Ukrainian_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_IE")] public const int KEY_Ukrainian_IE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_YI")] public const int KEY_Ukrainian_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_ghe_with_upturn")] public const int KEY_Ukrainian_ghe_with_upturn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_i")] public const int KEY_Ukrainian_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_ie")] public const int KEY_Ukrainian_ie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukrainian_yi")] public const int KEY_Ukrainian_yi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_I")] public const int KEY_Ukranian_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_JE")] public const int KEY_Ukranian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_YI")] public const int KEY_Ukranian_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_i")] public const int KEY_Ukranian_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_je")] public const int KEY_Ukranian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ukranian_yi")] public const int KEY_Ukranian_yi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Umacron")] public const int KEY_Umacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Undo")] public const int KEY_Undo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uogonek")] public const int KEY_Uogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Up")] public const int KEY_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Uring")] public const int KEY_Uring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Utilde")] public const int KEY_Utilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_V")] public const int KEY_V; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_VoidSymbol")] public const int KEY_VoidSymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_W")] public const int KEY_W; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Wacute")] public const int KEY_Wacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Wcircumflex")] public const int KEY_Wcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Wdiaeresis")] public const int KEY_Wdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Wgrave")] public const int KEY_Wgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_WonSign")] public const int KEY_WonSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_X")] public const int KEY_X; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Xabovedot")] public const int KEY_Xabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Y")] public const int KEY_Y; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Yacute")] public const int KEY_Yacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ybelowdot")] public const int KEY_Ybelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ycircumflex")] public const int KEY_Ycircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ydiaeresis")] public const int KEY_Ydiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ygrave")] public const int KEY_Ygrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Yhook")] public const int KEY_Yhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Ytilde")] public const int KEY_Ytilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Z")] public const int KEY_Z; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zabovedot")] public const int KEY_Zabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zacute")] public const int KEY_Zacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zcaron")] public const int KEY_Zcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zen_Koho")] public const int KEY_Zen_Koho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zenkaku")] public const int KEY_Zenkaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zenkaku_Hankaku")] public const int KEY_Zenkaku_Hankaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_Zstroke")] public const int KEY_Zstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_a")] public const int KEY_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_aacute")] public const int KEY_aacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abelowdot")] public const int KEY_abelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abovedot")] public const int KEY_abovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abreve")] public const int KEY_abreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abreveacute")] public const int KEY_abreveacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abrevebelowdot")] public const int KEY_abrevebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abrevegrave")] public const int KEY_abrevegrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abrevehook")] public const int KEY_abrevehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_abrevetilde")] public const int KEY_abrevetilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflex")] public const int KEY_acircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflexacute")] public const int KEY_acircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflexbelowdot")] public const int KEY_acircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflexgrave")] public const int KEY_acircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflexhook")] public const int KEY_acircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acircumflextilde")] public const int KEY_acircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_acute")] public const int KEY_acute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_adiaeresis")] public const int KEY_adiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ae")] public const int KEY_ae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_agrave")] public const int KEY_agrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ahook")] public const int KEY_ahook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_amacron")] public const int KEY_amacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ampersand")] public const int KEY_ampersand; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_aogonek")] public const int KEY_aogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_apostrophe")] public const int KEY_apostrophe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_approxeq")] public const int KEY_approxeq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_approximate")] public const int KEY_approximate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_aring")] public const int KEY_aring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_asciicircum")] public const int KEY_asciicircum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_asciitilde")] public const int KEY_asciitilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_asterisk")] public const int KEY_asterisk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_at")] public const int KEY_at; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_atilde")] public const int KEY_atilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_b")] public const int KEY_b; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_babovedot")] public const int KEY_babovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_backslash")] public const int KEY_backslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ballotcross")] public const int KEY_ballotcross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_bar")] public const int KEY_bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_because")] public const int KEY_because; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_blank")] public const int KEY_blank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botintegral")] public const int KEY_botintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botleftparens")] public const int KEY_botleftparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botleftsqbracket")] public const int KEY_botleftsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botleftsummation")] public const int KEY_botleftsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botrightparens")] public const int KEY_botrightparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botrightsqbracket")] public const int KEY_botrightsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botrightsummation")] public const int KEY_botrightsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_bott")] public const int KEY_bott; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_botvertsummationconnector")] public const int KEY_botvertsummationconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braceleft")] public const int KEY_braceleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braceright")] public const int KEY_braceright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_bracketleft")] public const int KEY_bracketleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_bracketright")] public const int KEY_bracketright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_blank")] public const int KEY_braille_blank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_1")] public const int KEY_braille_dot_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_10")] public const int KEY_braille_dot_10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_2")] public const int KEY_braille_dot_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_3")] public const int KEY_braille_dot_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_4")] public const int KEY_braille_dot_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_5")] public const int KEY_braille_dot_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_6")] public const int KEY_braille_dot_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_7")] public const int KEY_braille_dot_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_8")] public const int KEY_braille_dot_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dot_9")] public const int KEY_braille_dot_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1")] public const int KEY_braille_dots_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12")] public const int KEY_braille_dots_12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123")] public const int KEY_braille_dots_123; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1234")] public const int KEY_braille_dots_1234; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12345")] public const int KEY_braille_dots_12345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123456")] public const int KEY_braille_dots_123456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1234567")] public const int KEY_braille_dots_1234567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12345678")] public const int KEY_braille_dots_12345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1234568")] public const int KEY_braille_dots_1234568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123457")] public const int KEY_braille_dots_123457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1234578")] public const int KEY_braille_dots_1234578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123458")] public const int KEY_braille_dots_123458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12346")] public const int KEY_braille_dots_12346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123467")] public const int KEY_braille_dots_123467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1234678")] public const int KEY_braille_dots_1234678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123468")] public const int KEY_braille_dots_123468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12347")] public const int KEY_braille_dots_12347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123478")] public const int KEY_braille_dots_123478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12348")] public const int KEY_braille_dots_12348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1235")] public const int KEY_braille_dots_1235; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12356")] public const int KEY_braille_dots_12356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123567")] public const int KEY_braille_dots_123567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1235678")] public const int KEY_braille_dots_1235678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123568")] public const int KEY_braille_dots_123568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12357")] public const int KEY_braille_dots_12357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123578")] public const int KEY_braille_dots_123578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12358")] public const int KEY_braille_dots_12358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1236")] public const int KEY_braille_dots_1236; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12367")] public const int KEY_braille_dots_12367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_123678")] public const int KEY_braille_dots_123678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12368")] public const int KEY_braille_dots_12368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1237")] public const int KEY_braille_dots_1237; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12378")] public const int KEY_braille_dots_12378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1238")] public const int KEY_braille_dots_1238; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_124")] public const int KEY_braille_dots_124; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1245")] public const int KEY_braille_dots_1245; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12456")] public const int KEY_braille_dots_12456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_124567")] public const int KEY_braille_dots_124567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1245678")] public const int KEY_braille_dots_1245678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_124568")] public const int KEY_braille_dots_124568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12457")] public const int KEY_braille_dots_12457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_124578")] public const int KEY_braille_dots_124578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12458")] public const int KEY_braille_dots_12458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1246")] public const int KEY_braille_dots_1246; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12467")] public const int KEY_braille_dots_12467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_124678")] public const int KEY_braille_dots_124678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12468")] public const int KEY_braille_dots_12468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1247")] public const int KEY_braille_dots_1247; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12478")] public const int KEY_braille_dots_12478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1248")] public const int KEY_braille_dots_1248; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_125")] public const int KEY_braille_dots_125; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1256")] public const int KEY_braille_dots_1256; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12567")] public const int KEY_braille_dots_12567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_125678")] public const int KEY_braille_dots_125678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12568")] public const int KEY_braille_dots_12568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1257")] public const int KEY_braille_dots_1257; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12578")] public const int KEY_braille_dots_12578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1258")] public const int KEY_braille_dots_1258; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_126")] public const int KEY_braille_dots_126; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1267")] public const int KEY_braille_dots_1267; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_12678")] public const int KEY_braille_dots_12678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1268")] public const int KEY_braille_dots_1268; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_127")] public const int KEY_braille_dots_127; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1278")] public const int KEY_braille_dots_1278; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_128")] public const int KEY_braille_dots_128; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13")] public const int KEY_braille_dots_13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_134")] public const int KEY_braille_dots_134; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1345")] public const int KEY_braille_dots_1345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13456")] public const int KEY_braille_dots_13456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_134567")] public const int KEY_braille_dots_134567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1345678")] public const int KEY_braille_dots_1345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_134568")] public const int KEY_braille_dots_134568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13457")] public const int KEY_braille_dots_13457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_134578")] public const int KEY_braille_dots_134578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13458")] public const int KEY_braille_dots_13458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1346")] public const int KEY_braille_dots_1346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13467")] public const int KEY_braille_dots_13467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_134678")] public const int KEY_braille_dots_134678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13468")] public const int KEY_braille_dots_13468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1347")] public const int KEY_braille_dots_1347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13478")] public const int KEY_braille_dots_13478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1348")] public const int KEY_braille_dots_1348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_135")] public const int KEY_braille_dots_135; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1356")] public const int KEY_braille_dots_1356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13567")] public const int KEY_braille_dots_13567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_135678")] public const int KEY_braille_dots_135678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13568")] public const int KEY_braille_dots_13568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1357")] public const int KEY_braille_dots_1357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13578")] public const int KEY_braille_dots_13578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1358")] public const int KEY_braille_dots_1358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_136")] public const int KEY_braille_dots_136; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1367")] public const int KEY_braille_dots_1367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_13678")] public const int KEY_braille_dots_13678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1368")] public const int KEY_braille_dots_1368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_137")] public const int KEY_braille_dots_137; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1378")] public const int KEY_braille_dots_1378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_138")] public const int KEY_braille_dots_138; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_14")] public const int KEY_braille_dots_14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_145")] public const int KEY_braille_dots_145; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1456")] public const int KEY_braille_dots_1456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_14567")] public const int KEY_braille_dots_14567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_145678")] public const int KEY_braille_dots_145678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_14568")] public const int KEY_braille_dots_14568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1457")] public const int KEY_braille_dots_1457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_14578")] public const int KEY_braille_dots_14578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1458")] public const int KEY_braille_dots_1458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_146")] public const int KEY_braille_dots_146; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1467")] public const int KEY_braille_dots_1467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_14678")] public const int KEY_braille_dots_14678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1468")] public const int KEY_braille_dots_1468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_147")] public const int KEY_braille_dots_147; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1478")] public const int KEY_braille_dots_1478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_148")] public const int KEY_braille_dots_148; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_15")] public const int KEY_braille_dots_15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_156")] public const int KEY_braille_dots_156; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1567")] public const int KEY_braille_dots_1567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_15678")] public const int KEY_braille_dots_15678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1568")] public const int KEY_braille_dots_1568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_157")] public const int KEY_braille_dots_157; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1578")] public const int KEY_braille_dots_1578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_158")] public const int KEY_braille_dots_158; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_16")] public const int KEY_braille_dots_16; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_167")] public const int KEY_braille_dots_167; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_1678")] public const int KEY_braille_dots_1678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_168")] public const int KEY_braille_dots_168; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_17")] public const int KEY_braille_dots_17; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_178")] public const int KEY_braille_dots_178; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_18")] public const int KEY_braille_dots_18; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2")] public const int KEY_braille_dots_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23")] public const int KEY_braille_dots_23; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_234")] public const int KEY_braille_dots_234; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2345")] public const int KEY_braille_dots_2345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23456")] public const int KEY_braille_dots_23456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_234567")] public const int KEY_braille_dots_234567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2345678")] public const int KEY_braille_dots_2345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_234568")] public const int KEY_braille_dots_234568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23457")] public const int KEY_braille_dots_23457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_234578")] public const int KEY_braille_dots_234578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23458")] public const int KEY_braille_dots_23458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2346")] public const int KEY_braille_dots_2346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23467")] public const int KEY_braille_dots_23467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_234678")] public const int KEY_braille_dots_234678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23468")] public const int KEY_braille_dots_23468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2347")] public const int KEY_braille_dots_2347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23478")] public const int KEY_braille_dots_23478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2348")] public const int KEY_braille_dots_2348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_235")] public const int KEY_braille_dots_235; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2356")] public const int KEY_braille_dots_2356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23567")] public const int KEY_braille_dots_23567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_235678")] public const int KEY_braille_dots_235678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23568")] public const int KEY_braille_dots_23568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2357")] public const int KEY_braille_dots_2357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23578")] public const int KEY_braille_dots_23578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2358")] public const int KEY_braille_dots_2358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_236")] public const int KEY_braille_dots_236; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2367")] public const int KEY_braille_dots_2367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_23678")] public const int KEY_braille_dots_23678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2368")] public const int KEY_braille_dots_2368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_237")] public const int KEY_braille_dots_237; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2378")] public const int KEY_braille_dots_2378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_238")] public const int KEY_braille_dots_238; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_24")] public const int KEY_braille_dots_24; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_245")] public const int KEY_braille_dots_245; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2456")] public const int KEY_braille_dots_2456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_24567")] public const int KEY_braille_dots_24567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_245678")] public const int KEY_braille_dots_245678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_24568")] public const int KEY_braille_dots_24568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2457")] public const int KEY_braille_dots_2457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_24578")] public const int KEY_braille_dots_24578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2458")] public const int KEY_braille_dots_2458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_246")] public const int KEY_braille_dots_246; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2467")] public const int KEY_braille_dots_2467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_24678")] public const int KEY_braille_dots_24678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2468")] public const int KEY_braille_dots_2468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_247")] public const int KEY_braille_dots_247; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2478")] public const int KEY_braille_dots_2478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_248")] public const int KEY_braille_dots_248; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_25")] public const int KEY_braille_dots_25; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_256")] public const int KEY_braille_dots_256; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2567")] public const int KEY_braille_dots_2567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_25678")] public const int KEY_braille_dots_25678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2568")] public const int KEY_braille_dots_2568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_257")] public const int KEY_braille_dots_257; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2578")] public const int KEY_braille_dots_2578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_258")] public const int KEY_braille_dots_258; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_26")] public const int KEY_braille_dots_26; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_267")] public const int KEY_braille_dots_267; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_2678")] public const int KEY_braille_dots_2678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_268")] public const int KEY_braille_dots_268; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_27")] public const int KEY_braille_dots_27; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_278")] public const int KEY_braille_dots_278; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_28")] public const int KEY_braille_dots_28; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3")] public const int KEY_braille_dots_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_34")] public const int KEY_braille_dots_34; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_345")] public const int KEY_braille_dots_345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3456")] public const int KEY_braille_dots_3456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_34567")] public const int KEY_braille_dots_34567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_345678")] public const int KEY_braille_dots_345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_34568")] public const int KEY_braille_dots_34568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3457")] public const int KEY_braille_dots_3457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_34578")] public const int KEY_braille_dots_34578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3458")] public const int KEY_braille_dots_3458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_346")] public const int KEY_braille_dots_346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3467")] public const int KEY_braille_dots_3467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_34678")] public const int KEY_braille_dots_34678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3468")] public const int KEY_braille_dots_3468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_347")] public const int KEY_braille_dots_347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3478")] public const int KEY_braille_dots_3478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_348")] public const int KEY_braille_dots_348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_35")] public const int KEY_braille_dots_35; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_356")] public const int KEY_braille_dots_356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3567")] public const int KEY_braille_dots_3567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_35678")] public const int KEY_braille_dots_35678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3568")] public const int KEY_braille_dots_3568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_357")] public const int KEY_braille_dots_357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3578")] public const int KEY_braille_dots_3578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_358")] public const int KEY_braille_dots_358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_36")] public const int KEY_braille_dots_36; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_367")] public const int KEY_braille_dots_367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_3678")] public const int KEY_braille_dots_3678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_368")] public const int KEY_braille_dots_368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_37")] public const int KEY_braille_dots_37; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_378")] public const int KEY_braille_dots_378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_38")] public const int KEY_braille_dots_38; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_4")] public const int KEY_braille_dots_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_45")] public const int KEY_braille_dots_45; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_456")] public const int KEY_braille_dots_456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_4567")] public const int KEY_braille_dots_4567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_45678")] public const int KEY_braille_dots_45678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_4568")] public const int KEY_braille_dots_4568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_457")] public const int KEY_braille_dots_457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_4578")] public const int KEY_braille_dots_4578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_458")] public const int KEY_braille_dots_458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_46")] public const int KEY_braille_dots_46; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_467")] public const int KEY_braille_dots_467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_4678")] public const int KEY_braille_dots_4678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_468")] public const int KEY_braille_dots_468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_47")] public const int KEY_braille_dots_47; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_478")] public const int KEY_braille_dots_478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_48")] public const int KEY_braille_dots_48; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_5")] public const int KEY_braille_dots_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_56")] public const int KEY_braille_dots_56; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_567")] public const int KEY_braille_dots_567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_5678")] public const int KEY_braille_dots_5678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_568")] public const int KEY_braille_dots_568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_57")] public const int KEY_braille_dots_57; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_578")] public const int KEY_braille_dots_578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_58")] public const int KEY_braille_dots_58; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_6")] public const int KEY_braille_dots_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_67")] public const int KEY_braille_dots_67; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_678")] public const int KEY_braille_dots_678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_68")] public const int KEY_braille_dots_68; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_7")] public const int KEY_braille_dots_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_78")] public const int KEY_braille_dots_78; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_braille_dots_8")] public const int KEY_braille_dots_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_breve")] public const int KEY_breve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_brokenbar")] public const int KEY_brokenbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_c")] public const int KEY_c; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_c_h")] public const int KEY_c_h; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cabovedot")] public const int KEY_cabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cacute")] public const int KEY_cacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_careof")] public const int KEY_careof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_caret")] public const int KEY_caret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_caron")] public const int KEY_caron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ccaron")] public const int KEY_ccaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ccedilla")] public const int KEY_ccedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ccircumflex")] public const int KEY_ccircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cedilla")] public const int KEY_cedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cent")] public const int KEY_cent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ch")] public const int KEY_ch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_checkerboard")] public const int KEY_checkerboard; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_checkmark")] public const int KEY_checkmark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_circle")] public const int KEY_circle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_club")] public const int KEY_club; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_colon")] public const int KEY_colon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_comma")] public const int KEY_comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_containsas")] public const int KEY_containsas; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_copyright")] public const int KEY_copyright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cr")] public const int KEY_cr; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_crossinglines")] public const int KEY_crossinglines; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cuberoot")] public const int KEY_cuberoot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_currency")] public const int KEY_currency; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_cursor")] public const int KEY_cursor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_d")] public const int KEY_d; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dabovedot")] public const int KEY_dabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dagger")] public const int KEY_dagger; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dcaron")] public const int KEY_dcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_A")] public const int KEY_dead_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_E")] public const int KEY_dead_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_I")] public const int KEY_dead_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_O")] public const int KEY_dead_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_U")] public const int KEY_dead_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_a")] public const int KEY_dead_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_abovecomma")] public const int KEY_dead_abovecomma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_abovedot")] public const int KEY_dead_abovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_abovereversedcomma")] public const int KEY_dead_abovereversedcomma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_abovering")] public const int KEY_dead_abovering; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_acute")] public const int KEY_dead_acute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowbreve")] public const int KEY_dead_belowbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowcircumflex")] public const int KEY_dead_belowcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowcomma")] public const int KEY_dead_belowcomma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowdiaeresis")] public const int KEY_dead_belowdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowdot")] public const int KEY_dead_belowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowmacron")] public const int KEY_dead_belowmacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowring")] public const int KEY_dead_belowring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_belowtilde")] public const int KEY_dead_belowtilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_breve")] public const int KEY_dead_breve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_capital_schwa")] public const int KEY_dead_capital_schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_caron")] public const int KEY_dead_caron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_cedilla")] public const int KEY_dead_cedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_circumflex")] public const int KEY_dead_circumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_currency")] public const int KEY_dead_currency; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_dasia")] public const int KEY_dead_dasia; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_diaeresis")] public const int KEY_dead_diaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_doubleacute")] public const int KEY_dead_doubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_doublegrave")] public const int KEY_dead_doublegrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_e")] public const int KEY_dead_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_grave")] public const int KEY_dead_grave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_greek")] public const int KEY_dead_greek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_hook")] public const int KEY_dead_hook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_horn")] public const int KEY_dead_horn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_i")] public const int KEY_dead_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_invertedbreve")] public const int KEY_dead_invertedbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_iota")] public const int KEY_dead_iota; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_macron")] public const int KEY_dead_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_o")] public const int KEY_dead_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_ogonek")] public const int KEY_dead_ogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_perispomeni")] public const int KEY_dead_perispomeni; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_psili")] public const int KEY_dead_psili; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_semivoiced_sound")] public const int KEY_dead_semivoiced_sound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_small_schwa")] public const int KEY_dead_small_schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_stroke")] public const int KEY_dead_stroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_tilde")] public const int KEY_dead_tilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_u")] public const int KEY_dead_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dead_voiced_sound")] public const int KEY_dead_voiced_sound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_decimalpoint")] public const int KEY_decimalpoint; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_degree")] public const int KEY_degree; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_diaeresis")] public const int KEY_diaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_diamond")] public const int KEY_diamond; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_digitspace")] public const int KEY_digitspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dintegral")] public const int KEY_dintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_division")] public const int KEY_division; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dollar")] public const int KEY_dollar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_doubbaselinedot")] public const int KEY_doubbaselinedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_doubleacute")] public const int KEY_doubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_doubledagger")] public const int KEY_doubledagger; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_doublelowquotemark")] public const int KEY_doublelowquotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_downarrow")] public const int KEY_downarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_downcaret")] public const int KEY_downcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_downshoe")] public const int KEY_downshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_downstile")] public const int KEY_downstile; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_downtack")] public const int KEY_downtack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_dstroke")] public const int KEY_dstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_e")] public const int KEY_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eabovedot")] public const int KEY_eabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eacute")] public const int KEY_eacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ebelowdot")] public const int KEY_ebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecaron")] public const int KEY_ecaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflex")] public const int KEY_ecircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflexacute")] public const int KEY_ecircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflexbelowdot")] public const int KEY_ecircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflexgrave")] public const int KEY_ecircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflexhook")] public const int KEY_ecircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ecircumflextilde")] public const int KEY_ecircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ediaeresis")] public const int KEY_ediaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_egrave")] public const int KEY_egrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ehook")] public const int KEY_ehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eightsubscript")] public const int KEY_eightsubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eightsuperior")] public const int KEY_eightsuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_elementof")] public const int KEY_elementof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ellipsis")] public const int KEY_ellipsis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_em3space")] public const int KEY_em3space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_em4space")] public const int KEY_em4space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emacron")] public const int KEY_emacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emdash")] public const int KEY_emdash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emfilledcircle")] public const int KEY_emfilledcircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emfilledrect")] public const int KEY_emfilledrect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emopencircle")] public const int KEY_emopencircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emopenrectangle")] public const int KEY_emopenrectangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emptyset")] public const int KEY_emptyset; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_emspace")] public const int KEY_emspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_endash")] public const int KEY_endash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_enfilledcircbullet")] public const int KEY_enfilledcircbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_enfilledsqbullet")] public const int KEY_enfilledsqbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eng")] public const int KEY_eng; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_enopencircbullet")] public const int KEY_enopencircbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_enopensquarebullet")] public const int KEY_enopensquarebullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_enspace")] public const int KEY_enspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eogonek")] public const int KEY_eogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_equal")] public const int KEY_equal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_eth")] public const int KEY_eth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_etilde")] public const int KEY_etilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_exclam")] public const int KEY_exclam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_exclamdown")] public const int KEY_exclamdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ezh")] public const int KEY_ezh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_f")] public const int KEY_f; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fabovedot")] public const int KEY_fabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_femalesymbol")] public const int KEY_femalesymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ff")] public const int KEY_ff; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_figdash")] public const int KEY_figdash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_filledlefttribullet")] public const int KEY_filledlefttribullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_filledrectbullet")] public const int KEY_filledrectbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_filledrighttribullet")] public const int KEY_filledrighttribullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_filledtribulletdown")] public const int KEY_filledtribulletdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_filledtribulletup")] public const int KEY_filledtribulletup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fiveeighths")] public const int KEY_fiveeighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fivesixths")] public const int KEY_fivesixths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fivesubscript")] public const int KEY_fivesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fivesuperior")] public const int KEY_fivesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fourfifths")] public const int KEY_fourfifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_foursubscript")] public const int KEY_foursubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_foursuperior")] public const int KEY_foursuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_fourthroot")] public const int KEY_fourthroot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_function")] public const int KEY_function; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_g")] public const int KEY_g; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_gabovedot")] public const int KEY_gabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_gbreve")] public const int KEY_gbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_gcaron")] public const int KEY_gcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_gcedilla")] public const int KEY_gcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_gcircumflex")] public const int KEY_gcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_grave")] public const int KEY_grave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_greater")] public const int KEY_greater; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_greaterthanequal")] public const int KEY_greaterthanequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_guillemotleft")] public const int KEY_guillemotleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_guillemotright")] public const int KEY_guillemotright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_h")] public const int KEY_h; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hairspace")] public const int KEY_hairspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hcircumflex")] public const int KEY_hcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_heart")] public const int KEY_heart; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_aleph")] public const int KEY_hebrew_aleph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_ayin")] public const int KEY_hebrew_ayin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_bet")] public const int KEY_hebrew_bet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_beth")] public const int KEY_hebrew_beth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_chet")] public const int KEY_hebrew_chet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_dalet")] public const int KEY_hebrew_dalet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_daleth")] public const int KEY_hebrew_daleth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_doublelowline")] public const int KEY_hebrew_doublelowline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalkaph")] public const int KEY_hebrew_finalkaph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalmem")] public const int KEY_hebrew_finalmem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalnun")] public const int KEY_hebrew_finalnun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalpe")] public const int KEY_hebrew_finalpe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalzade")] public const int KEY_hebrew_finalzade; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_finalzadi")] public const int KEY_hebrew_finalzadi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_gimel")] public const int KEY_hebrew_gimel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_gimmel")] public const int KEY_hebrew_gimmel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_he")] public const int KEY_hebrew_he; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_het")] public const int KEY_hebrew_het; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_kaph")] public const int KEY_hebrew_kaph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_kuf")] public const int KEY_hebrew_kuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_lamed")] public const int KEY_hebrew_lamed; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_mem")] public const int KEY_hebrew_mem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_nun")] public const int KEY_hebrew_nun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_pe")] public const int KEY_hebrew_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_qoph")] public const int KEY_hebrew_qoph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_resh")] public const int KEY_hebrew_resh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_samech")] public const int KEY_hebrew_samech; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_samekh")] public const int KEY_hebrew_samekh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_shin")] public const int KEY_hebrew_shin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_taf")] public const int KEY_hebrew_taf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_taw")] public const int KEY_hebrew_taw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_tet")] public const int KEY_hebrew_tet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_teth")] public const int KEY_hebrew_teth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_waw")] public const int KEY_hebrew_waw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_yod")] public const int KEY_hebrew_yod; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_zade")] public const int KEY_hebrew_zade; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_zadi")] public const int KEY_hebrew_zadi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_zain")] public const int KEY_hebrew_zain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hebrew_zayin")] public const int KEY_hebrew_zayin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hexagram")] public const int KEY_hexagram; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizconnector")] public const int KEY_horizconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizlinescan1")] public const int KEY_horizlinescan1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizlinescan3")] public const int KEY_horizlinescan3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizlinescan5")] public const int KEY_horizlinescan5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizlinescan7")] public const int KEY_horizlinescan7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_horizlinescan9")] public const int KEY_horizlinescan9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hstroke")] public const int KEY_hstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ht")] public const int KEY_ht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_hyphen")] public const int KEY_hyphen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_i")] public const int KEY_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_iacute")] public const int KEY_iacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ibelowdot")] public const int KEY_ibelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ibreve")] public const int KEY_ibreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_icircumflex")] public const int KEY_icircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_identical")] public const int KEY_identical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_idiaeresis")] public const int KEY_idiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_idotless")] public const int KEY_idotless; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ifonlyif")] public const int KEY_ifonlyif; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_igrave")] public const int KEY_igrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ihook")] public const int KEY_ihook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_imacron")] public const int KEY_imacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_implies")] public const int KEY_implies; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_includedin")] public const int KEY_includedin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_includes")] public const int KEY_includes; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_infinity")] public const int KEY_infinity; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_integral")] public const int KEY_integral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_intersection")] public const int KEY_intersection; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_iogonek")] public const int KEY_iogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_itilde")] public const int KEY_itilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_j")] public const int KEY_j; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_jcircumflex")] public const int KEY_jcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_jot")] public const int KEY_jot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_k")] public const int KEY_k; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_A")] public const int KEY_kana_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_CHI")] public const int KEY_kana_CHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_E")] public const int KEY_kana_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_FU")] public const int KEY_kana_FU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_HA")] public const int KEY_kana_HA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_HE")] public const int KEY_kana_HE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_HI")] public const int KEY_kana_HI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_HO")] public const int KEY_kana_HO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_HU")] public const int KEY_kana_HU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_I")] public const int KEY_kana_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_KA")] public const int KEY_kana_KA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_KE")] public const int KEY_kana_KE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_KI")] public const int KEY_kana_KI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_KO")] public const int KEY_kana_KO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_KU")] public const int KEY_kana_KU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_MA")] public const int KEY_kana_MA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_ME")] public const int KEY_kana_ME; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_MI")] public const int KEY_kana_MI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_MO")] public const int KEY_kana_MO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_MU")] public const int KEY_kana_MU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_N")] public const int KEY_kana_N; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_NA")] public const int KEY_kana_NA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_NE")] public const int KEY_kana_NE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_NI")] public const int KEY_kana_NI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_NO")] public const int KEY_kana_NO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_NU")] public const int KEY_kana_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_O")] public const int KEY_kana_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_RA")] public const int KEY_kana_RA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_RE")] public const int KEY_kana_RE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_RI")] public const int KEY_kana_RI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_RO")] public const int KEY_kana_RO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_RU")] public const int KEY_kana_RU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_SA")] public const int KEY_kana_SA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_SE")] public const int KEY_kana_SE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_SHI")] public const int KEY_kana_SHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_SO")] public const int KEY_kana_SO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_SU")] public const int KEY_kana_SU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TA")] public const int KEY_kana_TA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TE")] public const int KEY_kana_TE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TI")] public const int KEY_kana_TI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TO")] public const int KEY_kana_TO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TSU")] public const int KEY_kana_TSU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_TU")] public const int KEY_kana_TU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_U")] public const int KEY_kana_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_WA")] public const int KEY_kana_WA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_WO")] public const int KEY_kana_WO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_YA")] public const int KEY_kana_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_YO")] public const int KEY_kana_YO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_YU")] public const int KEY_kana_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_a")] public const int KEY_kana_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_closingbracket")] public const int KEY_kana_closingbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_comma")] public const int KEY_kana_comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_conjunctive")] public const int KEY_kana_conjunctive; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_e")] public const int KEY_kana_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_fullstop")] public const int KEY_kana_fullstop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_i")] public const int KEY_kana_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_middledot")] public const int KEY_kana_middledot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_o")] public const int KEY_kana_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_openingbracket")] public const int KEY_kana_openingbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_switch")] public const int KEY_kana_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_tsu")] public const int KEY_kana_tsu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_tu")] public const int KEY_kana_tu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_u")] public const int KEY_kana_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_ya")] public const int KEY_kana_ya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_yo")] public const int KEY_kana_yo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kana_yu")] public const int KEY_kana_yu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kappa")] public const int KEY_kappa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kcedilla")] public const int KEY_kcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_kra")] public const int KEY_kra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_l")] public const int KEY_l; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lacute")] public const int KEY_lacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_latincross")] public const int KEY_latincross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lbelowdot")] public const int KEY_lbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lcaron")] public const int KEY_lcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lcedilla")] public const int KEY_lcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftanglebracket")] public const int KEY_leftanglebracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftarrow")] public const int KEY_leftarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftcaret")] public const int KEY_leftcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftdoublequotemark")] public const int KEY_leftdoublequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftmiddlecurlybrace")] public const int KEY_leftmiddlecurlybrace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftopentriangle")] public const int KEY_leftopentriangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftpointer")] public const int KEY_leftpointer; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftradical")] public const int KEY_leftradical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftshoe")] public const int KEY_leftshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftsinglequotemark")] public const int KEY_leftsinglequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_leftt")] public const int KEY_leftt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lefttack")] public const int KEY_lefttack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_less")] public const int KEY_less; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lessthanequal")] public const int KEY_lessthanequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lf")] public const int KEY_lf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_logicaland")] public const int KEY_logicaland; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_logicalor")] public const int KEY_logicalor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lowleftcorner")] public const int KEY_lowleftcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lowrightcorner")] public const int KEY_lowrightcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_lstroke")] public const int KEY_lstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_m")] public const int KEY_m; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_mabovedot")] public const int KEY_mabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_macron")] public const int KEY_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_malesymbol")] public const int KEY_malesymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_maltesecross")] public const int KEY_maltesecross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_marker")] public const int KEY_marker; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_masculine")] public const int KEY_masculine; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_minus")] public const int KEY_minus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_minutes")] public const int KEY_minutes; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_mu")] public const int KEY_mu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_multiply")] public const int KEY_multiply; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_musicalflat")] public const int KEY_musicalflat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_musicalsharp")] public const int KEY_musicalsharp; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_n")] public const int KEY_n; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_nabla")] public const int KEY_nabla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_nacute")] public const int KEY_nacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ncaron")] public const int KEY_ncaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ncedilla")] public const int KEY_ncedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ninesubscript")] public const int KEY_ninesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ninesuperior")] public const int KEY_ninesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_nl")] public const int KEY_nl; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_nobreakspace")] public const int KEY_nobreakspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_notapproxeq")] public const int KEY_notapproxeq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_notelementof")] public const int KEY_notelementof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_notequal")] public const int KEY_notequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_notidentical")] public const int KEY_notidentical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_notsign")] public const int KEY_notsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ntilde")] public const int KEY_ntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_numbersign")] public const int KEY_numbersign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_numerosign")] public const int KEY_numerosign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_o")] public const int KEY_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_oacute")] public const int KEY_oacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_obarred")] public const int KEY_obarred; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_obelowdot")] public const int KEY_obelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocaron")] public const int KEY_ocaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflex")] public const int KEY_ocircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflexacute")] public const int KEY_ocircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflexbelowdot")] public const int KEY_ocircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflexgrave")] public const int KEY_ocircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflexhook")] public const int KEY_ocircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ocircumflextilde")] public const int KEY_ocircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_odiaeresis")] public const int KEY_odiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_odoubleacute")] public const int KEY_odoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_oe")] public const int KEY_oe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ogonek")] public const int KEY_ogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ograve")] public const int KEY_ograve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohook")] public const int KEY_ohook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohorn")] public const int KEY_ohorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohornacute")] public const int KEY_ohornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohornbelowdot")] public const int KEY_ohornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohorngrave")] public const int KEY_ohorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohornhook")] public const int KEY_ohornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ohorntilde")] public const int KEY_ohorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_omacron")] public const int KEY_omacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_oneeighth")] public const int KEY_oneeighth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onefifth")] public const int KEY_onefifth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onehalf")] public const int KEY_onehalf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onequarter")] public const int KEY_onequarter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onesixth")] public const int KEY_onesixth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onesubscript")] public const int KEY_onesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onesuperior")] public const int KEY_onesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_onethird")] public const int KEY_onethird; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ooblique")] public const int KEY_ooblique; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_openrectbullet")] public const int KEY_openrectbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_openstar")] public const int KEY_openstar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_opentribulletdown")] public const int KEY_opentribulletdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_opentribulletup")] public const int KEY_opentribulletup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ordfeminine")] public const int KEY_ordfeminine; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_oslash")] public const int KEY_oslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_otilde")] public const int KEY_otilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_overbar")] public const int KEY_overbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_overline")] public const int KEY_overline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_p")] public const int KEY_p; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_pabovedot")] public const int KEY_pabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_paragraph")] public const int KEY_paragraph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_parenleft")] public const int KEY_parenleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_parenright")] public const int KEY_parenright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_partdifferential")] public const int KEY_partdifferential; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_partialderivative")] public const int KEY_partialderivative; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_percent")] public const int KEY_percent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_period")] public const int KEY_period; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_periodcentered")] public const int KEY_periodcentered; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_phonographcopyright")] public const int KEY_phonographcopyright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_plus")] public const int KEY_plus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_plusminus")] public const int KEY_plusminus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_prescription")] public const int KEY_prescription; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_prolongedsound")] public const int KEY_prolongedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_punctspace")] public const int KEY_punctspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_q")] public const int KEY_q; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_quad")] public const int KEY_quad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_question")] public const int KEY_question; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_questiondown")] public const int KEY_questiondown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_quotedbl")] public const int KEY_quotedbl; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_quoteleft")] public const int KEY_quoteleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_quoteright")] public const int KEY_quoteright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_r")] public const int KEY_r; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_racute")] public const int KEY_racute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_radical")] public const int KEY_radical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rcaron")] public const int KEY_rcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rcedilla")] public const int KEY_rcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_registered")] public const int KEY_registered; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightanglebracket")] public const int KEY_rightanglebracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightarrow")] public const int KEY_rightarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightcaret")] public const int KEY_rightcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightdoublequotemark")] public const int KEY_rightdoublequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightmiddlecurlybrace")] public const int KEY_rightmiddlecurlybrace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightmiddlesummation")] public const int KEY_rightmiddlesummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightopentriangle")] public const int KEY_rightopentriangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightpointer")] public const int KEY_rightpointer; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightshoe")] public const int KEY_rightshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightsinglequotemark")] public const int KEY_rightsinglequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_rightt")] public const int KEY_rightt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_righttack")] public const int KEY_righttack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_s")] public const int KEY_s; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sabovedot")] public const int KEY_sabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sacute")] public const int KEY_sacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_scaron")] public const int KEY_scaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_scedilla")] public const int KEY_scedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_schwa")] public const int KEY_schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_scircumflex")] public const int KEY_scircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_script_switch")] public const int KEY_script_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_seconds")] public const int KEY_seconds; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_section")] public const int KEY_section; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_semicolon")] public const int KEY_semicolon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_semivoicedsound")] public const int KEY_semivoicedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_seveneighths")] public const int KEY_seveneighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sevensubscript")] public const int KEY_sevensubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sevensuperior")] public const int KEY_sevensuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_signaturemark")] public const int KEY_signaturemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_signifblank")] public const int KEY_signifblank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_similarequal")] public const int KEY_similarequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_singlelowquotemark")] public const int KEY_singlelowquotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sixsubscript")] public const int KEY_sixsubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sixsuperior")] public const int KEY_sixsuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_slash")] public const int KEY_slash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_soliddiamond")] public const int KEY_soliddiamond; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_space")] public const int KEY_space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_squareroot")] public const int KEY_squareroot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ssharp")] public const int KEY_ssharp; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_sterling")] public const int KEY_sterling; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_stricteq")] public const int KEY_stricteq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_t")] public const int KEY_t; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_tabovedot")] public const int KEY_tabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_tcaron")] public const int KEY_tcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_tcedilla")] public const int KEY_tcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_telephone")] public const int KEY_telephone; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_telephonerecorder")] public const int KEY_telephonerecorder; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_therefore")] public const int KEY_therefore; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_thinspace")] public const int KEY_thinspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_thorn")] public const int KEY_thorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_threeeighths")] public const int KEY_threeeighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_threefifths")] public const int KEY_threefifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_threequarters")] public const int KEY_threequarters; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_threesubscript")] public const int KEY_threesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_threesuperior")] public const int KEY_threesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_tintegral")] public const int KEY_tintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topintegral")] public const int KEY_topintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topleftparens")] public const int KEY_topleftparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topleftradical")] public const int KEY_topleftradical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topleftsqbracket")] public const int KEY_topleftsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topleftsummation")] public const int KEY_topleftsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_toprightparens")] public const int KEY_toprightparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_toprightsqbracket")] public const int KEY_toprightsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_toprightsummation")] public const int KEY_toprightsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topt")] public const int KEY_topt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_topvertsummationconnector")] public const int KEY_topvertsummationconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_trademark")] public const int KEY_trademark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_trademarkincircle")] public const int KEY_trademarkincircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_tslash")] public const int KEY_tslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_twofifths")] public const int KEY_twofifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_twosubscript")] public const int KEY_twosubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_twosuperior")] public const int KEY_twosuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_twothirds")] public const int KEY_twothirds; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_u")] public const int KEY_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uacute")] public const int KEY_uacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ubelowdot")] public const int KEY_ubelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ubreve")] public const int KEY_ubreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ucircumflex")] public const int KEY_ucircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_udiaeresis")] public const int KEY_udiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_udoubleacute")] public const int KEY_udoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ugrave")] public const int KEY_ugrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhook")] public const int KEY_uhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhorn")] public const int KEY_uhorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhornacute")] public const int KEY_uhornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhornbelowdot")] public const int KEY_uhornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhorngrave")] public const int KEY_uhorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhornhook")] public const int KEY_uhornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uhorntilde")] public const int KEY_uhorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_umacron")] public const int KEY_umacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_underbar")] public const int KEY_underbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_underscore")] public const int KEY_underscore; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_union")] public const int KEY_union; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uogonek")] public const int KEY_uogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uparrow")] public const int KEY_uparrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_upcaret")] public const int KEY_upcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_upleftcorner")] public const int KEY_upleftcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uprightcorner")] public const int KEY_uprightcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_upshoe")] public const int KEY_upshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_upstile")] public const int KEY_upstile; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uptack")] public const int KEY_uptack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_uring")] public const int KEY_uring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_utilde")] public const int KEY_utilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_v")] public const int KEY_v; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_variation")] public const int KEY_variation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_vertbar")] public const int KEY_vertbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_vertconnector")] public const int KEY_vertconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_voicedsound")] public const int KEY_voicedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_vt")] public const int KEY_vt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_w")] public const int KEY_w; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_wacute")] public const int KEY_wacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_wcircumflex")] public const int KEY_wcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_wdiaeresis")] public const int KEY_wdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_wgrave")] public const int KEY_wgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_x")] public const int KEY_x; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_xabovedot")] public const int KEY_xabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_y")] public const int KEY_y; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_yacute")] public const int KEY_yacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ybelowdot")] public const int KEY_ybelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ycircumflex")] public const int KEY_ycircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ydiaeresis")] public const int KEY_ydiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_yen")] public const int KEY_yen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ygrave")] public const int KEY_ygrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_yhook")] public const int KEY_yhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_ytilde")] public const int KEY_ytilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_z")] public const int KEY_z; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zabovedot")] public const int KEY_zabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zacute")] public const int KEY_zacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zcaron")] public const int KEY_zcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zerosubscript")] public const int KEY_zerosubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zerosuperior")] public const int KEY_zerosuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KEY_zstroke")] public const int KEY_zstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_0")] public const int KP_0; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_1")] public const int KP_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_2")] public const int KP_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_3")] public const int KP_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_4")] public const int KP_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_5")] public const int KP_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_6")] public const int KP_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_7")] public const int KP_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_8")] public const int KP_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_9")] public const int KP_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Add")] public const int KP_Add; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Begin")] public const int KP_Begin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Decimal")] public const int KP_Decimal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Delete")] public const int KP_Delete; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Divide")] public const int KP_Divide; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Down")] public const int KP_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_End")] public const int KP_End; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Enter")] public const int KP_Enter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Equal")] public const int KP_Equal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_F1")] public const int KP_F1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_F2")] public const int KP_F2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_F3")] public const int KP_F3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_F4")] public const int KP_F4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Home")] public const int KP_Home; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Insert")] public const int KP_Insert; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Left")] public const int KP_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Multiply")] public const int KP_Multiply; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Next")] public const int KP_Next; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Page_Down")] public const int KP_Page_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Page_Up")] public const int KP_Page_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Prior")] public const int KP_Prior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Right")] public const int KP_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Separator")] public const int KP_Separator; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Space")] public const int KP_Space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Subtract")] public const int KP_Subtract; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Tab")] public const int KP_Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_KP_Up")] public const int KP_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Kana_Lock")] public const int Kana_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Kana_Shift")] public const int Kana_Shift; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Kanji")] public const int Kanji; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Kanji_Bangou")] public const int Kanji_Bangou; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Katakana")] public const int Katakana; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Kcedilla")] public const int Kcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Korean_Won")] public const int Korean_Won; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L")] public const int L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L1")] public const int L1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L10")] public const int L10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L2")] public const int L2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L3")] public const int L3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L4")] public const int L4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L5")] public const int L5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L6")] public const int L6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L7")] public const int L7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L8")] public const int L8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_L9")] public const int L9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Lacute")] public const int Lacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Last_Virtual_Screen")] public const int Last_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Lbelowdot")] public const int Lbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Lcaron")] public const int Lcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Lcedilla")] public const int Lcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Left")] public const int Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Linefeed")] public const int Linefeed; [CCode (cheader_filename = "ibus.h", cname = "IBUS_LiraSign")] public const int LiraSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Lstroke")] public const int Lstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_M")] public const int M; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MAJOR_VERSION")] public const int MAJOR_VERSION; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MAX_COMPOSE_LEN")] public const int MAX_COMPOSE_LEN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MICRO_VERSION")] public const int MICRO_VERSION; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MINOR_VERSION")] public const int MINOR_VERSION; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Mabovedot")] public const int Mabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_DSE")] public const int Macedonia_DSE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_GJE")] public const int Macedonia_GJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_KJE")] public const int Macedonia_KJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_dse")] public const int Macedonia_dse; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_gje")] public const int Macedonia_gje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Macedonia_kje")] public const int Macedonia_kje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Mae_Koho")] public const int Mae_Koho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Massyo")] public const int Massyo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Menu")] public const int Menu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Meta_L")] public const int Meta_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Meta_R")] public const int Meta_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MillSign")] public const int MillSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Mode_switch")] public const int Mode_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MouseKeys_Accel_Enable")] public const int MouseKeys_Accel_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MouseKeys_Enable")] public const int MouseKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Muhenkan")] public const int Muhenkan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Multi_key")] public const int Multi_key; [CCode (cheader_filename = "ibus.h", cname = "IBUS_MultipleCandidate")] public const int MultipleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_N")] public const int N; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Nacute")] public const int Nacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_NairaSign")] public const int NairaSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ncaron")] public const int Ncaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ncedilla")] public const int Ncedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_NewSheqelSign")] public const int NewSheqelSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Next")] public const int Next; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Next_Virtual_Screen")] public const int Next_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ntilde")] public const int Ntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Num_Lock")] public const int Num_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_O")] public const int O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_OE")] public const int OE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Oacute")] public const int Oacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Obarred")] public const int Obarred; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Obelowdot")] public const int Obelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocaron")] public const int Ocaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflex")] public const int Ocircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflexacute")] public const int Ocircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflexbelowdot")] public const int Ocircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflexgrave")] public const int Ocircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflexhook")] public const int Ocircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ocircumflextilde")] public const int Ocircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Odiaeresis")] public const int Odiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Odoubleacute")] public const int Odoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ograve")] public const int Ograve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohook")] public const int Ohook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohorn")] public const int Ohorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohornacute")] public const int Ohornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohornbelowdot")] public const int Ohornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohorngrave")] public const int Ohorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohornhook")] public const int Ohornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ohorntilde")] public const int Ohorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Omacron")] public const int Omacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ooblique")] public const int Ooblique; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Oslash")] public const int Oslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Otilde")] public const int Otilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Overlay1_Enable")] public const int Overlay1_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Overlay2_Enable")] public const int Overlay2_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_P")] public const int P; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_CONFIG")] public const string PATH_CONFIG; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_FACTORY")] public const string PATH_FACTORY; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_IBUS")] public const string PATH_IBUS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_INPUT_CONTEXT")] public const string PATH_INPUT_CONTEXT; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_NOTIFICATIONS")] public const string PATH_NOTIFICATIONS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PATH_PANEL")] public const string PATH_PANEL; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pabovedot")] public const int Pabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Page_Down")] public const int Page_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Page_Up")] public const int Page_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pause")] public const int Pause; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PesetaSign")] public const int PesetaSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Accelerate")] public const int Pointer_Accelerate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button1")] public const int Pointer_Button1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button2")] public const int Pointer_Button2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button3")] public const int Pointer_Button3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button4")] public const int Pointer_Button4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button5")] public const int Pointer_Button5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Button_Dflt")] public const int Pointer_Button_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick1")] public const int Pointer_DblClick1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick2")] public const int Pointer_DblClick2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick3")] public const int Pointer_DblClick3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick4")] public const int Pointer_DblClick4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick5")] public const int Pointer_DblClick5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DblClick_Dflt")] public const int Pointer_DblClick_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DfltBtnNext")] public const int Pointer_DfltBtnNext; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DfltBtnPrev")] public const int Pointer_DfltBtnPrev; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Down")] public const int Pointer_Down; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DownLeft")] public const int Pointer_DownLeft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_DownRight")] public const int Pointer_DownRight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag1")] public const int Pointer_Drag1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag2")] public const int Pointer_Drag2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag3")] public const int Pointer_Drag3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag4")] public const int Pointer_Drag4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag5")] public const int Pointer_Drag5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Drag_Dflt")] public const int Pointer_Drag_Dflt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_EnableKeys")] public const int Pointer_EnableKeys; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Left")] public const int Pointer_Left; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Right")] public const int Pointer_Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_Up")] public const int Pointer_Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_UpLeft")] public const int Pointer_UpLeft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Pointer_UpRight")] public const int Pointer_UpRight; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Prev_Virtual_Screen")] public const int Prev_Virtual_Screen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_PreviousCandidate")] public const int PreviousCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Print")] public const int Print; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Prior")] public const int Prior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Q")] public const int Q; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R")] public const int R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R1")] public const int R1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R10")] public const int R10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R11")] public const int R11; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R12")] public const int R12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R13")] public const int R13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R14")] public const int R14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R15")] public const int R15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R2")] public const int R2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R3")] public const int R3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R4")] public const int R4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R5")] public const int R5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R6")] public const int R6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R7")] public const int R7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R8")] public const int R8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_R9")] public const int R9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Racute")] public const int Racute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Rcaron")] public const int Rcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Rcedilla")] public const int Rcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Redo")] public const int Redo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_RepeatKeys_Enable")] public const int RepeatKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Return")] public const int Return; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Right")] public const int Right; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Romaji")] public const int Romaji; [CCode (cheader_filename = "ibus.h", cname = "IBUS_RupeeSign")] public const int RupeeSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_S")] public const int S; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SCHWA")] public const int SCHWA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_CONFIG")] public const string SERVICE_CONFIG; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_IBUS")] public const string SERVICE_IBUS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_NOTIFICATIONS")] public const string SERVICE_NOTIFICATIONS; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_PANEL")] public const string SERVICE_PANEL; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Sabovedot")] public const int Sabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Sacute")] public const int Sacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Scaron")] public const int Scaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Scedilla")] public const int Scedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Scircumflex")] public const int Scircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Scroll_Lock")] public const int Scroll_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Select")] public const int Select; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_DJE")] public const int Serbian_DJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_DZE")] public const int Serbian_DZE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_JE")] public const int Serbian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_LJE")] public const int Serbian_LJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_NJE")] public const int Serbian_NJE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_TSHE")] public const int Serbian_TSHE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_dje")] public const int Serbian_dje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_dze")] public const int Serbian_dze; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_je")] public const int Serbian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_lje")] public const int Serbian_lje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_nje")] public const int Serbian_nje; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Serbian_tshe")] public const int Serbian_tshe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Shift_L")] public const int Shift_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Shift_Lock")] public const int Shift_Lock; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Shift_R")] public const int Shift_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SingleCandidate")] public const int SingleCandidate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SlowKeys_Enable")] public const int SlowKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_StickyKeys_Enable")] public const int StickyKeys_Enable; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Super_L")] public const int Super_L; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Super_R")] public const int Super_R; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Sys_Req")] public const int Sys_Req; [CCode (cheader_filename = "ibus.h", cname = "IBUS_T")] public const int T; [CCode (cheader_filename = "ibus.h", cname = "IBUS_THORN")] public const int THORN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Tab")] public const int Tab; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Tabovedot")] public const int Tabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Tcaron")] public const int Tcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Tcedilla")] public const int Tcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Terminate_Server")] public const int Terminate_Server; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_baht")] public const int Thai_baht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_bobaimai")] public const int Thai_bobaimai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_chochan")] public const int Thai_chochan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_chochang")] public const int Thai_chochang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_choching")] public const int Thai_choching; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_chochoe")] public const int Thai_chochoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_dochada")] public const int Thai_dochada; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_dodek")] public const int Thai_dodek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_fofa")] public const int Thai_fofa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_fofan")] public const int Thai_fofan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_hohip")] public const int Thai_hohip; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_honokhuk")] public const int Thai_honokhuk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_khokhai")] public const int Thai_khokhai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_khokhon")] public const int Thai_khokhon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_khokhuat")] public const int Thai_khokhuat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_khokhwai")] public const int Thai_khokhwai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_khorakhang")] public const int Thai_khorakhang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_kokai")] public const int Thai_kokai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lakkhangyao")] public const int Thai_lakkhangyao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lekchet")] public const int Thai_lekchet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lekha")] public const int Thai_lekha; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lekhok")] public const int Thai_lekhok; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lekkao")] public const int Thai_lekkao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_leknung")] public const int Thai_leknung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lekpaet")] public const int Thai_lekpaet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_leksam")] public const int Thai_leksam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_leksi")] public const int Thai_leksi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_leksong")] public const int Thai_leksong; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_leksun")] public const int Thai_leksun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lochula")] public const int Thai_lochula; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_loling")] public const int Thai_loling; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_lu")] public const int Thai_lu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maichattawa")] public const int Thai_maichattawa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maiek")] public const int Thai_maiek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maihanakat")] public const int Thai_maihanakat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maihanakat_maitho")] public const int Thai_maihanakat_maitho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maitaikhu")] public const int Thai_maitaikhu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maitho")] public const int Thai_maitho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maitri")] public const int Thai_maitri; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_maiyamok")] public const int Thai_maiyamok; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_moma")] public const int Thai_moma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_ngongu")] public const int Thai_ngongu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_nikhahit")] public const int Thai_nikhahit; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_nonen")] public const int Thai_nonen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_nonu")] public const int Thai_nonu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_oang")] public const int Thai_oang; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_paiyannoi")] public const int Thai_paiyannoi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_phinthu")] public const int Thai_phinthu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_phophan")] public const int Thai_phophan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_phophung")] public const int Thai_phophung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_phosamphao")] public const int Thai_phosamphao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_popla")] public const int Thai_popla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_rorua")] public const int Thai_rorua; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_ru")] public const int Thai_ru; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraa")] public const int Thai_saraa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraaa")] public const int Thai_saraaa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraae")] public const int Thai_saraae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraaimaimalai")] public const int Thai_saraaimaimalai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraaimaimuan")] public const int Thai_saraaimaimuan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraam")] public const int Thai_saraam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarae")] public const int Thai_sarae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarai")] public const int Thai_sarai; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraii")] public const int Thai_saraii; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarao")] public const int Thai_sarao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarau")] public const int Thai_sarau; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_saraue")] public const int Thai_saraue; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarauee")] public const int Thai_sarauee; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sarauu")] public const int Thai_sarauu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sorusi")] public const int Thai_sorusi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sosala")] public const int Thai_sosala; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_soso")] public const int Thai_soso; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_sosua")] public const int Thai_sosua; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thanthakhat")] public const int Thai_thanthakhat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thonangmontho")] public const int Thai_thonangmontho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thophuthao")] public const int Thai_thophuthao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thothahan")] public const int Thai_thothahan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thothan")] public const int Thai_thothan; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thothong")] public const int Thai_thothong; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_thothung")] public const int Thai_thothung; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_topatak")] public const int Thai_topatak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_totao")] public const int Thai_totao; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_wowaen")] public const int Thai_wowaen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_yoyak")] public const int Thai_yoyak; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thai_yoying")] public const int Thai_yoying; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Thorn")] public const int Thorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Touroku")] public const int Touroku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Tslash")] public const int Tslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_U")] public const int U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uacute")] public const int Uacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ubelowdot")] public const int Ubelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ubreve")] public const int Ubreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ucircumflex")] public const int Ucircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Udiaeresis")] public const int Udiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Udoubleacute")] public const int Udoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ugrave")] public const int Ugrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhook")] public const int Uhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhorn")] public const int Uhorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhornacute")] public const int Uhornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhornbelowdot")] public const int Uhornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhorngrave")] public const int Uhorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhornhook")] public const int Uhornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uhorntilde")] public const int Uhorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_GHE_WITH_UPTURN")] public const int Ukrainian_GHE_WITH_UPTURN; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_I")] public const int Ukrainian_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_IE")] public const int Ukrainian_IE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_YI")] public const int Ukrainian_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_ghe_with_upturn")] public const int Ukrainian_ghe_with_upturn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_i")] public const int Ukrainian_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_ie")] public const int Ukrainian_ie; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukrainian_yi")] public const int Ukrainian_yi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_I")] public const int Ukranian_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_JE")] public const int Ukranian_JE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_YI")] public const int Ukranian_YI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_i")] public const int Ukranian_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_je")] public const int Ukranian_je; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ukranian_yi")] public const int Ukranian_yi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Umacron")] public const int Umacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Undo")] public const int Undo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uogonek")] public const int Uogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Up")] public const int Up; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Uring")] public const int Uring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Utilde")] public const int Utilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_V")] public const int V; [CCode (cheader_filename = "ibus.h", cname = "IBUS_VoidSymbol")] public const int VoidSymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_W")] public const int W; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Wacute")] public const int Wacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Wcircumflex")] public const int Wcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Wdiaeresis")] public const int Wdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Wgrave")] public const int Wgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_WonSign")] public const int WonSign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_X")] public const int X; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Xabovedot")] public const int Xabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Y")] public const int Y; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Yacute")] public const int Yacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ybelowdot")] public const int Ybelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ycircumflex")] public const int Ycircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ydiaeresis")] public const int Ydiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ygrave")] public const int Ygrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Yhook")] public const int Yhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Ytilde")] public const int Ytilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Z")] public const int Z; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zabovedot")] public const int Zabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zacute")] public const int Zacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zcaron")] public const int Zcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zen_Koho")] public const int Zen_Koho; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zenkaku")] public const int Zenkaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zenkaku_Hankaku")] public const int Zenkaku_Hankaku; [CCode (cheader_filename = "ibus.h", cname = "IBUS_Zstroke")] public const int Zstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_a")] public const int a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_aacute")] public const int aacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abelowdot")] public const int abelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abovedot")] public const int abovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abreve")] public const int abreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abreveacute")] public const int abreveacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abrevebelowdot")] public const int abrevebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abrevegrave")] public const int abrevegrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abrevehook")] public const int abrevehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_abrevetilde")] public const int abrevetilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflex")] public const int acircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflexacute")] public const int acircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflexbelowdot")] public const int acircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflexgrave")] public const int acircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflexhook")] public const int acircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acircumflextilde")] public const int acircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_acute")] public const int acute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_adiaeresis")] public const int adiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ae")] public const int ae; [CCode (cheader_filename = "ibus.h", cname = "IBUS_agrave")] public const int agrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ahook")] public const int ahook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_amacron")] public const int amacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ampersand")] public const int ampersand; [CCode (cheader_filename = "ibus.h", cname = "IBUS_aogonek")] public const int aogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_apostrophe")] public const int apostrophe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_approxeq")] public const int approxeq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_approximate")] public const int approximate; [CCode (cheader_filename = "ibus.h", cname = "IBUS_aring")] public const int aring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_asciicircum")] public const int asciicircum; [CCode (cheader_filename = "ibus.h", cname = "IBUS_asciitilde")] public const int asciitilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_asterisk")] public const int asterisk; [CCode (cheader_filename = "ibus.h", cname = "IBUS_at")] public const int at; [CCode (cheader_filename = "ibus.h", cname = "IBUS_atilde")] public const int atilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_b")] public const int b; [CCode (cheader_filename = "ibus.h", cname = "IBUS_babovedot")] public const int babovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_backslash")] public const int backslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ballotcross")] public const int ballotcross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_bar")] public const int bar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_because")] public const int because; [CCode (cheader_filename = "ibus.h", cname = "IBUS_blank")] public const int blank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botintegral")] public const int botintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botleftparens")] public const int botleftparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botleftsqbracket")] public const int botleftsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botleftsummation")] public const int botleftsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botrightparens")] public const int botrightparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botrightsqbracket")] public const int botrightsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botrightsummation")] public const int botrightsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_bott")] public const int bott; [CCode (cheader_filename = "ibus.h", cname = "IBUS_botvertsummationconnector")] public const int botvertsummationconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braceleft")] public const int braceleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braceright")] public const int braceright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_bracketleft")] public const int bracketleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_bracketright")] public const int bracketright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_blank")] public const int braille_blank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_1")] public const int braille_dot_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_10")] public const int braille_dot_10; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_2")] public const int braille_dot_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_3")] public const int braille_dot_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_4")] public const int braille_dot_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_5")] public const int braille_dot_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_6")] public const int braille_dot_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_7")] public const int braille_dot_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_8")] public const int braille_dot_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dot_9")] public const int braille_dot_9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1")] public const int braille_dots_1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12")] public const int braille_dots_12; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123")] public const int braille_dots_123; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1234")] public const int braille_dots_1234; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12345")] public const int braille_dots_12345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123456")] public const int braille_dots_123456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1234567")] public const int braille_dots_1234567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12345678")] public const int braille_dots_12345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1234568")] public const int braille_dots_1234568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123457")] public const int braille_dots_123457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1234578")] public const int braille_dots_1234578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123458")] public const int braille_dots_123458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12346")] public const int braille_dots_12346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123467")] public const int braille_dots_123467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1234678")] public const int braille_dots_1234678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123468")] public const int braille_dots_123468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12347")] public const int braille_dots_12347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123478")] public const int braille_dots_123478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12348")] public const int braille_dots_12348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1235")] public const int braille_dots_1235; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12356")] public const int braille_dots_12356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123567")] public const int braille_dots_123567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1235678")] public const int braille_dots_1235678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123568")] public const int braille_dots_123568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12357")] public const int braille_dots_12357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123578")] public const int braille_dots_123578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12358")] public const int braille_dots_12358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1236")] public const int braille_dots_1236; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12367")] public const int braille_dots_12367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_123678")] public const int braille_dots_123678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12368")] public const int braille_dots_12368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1237")] public const int braille_dots_1237; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12378")] public const int braille_dots_12378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1238")] public const int braille_dots_1238; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_124")] public const int braille_dots_124; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1245")] public const int braille_dots_1245; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12456")] public const int braille_dots_12456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_124567")] public const int braille_dots_124567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1245678")] public const int braille_dots_1245678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_124568")] public const int braille_dots_124568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12457")] public const int braille_dots_12457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_124578")] public const int braille_dots_124578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12458")] public const int braille_dots_12458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1246")] public const int braille_dots_1246; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12467")] public const int braille_dots_12467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_124678")] public const int braille_dots_124678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12468")] public const int braille_dots_12468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1247")] public const int braille_dots_1247; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12478")] public const int braille_dots_12478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1248")] public const int braille_dots_1248; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_125")] public const int braille_dots_125; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1256")] public const int braille_dots_1256; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12567")] public const int braille_dots_12567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_125678")] public const int braille_dots_125678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12568")] public const int braille_dots_12568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1257")] public const int braille_dots_1257; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12578")] public const int braille_dots_12578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1258")] public const int braille_dots_1258; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_126")] public const int braille_dots_126; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1267")] public const int braille_dots_1267; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_12678")] public const int braille_dots_12678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1268")] public const int braille_dots_1268; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_127")] public const int braille_dots_127; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1278")] public const int braille_dots_1278; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_128")] public const int braille_dots_128; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13")] public const int braille_dots_13; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_134")] public const int braille_dots_134; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1345")] public const int braille_dots_1345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13456")] public const int braille_dots_13456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_134567")] public const int braille_dots_134567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1345678")] public const int braille_dots_1345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_134568")] public const int braille_dots_134568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13457")] public const int braille_dots_13457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_134578")] public const int braille_dots_134578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13458")] public const int braille_dots_13458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1346")] public const int braille_dots_1346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13467")] public const int braille_dots_13467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_134678")] public const int braille_dots_134678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13468")] public const int braille_dots_13468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1347")] public const int braille_dots_1347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13478")] public const int braille_dots_13478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1348")] public const int braille_dots_1348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_135")] public const int braille_dots_135; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1356")] public const int braille_dots_1356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13567")] public const int braille_dots_13567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_135678")] public const int braille_dots_135678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13568")] public const int braille_dots_13568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1357")] public const int braille_dots_1357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13578")] public const int braille_dots_13578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1358")] public const int braille_dots_1358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_136")] public const int braille_dots_136; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1367")] public const int braille_dots_1367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_13678")] public const int braille_dots_13678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1368")] public const int braille_dots_1368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_137")] public const int braille_dots_137; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1378")] public const int braille_dots_1378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_138")] public const int braille_dots_138; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_14")] public const int braille_dots_14; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_145")] public const int braille_dots_145; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1456")] public const int braille_dots_1456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_14567")] public const int braille_dots_14567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_145678")] public const int braille_dots_145678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_14568")] public const int braille_dots_14568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1457")] public const int braille_dots_1457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_14578")] public const int braille_dots_14578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1458")] public const int braille_dots_1458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_146")] public const int braille_dots_146; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1467")] public const int braille_dots_1467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_14678")] public const int braille_dots_14678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1468")] public const int braille_dots_1468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_147")] public const int braille_dots_147; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1478")] public const int braille_dots_1478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_148")] public const int braille_dots_148; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_15")] public const int braille_dots_15; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_156")] public const int braille_dots_156; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1567")] public const int braille_dots_1567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_15678")] public const int braille_dots_15678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1568")] public const int braille_dots_1568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_157")] public const int braille_dots_157; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1578")] public const int braille_dots_1578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_158")] public const int braille_dots_158; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_16")] public const int braille_dots_16; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_167")] public const int braille_dots_167; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_1678")] public const int braille_dots_1678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_168")] public const int braille_dots_168; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_17")] public const int braille_dots_17; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_178")] public const int braille_dots_178; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_18")] public const int braille_dots_18; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2")] public const int braille_dots_2; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23")] public const int braille_dots_23; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_234")] public const int braille_dots_234; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2345")] public const int braille_dots_2345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23456")] public const int braille_dots_23456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_234567")] public const int braille_dots_234567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2345678")] public const int braille_dots_2345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_234568")] public const int braille_dots_234568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23457")] public const int braille_dots_23457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_234578")] public const int braille_dots_234578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23458")] public const int braille_dots_23458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2346")] public const int braille_dots_2346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23467")] public const int braille_dots_23467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_234678")] public const int braille_dots_234678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23468")] public const int braille_dots_23468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2347")] public const int braille_dots_2347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23478")] public const int braille_dots_23478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2348")] public const int braille_dots_2348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_235")] public const int braille_dots_235; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2356")] public const int braille_dots_2356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23567")] public const int braille_dots_23567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_235678")] public const int braille_dots_235678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23568")] public const int braille_dots_23568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2357")] public const int braille_dots_2357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23578")] public const int braille_dots_23578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2358")] public const int braille_dots_2358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_236")] public const int braille_dots_236; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2367")] public const int braille_dots_2367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_23678")] public const int braille_dots_23678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2368")] public const int braille_dots_2368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_237")] public const int braille_dots_237; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2378")] public const int braille_dots_2378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_238")] public const int braille_dots_238; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_24")] public const int braille_dots_24; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_245")] public const int braille_dots_245; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2456")] public const int braille_dots_2456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_24567")] public const int braille_dots_24567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_245678")] public const int braille_dots_245678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_24568")] public const int braille_dots_24568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2457")] public const int braille_dots_2457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_24578")] public const int braille_dots_24578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2458")] public const int braille_dots_2458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_246")] public const int braille_dots_246; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2467")] public const int braille_dots_2467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_24678")] public const int braille_dots_24678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2468")] public const int braille_dots_2468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_247")] public const int braille_dots_247; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2478")] public const int braille_dots_2478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_248")] public const int braille_dots_248; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_25")] public const int braille_dots_25; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_256")] public const int braille_dots_256; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2567")] public const int braille_dots_2567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_25678")] public const int braille_dots_25678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2568")] public const int braille_dots_2568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_257")] public const int braille_dots_257; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2578")] public const int braille_dots_2578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_258")] public const int braille_dots_258; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_26")] public const int braille_dots_26; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_267")] public const int braille_dots_267; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_2678")] public const int braille_dots_2678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_268")] public const int braille_dots_268; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_27")] public const int braille_dots_27; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_278")] public const int braille_dots_278; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_28")] public const int braille_dots_28; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3")] public const int braille_dots_3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_34")] public const int braille_dots_34; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_345")] public const int braille_dots_345; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3456")] public const int braille_dots_3456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_34567")] public const int braille_dots_34567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_345678")] public const int braille_dots_345678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_34568")] public const int braille_dots_34568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3457")] public const int braille_dots_3457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_34578")] public const int braille_dots_34578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3458")] public const int braille_dots_3458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_346")] public const int braille_dots_346; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3467")] public const int braille_dots_3467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_34678")] public const int braille_dots_34678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3468")] public const int braille_dots_3468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_347")] public const int braille_dots_347; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3478")] public const int braille_dots_3478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_348")] public const int braille_dots_348; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_35")] public const int braille_dots_35; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_356")] public const int braille_dots_356; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3567")] public const int braille_dots_3567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_35678")] public const int braille_dots_35678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3568")] public const int braille_dots_3568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_357")] public const int braille_dots_357; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3578")] public const int braille_dots_3578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_358")] public const int braille_dots_358; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_36")] public const int braille_dots_36; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_367")] public const int braille_dots_367; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_3678")] public const int braille_dots_3678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_368")] public const int braille_dots_368; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_37")] public const int braille_dots_37; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_378")] public const int braille_dots_378; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_38")] public const int braille_dots_38; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_4")] public const int braille_dots_4; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_45")] public const int braille_dots_45; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_456")] public const int braille_dots_456; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_4567")] public const int braille_dots_4567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_45678")] public const int braille_dots_45678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_4568")] public const int braille_dots_4568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_457")] public const int braille_dots_457; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_4578")] public const int braille_dots_4578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_458")] public const int braille_dots_458; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_46")] public const int braille_dots_46; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_467")] public const int braille_dots_467; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_4678")] public const int braille_dots_4678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_468")] public const int braille_dots_468; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_47")] public const int braille_dots_47; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_478")] public const int braille_dots_478; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_48")] public const int braille_dots_48; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_5")] public const int braille_dots_5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_56")] public const int braille_dots_56; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_567")] public const int braille_dots_567; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_5678")] public const int braille_dots_5678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_568")] public const int braille_dots_568; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_57")] public const int braille_dots_57; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_578")] public const int braille_dots_578; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_58")] public const int braille_dots_58; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_6")] public const int braille_dots_6; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_67")] public const int braille_dots_67; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_678")] public const int braille_dots_678; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_68")] public const int braille_dots_68; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_7")] public const int braille_dots_7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_78")] public const int braille_dots_78; [CCode (cheader_filename = "ibus.h", cname = "IBUS_braille_dots_8")] public const int braille_dots_8; [CCode (cheader_filename = "ibus.h", cname = "IBUS_breve")] public const int breve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_brokenbar")] public const int brokenbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_c")] public const int c; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cabovedot")] public const int cabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cacute")] public const int cacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_careof")] public const int careof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_caret")] public const int caret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_caron")] public const int caron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ccaron")] public const int ccaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ccedilla")] public const int ccedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ccircumflex")] public const int ccircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cedilla")] public const int cedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cent")] public const int cent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_checkerboard")] public const int checkerboard; [CCode (cheader_filename = "ibus.h", cname = "IBUS_checkmark")] public const int checkmark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_circle")] public const int circle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_club")] public const int club; [CCode (cheader_filename = "ibus.h", cname = "IBUS_colon")] public const int colon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_comma")] public const int comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_containsas")] public const int containsas; [CCode (cheader_filename = "ibus.h", cname = "IBUS_copyright")] public const int copyright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cr")] public const int cr; [CCode (cheader_filename = "ibus.h", cname = "IBUS_crossinglines")] public const int crossinglines; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cuberoot")] public const int cuberoot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_currency")] public const int currency; [CCode (cheader_filename = "ibus.h", cname = "IBUS_cursor")] public const int cursor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_d")] public const int d; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dabovedot")] public const int dabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dagger")] public const int dagger; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dcaron")] public const int dcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_abovecomma")] public const int dead_abovecomma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_abovedot")] public const int dead_abovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_abovereversedcomma")] public const int dead_abovereversedcomma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_abovering")] public const int dead_abovering; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_acute")] public const int dead_acute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowbreve")] public const int dead_belowbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowcircumflex")] public const int dead_belowcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowdiaeresis")] public const int dead_belowdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowdot")] public const int dead_belowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowmacron")] public const int dead_belowmacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowring")] public const int dead_belowring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_belowtilde")] public const int dead_belowtilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_breve")] public const int dead_breve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_caron")] public const int dead_caron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_cedilla")] public const int dead_cedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_circumflex")] public const int dead_circumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_dasia")] public const int dead_dasia; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_diaeresis")] public const int dead_diaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_doubleacute")] public const int dead_doubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_grave")] public const int dead_grave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_hook")] public const int dead_hook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_horn")] public const int dead_horn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_iota")] public const int dead_iota; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_macron")] public const int dead_macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_ogonek")] public const int dead_ogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_perispomeni")] public const int dead_perispomeni; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_psili")] public const int dead_psili; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_semivoiced_sound")] public const int dead_semivoiced_sound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_stroke")] public const int dead_stroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_tilde")] public const int dead_tilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dead_voiced_sound")] public const int dead_voiced_sound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_decimalpoint")] public const int decimalpoint; [CCode (cheader_filename = "ibus.h", cname = "IBUS_degree")] public const int degree; [CCode (cheader_filename = "ibus.h", cname = "IBUS_diaeresis")] public const int diaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_diamond")] public const int diamond; [CCode (cheader_filename = "ibus.h", cname = "IBUS_digitspace")] public const int digitspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dintegral")] public const int dintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_division")] public const int division; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dollar")] public const int dollar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_doubbaselinedot")] public const int doubbaselinedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_doubleacute")] public const int doubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_doubledagger")] public const int doubledagger; [CCode (cheader_filename = "ibus.h", cname = "IBUS_doublelowquotemark")] public const int doublelowquotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_downarrow")] public const int downarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_downcaret")] public const int downcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_downshoe")] public const int downshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_downstile")] public const int downstile; [CCode (cheader_filename = "ibus.h", cname = "IBUS_downtack")] public const int downtack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_dstroke")] public const int dstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_e")] public const int e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eabovedot")] public const int eabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eacute")] public const int eacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ebelowdot")] public const int ebelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecaron")] public const int ecaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflex")] public const int ecircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflexacute")] public const int ecircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflexbelowdot")] public const int ecircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflexgrave")] public const int ecircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflexhook")] public const int ecircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ecircumflextilde")] public const int ecircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ediaeresis")] public const int ediaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_egrave")] public const int egrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ehook")] public const int ehook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eightsubscript")] public const int eightsubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eightsuperior")] public const int eightsuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_elementof")] public const int elementof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ellipsis")] public const int ellipsis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_em3space")] public const int em3space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_em4space")] public const int em4space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emacron")] public const int emacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emdash")] public const int emdash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emfilledcircle")] public const int emfilledcircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emfilledrect")] public const int emfilledrect; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emopencircle")] public const int emopencircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emopenrectangle")] public const int emopenrectangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emptyset")] public const int emptyset; [CCode (cheader_filename = "ibus.h", cname = "IBUS_emspace")] public const int emspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_endash")] public const int endash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_enfilledcircbullet")] public const int enfilledcircbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_enfilledsqbullet")] public const int enfilledsqbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eng")] public const int eng; [CCode (cheader_filename = "ibus.h", cname = "IBUS_enopencircbullet")] public const int enopencircbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_enopensquarebullet")] public const int enopensquarebullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_enspace")] public const int enspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eogonek")] public const int eogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_equal")] public const int equal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_eth")] public const int eth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_etilde")] public const int etilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_exclam")] public const int exclam; [CCode (cheader_filename = "ibus.h", cname = "IBUS_exclamdown")] public const int exclamdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_f")] public const int f; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fabovedot")] public const int fabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_femalesymbol")] public const int femalesymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ff")] public const int ff; [CCode (cheader_filename = "ibus.h", cname = "IBUS_figdash")] public const int figdash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_filledlefttribullet")] public const int filledlefttribullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_filledrectbullet")] public const int filledrectbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_filledrighttribullet")] public const int filledrighttribullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_filledtribulletdown")] public const int filledtribulletdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_filledtribulletup")] public const int filledtribulletup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fiveeighths")] public const int fiveeighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fivesixths")] public const int fivesixths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fivesubscript")] public const int fivesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fivesuperior")] public const int fivesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fourfifths")] public const int fourfifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_foursubscript")] public const int foursubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_foursuperior")] public const int foursuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_fourthroot")] public const int fourthroot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_function")] public const int function; [CCode (cheader_filename = "ibus.h", cname = "IBUS_g")] public const int g; [CCode (cheader_filename = "ibus.h", cname = "IBUS_gabovedot")] public const int gabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_gbreve")] public const int gbreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_gcaron")] public const int gcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_gcedilla")] public const int gcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_gcircumflex")] public const int gcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_grave")] public const int grave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_greater")] public const int greater; [CCode (cheader_filename = "ibus.h", cname = "IBUS_greaterthanequal")] public const int greaterthanequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_guillemotleft")] public const int guillemotleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_guillemotright")] public const int guillemotright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_h")] public const int h; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hairspace")] public const int hairspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hcircumflex")] public const int hcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_heart")] public const int heart; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_aleph")] public const int hebrew_aleph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_ayin")] public const int hebrew_ayin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_bet")] public const int hebrew_bet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_beth")] public const int hebrew_beth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_chet")] public const int hebrew_chet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_dalet")] public const int hebrew_dalet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_daleth")] public const int hebrew_daleth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_doublelowline")] public const int hebrew_doublelowline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalkaph")] public const int hebrew_finalkaph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalmem")] public const int hebrew_finalmem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalnun")] public const int hebrew_finalnun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalpe")] public const int hebrew_finalpe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalzade")] public const int hebrew_finalzade; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_finalzadi")] public const int hebrew_finalzadi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_gimel")] public const int hebrew_gimel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_gimmel")] public const int hebrew_gimmel; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_he")] public const int hebrew_he; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_het")] public const int hebrew_het; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_kaph")] public const int hebrew_kaph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_kuf")] public const int hebrew_kuf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_lamed")] public const int hebrew_lamed; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_mem")] public const int hebrew_mem; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_nun")] public const int hebrew_nun; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_pe")] public const int hebrew_pe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_qoph")] public const int hebrew_qoph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_resh")] public const int hebrew_resh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_samech")] public const int hebrew_samech; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_samekh")] public const int hebrew_samekh; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_shin")] public const int hebrew_shin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_taf")] public const int hebrew_taf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_taw")] public const int hebrew_taw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_tet")] public const int hebrew_tet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_teth")] public const int hebrew_teth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_waw")] public const int hebrew_waw; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_yod")] public const int hebrew_yod; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_zade")] public const int hebrew_zade; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_zadi")] public const int hebrew_zadi; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_zain")] public const int hebrew_zain; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hebrew_zayin")] public const int hebrew_zayin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hexagram")] public const int hexagram; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizconnector")] public const int horizconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizlinescan1")] public const int horizlinescan1; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizlinescan3")] public const int horizlinescan3; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizlinescan5")] public const int horizlinescan5; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizlinescan7")] public const int horizlinescan7; [CCode (cheader_filename = "ibus.h", cname = "IBUS_horizlinescan9")] public const int horizlinescan9; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hstroke")] public const int hstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ht")] public const int ht; [CCode (cheader_filename = "ibus.h", cname = "IBUS_hyphen")] public const int hyphen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_i")] public const int i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_iacute")] public const int iacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ibelowdot")] public const int ibelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ibreve")] public const int ibreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_icircumflex")] public const int icircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_identical")] public const int identical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_idiaeresis")] public const int idiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_idotless")] public const int idotless; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ifonlyif")] public const int ifonlyif; [CCode (cheader_filename = "ibus.h", cname = "IBUS_igrave")] public const int igrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ihook")] public const int ihook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_imacron")] public const int imacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_implies")] public const int implies; [CCode (cheader_filename = "ibus.h", cname = "IBUS_includedin")] public const int includedin; [CCode (cheader_filename = "ibus.h", cname = "IBUS_includes")] public const int includes; [CCode (cheader_filename = "ibus.h", cname = "IBUS_infinity")] public const int infinity; [CCode (cheader_filename = "ibus.h", cname = "IBUS_integral")] public const int integral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_intersection")] public const int intersection; [CCode (cheader_filename = "ibus.h", cname = "IBUS_iogonek")] public const int iogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_itilde")] public const int itilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_j")] public const int j; [CCode (cheader_filename = "ibus.h", cname = "IBUS_jcircumflex")] public const int jcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_jot")] public const int jot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_k")] public const int k; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_A")] public const int kana_A; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_CHI")] public const int kana_CHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_E")] public const int kana_E; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_FU")] public const int kana_FU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_HA")] public const int kana_HA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_HE")] public const int kana_HE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_HI")] public const int kana_HI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_HO")] public const int kana_HO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_HU")] public const int kana_HU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_I")] public const int kana_I; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_KA")] public const int kana_KA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_KE")] public const int kana_KE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_KI")] public const int kana_KI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_KO")] public const int kana_KO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_KU")] public const int kana_KU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_MA")] public const int kana_MA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_ME")] public const int kana_ME; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_MI")] public const int kana_MI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_MO")] public const int kana_MO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_MU")] public const int kana_MU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_N")] public const int kana_N; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_NA")] public const int kana_NA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_NE")] public const int kana_NE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_NI")] public const int kana_NI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_NO")] public const int kana_NO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_NU")] public const int kana_NU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_O")] public const int kana_O; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_RA")] public const int kana_RA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_RE")] public const int kana_RE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_RI")] public const int kana_RI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_RO")] public const int kana_RO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_RU")] public const int kana_RU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_SA")] public const int kana_SA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_SE")] public const int kana_SE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_SHI")] public const int kana_SHI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_SO")] public const int kana_SO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_SU")] public const int kana_SU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TA")] public const int kana_TA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TE")] public const int kana_TE; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TI")] public const int kana_TI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TO")] public const int kana_TO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TSU")] public const int kana_TSU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_TU")] public const int kana_TU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_U")] public const int kana_U; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_WA")] public const int kana_WA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_WO")] public const int kana_WO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_YA")] public const int kana_YA; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_YO")] public const int kana_YO; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_YU")] public const int kana_YU; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_a")] public const int kana_a; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_closingbracket")] public const int kana_closingbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_comma")] public const int kana_comma; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_conjunctive")] public const int kana_conjunctive; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_e")] public const int kana_e; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_fullstop")] public const int kana_fullstop; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_i")] public const int kana_i; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_middledot")] public const int kana_middledot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_o")] public const int kana_o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_openingbracket")] public const int kana_openingbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_switch")] public const int kana_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_tsu")] public const int kana_tsu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_tu")] public const int kana_tu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_u")] public const int kana_u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_ya")] public const int kana_ya; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_yo")] public const int kana_yo; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kana_yu")] public const int kana_yu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kappa")] public const int kappa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kcedilla")] public const int kcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_kra")] public const int kra; [CCode (cheader_filename = "ibus.h", cname = "IBUS_l")] public const int l; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lacute")] public const int lacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_latincross")] public const int latincross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lbelowdot")] public const int lbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lcaron")] public const int lcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lcedilla")] public const int lcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftanglebracket")] public const int leftanglebracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftarrow")] public const int leftarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftcaret")] public const int leftcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftdoublequotemark")] public const int leftdoublequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftmiddlecurlybrace")] public const int leftmiddlecurlybrace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftopentriangle")] public const int leftopentriangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftpointer")] public const int leftpointer; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftradical")] public const int leftradical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftshoe")] public const int leftshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftsinglequotemark")] public const int leftsinglequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_leftt")] public const int leftt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lefttack")] public const int lefttack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_less")] public const int less; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lessthanequal")] public const int lessthanequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lf")] public const int lf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_logicaland")] public const int logicaland; [CCode (cheader_filename = "ibus.h", cname = "IBUS_logicalor")] public const int logicalor; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lowleftcorner")] public const int lowleftcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lowrightcorner")] public const int lowrightcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_lstroke")] public const int lstroke; [CCode (cheader_filename = "ibus.h", cname = "IBUS_m")] public const int m; [CCode (cheader_filename = "ibus.h", cname = "IBUS_mabovedot")] public const int mabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_macron")] public const int macron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_malesymbol")] public const int malesymbol; [CCode (cheader_filename = "ibus.h", cname = "IBUS_maltesecross")] public const int maltesecross; [CCode (cheader_filename = "ibus.h", cname = "IBUS_marker")] public const int marker; [CCode (cheader_filename = "ibus.h", cname = "IBUS_masculine")] public const int masculine; [CCode (cheader_filename = "ibus.h", cname = "IBUS_minus")] public const int minus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_minutes")] public const int minutes; [CCode (cheader_filename = "ibus.h", cname = "IBUS_mu")] public const int mu; [CCode (cheader_filename = "ibus.h", cname = "IBUS_multiply")] public const int multiply; [CCode (cheader_filename = "ibus.h", cname = "IBUS_musicalflat")] public const int musicalflat; [CCode (cheader_filename = "ibus.h", cname = "IBUS_musicalsharp")] public const int musicalsharp; [CCode (cheader_filename = "ibus.h", cname = "IBUS_n")] public const int n; [CCode (cheader_filename = "ibus.h", cname = "IBUS_nabla")] public const int nabla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_nacute")] public const int nacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ncaron")] public const int ncaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ncedilla")] public const int ncedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ninesubscript")] public const int ninesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ninesuperior")] public const int ninesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_nl")] public const int nl; [CCode (cheader_filename = "ibus.h", cname = "IBUS_nobreakspace")] public const int nobreakspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_notapproxeq")] public const int notapproxeq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_notelementof")] public const int notelementof; [CCode (cheader_filename = "ibus.h", cname = "IBUS_notequal")] public const int notequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_notidentical")] public const int notidentical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_notsign")] public const int notsign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ntilde")] public const int ntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_numbersign")] public const int numbersign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_numerosign")] public const int numerosign; [CCode (cheader_filename = "ibus.h", cname = "IBUS_o")] public const int o; [CCode (cheader_filename = "ibus.h", cname = "IBUS_oacute")] public const int oacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_obarred")] public const int obarred; [CCode (cheader_filename = "ibus.h", cname = "IBUS_obelowdot")] public const int obelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocaron")] public const int ocaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflex")] public const int ocircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflexacute")] public const int ocircumflexacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflexbelowdot")] public const int ocircumflexbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflexgrave")] public const int ocircumflexgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflexhook")] public const int ocircumflexhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ocircumflextilde")] public const int ocircumflextilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_odiaeresis")] public const int odiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_odoubleacute")] public const int odoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_oe")] public const int oe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ogonek")] public const int ogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ograve")] public const int ograve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohook")] public const int ohook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohorn")] public const int ohorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohornacute")] public const int ohornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohornbelowdot")] public const int ohornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohorngrave")] public const int ohorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohornhook")] public const int ohornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ohorntilde")] public const int ohorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_omacron")] public const int omacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_oneeighth")] public const int oneeighth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onefifth")] public const int onefifth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onehalf")] public const int onehalf; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onequarter")] public const int onequarter; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onesixth")] public const int onesixth; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onesubscript")] public const int onesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onesuperior")] public const int onesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_onethird")] public const int onethird; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ooblique")] public const int ooblique; [CCode (cheader_filename = "ibus.h", cname = "IBUS_openrectbullet")] public const int openrectbullet; [CCode (cheader_filename = "ibus.h", cname = "IBUS_openstar")] public const int openstar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_opentribulletdown")] public const int opentribulletdown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_opentribulletup")] public const int opentribulletup; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ordfeminine")] public const int ordfeminine; [CCode (cheader_filename = "ibus.h", cname = "IBUS_oslash")] public const int oslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_otilde")] public const int otilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_overbar")] public const int overbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_overline")] public const int overline; [CCode (cheader_filename = "ibus.h", cname = "IBUS_p")] public const int p; [CCode (cheader_filename = "ibus.h", cname = "IBUS_pabovedot")] public const int pabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_paragraph")] public const int paragraph; [CCode (cheader_filename = "ibus.h", cname = "IBUS_parenleft")] public const int parenleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_parenright")] public const int parenright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_partdifferential")] public const int partdifferential; [CCode (cheader_filename = "ibus.h", cname = "IBUS_partialderivative")] public const int partialderivative; [CCode (cheader_filename = "ibus.h", cname = "IBUS_percent")] public const int percent; [CCode (cheader_filename = "ibus.h", cname = "IBUS_period")] public const int period; [CCode (cheader_filename = "ibus.h", cname = "IBUS_periodcentered")] public const int periodcentered; [CCode (cheader_filename = "ibus.h", cname = "IBUS_phonographcopyright")] public const int phonographcopyright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_plus")] public const int plus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_plusminus")] public const int plusminus; [CCode (cheader_filename = "ibus.h", cname = "IBUS_prescription")] public const int prescription; [CCode (cheader_filename = "ibus.h", cname = "IBUS_prolongedsound")] public const int prolongedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_punctspace")] public const int punctspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_q")] public const int q; [CCode (cheader_filename = "ibus.h", cname = "IBUS_quad")] public const int quad; [CCode (cheader_filename = "ibus.h", cname = "IBUS_question")] public const int question; [CCode (cheader_filename = "ibus.h", cname = "IBUS_questiondown")] public const int questiondown; [CCode (cheader_filename = "ibus.h", cname = "IBUS_quotedbl")] public const int quotedbl; [CCode (cheader_filename = "ibus.h", cname = "IBUS_quoteleft")] public const int quoteleft; [CCode (cheader_filename = "ibus.h", cname = "IBUS_quoteright")] public const int quoteright; [CCode (cheader_filename = "ibus.h", cname = "IBUS_r")] public const int r; [CCode (cheader_filename = "ibus.h", cname = "IBUS_racute")] public const int racute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_radical")] public const int radical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rcaron")] public const int rcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rcedilla")] public const int rcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_registered")] public const int registered; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightanglebracket")] public const int rightanglebracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightarrow")] public const int rightarrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightcaret")] public const int rightcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightdoublequotemark")] public const int rightdoublequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightmiddlecurlybrace")] public const int rightmiddlecurlybrace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightmiddlesummation")] public const int rightmiddlesummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightopentriangle")] public const int rightopentriangle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightpointer")] public const int rightpointer; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightshoe")] public const int rightshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightsinglequotemark")] public const int rightsinglequotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_rightt")] public const int rightt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_righttack")] public const int righttack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_s")] public const int s; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sabovedot")] public const int sabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sacute")] public const int sacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_scaron")] public const int scaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_scedilla")] public const int scedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_schwa")] public const int schwa; [CCode (cheader_filename = "ibus.h", cname = "IBUS_scircumflex")] public const int scircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_script_switch")] public const int script_switch; [CCode (cheader_filename = "ibus.h", cname = "IBUS_seconds")] public const int seconds; [CCode (cheader_filename = "ibus.h", cname = "IBUS_section")] public const int section; [CCode (cheader_filename = "ibus.h", cname = "IBUS_semicolon")] public const int semicolon; [CCode (cheader_filename = "ibus.h", cname = "IBUS_semivoicedsound")] public const int semivoicedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_seveneighths")] public const int seveneighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sevensubscript")] public const int sevensubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sevensuperior")] public const int sevensuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_signaturemark")] public const int signaturemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_signifblank")] public const int signifblank; [CCode (cheader_filename = "ibus.h", cname = "IBUS_similarequal")] public const int similarequal; [CCode (cheader_filename = "ibus.h", cname = "IBUS_singlelowquotemark")] public const int singlelowquotemark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sixsubscript")] public const int sixsubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sixsuperior")] public const int sixsuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_slash")] public const int slash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_soliddiamond")] public const int soliddiamond; [CCode (cheader_filename = "ibus.h", cname = "IBUS_space")] public const int space; [CCode (cheader_filename = "ibus.h", cname = "IBUS_squareroot")] public const int squareroot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ssharp")] public const int ssharp; [CCode (cheader_filename = "ibus.h", cname = "IBUS_sterling")] public const int sterling; [CCode (cheader_filename = "ibus.h", cname = "IBUS_stricteq")] public const int stricteq; [CCode (cheader_filename = "ibus.h", cname = "IBUS_t")] public const int t; [CCode (cheader_filename = "ibus.h", cname = "IBUS_tabovedot")] public const int tabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_tcaron")] public const int tcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_tcedilla")] public const int tcedilla; [CCode (cheader_filename = "ibus.h", cname = "IBUS_telephone")] public const int telephone; [CCode (cheader_filename = "ibus.h", cname = "IBUS_telephonerecorder")] public const int telephonerecorder; [CCode (cheader_filename = "ibus.h", cname = "IBUS_therefore")] public const int therefore; [CCode (cheader_filename = "ibus.h", cname = "IBUS_thinspace")] public const int thinspace; [CCode (cheader_filename = "ibus.h", cname = "IBUS_thorn")] public const int thorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_threeeighths")] public const int threeeighths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_threefifths")] public const int threefifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_threequarters")] public const int threequarters; [CCode (cheader_filename = "ibus.h", cname = "IBUS_threesubscript")] public const int threesubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_threesuperior")] public const int threesuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_tintegral")] public const int tintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topintegral")] public const int topintegral; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topleftparens")] public const int topleftparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topleftradical")] public const int topleftradical; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topleftsqbracket")] public const int topleftsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topleftsummation")] public const int topleftsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_toprightparens")] public const int toprightparens; [CCode (cheader_filename = "ibus.h", cname = "IBUS_toprightsqbracket")] public const int toprightsqbracket; [CCode (cheader_filename = "ibus.h", cname = "IBUS_toprightsummation")] public const int toprightsummation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topt")] public const int topt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_topvertsummationconnector")] public const int topvertsummationconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_trademark")] public const int trademark; [CCode (cheader_filename = "ibus.h", cname = "IBUS_trademarkincircle")] public const int trademarkincircle; [CCode (cheader_filename = "ibus.h", cname = "IBUS_tslash")] public const int tslash; [CCode (cheader_filename = "ibus.h", cname = "IBUS_twofifths")] public const int twofifths; [CCode (cheader_filename = "ibus.h", cname = "IBUS_twosubscript")] public const int twosubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_twosuperior")] public const int twosuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_twothirds")] public const int twothirds; [CCode (cheader_filename = "ibus.h", cname = "IBUS_u")] public const int u; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uacute")] public const int uacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ubelowdot")] public const int ubelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ubreve")] public const int ubreve; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ucircumflex")] public const int ucircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_udiaeresis")] public const int udiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_udoubleacute")] public const int udoubleacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ugrave")] public const int ugrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhook")] public const int uhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhorn")] public const int uhorn; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhornacute")] public const int uhornacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhornbelowdot")] public const int uhornbelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhorngrave")] public const int uhorngrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhornhook")] public const int uhornhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uhorntilde")] public const int uhorntilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_umacron")] public const int umacron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_underbar")] public const int underbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_underscore")] public const int underscore; [CCode (cheader_filename = "ibus.h", cname = "IBUS_union")] public const int union; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uogonek")] public const int uogonek; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uparrow")] public const int uparrow; [CCode (cheader_filename = "ibus.h", cname = "IBUS_upcaret")] public const int upcaret; [CCode (cheader_filename = "ibus.h", cname = "IBUS_upleftcorner")] public const int upleftcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uprightcorner")] public const int uprightcorner; [CCode (cheader_filename = "ibus.h", cname = "IBUS_upshoe")] public const int upshoe; [CCode (cheader_filename = "ibus.h", cname = "IBUS_upstile")] public const int upstile; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uptack")] public const int uptack; [CCode (cheader_filename = "ibus.h", cname = "IBUS_uring")] public const int uring; [CCode (cheader_filename = "ibus.h", cname = "IBUS_utilde")] public const int utilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_v")] public const int v; [CCode (cheader_filename = "ibus.h", cname = "IBUS_variation")] public const int variation; [CCode (cheader_filename = "ibus.h", cname = "IBUS_vertbar")] public const int vertbar; [CCode (cheader_filename = "ibus.h", cname = "IBUS_vertconnector")] public const int vertconnector; [CCode (cheader_filename = "ibus.h", cname = "IBUS_voicedsound")] public const int voicedsound; [CCode (cheader_filename = "ibus.h", cname = "IBUS_vt")] public const int vt; [CCode (cheader_filename = "ibus.h", cname = "IBUS_w")] public const int w; [CCode (cheader_filename = "ibus.h", cname = "IBUS_wacute")] public const int wacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_wcircumflex")] public const int wcircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_wdiaeresis")] public const int wdiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_wgrave")] public const int wgrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_x")] public const int x; [CCode (cheader_filename = "ibus.h", cname = "IBUS_xabovedot")] public const int xabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_y")] public const int y; [CCode (cheader_filename = "ibus.h", cname = "IBUS_yacute")] public const int yacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ybelowdot")] public const int ybelowdot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ycircumflex")] public const int ycircumflex; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ydiaeresis")] public const int ydiaeresis; [CCode (cheader_filename = "ibus.h", cname = "IBUS_yen")] public const int yen; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ygrave")] public const int ygrave; [CCode (cheader_filename = "ibus.h", cname = "IBUS_yhook")] public const int yhook; [CCode (cheader_filename = "ibus.h", cname = "IBUS_ytilde")] public const int ytilde; [CCode (cheader_filename = "ibus.h", cname = "IBUS_z")] public const int z; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zabovedot")] public const int zabovedot; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zacute")] public const int zacute; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zcaron")] public const int zcaron; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zerosubscript")] public const int zerosubscript; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zerosuperior")] public const int zerosuperior; [CCode (cheader_filename = "ibus.h", cname = "IBUS_zstroke")] public const int zstroke; [CCode (cheader_filename = "ibus.h")] public static unowned IBus.Attribute attr_background_new (uint color, uint start_index, uint end_index); [CCode (cheader_filename = "ibus.h")] public static unowned IBus.Attribute attr_foreground_new (uint color, uint start_index, uint end_index); [CCode (cheader_filename = "ibus.h")] [Deprecated] public static void free_strv (string strv); [CCode (cheader_filename = "ibus.h")] public static unowned string get_address (); [CCode (cheader_filename = "ibus.h")] [Deprecated] public static long get_daemon_uid (); [CCode (cheader_filename = "ibus.h")] public static unowned string get_language_name (string _locale); [CCode (cheader_filename = "ibus.h")] public static unowned string get_local_machine_id (); [CCode (cheader_filename = "ibus.h")] public static unowned string get_socket_path (); [CCode (cheader_filename = "ibus.h")] public static int get_timeout (); [CCode (cheader_filename = "ibus.h")] public static unowned string get_untranslated_language_name (string _locale); [CCode (cheader_filename = "ibus.h")] public static unowned string get_user_name (); [CCode (cheader_filename = "ibus.h")] public static void init (); [CCode (cheader_filename = "ibus.h")] public static bool key_event_from_string (string string, uint keyval, uint modifiers); [CCode (cheader_filename = "ibus.h")] public static unowned string key_event_to_string (uint keyval, uint modifiers); [CCode (cheader_filename = "ibus.h")] public static void keyval_convert_case (uint symbol, out uint lower, out uint upper); [CCode (cheader_filename = "ibus.h")] public static uint keyval_from_name (string keyval_name); [CCode (cheader_filename = "ibus.h")] public static unowned string keyval_name (uint keyval); [CCode (cheader_filename = "ibus.h")] public static uint keyval_to_lower (uint keyval); [CCode (cheader_filename = "ibus.h")] public static unichar keyval_to_unicode (uint keyval); [CCode (cheader_filename = "ibus.h")] public static uint keyval_to_upper (uint keyval); [CCode (cheader_filename = "ibus.h")] public static void main (); [CCode (cheader_filename = "ibus.h")] public static void quit (); [CCode (cheader_filename = "ibus.h")] public static void set_display (string display); [CCode (cheader_filename = "ibus.h")] public static void set_log_handler (bool verbose); [CCode (cheader_filename = "ibus.h")] public static uint unicode_to_keyval (unichar wc); [CCode (cheader_filename = "ibus.h")] public static void unset_log_handler (); [CCode (cheader_filename = "ibus.h")] public static void write_address (string address); } ibus-1.5.11/bindings/vala/ibus-1.0.deps0000644000000000000000000000001012551654123014256 00000000000000gio-2.0 ibus-1.5.11/bindings/vala/IBus-1.0-custom.vala0000644000000000000000000000060712551654123015472 00000000000000namespace IBus { // For some reason, ibus_text_new_from_static_string is hidden in GIR // https://github.com/ibus/ibus/commit/37e6e587 [CCode (type_id = "ibus_text_get_type ()", cheader_filename = "ibus.h")] public class Text : IBus.Serializable { [CCode (cname = "ibus_text_new_from_static_string", has_construct_function = false)] public Text.from_static_string (string str); } } ibus-1.5.11/bindings/vala/config.vapi0000644000000000000000000000062312551654123014303 00000000000000[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "config.h")] namespace Config { public const string PACKAGE_DATADIR; public const string PACKAGE_NAME; public const string PACKAGE_VERSION; public const string BINDIR; public const string DATADIR; public const string PKGDATADIR; public const string GETTEXT_PACKAGE; public const string GLIB_LOCALE_DIR; } ibus-1.5.11/bindings/vala/IBus-1.0.metadata0000644000000000000000000000003712551654123015014 00000000000000IBus cheader_filename="ibus.h" ibus-1.5.11/bindings/vala/Makefile.in0000644000000000000000000004750012551654254014234 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = bindings/vala ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(vapidir)" DATA = $(vapi_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vapi_deps = \ IBus-1.0.metadata \ IBus-1.0-custom.vala \ $(top_builddir)/src/IBus-1.0.gir \ $(NULL) VAPIGEN_VAPIS = ibus-1.0.vapi ibus_1_0_vapi_DEPS = gio-2.0 ibus_1_0_vapi_METADATADIRS = $(srcdir) ibus_1_0_vapi_FILES = \ $(top_builddir)/src/IBus-1.0.gir \ $(srcdir)/IBus-1.0-custom.vala \ $(NULL) vapidir = $(datadir)/vala/vapi vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps) MAINTAINERCLEANFILES = $(VAPIGEN_VAPIS) EXTRA_DIST = \ $(VAPIGEN_VAPIS) \ IBus-1.0.metadata \ IBus-1.0-custom.vala \ ibus-1.0.deps \ config.vapi \ xi.vapi \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bindings/vala/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu bindings/vala/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-vapiDATA: $(vapi_DATA) @$(NORMAL_INSTALL) @list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(vapidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(vapidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vapidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(vapidir)" || exit $$?; \ done uninstall-vapiDATA: @$(NORMAL_UNINSTALL) @list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(vapidir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(vapidir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-vapiDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-vapiDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-vapiDATA installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-vapiDATA .PRECIOUS: Makefile -include $(VAPIGEN_MAKEFILE) ibus-1.0.vapi: $(vapi_deps) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/bindings/vala/Makefile.am0000644000000000000000000000301012551654123014202 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA -include $(VAPIGEN_MAKEFILE) vapi_deps = \ IBus-1.0.metadata \ IBus-1.0-custom.vala \ $(top_builddir)/src/IBus-1.0.gir \ $(NULL) ibus-1.0.vapi: $(vapi_deps) VAPIGEN_VAPIS = ibus-1.0.vapi ibus_1_0_vapi_DEPS = gio-2.0 ibus_1_0_vapi_METADATADIRS = $(srcdir) ibus_1_0_vapi_FILES = \ $(top_builddir)/src/IBus-1.0.gir \ $(srcdir)/IBus-1.0-custom.vala \ $(NULL) vapidir = $(datadir)/vala/vapi vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps) MAINTAINERCLEANFILES = $(VAPIGEN_VAPIS) EXTRA_DIST = \ $(VAPIGEN_VAPIS) \ IBus-1.0.metadata \ IBus-1.0-custom.vala \ ibus-1.0.deps \ config.vapi \ xi.vapi \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/bindings/vala/xi.vapi0000644000000000000000000000340612551654123013460 00000000000000[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/extensions/XInput2.h")] namespace XI { public enum EventType { [CCode (cname = "XI_KeyPress")] KeyPress, [CCode (cname = "XI_KeyRelease")] KeyRelease, } [CCode (cname = "XIAllMasterDevices")] public const int AllMasterDevices; [CCode (cname = "XI_LASTEVENT")] public const int LASTEVENT; [Compact] [CCode (cname = "XIEventMask", destroy_function = "")] public struct EventMask { public int deviceid; [CCode (array_length_cname = "mask_len")] public uchar[] mask; } [CCode (cname = "XISetMask")] public void set_mask(void *mask, EventType type); [Compact] [CCode (cname = "XIGrabModifiers", destroy_function = "")] public struct GrabModifiers { public int modifiers; public int status; } [CCode (cname = "XIGrabKeycode")] public int grab_keycode (X.Display display, int deviceid, int keycode, X.Window grab_window, int grab_mode, int paired_device_mode, bool owner_events, XI.EventMask mask, [CCode (array_length_pos = 8.9)] XI.GrabModifiers[] modifiers); [CCode (cname = "XIUngrabKeycode")] public int ungrab_keycode (X.Display display, int deviceid, int keycode, X.Window grab_window, [CCode (array_length_pos = 4.9)] XI.GrabModifiers[] modifiers); } ibus-1.5.11/bindings/pygobject/0000755000000000000000000000000012551654524013304 500000000000000ibus-1.5.11/bindings/pygobject/gi/0000755000000000000000000000000012551654524013703 500000000000000ibus-1.5.11/bindings/pygobject/gi/__init__.py0000644000000000000000000000171112551654123015727 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2011 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from pkgutil import extend_path __path__ = extend_path(__path__, __name__) ibus-1.5.11/bindings/pygobject/gi/overrides/0000755000000000000000000000000012551654524015705 500000000000000ibus-1.5.11/bindings/pygobject/gi/overrides/__init__.py0000644000000000000000000000171112551654123017731 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2011 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from pkgutil import extend_path __path__ = extend_path(__path__, __name__) ibus-1.5.11/bindings/pygobject/gi/overrides/IBus.py0000644000000000000000000002035312551654123017037 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2011 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from gi.repository import GObject from ..overrides import override # for newer pygobject: https://bugzilla.gnome.org/show_bug.cgi?id=686828 # from ..module import get_introspection_module # IBus = get_introspection_module('IBus') from ..importer import modules IBus = modules['IBus']._introspection_module __all__ = [] class Attribute(IBus.Attribute): def __new__(cls, type=0, value=0, start_index=0, end_index=0): return IBus.Attribute.new(type, value, start_index, end_index) Attribute = override(Attribute) __all__.append('Attribute') class Component(IBus.Component): # Backward compatibility: allow non-keyword arguments def __init__(self, name='', description='', version='', license='', author='', homepage='', command_line='', textdomain='', **kwargs): super(Component, self).__init__(name=name, description=description, version=version, license=license, author=author, homepage=homepage, command_line=command_line, textdomain=textdomain, **kwargs) # Backward compatibility: allow keyword arguments def add_engine(self, engine=None, **kwargs): if engine is None: engine = EngineDesc(**kwargs) super(Component, self).add_engine(engine) Component = override(Component) __all__.append('Component') class Config(IBus.Config): # Backward compatibility: accept default arg def get_value(self, section, name, default=None): value = super(Config, self).get_value(section, name) if value is None: return default return value # Backward compatibility: unset value if value is None # Note that we don't call GLib.Variant.unpack here def set_value(self, section, name, value): if value is None: self.unset(section, name) else: super(Config, self).set_value(section, name, value) Config = override(Config) __all__.append('Config') class EngineDesc(IBus.EngineDesc): # Backward compatibility: allow non-keyword arguments def __init__(self, name='', longname='', description='', language='', license='', author='', icon='', layout='us', hotkeys='', rank=0, symbol='', setup='', layout_variant='', layout_option='', version='', textdomain='', **kwargs): super(EngineDesc, self).__init__(name=name, longname=longname, description=description, language=language, license=license, author=author, icon=icon, layout=layout, hotkeys=hotkeys, rank=rank, symbol=symbol, setup=setup, layout_variant=layout_variant, layout_option=layout_option, version=version, textdomain=textdomain, **kwargs) EngineDesc = override(EngineDesc) __all__.append('EngineDesc') class Factory(IBus.Factory): # Backward compatibility: allow non-keyword arguments def __init__(self, bus=None, **kwargs): if bus is not None: kwargs.setdefault('connection', bus.get_connection()) kwargs.setdefault('object_path', IBus.PATH_FACTORY) super(Factory, self).__init__(**kwargs) Factory = override(Factory) __all__.append('Factory') class Keymap(IBus.Keymap): # Backward compatibility: allow non-keyword arguments def __new__(cls, name): return IBus.Keymap.new(name) def __init__(*args, **kwargs): pass Keymap = override(Keymap) __all__.append('Keymap') class LookupTable(IBus.LookupTable): # Backward compatibility: allow non-keyword arguments def __new__(cls, page_size=5, cursor_pos=0, cursor_visible=True, round=False, orientation=IBus.Orientation.SYSTEM, candidates=[], labels=[]): table = IBus.LookupTable.new(page_size, cursor_pos, cursor_visible, round) table.set_orientation(orientation) for candidate in candidates: table.append_candidate(candidate) for index, label in enumerate(labels): table.set_label(index, label) return table def __init__(self, *args, **kwargs): pass # Backward compatibility: rename def show_cursor(self, visible): self.set_cursor_visible(visible) # Backward compatibility: rename def clean(self): self.clear() LookupTable = override(LookupTable) __all__.append('LookupTable') class Property(IBus.Property): # Backward compatibility: allow non-keyword arguments def __init__(self, key='', type=IBus.PropType.NORMAL, label='', icon='', tooltip='', sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, symbol='', **kwargs): prop_type = kwargs.pop('prop_type', type) if label != None and not isinstance(label, IBus.Text): label = Text(label) if tooltip != None and not isinstance(tooltip, IBus.Text): tooltip = Text(tooltip) if symbol != None and not isinstance(symbol, IBus.Text): symbol = Text(symbol) super(Property, self).__init__(key=key, prop_type=prop_type, label=label, icon=icon, tooltip=tooltip, sensitive=sensitive, visible=visible, state=state, symbol=symbol, **kwargs) Property = override(Property) __all__.append('Property') class Text(IBus.Text): # Backward compatibility: allow non-keyword arguments def __new__(cls, string='', attrs=None): text = IBus.Text.new_from_string(string) if attrs is not None: text.set_attributes(attrs) return text def __init__(self, *args, **kwargs): pass Text = override(Text) __all__.append('Text') ibus-1.5.11/bindings/pygobject/test-override-ibus.py0000644000000000000000000001127612551654123017334 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2011 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA import unittest import os import sys # move the script path at the end, so the necessary modules in system # pygobject can be loaded first tests_builddir = os.path.abspath(os.path.dirname(__file__)) sys.path = [path for path in sys.path if path != tests_builddir] sys.path.append(tests_builddir) from gi.repository import GLib, IBus class TestOverride(unittest.TestCase): def setUp(self): self.__bus = IBus.Bus() def test_attribute(self): # construction with keyword args attr = IBus.Attribute(type=IBus.AttrType.UNDERLINE, value=IBus.AttrUnderline.SINGLE, start_index=0, end_index=10) def test_component(self): # construction with keyword args component = IBus.Component(name='foo', description='foo desc') self.assertEqual(component.props.name, 'foo') # construction with non-keyword args component = IBus.Component('bar', 'bar desc') self.assertEqual(component.props.name, 'bar') def test_config(self): if not self.__bus.is_connected(): self.skipTest('bus not connected') config = self.__bus.get_config() if config is None: self.skipTest('config service not running') config.unset("test", "v1") # get_value with no default arg retval = config.get_value("test", "v1") self.assertEqual(retval, None) # get_value with default arg retval = config.get_value("test", "v1", GLib.Variant('i', 43)) self.assertEqual(retval, GLib.Variant('i', 43)) # set_value with non-null arg retval = config.set_value("test", "v1", GLib.Variant('i', 43)) retval = config.get_value("test", "v1") self.assertEqual(retval, GLib.Variant('i', 43)) # set_value with null arg (= unset) retval = config.set_value("test", "v1", None) self.assertEqual(retval, None) def test_engine_desc(self): # construction with keyword args desc = IBus.EngineDesc(name='foo') self.assertEqual(desc.props.name, 'foo') # construction with non-keyword args desc = IBus.EngineDesc('bar') self.assertEqual(desc.props.name, 'bar') def test_factory(self): if not self.__bus.is_connected(): self.skipTest('bus not connected') # construction with keyword args factory = IBus.Factory(connection=self.__bus.get_connection(), object_path=IBus.PATH_FACTORY) self.assertEqual(factory.props.object_path, IBus.PATH_FACTORY) # construction with non-keyword args factory = IBus.Factory(self.__bus) self.assertEqual(factory.props.object_path, IBus.PATH_FACTORY) def test_keymap(self): # construction with non-keyword args keymap = IBus.Keymap('us') self.assertEqual(keymap.name, 'us') def test_lookup_table(self): # construction with keyword args table = IBus.LookupTable(page_size=6) self.assertEqual(table.page_size, 6) # construction with non-keyword args table = IBus.LookupTable() self.assertEqual(table.page_size, 5) table = IBus.LookupTable(7) self.assertEqual(table.page_size, 7) def test_property(self): # construction with keyword args prop = IBus.Property(key='foo') self.assertEqual(prop.props.key, 'foo') # construction with non-keyword args prop = IBus.Property('bar') self.assertEqual(prop.props.key, 'bar') def test_text(self): # construction with non-keyword args text = IBus.Text('foo') self.assertEqual(text.text, 'foo') text = IBus.Text.new_from_string('bar') self.assertEqual(text.text, 'bar') if __name__ == '__main__': unittest.main() ibus-1.5.11/bindings/pygobject/Makefile.in0000644000000000000000000010523312551654254015275 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2014 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_TESTS_TRUE@am__append_1 = test-override-ibus.py subdir = bindings/pygobject ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(overrides_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__installdirs = "$(DESTDIR)$(overridesdir)" \ "$(DESTDIR)$(overrides2dir)" am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile DATA = $(overrides2_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = py2_compile = PYTHON=$(PYTHON2) $(SHELL) $(py_compile) overrides2dir = $(py2overridesdir) overrides2_DATA = \ gi/overrides/IBus.py \ $(NULL) overridesdir = $(pyoverridesdir) overrides_PYTHON = \ gi/overrides/IBus.py \ $(NULL) TESTS = $(am__append_1) TESTS_ENVIRONMENT = \ PYTHONPATH=$(top_srcdir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$$LD_LIBRARY_PATH \ GI_TYPELIB_PATH=$(top_builddir)/src:$$GI_TYPELIB_PATH \ $(NULL) LOG_COMPILER = $(PYTHON) -B EXTRA_DIST = \ gi/__init__.py \ gi/overrides/__init__.py \ test-override-ibus.py \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .log .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bindings/pygobject/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu bindings/pygobject/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-overridesPYTHON: $(overrides_PYTHON) @$(NORMAL_INSTALL) @list='$(overrides_PYTHON)'; dlist=; list2=; test -n "$(overridesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(overridesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(overridesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(overridesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(overridesdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(overridesdir)" $$dlist; \ else :; fi uninstall-overridesPYTHON: @$(NORMAL_UNINSTALL) @list='$(overrides_PYTHON)'; test -n "$(overridesdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(overridesdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st install-overrides2DATA: $(overrides2_DATA) @$(NORMAL_INSTALL) @list='$(overrides2_DATA)'; test -n "$(overrides2dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(overrides2dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(overrides2dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(overrides2dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(overrides2dir)" || exit $$?; \ done uninstall-overrides2DATA: @$(NORMAL_UNINSTALL) @list='$(overrides2_DATA)'; test -n "$(overrides2dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(overrides2dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-override-ibus.py.log: test-override-ibus.py @p='test-override-ibus.py'; \ b='test-override-ibus.py'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(overridesdir)" "$(DESTDIR)$(overrides2dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-overrides2DATA install-overridesPYTHON @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-overrides2DATA uninstall-overridesPYTHON .MAKE: check-am install-am install-data-am install-strip .PHONY: all all-am check check-TESTS check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-overrides2DATA install-overridesPYTHON install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ uninstall uninstall-am uninstall-overrides2DATA \ uninstall-overridesPYTHON .PRECIOUS: Makefile install-data-hook: @for data in $(overrides2_DATA); do \ file=`echo $$data | sed -e 's|^.*/||'`; \ dlist="$$dlist $$file"; \ done; \ $(py2_compile) --destdir "$(DESTDIR)" \ --basedir "$(overrides2dir)" \ $$dlist $(NULL) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/bindings/pygobject/Makefile.am0000644000000000000000000000351712551654123015261 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2014 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = py2_compile = PYTHON=$(PYTHON2) $(SHELL) $(py_compile) overrides2dir = $(py2overridesdir) overrides2_DATA = \ gi/overrides/IBus.py \ $(NULL) overridesdir = $(pyoverridesdir) overrides_PYTHON = \ gi/overrides/IBus.py \ $(NULL) TESTS = if ENABLE_TESTS TESTS += test-override-ibus.py endif TESTS_ENVIRONMENT = \ PYTHONPATH=$(top_srcdir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$$LD_LIBRARY_PATH \ GI_TYPELIB_PATH=$(top_builddir)/src:$$GI_TYPELIB_PATH \ $(NULL) LOG_COMPILER = $(PYTHON) -B EXTRA_DIST = \ gi/__init__.py \ gi/overrides/__init__.py \ test-override-ibus.py \ $(NULL) install-data-hook: @for data in $(overrides2_DATA); do \ file=`echo $$data | sed -e 's|^.*/||'`; \ dlist="$$dlist $$file"; \ done; \ $(py2_compile) --destdir "$(DESTDIR)" \ --basedir "$(overrides2dir)" \ $$dlist $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/bindings/Makefile.in0000644000000000000000000005656212551654254013321 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = bindings ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = vala pygobject am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ENABLE_VAPIGEN_TRUE@VALA_DIR = vala @ENABLE_PYGOBJECT_TRUE@PYGOBJECT_DIR = pygobject SUBDIRS = \ $(VALA_DIR) \ $(PYGOBJECT_DIR) \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bindings/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu bindings/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/bindings/Makefile.am0000644000000000000000000000205012551654123013262 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ENABLE_VAPIGEN VALA_DIR = vala endif if ENABLE_PYGOBJECT PYGOBJECT_DIR = pygobject endif SUBDIRS = \ $(VALA_DIR) \ $(PYGOBJECT_DIR) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/ChangeLog0000644000000000000000000270371212551655057011231 00000000000000commit 8d5640669a72a551f2b47521c9b945c0a3ae9057 Author: fujiwarat Date: 2015-07-16 14:12:52 +0900 Release 1.5.11 Review URL: https://codereview.appspot.com/242580043 M bindings/vala/Makefile.am M configure.ac commit e00cb92df5f14dc8e6cc11056ebc4d7dbff91250 Author: fujiwarat Date: 2015-07-16 13:50:55 +0900 Update translations Update po/ar.po po/as.po po/bg.po po/bn.po po/bn_IN.po po/ca.po po/da.po po/de.po po/en_GB.po po/es.po po/et.po po/eu.po po/fa.po po/fr.po po/gu.po po/he.po po/hi.po po/hu.po po/ia.po po/it.po po/ja.po po/kn.po po/ko.po po/lv.po po/ml.po po/mr.po po/nb.po po/nl.po po/or.po po/pa.po po/pl.po po/pt_BR.po po/ru.po po/sr.po po/sr@latin.po po/ta.po po/te.po po/tg.po po/uk.po po/ur.po po/vi.po po/zh_CN.po po/zh_HK.po po/zh_TW.po Review URL: https://codereview.appspot.com/241700043 M po/ar.po M po/as.po M po/bg.po M po/bn.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/en_GB.po M po/es.po M po/et.po M po/eu.po M po/fa.po M po/fr.po M po/gu.po M po/he.po M po/hi.po M po/hu.po M po/ia.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/lv.po M po/ml.po M po/mr.po M po/nb.po M po/nl.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/tg.po M po/uk.po M po/ur.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 05f112adaa743cda35265a79622fc373d2331428 Author: fujiwarat Date: 2015-07-16 13:33:17 +0900 Fix GIR warnings about XMLNode with g-ir-scanner Fix: ibusxml.h:62: Warning: IBus: ibus_xml_parse_file: return value: Unresolved type: 'XMLNode*' R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/255210043 M src/ibusxml.c M src/ibusxml.h commit 91bb4a074772835c2c61c0152c13886fb3f91369 Author: fujiwarat Date: 2015-07-13 17:58:30 +0900 Fix doc builds Generate: html/IBusEngineSimple.html Fix: ibuscomponent.h:137: Warning: IBus: "@Varargs" parameter is deprecated, please use "@..." instead: * @Varargs: the NULL-terminated arguments of the properties and values. ibuscomponent.h:83: Warning: IBus: GTK-Doc tag "Description:" has been deprecated: * description: Detailed description of component. ../../../src/ibusenumtypes.h:13: warning: Section ibusenumtypes is not defined in the ibus-sections.txt file. ../../../src/ibusenginesimple.h:39: warning: Section ibussimpleengine is not defined in the ibus-sections.txt file. ../../../src/ibusinternal.h:35: warning: Section ibusinternal is not defined in the ibus-sections.txt file. ../../../src/ibusattribute.h:138: warning: Parameter description for ibus_attribute_new::returns is not used from source code comment block. ../../../src/ibusattribute.h:161: warning: Parameter description for ibus_attribute_get_value::attr is missing in source code comment block. ../../../src/ibuscomponent.h:145: warning: Parameter description for ibus_component_new_varargs::... is missing in source code comment block. ../../../src/ibusconfig.h:95: warning: Parameter description for ibus_config_new::cancellable is missing in source code comment block. html/IBusBus.html:3540: warning: no link for: 'ibus-bus-get-property-async' -> (ibus_bus_get_property_async()). html/api-index-full.html:2989: warning: no link for: 'ibus-ibuscomposetable' -> (ibuscomposetable). html/IBusAttribute.html:500: warning: no link for: 'FIXME:CAPS' -> (FIXME). html/ibus-ibuskeys.html:286: warning: no link for: 'IBUS-KEY-Enter' -> (IBUS_KEY_Enter). html/IBusPanelService.html:574: warning: no link for: 'cursor-down-lookup-table' -> (cursor_down_lookup_table()). html/IBusEngine.html:1190: warning: no link for: 'cancel-hand-writing' -> (cancel_hand_writing()). Review URL: https://codereview.appspot.com/247680043 M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus.types M src/ibusattribute.h M src/ibusattrlist.h M src/ibusbus.h M src/ibuscomponent.h M src/ibusconfig.h M src/ibusconfigservice.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.h M src/ibusenginesimple.h M src/ibusenumtypes.h.template M src/ibusfactory.h M src/ibushotkey.h M src/ibusinputcontext.h M src/ibusinternal.h M src/ibuskeymap.h M src/ibuskeys.h M src/ibuslookuptable.h M src/ibusobject.h M src/ibusobservedpath.h M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusproperty.h M src/ibusproplist.h M src/ibusproxy.h M src/ibusregistry.h M src/ibusserializable.h M src/ibusservice.h M src/ibusshare.h M src/ibustext.h M src/ibusutil.h M src/ibusxml.h commit 3397fcabe28f6cbf19b698954f5260fed11261c6 Author: fujiwarat Date: 2015-07-03 11:24:26 +0900 Use LC_CTYPE in IBusEngineSimple until g_get_language_names() is fixed Review URL: https://codereview.appspot.com/249490043 M src/ibusenginesimple.c commit 845528b91bbccd691d75c931b1dffa304424831b Author: fujiwarat Date: 2015-06-29 11:54:17 +0900 Replace code.google.com with github.com R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/252740043 M bus/ibus-daemon.1.in M client/x11/main.c M conf/dconf/dconf.xml.in M conf/gconf/gconf.xml.in M conf/memconf/memconf.xml.in M engine/simple.xml.in M ibus.spec.in M setup/ibus-setup.1.in M src/ibuscomponent.h M src/tests/ibus-compose.c M tools/ibus.1.in M ui/gtk3/gtkpanel.xml.in commit 70a3b80b39850c289c4e45f702bfc6c3743d6afc Author: fujiwarat Date: 2015-06-22 11:34:32 +0900 Add maintainers R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/249800043 M AUTHORS M ui/gtk3/panel.vala commit 23c45b970b195008a54884a1a9d810e7f8b22c5c Author: fujiwarat Date: 2015-06-19 13:57:35 +0900 Enable to show a property on ibus panel icon If an engine sets the value of icon-prop-key of IBusEngineDesc to a property name of IBusProperty.key, the panel will show the engine property in the icon with a delayed time. This way can show both the engine icon and the engine mode in one icon. Review URL: https://codereview.appspot.com/248950043 M data/ibus.schemas.in M src/ibusenginedesc.c M src/ibusenginedesc.h M ui/gtk3/panel.vala commit 7fd6077f19a5a39cdcd9c7fde0d9c8234ae5592e Author: fujiwarat Date: 2015-06-15 11:19:28 +0900 Support vertical writing with IBUS_INPUT_HINT_VERTICAL_WRITING GTK_INPUT_HINT_VERTICAL_WRITING has been supported in gtk 3.18 Put the vertical lookup table at the left top of the cursor position in case of the vertical mode. Also the gtk client tries to get the character width not to overlap the character when the client window is moved to the screen left. BUG=https://code.google.com/p/ibus/issues/detail?id=1780 Review URL: https://codereview.appspot.com/242140043 M src/ibustypes.h M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/panel.vala commit bd7673e73c2a8c54d2a827603a960d76dab7be1b Author: fujiwarat Date: 2015-06-12 11:43:56 +0900 Do not put lookup window at the minus position tweetdeck.twitter.com seems has hidden GdkWindow and does not provide the positive cursor position. BUG=https://github.com/ibus/ibus/issues/1801 Review URL: https://codereview.appspot.com/246010043 M ui/gtk3/candidatepanel.vala commit b0f2536b58dff885fa887230909718a69b571053 Author: fujiwarat Date: 2015-06-05 15:21:44 +0900 s/code.google.com/github.com/ in docs Review URL: https://codereview.appspot.com/241190043 M README M docs/reference/ibus/ibus-docs.sgml.in M setup/ibus-setup.1.in M setup/setup.ui M ui/gtk3/panel.vala commit 7c865d0d396a207e34f834a503410fca80911794 Author: fujiwarat Date: 2015-06-03 16:44:47 +0900 Delete gnome-do from NO_SNOOPER_APPS BUG=https://code.google.com/p/ibus/issues/detail?id=1433 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/243820043 M configure.ac commit 64b8609b5f0f7e62e4730769b52eefd881a8cc8b Author: fujiwarat Date: 2015-05-25 11:00:57 +0900 ibus-ui-gtk3: radio and check menu items work with GTK 3.16 GTK 3.16 has cleared the radio buttons' state in gtk_radio_menu_item_set_group(): https://git.gnome.org/browse/gtk+/commit/?id=955aed9227 BUG=https://code.google.com/p/ibus/issues/detail?id=1784 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/240100043 M ui/gtk3/property.vala commit b58351ec2f7c057dcfe0aff883064039702a56d7 Author: fujiwarat Date: 2015-05-22 11:37:11 +0900 Set sync process_key_event in ibus-x11 If X11 client application spend time during XNextEvent(), e.g. sleep(1), under async process_key_event(), X11 does not keep the event order. I don't know why the event order is broken but now set the sync mode. BUG=https://code.google.com/p/ibus/issues/detail?id=1697 TEST=client/x11/ibus-x11 Review URL: https://codereview.appspot.com/240860043 M client/x11/main.c commit 7ecbccc7164e1ad1c1d46f51d29f7be9cbec5d13 Author: fujiwarat Date: 2015-05-21 14:12:22 +0900 Enable null return in gobject-introspection TEST=src/IBus.gir bindings/vala/ibus.vapi Review URL: https://codereview.appspot.com/236410043 M engine/main.vala M src/ibusfactory.c M src/ibusservice.h M ui/gtk3/indicator.vala commit 0f9ea3d82a95f557acbe0e538a12dfd2f4ecd9c1 Author: fujiwarat Date: 2015-05-21 11:06:02 +0900 Fix SEGV of ibus-x11 on wayland In case that ibus-x11 is built with gtk3, GdkDisplay can be GdkWaylandDisplay but not GdkX11Display so GDK_DISPLAY_XDISPLAY() and GDK_WINDOW_XID() does not work in wayland. TEST=client/x11/ibus-x11 Review URL: https://codereview.appspot.com/234590043 M client/x11/main.c commit 85f5433c223118fa8f7e4f4bceafa372d8f1e880 Author: fujiwarat Date: 2015-05-21 11:00:20 +0900 Use GLib.Idle.add() when ibus-engine-simple loads compose tables TEST=engine/ibus-engine-simple Review URL: https://codereview.appspot.com/240820043 M engine/Makefile.am M engine/main.vala M src/ibuscomposetable.c M src/ibusenginesimple.h commit 7ae585ac21db4dfac8989887e1a5f97fb863fa17 Author: fujiwarat Date: 2015-05-18 11:54:38 +0900 Load locale compose files dynamically. $HOME/.XCompose is used for the customization of compose files. Now the static system locale data is dropped and load /usr/share/X11/locale/$LOCALE/Compose dynamically besides .XCompose. BUG=https://code.google.com/p/ibus/issues/detail?id=1728 TEST=src/libibus.so src/tests/ibus-compose engine/ibus-engine-simple Review URL: https://codereview.appspot.com/232440044 D bindings/vala/ibus-private.vapi M engine/Makefile.am M engine/main.vala D engine/test-compose.vala M src/Makefile.am D src/gencomposetable.c A src/ibuscomposetable.c M src/ibuscomposetable.h M src/ibusenginesimple.c M src/ibusenginesimple.h M src/keyname-table.h M src/tests/Makefile.am A src/tests/ibus-compose.c M src/tests/runtest commit 55d62a172dc8776593da484399e2bd66d3d9f361 Author: fujiwarat Date: 2015-05-12 11:19:07 +0900 setup: Fix deprecated APIs since GTK 3.14 GtkAlignment and GtkMisc have been no longer available since GTK 3.14 and use gtk_widget_set_margin_*(). gtk_widget_set_margin_[start|end]() are new in GTK 3.12 so still use gtk_widget_set_margin_[left|right]() TEST=setup Review URL: https://codereview.appspot.com/226510043 M setup/setup.ui commit 1a45642e4e152516dc863717f13eb031138a3978 Author: fujiwarat Date: 2015-05-01 11:42:41 +0900 Update xinput-ibus to check Qt5 libraries besides Qt4 ones Now KDE5 is official and ibus-qt is not required since ibus-qt is used for Qt4. NOT_RUN=gnome3 is a variable for imsettings since gnome-shell runs ibus-daemon directly. BUG=rhbz#1217410 TEST=xinput-ibus Review URL: https://codereview.appspot.com/237810043 M xinput-ibus commit ffdcc6cd1368143b77e6f535e90974651575b02e Author: fujiwarat Date: 2015-04-30 11:10:09 +0900 Fix to get X11 display name on GTK3 applications in GNOME Wayland gdk_display_get_name() returns "Wayland" in GTK 3.16 but ibus-daemon uses DISPLAY variable for ibus_get_address() at present. https://git.gnome.org/browse/gtk+/tree/gdk/wayland/gdkdisplay-wayland.c#n332 BUG=https://code.google.com/p/ibus/issues/detail?id=1774 TEST=client/gtk3/im-ibus.so Review URL: https://codereview.appspot.com/229140045 M client/gtk2/ibusimcontext.c commit f6ba337abc2bad9f40aea89b6c38564c982031fe Author: Hodong Kim Date: 2015-04-28 11:32:56 +0900 Fix typo in util/IMdkit/IMdkit.h and Xi18n.h BUG=https://github.com/ibus/ibus/pull/20 TEST=util/IMdkit/libIMdkit.la Review URL: https://codereview.appspot.com/232980043 Patch from Hodong Kim . M util/IMdkit/IMdkit.h M util/IMdkit/Xi18n.h commit 5d9109b3c56bca60be441ad286688467c67664c8 Author: fujiwarat Date: 2015-04-21 11:26:04 +0900 Fix to show keyboard shortcuts in ibus-setup. BUG=http://code.google.com/p/ibus/issues/detail?id=1771 TEST=setup Review URL: https://codereview.appspot.com/233720043 M setup/keyboardshortcut.py commit c98f15629054cad791a4adb21735ee3797601aa5 Author: fujiwarat Date: 2015-04-15 10:22:21 +0900 Stop DBus warnings during restarting ibus-daemon ibus-ui-gtk3 outputs some warnings when restart ibus-daemon because some dbus metods are sent before dbus is closed. TEST=src/libibus.so ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/226140043 M src/ibusbus.c M ui/gtk3/panel.vala commit 4d49a664b9605690a6d0f7da6a0e21c92fb67028 Author: Marc-Antoine Perennou Date: 2015-04-13 11:59:26 +0900 xim: use gtk3 TEST=client/x11/ibus-x11 Review URL: https://codereview.appspot.com/225990043 Patch from Marc-Antoine Perennou . M client/x11/Makefile.am M client/x11/gdk-private.c M client/x11/main.c M configure.ac commit 25593ed7248b19ef1d3a0e1d75da8f3d26321bca Author: fujiwarat Date: 2015-04-13 11:55:05 +0900 ibus-ui-gtk3: Do not change buffered CairoSurface data twice in KDE5 Indicator.set_cairo_image_surface_full() receives the buffered CairoImageSurface and the data should not be modified in the API because the same data could be received twice. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/224340043 M ui/gtk3/indicator.vala M ui/gtk3/panel.vala commit cb93cab84beea2074502b04580d33e51587da83e Author: fujiwarat Date: 2015-04-09 15:20:56 +0900 ibus-ui-gtk3: Support language icon in KDE5. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/229740043 M ui/gtk3/indicator.vala M ui/gtk3/notification-item.xml M ui/gtk3/panel.vala commit 90252fa952da2b9a4a33e6f2c33f652d3e9cbbee Author: fujiwarat Date: 2015-04-03 13:01:15 +0900 Update translations. Update po/ca.po po/es.po po/pl.po po/uk.po Review URL: https://codereview.appspot.com/217680043 M po/ca.po M po/es.po M po/pl.po M po/uk.po commit 35d035bfc48e20eecb3b3b3b14712d73c5fc027b Author: fujiwarat Date: 2015-04-02 11:26:24 +0900 ibus-ui-gtk3: Enable absolute path of engine icon in KDE5 plasma-workspace 5.2 supports the icon full path. Now the build checks if qtbase-devel is 5.4 or later since there is no way to check the version of plasma-workspace. BUG=https://github.com/ibus/ibus/pull/17 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/217310044 M configure.ac M ui/gtk3/Makefile.am M ui/gtk3/panel.vala commit cc88075ddae038f90039d58147bb3c9d7eb08364 Author: Hodong Kim Date: 2015-04-02 11:18:57 +0900 Fix compile error in client/x11/Makefile BUG=https://github.com/ibus/ibus/pull/18 TEST=client/x11/Makefile Review URL: https://codereview.appspot.com/217590043 Patch from Hodong Kim . M client/x11/Makefile.am commit 020bd45eda9e3a3a2836122fbe0437cafb71f163 Author: fujiwarat Date: 2015-04-01 11:42:34 +0900 ibus-ui-gtk3: Draw gray color on PropertyPanel handle Users can move the position of IBus PropertyPanel with the mouse but currently it is too hard to find the handle on the panel. Now the handle is drawn by the gray color for the visibility. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/219520043 M ui/gtk3/handle.vala commit eb4ffa1d9aeccf31318afd1d24cbcbbefa79337b Author: fujiwarat Date: 2015-03-31 11:56:05 +0900 Put PropertyPanel at bottom right when desktop is KDE Monitor _NET_WORKAREA atom because PropertyPanel runs before KDE5 panel runs. Allocate button sizes on PropertyPanel correctly for KDE5. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/220500043 M ui/gtk3/propertypanel.vala commit 02156038217e41ebd90e3d1ed4bb88b912a15a06 Author: fujiwarat Date: 2015-03-30 11:07:42 +0900 I18N for IBus engine about dialog in ibus-setup TEST=setup Review URL: https://codereview.appspot.com/219400043 M setup/engineabout.py commit 8b187598215e3af0481e0f9415fe6a21db682e6b Author: fujiwarat Date: 2015-03-25 13:55:50 +0900 I18N for engine longnames on ibus-setup New API ibus_get_untranslated_language_name(). Call bindtextdomain() for each textdomains. TEST=setup Review URL: https://codereview.appspot.com/218760043 M setup/enginedialog.py M setup/enginetreeview.py M setup/main.py M src/ibusutil.c M src/ibusutil.h M ui/gtk2/i18n.py M ui/gtk2/main.py commit 4a4bd5fd0cac63b73464039896df123efd372d4a Author: fujiwarat Date: 2015-03-18 13:47:07 +0900 Change ranks for minor keymaps in simple.xml TEST=engine/simple.xml Review URL: https://codereview.appspot.com/217900043 M engine/simple.xml.in commit f32e98fdacf50af70fe1e3198463fc75d9ead727 Author: Albert Veli Date: 2015-03-12 12:12:22 +0900 Add Swedish svdvorak in simple.xml TEST=engine/simple.xml Review URL: https://codereview.appspot.com/215730043 Patch from Albert Veli . M engine/simple.xml.in commit 0ba6452740ec6e76344afaa2a9887566d0b62a4d Author: Peng Wu Date: 2015-03-09 13:36:58 +0900 Add ibus_keyval_convert_case and ibus_keyval_to_upper/lower methods In some input method setup dialog, customization of shortcut keys are supported. But in python Gtk+, when grab the shortcut key, the gdk_keyval_to_lower method will be used. This patch adds ibus_keyval_convert_case and ibus_keyval_to_upper/lower methods, so ibus-libpinyin can drop the Gdk 3.x C++ dependency. BUG=https://code.google.com/p/ibus/issues/detail?id=1766 TEST= Review URL: https://codereview.appspot.com/213760043 Patch from Peng Wu . M src/ibuskeynames.c M src/ibuskeys.h commit 49ee54f83471542447e1121be15c27ff5d86600b Author: Colin Walters Date: 2015-02-27 11:32:41 +0900 dconf: Work around using dbus development builds and /etc/machine-id Recent DBus changed the way it reads /etc/machine-id to be more strict, and it turns out that this breaks the use of dbus-launch here. The *correct* fix is to use `dbus-run-session`, but not everyone has that yet. This is a quick hack that keeps the build going. BUG=https://github.com/ibus/ibus/pull/16 TEST=data/dconf/00-upstream-settings Review URL: https://codereview.appspot.com/209810043 Patch from Colin Walters . M data/dconf/make-dconf-override-db.sh commit db260a6f1f4ed0f6faba72cbb0d59c01799a319c Author: fujiwarat Date: 2015-02-25 12:56:28 +0900 Release 1.5.10 Review URL: https://codereview.appspot.com/199620043 M configure.ac commit 211483eae9cec8c4762dbb6714264084dc774c75 Author: fujiwarat Date: 2015-02-25 12:53:10 +0900 Update translations Update bn_IN.po ca.po es.po ja.po ko.po ml.po nl.po zh_TW.po Review URL: https://codereview.appspot.com/202150044 M po/bn_IN.po M po/ca.po M po/es.po M po/ja.po M po/ko.po M po/ml.po M po/nl.po M po/zh_TW.po commit aab56c25356e3d036db8d3ffcef272a2b69c17d3 Author: fujiwarat Date: 2015-02-19 19:37:55 +0900 Add ibus panel icon for plasma-desktop in KDE5 plasma-desktop does not provide notification area for GtkStatusIcon (QSystemTrayIcon too). KDE5 provides AppIndicator or KStatusNotifierItem. KStatusNotifierItem uses QT5 code and C++. AppIndicator is an instance using dbus methods of KStatusNotifierItem and it supports GTK3. This implements the dbus method names directly so that activate menu is supported. http://blog.martin-graesslin.com/blog/2014/06/where-are-my-systray-icons/ https://lists.fedoraproject.org/pipermail/devel/2014-June/199782.html http://comments.gmane.org/gmane.comp.kde.devel.core/81971 BUG=https://code.google.com/p/ibus/issues/detail?id=1749 TEST=ui/appindicator/ibus-ui-appindicator Review URL: https://codereview.appspot.com/189680044 M configure.ac M src/ibusservice.c M ui/gtk3/Makefile.am A ui/gtk3/indicator.vala A ui/gtk3/notification-item.xml A ui/gtk3/notification-watcher.xml M ui/gtk3/panel.vala commit e6c883269e00e2432109c639d696491034dde5d5 Author: fujiwarat Date: 2015-02-03 12:30:56 +0900 Release registry observed_paths and components if they are broken Registry caches might be broken in a disk. BUG=rhbz#1187956 TEST=src/libibus.so Review URL: https://codereview.appspot.com/200980043 M src/ibusregistry.c commit 38d3c5ccdfa53cb4028e1e03bb877494035cb5a8 Author: fujiwarat Date: 2015-01-06 13:46:14 +0900 gtk clients do not lose focus when chrome popup window takes the focus Do not call gtk_im_context_focus_out() in ibus_im_context_focus_in() for a workaround because chrome popup window does not release the focus. BUG=rhbz#1136623 TEST=client/gtk2/im-ibus.so Review URL: https://codereview.appspot.com/187710043 M client/gtk2/ibusimcontext.c commit 83451e476b5ec98aa38e333038077f9e5b2b087d Author: fujiwarat Date: 2015-01-06 12:03:07 +0900 Run ibus_bus_preload_engines_async 30 seconds later in ibus-ui-gtk3 Make sure to run the primary ibus engine at first to avoid the duplicated IO. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/187700043 M ui/gtk3/panel.vala commit 1b668f667eaef08dfbbbdf04a0865ea086f4250a Author: fujiwarat Date: 2015-01-06 11:59:05 +0900 Increase dbus timeout to 15 seconds When log into XFCE session, ibus panel sometimes fails to run the primary ibus engine due to 5 seconds of the timeout. It could happen when I open gnome-terminal during launching ibus-daemon. TEST=bus/ibus-daemon, ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/192940043 M bus/global.c M bus/ibusimpl.c M bus/main.c M src/ibusshare.c commit 576ebc3633aa1fb3076ffac031255c3da4e2cd09 Author: Klemens Baum Date: 2014-12-18 16:27:23 +0900 IMdkit: Track window property offsets correctly The XIM specification requires that XIM tranports over 20 bytes in size be transferred via window properties. The sender calls XChangeProperty with PropModeAppend, and instructs the recipient via ClientMessage to call XGetWindowProperty with delete set to True. Naive implementations exhibit a race condition because the receiver could have written more data in the meantime, and XGetWindowProperty only deletes the property when bytes_after_return is zero. If bytes_after_return is non-zero, it is necessary to use an offset when reading from the property again. To ensure that the property data does not grow indefinitely, Xlib recycles 21 Atoms in round-robin fashion. Because the XIM specification does not limit the number of Atom names of the form "_clientXXX" to be used for data transfer over window properties, an XIM server should be able to keep of track any number of Atoms, remembering the offset into each property. This patch implements correct tracking of property offsets. Signed-off-by: Klemens Baum Reviewed-by: Keith Packard rhbz#1175595 BUG=https://code.google.com/p/ibus/issues/detail?id=1751 TEST=client/x11/ibus-x11 Review URL: https://codereview.appspot.com/176190044 Patch from Klemens Baum . M util/IMdkit/Makefile.am M util/IMdkit/Xi18n.h A util/IMdkit/i18nOffsetCache.c M util/IMdkit/i18nUtil.c M util/IMdkit/i18nX.c commit 8f471ce138a9dc10ab5b1e0c716bb48ca36fe12a Author: Doug Rintoul Date: 2014-12-08 12:52:00 +0900 Show language rather than layout in xkb panel icon BUG=https://code.google.com/p/ibus/issues/detail?id=1753 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/184840043 Patch from Doug Rintoul . M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 097715746da0f56b8b8c3ddae2da3442032bff0c Author: Rui Matos Date: 2014-12-05 20:25:44 +0900 Carry current context content type into fake context when switching When focus moves out of a context to the fake context we should keep the content type properties as they were in the focused out context. This allows panel implementations to show the proper UI while input focus moves away temporarily from a text entry. E.g. a password entry is focused and the user clicks on the panel UI. At this point ibus switches the currently focused context to the fake context and emits set-content-type with the fake context properties which are empty and thus the panel reacts to it. This isn't the intended behavior though since, from a user POV, the password entry is still the context that will be getting text input when the panel UI gets dismissed. R=shawn.p.huang@gmail.com BUG=https://bugzilla.gnome.org/show_bug.cgi?id=730628 Review URL: https://codereview.appspot.com/176260043 Patch from Rui Matos . M bus/ibusimpl.c M bus/inputcontext.c M bus/inputcontext.h commit f69ddc3952971c5599c92aee3dc1de6017d07f3c Author: Peng Wu Date: 2014-12-05 11:41:08 +0900 Fixes ibus_keyval_name method in c++ binding Add G_BEGIN_DECLS and G_END_DECLS macros in src/ibuskeys.h BUG= Review URL: https://codereview.appspot.com/185850043 Patch from Peng Wu . M src/ibuskeys.h commit a7abce698f40e60275c46f05967e8cc369769e4b Author: Peng Wu Date: 2014-11-19 18:10:05 +0900 Fixes ibus_engine_update_lookup_table_fast method gnome shell needs the previous page and next page to correctly show the page up/down arrows, send three pages instead of one page. URL: https://bugzilla.gnome.org/show_bug.cgi?id=703020 BUG= Review URL: https://codereview.appspot.com/164540045 Patch from Peng Wu . M src/ibusengine.c commit de3541d2a26c673f27c068559f6d363064e03760 Author: fujiwarat Date: 2014-11-13 11:28:43 +0900 Remove "Release" modifiers key on ibus-setup. BUG=https://code.google.com/p/ibus/issues/detail?id=1748 TEST=setup Review URL: https://codereview.appspot.com/167570043 M setup/keyboardshortcut.py commit e2507263817926ceb97511da3d617934d4b73443 Author: Osamu Aoki Date: 2014-11-13 11:23:38 +0900 ibus-setup tries C since en_US.UTF-8 is not installed in Debian by default. BUG=https://code.google.com/p/ibus/issues/detail?id=1747 TEST=setup Review URL: https://codereview.appspot.com/166420043 Patch from Osamu Aoki . M setup/enginecombobox.py M setup/enginedialog.py commit bb818e438599f080a0cffb0b7573d9a646cf3b1a Author: fujiwarat Date: 2014-10-28 11:28:46 +0900 Fix not to SEGV ibus-ui-gtk3 with wrong 'preload-engines' value. Fedora internal patch could save engines from the result of 'setxkbmap -query' but they do not exist in simple.xml likes 'xkb:cn::chi' while now the current implementation converts those engines to 'xkb:us::eng'. BUG=https://code.google.com/p/ibus/issues/detail?id=1744 TEST=ui/gtk3 Review URL: https://codereview.appspot.com/158640043 M ui/gtk3/panel.vala commit ab0be905a3c007b5ddec11ceada058879eca3b5c Author: fujiwarat Date: 2014-10-01 16:23:54 +0900 Updated translations. Updated gu.po kn.po mr.po ta.po te.po Review URL: https://codereview.appspot.com/151850043 M po/gu.po M po/kn.po M po/mr.po M po/ta.po M po/te.po commit f33e19bec6ab7d1a6133894c86fdeb5a81ce11f1 Author: fujiwarat Date: 2014-10-01 16:21:02 +0900 Fix to lose a focus when move the focus from the delayed focus-in/out. Some applications likes google-chrome URL entry could have the delayed focus-in and focus-out events and ibus fails to get the new focus. BUG=rhbz#919863, rhbz#1136623 Review URL: https://codereview.appspot.com/7725045 M bus/inputcontext.c commit 6c10ce4ee5d3b8a62879d559834d5a4fae242eef Author: fujiwarat Date: 2014-09-16 11:49:04 +0900 Release 1.5.9 Review URL: https://codereview.appspot.com/141950044 M configure.ac commit 86513b1ac9f6c3765df1aca8cd266aebba424388 Author: fujiwarat Date: 2014-09-16 11:44:34 +0900 Update translations. Update as.po ko.po pl.po Review URL: https://codereview.appspot.com/141980043 M po/as.po M po/ko.po M po/pl.po commit 6dcb2dd20d2ee3abd6e26f2aac7666bfedf352df Author: fujiwarat Date: 2014-09-08 12:03:40 +0900 Fix compose keys in French layout bepo variant. fr(bepo) sends dead_currency with Shift+AltGr+e and ibus should send currency with dead_currency+dead_currency but gtkimcontextsimpleseqs.h was not sorted in the descending order and failed to get dead_currency. Also need to add dead_stroke and dead_belowcomma for AltGr+l and Shift+AltGr+Cedilla BUG=https://code.google.com/p/ibus/issues/detail?id=1742 TEST=src/libibus.so Review URL: https://codereview.appspot.com/135470043 M src/gtkimcontextsimpleseqs.h M src/ibusenginesimple.c commit a78c0b8cb379a0799b1a28450af8ee9d07016709 Author: fujiwarat Date: 2014-09-03 14:09:33 +0900 Do not fail ibus-setup when en_US.UTF-8 is not installed. BUG=https://code.google.com/p/ibus/issues/detail?id=1740 TEST=setup Review URL: https://codereview.appspot.com/136080043 M setup/enginedialog.py commit 2e8de03a949bf1a7dabe8217d42017bf75685b1a Author: fujiwarat Date: 2014-08-07 11:45:00 +0900 Enable preedit color on external preedit window with x11 applications. BUG=http://code.google.com/p/ibus/issues/detail?id=1731 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/119480043 M ui/gtk3/candidatepanel.vala commit 78dfe648c736d62921c77f2de931898762409b0e Author: fujiwarat Date: 2014-07-24 13:00:40 +0900 Release 1.5.8 Review URL: https://codereview.appspot.com/113280043 M configure.ac commit 54e01d4343766467269e0d0cb8b6f208bbb35c4c Author: fujiwarat Date: 2014-07-24 12:58:50 +0900 Update translations. Update ja.po Review URL: https://codereview.appspot.com/118890043 M po/ja.po commit 3e6178c04869cceba3e5d681c9827ab54098f3b4 Author: fujiwarat Date: 2014-07-18 13:00:50 +0900 Enhance UI to add engines on ibus-setup BUG=rhbz#803583 TEST=setup Review URL: https://codereview.appspot.com/118830043 M po/POTFILES.in M setup/Makefile.am A setup/enginedialog.py M setup/enginetreeview.py M setup/main.py commit 130d3108902ed3e7c61930e3a24ee957c3d3e658 Author: fujiwarat Date: 2014-07-17 12:41:36 +0900 Fix deprecated gtk3 GtkMisc, GtkAlignment and vala Gdk.X11Display gtk 3.13.4 warns GtkMisc and GtkAlignment vala 0.24 warns Gdk.X11Display https://git.gnome.org/browse/gtk+/commit/?id=ec0a60a248 https://git.gnome.org/browse/gtk+/commit/?id=04703689b8 https://git.gnome.org/browse/vala/commit/?id=b65e3dc87c TEST=make ui/gtk3 Review URL: https://codereview.appspot.com/114820044 M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/keybindingmanager.vala M ui/gtk3/propertypanel.vala M ui/gtk3/switcher.vala commit 47a6b86f197918147693a7b4774d02a287950e6a Author: fujiwarat Date: 2014-07-14 18:00:51 +0900 Update translations. Update es.po fr.po ja.po ko.po pl.po pt_BR.po uk.po zh_TW.po Review URL: https://codereview.appspot.com/108480043 M po/es.po M po/fr.po M po/ja.po M po/ko.po M po/pl.po M po/pt_BR.po M po/uk.po M po/zh_TW.po commit 9b2004efcd26e11bbd56cf51656fe326fc11be8e Author: fujiwarat Date: 2014-07-14 11:45:25 +0900 Call GLib.set_prgname('ibus-setup') for ibus-setup main.py TEST=xlsclients Review URL: https://codereview.appspot.com/108550043 M setup/main.py commit b1b4e2946682e3d53aa396d8469c7fa16a2dbca8 Author: fujiwarat Date: 2014-07-11 11:50:04 +0900 Export the 'IBUS_SETUP_XID' environment variable for each engine setup. Follow GNOME_CONTROL_CENTER_XID. https://wiki.gnome.org/AllanDay/IMEGuidelines TEST=setup Review URL: https://codereview.appspot.com/112920044 M setup/main.py commit a17dc8e8bd288adedb77ae417d6825419337daae Author: fujiwarat Date: 2014-07-11 11:45:05 +0900 Fix deprecated warnings with python3-gobject 3.13.3. python3-gobject adds several warnings in gi/overrides/Gtk.py /usr/share/ibus/setup/main.py:74: PyGIDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "schema" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations /usr/share/ibus/setup/main.py:364: PyGTKDeprecationWarning: The keyword(s) "type" have been deprecated in favor of "message_type" respectively. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations TEST=setup Review URL: https://codereview.appspot.com/110990044 M setup/engineabout.py M setup/keyboardshortcut.py M setup/main.py M setup/setup.ui commit 10483bfebd1f51ffa52ad7d017193ae728f93bf5 Author: fujiwarat Date: 2014-07-10 11:54:30 +0900 Fix ibus-setup SEGV in enginetreeview.py When an engine is added on ibus-setup, enginetreeview.append_engine() calls self.__model.append(None) and it causes engine == None in __icon_cell_data_cb() and __name_cell_data_cb() in enginetreeview with python3-gobject 3.13.x which version has implemented several deprecated warnings in gi/overrides/Gtk.py . I think this problem also could happen in the old versions if the system would be slow. BUG=rhbz#1048429 TEST=setup in Fedora 21 Review URL: https://codereview.appspot.com/104620043 M setup/enginetreeview.py commit 9e5a2bd2c40f9eed8d99710b63b3dab737aa9b95 Author: fujiwarat Date: 2014-07-08 11:42:12 +0900 Update ibus(1) for read-config and reset-config. TEST=tools/ibus.1.gz Review URL: https://codereview.appspot.com/111900044 M tools/ibus.1.in commit 3dcf24742216d6234a45ace1b433b864efdf08a2 Author: fujiwarat Date: 2014-07-04 16:03:57 +0900 Add ibus reset-config and read-config sub-commands. BUG=rhbz#530711 TEST=tools/ibus Review URL: https://codereview.appspot.com/103670044 M tools/main.vala commit 14bd9381127e692b944eb31f56a2cc5b9de2e7a1 Author: fujiwarat Date: 2014-07-04 16:00:16 +0900 Run xmodmap after run setxkbmap -l layout. BUG=rhbz#750484 TEST=ui/gtk3/ibus-ui-gtk3 data/dconf/org.freedesktop.ibus.gschema.xml Review URL: https://codereview.appspot.com/101490043 M data/ibus.schemas.in M ui/gtk3/panel.vala M ui/gtk3/xkblayout.vala commit 8ef258ec31f12405e4f5ded6a7a4d80114a219d4 Author: Osamu Aoki Date: 2014-07-03 11:39:32 +0900 Use "keycode Linux_keycode = X11_keysym" format Delete non-Linux keyboard compatibility. These are tested for both PC and Mac. Using showkey and xev Notably: Hangul = Eisuu-on-mac-keyboard Hangul_Hanja = Kana/kana -on-mac-keyboard BUG=http://code.google.com/p/ibus/issues/detail?id=1724 TEST=data/keymaps/keycode.py Review URL: https://codereview.appspot.com/106250045 Patch from Osamu Aoki . M data/keymaps/jp commit a5300750e38b5327bdd255d777544d0c0ebcb4d9 Author: fujiwarat Date: 2014-06-24 11:24:40 +0900 Do not sort ibus engines when they are saved by ibus-setup. ibus 1.5 changes the engine order with Super+space shortcut key and now ibus-setup shows the sorted engines by longname on UI. This fixes not to save the sorted order with ibus-setup. TEST=setup Review URL: https://codereview.appspot.com/102610044 M setup/enginetreeview.py M setup/main.py commit 38fa3e8a57262e4d76afe9bc348d14cc37af5cfc Author: fujiwarat Date: 2014-06-23 15:19:03 +0900 Set up ibus engines when users log into the session for the first time. XKB engines are configured by the session XKB. IM engines are configured by the current locale and IBusEngineDesc.lang. Also append 'us' layout after non-ascii layout likes 'ara', 'ru'. BUG=rhbz#541492 TEST=ui/gtk3/ibus-ui-gtk3 data/dconf/org.freedesktop.ibus.gschema.xml Review URL: https://codereview.appspot.com/103440043 M data/ibus.schemas.in M ui/gtk3/Makefile.am M ui/gtk3/panel.vala A ui/gtk3/xkblayout.vala commit b6afffbd1a06ecf17af009f1de3e513988ecb92e Author: fujiwarat Date: 2014-06-18 11:42:34 +0900 Update ibuscomposetable.h for pt-br. pt_BR.UTF-8/Compose file is updated: http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=e3dc0d1733 TEST=engine/test-compose on pt_BR.UTF-8 Review URL: https://codereview.appspot.com/101330044 M src/gencomposetable.c M src/ibuscomposetable.h commit 9bad0c944162a1700dcb6615aab2a6a9cfd9eff5 Author: fujiwarat Date: 2014-06-12 11:38:43 +0900 Fix escape key with Ctrl+Shift+U ISO 14755. GtkIMContextSimple uses gdk_keymap_get_for_display() to check the readable hex codes but IBusEngineSimple ignored it because does not have the display argument. I added is_hex_keyval() to check the escape key and fix this bug. BUG=http://code.google.com/p/ibus/issues/detail?id=1715 TEST=src/libibus.so Review URL: https://codereview.appspot.com/101160044 M src/ibusenginesimple.c commit e46502f1d3a8c69e6e473cdb35e790e565d89705 Author: fujiwarat Date: 2014-06-10 11:41:23 +0900 Fix a typo in src/ibusinputcontext.c BUG=http://code.google.com/p/ibus/issues/detail?id=1717 Review URL: https://codereview.appspot.com/107860043 M src/ibusinputcontext.c commit 6291feb259cee5589683cf7ac1a87c44582ba3c0 Author: Christophe Fergeau Date: 2014-06-09 15:58:37 +0900 tests/ibus-config Fix timeout_id handling tests/ibus-config queues a timeout whose callback calls g_main_loop_quit() before returning FALSE. After exiting the mainloop, g_source_remove(timeout_id) is called, but if the mainloop was exited through the timeout callback, the source will already have been removed. This commit makes sure we only try to call g_source_remove() on that timeout if we did not exit the mainloop through the timeout callback. BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/108730044 Patch from Christophe Fergeau . M src/tests/ibus-config.c commit ee4c5ec0a39b5ed4a22fe34307a44f3f9fa1303b Author: fujiwarat Date: 2014-06-06 17:38:08 +0900 Add Polish (qwertz) keymap in simple.xml BUG=http://code.google.com/p/ibus/issues/detail?id=1716 TEST=ibus-setup Review URL: https://codereview.appspot.com/102150045 M bus/ibusimpl.c M engine/simple.xml.in commit b07dedfb72eb65e4432efdd1348167db89c19639 Author: Christophe Fergeau Date: 2014-06-06 17:26:19 +0900 Fix GVariant leak in IBusService::GetValue When handling the DBus GetValue call, ibusconfigservice.c:ibus_config_service_service_method_call() gets a non-floating GVariant reference through IBusConfigService::get_value() but never unrefs it. Running ibus-dconf in valgrind and then running tests/ibus-config shows this leak: =28085== 232 (80 direct, 152 indirect) bytes in 2 blocks are definitely lost in loss record 2,025 of 2,121 ==28085== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==28085== by 0x56EDDF2: g_malloc (gmem.c:97) ==28085== by 0x570691C: g_slice_alloc (gslice.c:1007) ==28085== by 0x572E6D9: g_variant_get_child_value (gvariant-core.c:1009) ==28085== by 0x57261C0: g_variant_get_variant (gvariant.c:715) ==28085== by 0x4C1A732: gvdb_table_value_from_item (gvdb-reader.c:578) ==28085== by 0x4C1A7A1: gvdb_table_get_value (gvdb-reader.c:610) ==28085== by 0x4C1589C: dconf_engine_read (dconf-engine.c:528) ==28085== by 0x4C14A79: dconf_client_read (dconf-client.c:242) ==28085== by 0x40286F: ibus_config_dconf_get_value (config.c:378) ==28085== by 0x4E44F29: ibus_config_service_service_method_call (ibusconfigservice.c:194) ==28085== by 0x4E33249: ibus_service_service_method_call_cb (ibusservice.c:395) BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/103100045 Patch from Christophe Fergeau . M src/ibusconfigservice.c commit 5d887bde04d2fcfeb18437bbf675baf4a21e31e2 Author: Christophe Fergeau Date: 2014-06-06 17:23:00 +0900 Fix GVariant leak in IBusService::SetValue When handling the DBus SetValue call, ibusconfigservice.c:ibus_config_service_service_method_call() gets a GVariant through g_variant_get("(&s&sv)") GVariant documentation says that: « Upon encountering a 'v', g_variant_get() takes a pointer to a (GVariant *) (ie: (GVariant **) ). It is set to a new reference to a GVariant instance containing the contents of the variant value. It is appropriate to free this reference using g_variant_unref(). » so we need to unreference it when we are done with it. Running ibus-dconf in valgrind and then running tests/ibus-config shows this leak: ==28085== 3,934 (1,520 direct, 2,414 indirect) bytes in 38 blocks are definitely lost in loss record 2,112 of 2,121 ==28085== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==28085== by 0x56EDDF2: g_malloc (gmem.c:97) ==28085== by 0x570691C: g_slice_alloc (gslice.c:1007) ==28085== by 0x572E6D9: g_variant_get_child_value (gvariant-core.c:1009) ==28085== by 0x57261C0: g_variant_get_variant (gvariant.c:715) ==28085== by 0x572BD03: g_variant_valist_get_nnp (gvariant.c:4794) ==28085== by 0x572C3F1: g_variant_valist_get_leaf (gvariant.c:4911) ==28085== by 0x572CAD4: g_variant_valist_get (gvariant.c:5092) ==28085== by 0x572CC59: g_variant_valist_get (gvariant.c:5127) ==28085== by 0x572D079: g_variant_get_va (gvariant.c:5354) ==28085== by 0x572CF9B: g_variant_get (gvariant.c:5301) ==28085== by 0x4E44E5B: ibus_config_service_service_method_call (ibusconfigservice.c:173) BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/108740044 Patch from Christophe Fergeau . M src/ibusconfigservice.c commit 167d1d7841eb5dd3957ceb72c4dcce784ea46456 Author: Christophe Fergeau Date: 2014-06-06 17:20:38 +0900 Return non-floating ref from IBusConfigGConf::get_value Both IBusConfigDConf::get_value and IBusConfigMemconf::get_value return a non-floating reference, so we need to be consistent in the gconf backend and also return a non-floating reference. BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/106830043 Patch from Christophe Fergeau . M conf/gconf/config.c commit 0d153293b7a7a69796a61cd87832bbb583351778 Author: Christophe Fergeau Date: 2014-06-06 17:17:11 +0900 dconf: Fix GVariant refcounting in watch_func() IBusConfigDConf::watch_func() is roughly doing: GVariant *variant = dconf_client_read(...) if (variant == NULL) { variant = g_variant_new(...); } ibus_config_service_value_changed(..., variant); g_variant_unref(variant); The problem with that is that the GVariant returned by dconf_client_read() is non-floating while the one returned by g_variant_new() is floating. Since ibus_config_service_value_changed() will take ownership of floating references, we should not unref 'variant' if it was created through g_variant_new(), but we must call it when 'variant' is created through dconf_client_read() or we will leak memory. This commit fixes that by making sure we sink the reference we got through g_variant_new(). This was sometimes causing crashes of ibus-dconf when repeatedly running tests/ibus-config: (ibus-dconf:24679): GLib-CRITICAL **: g_variant_unref: assertion 'value->ref_count > 0' failed ==24679== Invalid read of size 4 ==24679== at 0x572E140: g_variant_unref (gvariant-core.c:625) ==24679== by 0x572DBB3: g_variant_release_children (gvariant-core.c:257) ==24679== by 0x572E202: g_variant_unref (gvariant-core.c:640) ==24679== by 0x572DBB3: g_variant_release_children (gvariant-core.c:257) ==24679== by 0x572E202: g_variant_unref (gvariant-core.c:640) ==24679== by 0x518CFDE: g_dbus_message_finalize (gdbusmessage.c:534) ==24679== by 0x5459628: g_object_unref (gobject.c:3112) ==24679== by 0x519C911: message_to_write_data_free (gdbusprivate.c:898) ==24679== by 0x519D687: write_message_cb (gdbusprivate.c:1353) ==24679== by 0x510F7F2: g_simple_async_result_complete (gsimpleasyncresult.c:763) ==24679== by 0x519CEF2: write_message_continue_writing (gdbusprivate.c:1077) ==24679== by 0x519D040: write_message_async (gdbusprivate.c:1131) ==24679== Address 0x5d8c9c4 is 36 bytes inside a block of size 40 free'd ==24679== at 0x4A07577: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==24679== by 0x56EDF6B: g_free (gmem.c:190) ==24679== by 0x5706B53: g_slice_free1 (gslice.c:1112) ==24679== by 0x572E229: g_variant_unref (gvariant-core.c:643) ==24679== by 0x40240F: _watch_func (config.c:232) ==24679== by 0x3DEA605D8B: ffi_call_unix64 (in /usr/lib64/libffi.so.6.0.1) ==24679== by 0x3DEA6056BB: ffi_call (in /usr/lib64/libffi.so.6.0.1) ==24679== by 0x544EE88: g_cclosure_marshal_generic_va (gclosure.c:1541) ==24679== by 0x544D396: _g_closure_invoke_va (gclosure.c:831) ==24679== by 0x5468808: g_signal_emit_valist (gsignal.c:3215) ==24679== by 0x54699DF: g_signal_emit (gsignal.c:3363) ==24679== by 0x4C1478D: dconf_client_dispatch_change_signal (dconf-client.c:150) BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/107800044 Patch from Christophe Fergeau . M conf/dconf/config.c commit 70ddaf10acce9eb96294a2513967042ecb2a91d4 Author: Christophe Fergeau Date: 2014-06-06 16:56:55 +0900 Fix GVariantBuilder leaks When using g_variant_builder_new(), we must call g_variant_builder_unref() to free it: "You should call g_variant_builder_unref() on the return value when it is no longer needed. The memory will not be automatically freed by any other call. In most cases it is easier to place a GVariantBuilder directly on the stack of the calling function and initialise it with g_variant_builder_init()." One of these leaks showed up in valgrind as: ==20702== 16,416 bytes in 114 blocks are definitely lost in loss record 2,114 of 2,115 ==20702== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==20702== by 0x56EDDF2: g_malloc (gmem.c:97) ==20702== by 0x570691C: g_slice_alloc (gslice.c:1007) ==20702== by 0x5729743: g_variant_builder_new (gvariant.c:3169) ==20702== by 0x40297B: ibus_config_dconf_get_values (config.c:413) ==20702== by 0x4E44FF2: ibus_config_service_service_method_call (ibusconfigservice.c:214) ==20702== by 0x4E33249: ibus_service_service_method_call_cb (ibusservice.c:395) ==20702== by 0x51880D8: call_in_idle_cb (gdbusconnection.c:4875) ==20702== by 0x56E81D7: g_idle_dispatch (gmain.c:5319) ==20702== by 0x56E58F1: g_main_dispatch (gmain.c:3064) ==20702== by 0x56E6667: g_main_context_dispatch (gmain.c:3663) ==20702== by 0x56E6859: g_main_context_iterate (gmain.c:3734) BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/104850044 Patch from Christophe Fergeau . M bus/ibusimpl.c M bus/inputcontext.c M conf/dconf/config.c M conf/gconf/config.c M src/ibuscomponent.c M src/ibusengine.c commit 0d17c2507d38e62a149f3fe7d32e6c3e7c3bcd0e Author: Christophe Fergeau Date: 2014-06-06 16:51:52 +0900 tests/ibus-config: Fix typo in function name "success" was misspelt "sucess" BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/102160043 Patch from Christophe Fergeau . M src/tests/ibus-config.c commit f4d7ceafb588737212a21216cb30ccdc9ff02cdf Author: Christophe Fergeau Date: 2014-06-06 16:47:20 +0900 Fix leak in ibus-engine-switch test BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/104860043 Patch from Christophe Fergeau . M src/tests/ibus-engine-switch.c commit ca8cac8b95505140bc51d98d42c9af1122338920 Author: Christophe Fergeau Date: 2014-06-06 16:43:34 +0900 Fix GDBusNodeInfo leak in ibus_service_class_add_interfaces A call to g_dbus_node_info_unref was in place but commented out. This fixes: ==20039== 424 (40 direct, 384 indirect) bytes in 1 blocks are definitely lost in loss record 2,115 of 2,159 ==20039== at 0x4A081D4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==20039== by 0x56ECE69: g_malloc0 (gmem.c:127) ==20039== by 0x56ED191: g_malloc0_n (gmem.c:362) ==20039== by 0x519FBF2: parse_data_get_node (gdbusintrospection.c:1171) ==20039== by 0x519FFE1: parser_start_element (gdbusintrospection.c:1290) ==20039== by 0x56E9C2E: emit_start_element (gmarkup.c:1048) ==20039== by 0x56EA7CB: g_markup_parse_context_parse (gmarkup.c:1395) ==20039== by 0x51A1082: g_dbus_node_info_new_for_xml (gdbusintrospection.c:1797) ==20039== by 0x4E33D38: ibus_service_class_add_interfaces (ibusservice.c:610) ==20039== by 0x4E32C24: ibus_service_class_init (ibusservice.c:213) ==20039== by 0x546EE85: type_class_init_Wm (gtype.c:2220) ==20039== by 0x5470586: g_type_class_ref (gtype.c:2935) ==20039== by 0x5470539: g_type_class_ref (gtype.c:2927) ==20039== by 0x5470539: g_type_class_ref (gtype.c:2927) ==20039== by 0x5454D21: g_object_new_valist (gobject.c:1906) ==20039== by 0x54543C9: g_object_new (gobject.c:1571) ==20039== by 0x402AF0: ibus_config_dconf_new (config.c:449) ==20039== by 0x401D59: ibus_dconf_start (main.c:61) ==20039== by 0x401E30: main (main.c:85) ==20039==~ BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/100990043 Patch from Christophe Fergeau . M src/ibusservice.c commit d0aaf7763d315161085aeaa00b6cdfa0e2569071 Author: Christophe Fergeau Date: 2014-06-06 16:38:11 +0900 Fix GObject leaks in ibus_property_deserialize() BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/103100043 Patch from Christophe Fergeau . M src/ibusproperty.c commit 18687d77de1ad755db022e7da565dc8ad44ae5ac Author: Christophe Fergeau Date: 2014-06-06 16:21:15 +0900 Fix g_dbus_proxy_get_name_owner() leaks BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/105830043 Patch from Christophe Fergeau . M src/ibusconfig.c commit f3e8aaff559e56efe54c43af123e0ab87a17423b Author: Christophe Fergeau Date: 2014-06-06 16:17:19 +0900 Fix string leaks in deserialize vfuncs When an object contains char * properties, its deserialize function will overwrite these string values without freeing them first. They are not necessarily NULL as they can have (default) values set upon construction, so they need to be g_free'd before being overwritten. For example, IBusEngineDesc::longname, IBusEngineDesc::description, IBusEngineDesc::language, ... are all set to "" upon construction (instead of NULL), so the corresponding IBusEngineDesc fields must be freed before being overwritten during deserialization. This commit introduces a ibus_g_variant_get_child_string() to do this and set the string value. This leak was reported by valgrind: ==22163== 59 bytes in 59 blocks are definitely lost in loss record 1,633 of 2,720 ==22163== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==22163== by 0x56DFDF2: g_malloc (gmem.c:97) ==22163== by 0x56E011D: g_malloc_n (gmem.c:338) ==22163== by 0x56FAFCC: g_strdup (gstrfuncs.c:356) ==22163== by 0x546CDB8: g_value_dup_string (gvaluetypes.c:1136) ==22163== by 0x4E43A98: ibus_engine_desc_set_property (ibusenginedesc.c:385) ==22163== by 0x5446CA3: object_set_property (gobject.c:1378) ==22163== by 0x54484BB: g_object_constructor (gobject.c:2020) ==22163== by 0x4E24564: ibus_object_constructor (ibusobject.c:111) ==22163== by 0x5447577: g_object_new_with_custom_constructor (gobject.c:1645) ==22163== by 0x5447787: g_object_new_internal (gobject.c:1722) ==22163== by 0x5447C75: g_object_newv (gobject.c:1868) ==22163== by 0x544737A: g_object_new (gobject.c:1568) ==22163== by 0x4E2521C: ibus_serializable_deserialize (ibusserializable.c:292) ==22163== by 0x4E480E0: ibus_component_deserialize (ibuscomponent.c:408) ==22163== by 0x4E2523E: ibus_serializable_deserialize (ibusserializable.c:294) ==22163== by 0x4E4C1D1: ibus_registry_deserialize (ibusregistry.c:202) ==22163== by 0x4E4C95C: ibus_registry_load_cache_file (ibusregistry.c:362) ==22163== by 0x4E4C6A4: ibus_registry_load_cache (ibusregistry.c:302) ==22163== by 0x40EBCD: bus_ibus_impl_registry_init (ibusimpl.c:1871) ==22163== by 0x40C1D4: bus_ibus_impl_init (ibusimpl.c:424) ==22163== by 0x5460FCD: g_type_create_instance (gtype.c:1868) ==22163== by 0x5448466: g_object_constructor (gobject.c:2006) ==22163== by 0x4E24564: ibus_object_constructor (ibusobject.c:111) ==22163== by 0x5447577: g_object_new_with_custom_constructor (gobject.c:1645) ==22163== by 0x5447787: g_object_new_internal (gobject.c:1722) ==22163== by 0x54483C1: g_object_new_valist (gobject.c:1980) ==22163== by 0x54473C9: g_object_new (gobject.c:1571) ==22163== by 0x40E94A: bus_ibus_impl_get_default (ibusimpl.c:1807) ==22163== by 0x41D880: bus_server_init (server.c:100) ==22163== by 0x420E91: main (main.c:236) BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/104850043 Patch from Christophe Fergeau . M src/ibuscomponent.c M src/ibusenginedesc.c M src/ibusinternal.h M src/ibusobservedpath.c M src/ibusproperty.c M src/ibusutil.c commit 87fb61f76fc0ffbac316b0090b206faadfbd82fd Author: Christophe Fergeau Date: 2014-06-06 15:42:47 +0900 Fix GVariant leaks BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/109720043 Patch from Christophe Fergeau . M src/ibusbus.c commit 23c784d45cbab7ae7a12e7b3c02c4299a446e03b Author: Christophe Fergeau Date: 2014-06-06 15:38:47 +0900 Fix small typo in gtk-doc API doc BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/108740043 Patch from Christophe Fergeau . M src/ibusbus.h commit e6ee958b0120c4445c06db24ed7ac8f87675646e Author: Christophe Fergeau Date: 2014-06-06 15:23:50 +0900 build-sys: Fix 'privite' typo in Makefile.am BUG=http://code.google.com/p/ibus/issues/detail?id=1712 Review URL: https://codereview.appspot.com/102140044 Patch from Christophe Fergeau . M src/Makefile.am commit 34692850bd58543e016e35ea7c863d311ca92519 Author: fujiwarat Date: 2014-05-09 11:40:21 +0900 Let ibus-ui-gtk3 not to show zero-lenght preedit text. preedit text is shown by ibus-ui-gtk3 on X11 applications and do not have to show it likes GTK+ when the lenght is zero. BUG=http://code.google.com/p/ibus/issues/detail?id=1709 TEST=ibus-ui-gtk3 with ibus-pinyin and x11 applications Review URL: https://codereview.appspot.com/93150043 M ui/gtk3/candidatepanel.vala commit 386bafb0b91a61d51385e0bba2b3fc4b1e2d9013 Author: Ryu Changwoo Date: 2014-05-08 11:23:14 +0900 Delete Korean keymap. BUG=http://code.google.com/p/ibus/issues/detail?id=1708 Review URL: https://codereview.appspot.com/92090043 Patch from Ryu Changwoo . M engine/simple.xml.in commit 318836a647460e28dcc682543a118567474f9854 Author: Eike Hein Date: 2014-05-08 11:16:02 +0900 Add the nodeadkeys variant of the German keyboard layout. BUG=http://code.google.com/p/ibus/issues/detail?id=1710 Review URL: https://codereview.appspot.com/96040043 Patch from Eike Hein . M engine/simple.xml.in commit 0be4664b2ea3071c01ff479443033eb1accdfb03 Author: fujiwarat Date: 2014-05-02 11:55:08 +0900 Set max-width-chars property in ibus-setup wrapped GtkLabel. If GtkWindow has 'resizable' property = FALSE, the wrap in GtkLabel is not done automatically and need to set 'max-width-chars' property. TEST=ibus-setup Review URL: https://codereview.appspot.com/92940043 M setup/setup.ui commit 15126830212fabfd5d6ec359a5d7554746462f4b Author: fujiwarat Date: 2014-04-30 15:03:48 +0900 Release 1.5.7 Review URL: https://codereview.appspot.com/96800043 M configure.ac commit 68fcd6f65b3e3af05e2c794b85827ad88c6f9281 Author: fujiwarat Date: 2014-04-30 15:01:15 +0900 Update translation zh_CN.po Review URL: https://codereview.appspot.com/96740044 M po/zh_CN.po commit 90d23e28e82dbcf08cb6d8e3779648731ff8cb40 Author: fujiwarat Date: 2014-04-28 11:17:09 +0900 Do not move property panel with focus-in in case panel is always shown. Review URL: https://codereview.appspot.com/98770043 M ui/gtk3/propertypanel.vala commit 98bf852afe1cedeaa256e6a9763a73bd3f78cbfd Author: fujiwarat Date: 2014-04-24 11:37:44 +0900 Do not show property panel by default. Property panel sometimes hides text entry box on firefox in case the mode is auto-hide because firefox does not provide the right cursor locations and firefox does not update cursor locales when preedit is updated so property panel hides text entry box for a while and auto-hide is not useful with firefox and thunderbird. TEST=gsettings reset org.freedesktop.ibus.panel show Review URL: https://codereview.appspot.com/90480043 M data/ibus.schemas.in M ui/gtk3/propertypanel.vala commit 8f4bd6d745707c26d7ccd66ae71e8f4833501b3c Author: fujiwarat Date: 2014-04-18 11:41:02 +0900 Change deprecated GtkHButtonBox to GtkButtonBox in ibus-setup. Review URL: https://codereview.appspot.com/88850043 M setup/setup.ui commit 274c4f21a56bc90e2c5666192c40c69c414d8ac7 Author: Christophe Fergeau Date: 2014-04-17 12:42:23 +0900 Fix leak in ibus_get_local_machine_id() If /var/lib/dbus/machine-id does not exist but /etc/machine-id exists, 'error' will be set but will never be freed. BUG=http://code.google.com/p/ibus/issues/detail?id=1701 Review URL: https://codereview.appspot.com/88770043 Patch from Christophe Fergeau . M src/ibusshare.c commit ca128d1eee6599263b5e43b087781a00ada2732c Author: Daiki Ueno Date: 2014-04-07 18:06:10 +0900 Keep track of content-type change after focus-in This is an amendment to 6ca5ddb3. As content-type (input-purpose and hints) can change after focus-in, we should monitor the changes. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/83920043 M bus/inputcontext.c M bus/marshalers.list M bus/panelproxy.c commit 6ca5ddb302c98e52c78326ed0dfaaf90481d4d8c Author: fujiwarat Date: 2014-04-03 12:19:47 +0900 Send panel input purpose. gnome-shell gets input purpose so that disables IME with password mode. Review URL: https://codereview.appspot.com/81770044 M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M bus/panelproxy.h M src/ibuspanelservice.c M src/ibuspanelservice.h commit 18612e19fe4e9d3c89cbcf92c6562d48677412d6 Author: fujiwarat Date: 2014-03-18 11:49:08 +0900 Update supported vala version to 0.20. Review URL: https://codereview.appspot.com/76830043 M configure.ac commit 9782a20c544001a211a788975f55ded5064b7273 Author: fujiwarat Date: 2014-03-18 11:41:33 +0900 Add Czech (qwerty) keymap. BUG=rhbz#1074879 Review URL: https://codereview.appspot.com/74520044 M engine/simple.xml.in commit 2a75303fd88adfd8e041c90a3ecc0cc93a74aed3 Author: fujiwarat Date: 2014-03-07 13:56:37 +0900 Release 1.5.6 Review URL: https://codereview.appspot.com/68530043 M configure.ac commit 43719baaa67cf9f3832f5341776570cf161df9db Author: fujiwarat Date: 2014-03-07 13:51:59 +0900 Fix deprecated GtkHBox in setup.ui Review URL: https://codereview.appspot.com/72000043 M setup/setup.ui commit 427475201d351f5888fb6b4d90cf604514335707 Author: fujiwarat Date: 2014-03-06 11:50:10 +0900 Update translations. Update po/ja.po po/nl.po po/pl.po po/uk.po Review URL: https://codereview.appspot.com/69920043 M po/ja.po M po/nl.po M po/pl.po M po/uk.po commit 698e85bce8ec948c55997b0a59e0a59803a5a312 Author: fujiwarat Date: 2014-03-06 11:44:01 +0900 Fix python comment in escape sequence. Review URL: https://codereview.appspot.com/69840043 M setup/main.py commit 3e0abec1e26657316649ffc15415281890c2fde9 Author: Nilamdyuti Goswami Date: 2014-02-28 11:37:30 +0900 Add contextual information on translatable strings. Source String Contextualization Group (SSCG) is a Fedora SIG group initiated to provide meaningful descriptions of the source strings for translators to ensure the correctness and quality of the translations. https://fedoraproject.org/wiki/SSCG BUG=rhbz#1069594 Review URL: https://codereview.appspot.com/69010043 Patch from Nilamdyuti Goswami . M data/ibus.schemas.in M setup/main.py commit b233f5796aa7eec7555a31d51ea065c978429759 Author: fujiwarat Date: 2014-02-25 17:41:13 +0900 Use XKB layout string instead of ibus-keyboard icon on panel. Review URL: https://codereview.appspot.com/66330043 M data/ibus.schemas.in M ui/gtk3/Makefile.am M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit b300a7f747ddfa5146ff6edd23f8747e37d1de46 Author: fujiwarat Date: 2014-02-21 11:45:55 +0900 Fix a build error of Gdk.EventKey with vala 0.23.2 Review URL: https://codereview.appspot.com/66480044 M ui/gtk3/switcher.vala commit ee7f9147d6ec6e07023f6c4b84acafe3ef42a881 Author: Julien Humbert Date: 2014-02-21 11:42:17 +0900 Update french translation Review URL: https://codereview.appspot.com/66450044 Patch from Julien Humbert . M po/fr.po commit d5319e4f3ed5318e20a4a1556af657fd75792eeb Author: fujiwarat Date: 2014-02-18 18:01:25 +0900 Update translations. Merged GTK+ translations. Review URL: https://codereview.appspot.com/50490045 M po/LINGUAS M po/ar.po M po/as.po M po/bg.po M po/bn.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/en_GB.po M po/es.po M po/et.po M po/eu.po M po/fa.po M po/fr.po M po/gu.po A po/he.po M po/hi.po M po/hu.po M po/ia.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/lv.po M po/ml.po M po/mr.po M po/nb.po M po/nl.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/tg.po M po/uk.po A po/ur.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 5c25f8c6218847f56829338479d4f1af866fa6f2 Author: fujiwarat Date: 2014-02-18 15:07:35 +0900 Fix deprecated GtkStock in ibus-setup Review URL: https://codereview.appspot.com/65300043 M setup/engineabout.py M setup/keyboardshortcut.py M setup/main.py commit 02f18ee424e14cbe592fbb293097fd8a7f0f0324 Author: fujiwarat Date: 2014-02-17 11:52:39 +0900 Fix deprecated GtkHBox, GtkVBox and GtkStock since GTK+ 3.10. Review URL: https://codereview.appspot.com/63750043 M setup/setup.ui M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/iconwidget.vala M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/property.vala M ui/gtk3/separator.vala commit 644a749ec444fcccff7dc5c0dff04c567dc0433c Author: fujiwarat Date: 2014-02-12 12:48:46 +0900 Do not let property panel follow cursor when it's always shown. Review URL: https://codereview.appspot.com/60560043 M data/ibus.schemas.in M po/POTFILES.in M po/POTFILES.skip M ui/gtk3/panel.vala M ui/gtk3/propertypanel.vala commit c5d86760da26cbce469b3ca4ed48fb6159613251 Author: fujiwarat Date: 2014-02-10 11:55:57 +0900 Fix to show Property Panel when the mode is auto hide. Property panel sometimes is not shown when the mode is auto hide and focus is changed between existent windows. It's a timing issue of PropertyPanel.set_properties(). Review URL: https://codereview.appspot.com/54300049 M ui/gtk3/propertypanel.vala commit 5b03cc67cc8a9c5ac4b907ff7e236b303e76454a Author: fujiwarat Date: 2014-02-04 14:02:26 +0900 Fix "RING ABOVE" key in the Finnish compose file. Recently fi_FI compose table was updated in xorg/lib/libX11. http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=20fdccd8 http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=aacf95da BUG=rhbz#1060180 Review URL: https://codereview.appspot.com/59540043 M src/ibuscomposetable.h commit 51cb6c01060bf5b41aba1317fae47204b015a5c3 Author: fujiwarat Date: 2014-02-03 13:07:40 +0900 Install pygtk2 libraries to python2 site-packages. Review URL: https://codereview.appspot.com/58930044 M bindings/pygobject/Makefile.am M configure.ac M ibus/Makefile.am M ibus/interface/Makefile.am commit a6f886a7279dd85b5b0d4caa709a222e34eaa3f7 Author: fujiwarat Date: 2014-02-03 11:18:24 +0900 Disable AC_MSG_ERROR if gsettings-schema-convert is not found. Reverted 729b0aa1febccbba97286f2aceb9044d907f9ffe data/dconf/org.freedesktop.ibus.gschema.xml.in is included in tarball so gsettings-schema-convert is not required. BUG=http://code.google.com/p/ibus/issues/detail?id=1650 Review URL: https://codereview.appspot.com/58870044 M configure.ac M data/dconf/Makefile.am commit e2cd8f0870d8b15af71e839f9035dce333af3c4e Author: fujiwarat Date: 2014-01-27 11:38:46 +0900 Install IBus.py in python2 gi.override. Review URL: https://codereview.appspot.com/56510043 M bindings/pygobject/Makefile.am M configure.ac commit 8468de2f165ca7dba45b13cec09fdcde83a88204 Author: fujiwarat Date: 2014-01-24 11:11:40 +0900 Enable python3 ibus-setup. The default uses 'python' and if the path of python 3 is 'python3', ./configure --with-python=python3 Review URL: https://codereview.appspot.com/54930043 M configure.ac M setup/enginecombobox.py M setup/enginetreeview.py M setup/keyboardshortcut.py M setup/main.py commit 5d94d8cc7b9a322f4639200c4a10076cb57a0294 Author: fujiwarat Date: 2014-01-23 15:34:31 +0900 Use LT_INIT instead of AM_PROG_LIBTOOL BUG=http://www.gnu.org/software/libtool/manual/html_node/LT_005fINIT.html Review URL: https://codereview.appspot.com/55480044 M configure.ac commit 65f583483529b98dc2bec96d3e6524629c585234 Author: fujiwarat Date: 2014-01-17 12:13:35 +0900 Fix the access out of bounds in gencomposetable TEST=src/gencomposetable Review URL: https://codereview.appspot.com/52670044 M src/gencomposetable.c commit e6ec45d64a32d16245770f8b80e795a63e6ad553 Author: Colin Walters Date: 2014-01-16 13:22:12 +0900 data/dconf: Don't run "dconf update" if $(DESTDIR) is set dconf changed as of https://git.gnome.org/browse/dconf/commit/?id=c211fc46496597c7ddabd73d623bae4037754916 to actually emit an error if /etc/dconf/db is empty. When building ibus in a system such as dpkg/rpm or gnome-continuous, there may actually be nothing in that directory in the buildroot. This will now cause "dconf update" as executed by this Makefile to fail. The fix is to just check $(DESTDIR), like we should do for all triggers (e.g. gtk-update-icon-cache too). It's never useful to execute these from per-component Makefiles if $(DESTDIR) is set. Instead, these meta-build systems (dpkg/rpm/jhbuild/Continuous) all take care of execution of triggers on their own. Review URL: https://codereview.appspot.com/51730044 Patch from Colin Walters . M data/dconf/Makefile.am commit 4e860c1ef4d056c91e63f3c39a67800ed3e8e5bc Author: fujiwarat Date: 2014-01-14 12:50:34 +0900 Release 1.5.5 Review URL: https://codereview.appspot.com/41200044 M configure.ac commit 7587b8e6a2f690dd52fcabc2e0da31062fb02128 Author: fujiwarat Date: 2014-01-08 16:36:47 +0900 Hide Property Panel when input cursor or preedit text is changed. BUG=http://code.google.com/p/ibus/issues/detail?id=1659 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/45510043 M data/ibus.schemas.in M ui/gtk3/panel.vala M ui/gtk3/propertypanel.vala commit 8ce7ac6088e440ee539ed3299d9a219aac1c8089 Author: fujiwarat Date: 2013-12-18 11:39:40 +0900 Hide Property Panel if engines have no properties. If engines have no properites, Property Panel does not have to be shown. Also resize the topdevel window when engines are switched. TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/43260043 M ui/gtk3/propertypanel.vala commit dddd29edaf32d31e1c98047288c54a23edb5979b Author: fujiwarat Date: 2013-12-17 12:02:56 +0900 Add Property Panel to show IME properties. Currently GtkStatusIcon can show one icon only while GtkApplet shows multiple icons. IBus GTK Panel icon shows the IBus engine icon however each IBus engine provides the properties and currently it can be show only when users click the panel icon and show the activate menu. Users wish to know the some of the properties without clicking the icon. Property Panel offers a window which shows engine properties' icon at input cursor. It's similar to Language Panel in IBus 1.4. Property Panel is shown in only 3 seconds whenever client applications get focus-in event or any of engine properties are changed, e.g. InputMode is changed from Hiragana to Eisu, in case gsettings panel.show is AUTO_HIDE (by default). Property Panel is always hidden in case panel.show is DO_NOT_SHOW. Property Panel is always shown in case panel.show is ALWAYS. BUG=http://code.google.com/p/ibus/issues/detail?id=1659 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/40870046 M data/ibus.schemas.in M setup/setup.ui M src/ibusattrlist.c M ui/gtk3/Makefile.am M ui/gtk3/panel.vala M ui/gtk3/property.vala A ui/gtk3/propertypanel.vala commit e0ca43cb4e72e1390750addf6407074ee32a955a Author: fujiwarat Date: 2013-12-13 11:56:41 +0900 Remove -Werror in autogen.sh since the build still have errors. Review URL: https://codereview.appspot.com/38250043 M autogen.sh commit e99a1b0fda7214ff9332a7619b02772a8ae38602 Author: fujiwarat Date: 2013-12-11 12:30:46 +0900 Update translations. Update po/bn.po po/bn_IN.po po/da.po po/de.po po/es.po po/fr.po po/ja.po po/kn.po po/ko.po po/nl.po po/pl.po po/ru.po po/ta.po po/te.po po/uk.po po/zh_CN.po Review URL: https://codereview.appspot.com/35340043 M po/LINGUAS A po/bn.po M po/bn_IN.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/ja.po M po/kn.po M po/ko.po M po/nl.po M po/pl.po M po/ru.po M po/ta.po M po/te.po M po/uk.po M po/zh_CN.po commit bf18adb00f2e6f656c35ab2ee169db6f38be5fbe Author: fujiwarat Date: 2013-12-06 11:45:04 +0900 Fix candidate panel not to be out of screen. BUG=http://code.google.com/p/ibus/issues/detail?id=1676 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/35800045 M ui/gtk3/candidatepanel.vala commit 291bacf99d6da1e7f3952784e83d45400254b15b Author: fujiwarat Date: 2013-11-27 11:29:58 +0900 Delete the up/down button message on ibus-setup. BUG=http://code.google.com/p/ibus/issues/detail?id=1675 TEST=ibus-setup Review URL: https://codereview.appspot.com/32630043 M setup/setup.ui commit 4b20ca1b98265fde358a2863a954b49f61d79921 Author: MaroÅ¡ ZaÅ¥ko Date: 2013-11-26 14:10:03 +0900 simple.xml.in: add Slovak qwerty layout variant Review URL: https://codereview.appspot.com/32030043 Patch from MaroÅ¡ ZaÅ¥ko . M engine/simple.xml.in commit f35184a187b787e8507cb1e34b24dc0575fad838 Author: fujiwarat Date: 2013-11-05 18:12:41 +0900 Fix gir annotations. TEST=g-ir-scanner@src Review URL: https://codereview.appspot.com/18100044 M engine/Makefile.am M src/ibusattribute.h M src/ibusattrlist.h M src/ibuscomponent.h M src/ibusconfig.h M src/ibusconfigservice.h M src/ibusdebug.h M src/ibusengine.h M src/ibusenginedesc.h M src/ibusenumtypes.h.template M src/ibuserror.h M src/ibusfactory.h M src/ibushotkey.h M src/ibusinputcontext.c M src/ibuskeymap.h M src/ibuskeysyms-compat.h M src/ibuskeyuni.c M src/ibuslookuptable.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.h M src/ibuspanelservice.c M src/ibusproplist.h M src/ibusproxy.h M src/ibusserializable.h M src/ibusservice.h M src/ibusshare.h M src/ibustext.h M src/ibustypes.h M src/ibusutil.h M src/ibusversion.h.in M src/ibusxml.h commit 6488b87792b81d20ceeb5f3f69381887e12bf4c7 Author: Eduardo Lima (Etrunko) Date: 2013-11-05 18:07:33 +0900 Wayland: Fix Small typo BUG=http://code.google.com/p/ibus/issues/detail?id=1671 TEST=client/wayland/ibus-wayland Review URL: https://codereview.appspot.com/18780044 Patch from Eduardo Lima (Etrunko) . M client/wayland/main.c commit e64b25c0ab8fadeae97fe78dcfcbc3a5d0869c6b Author: fujiwarat Date: 2013-11-01 11:19:39 +0900 Update en-us compose table and add locale tables for xkb engines. BUG=RH#1013651 TEST=engine/ibus-engine-simple, src/libibus.so Review URL: https://codereview.appspot.com/14465046 M bindings/vala/Makefile.am A bindings/vala/ibus-private.vapi M engine/Makefile.am M engine/main.vala A engine/test-compose.vala M src/Makefile.am A src/gencomposetable.c M src/gtkimcontextsimpleseqs.h A src/ibuscomposetable.h M src/ibusenginesimple.c M src/ibusenginesimple.h M src/ibuskeysyms.h M tools/main.vala commit 9596aea2e2df4cd3ac9b795ad9f354723cf83317 Author: fujiwarat Date: 2013-10-02 10:58:36 +0900 Always save the content-type cache for gnome-shell password. GDBusProxy updates the cache immediatelly with the first call only and has to save the next call in the cache by manual. BUG=RH#1013948 TEST=password on gnome-shell 3.10. Review URL: https://codereview.appspot.com/14196043 M bus/engineproxy.c commit b8f36164d9b405d95bdcb76e38daca6c531e7da5 Author: fujiwarat Date: 2013-10-02 10:55:09 +0900 Implement lookup-table-orientation in ibus-ui-gtk3. BUG=RH#1012781 TEST=ui/gtk3/ibus-ui-gtk3 Review URL: https://codereview.appspot.com/14198043 M ui/gtk3/panel.vala commit d41791da67ac66665868f18fc447f2fc2a6ce75a Author: fujiwarat Date: 2013-10-02 10:49:47 +0900 Replace datadir/man with mandir. BUG=http://code.google.com/p/ibus/issues/detail?id=1660 TEST=make install Review URL: https://codereview.appspot.com/14119043 M bus/Makefile.am M setup/Makefile.am M tools/Makefile.am commit a3f47e6509f19c6f11fca0328d63e973daec48ab Author: Julien Humbert Date: 2013-10-02 10:45:32 +0900 Add french layout variant oss to simple engine Review URL: https://codereview.appspot.com/14115044 Patch from Julien Humbert . M engine/simple.xml.in commit f4b09140783834cb19e3bd7dcf63671ec304b9dd Author: fujiwarat Date: 2013-09-20 11:39:25 +0900 Release 1.5.4 Review URL: https://codereview.appspot.com/13468047 M configure.ac commit 98c7bdc5d92d5d2f25eb5f81fe90397664c2d435 Author: fujiwarat Date: 2013-09-20 10:58:34 +0900 Fix no output when ibus-daemon is running on another display. Using ssh -X or another display, the hostname and display numbers can be different between the GTK clients and ibus-daemon. This patch fixes the output: "Events queue growing too big, will start to drop." BUG=RH#1004135 TEST=clients/gtk*/im-ibus.so Review URL: https://codereview.appspot.com/13707046 M client/gtk2/ibusimcontext.c commit 84f3510427398947c2f11bc17f3094ddbaea3598 Author: fujiwarat Date: 2013-09-17 12:15:17 +0900 Update translations. Update po/gu.po po/ml.po po/or.po po/pa.po Review URL: https://codereview.appspot.com/13514044 M po/gu.po M po/ml.po M po/or.po M po/pa.po commit e91f403a8e099ce26642eb58a105671ec730f277 Author: fujiwarat Date: 2013-09-06 13:24:34 +0900 Connect candidate-clicked signal on ibus-ui-gtk3 for mouse click. Review URL: https://codereview.appspot.com/13303049 M ui/gtk3/panel.vala commit 10b9225bb3ec9131c827cfad007bad65bc9f0b12 Author: fujiwarat Date: 2013-09-05 11:41:50 +0900 Implement show-icon-on-systray in ibus-ui-gtk3. BUG=http://code.google.com/p/ibus/issues/detail?id=1635 TEST="show icon on system tray" on ibus-setup Review URL: https://codereview.appspot.com/13514043 M ui/gtk3/panel.vala commit 729b0aa1febccbba97286f2aceb9044d907f9ffe Author: David King Date: 2013-09-02 11:19:06 +0900 Check for gsettings-schema-convert for dconf support BUG=http://code.google.com/p/ibus/issues/detail?id=1650 Review URL: https://codereview.appspot.com/13423043 Patch from David King . M configure.ac M data/dconf/Makefile.am commit 1e40a48cc47f2158d7ef45693158615b5f4ee029 Author: David King Date: 2013-09-02 11:15:13 +0900 Avoid compiler error in ibus_engine_dbus_property_changed Do not return a value in a function that returns void. BUG=http://code.google.com/p/ibus/issues/detail?id=1650 Review URL: https://codereview.appspot.com/13334044 Patch from David King . M src/ibusengine.c commit b24efef988af48cbf7defd8db10a25a77fa646c6 Author: fujiwarat Date: 2013-08-30 18:25:42 +0900 Call _set_content_type in _create_input_context_done in im-ibus.so TEST=password dialog in gnome-shell Review URL: https://codereview.appspot.com/13255047 M client/gtk2/ibusimcontext.c commit 47fbb130190f31e8a9e385c8b58718f999119b6c Author: fujiwarat Date: 2013-08-28 13:10:46 +0900 Implement IME state per window. BUG=http://code.google.com/p/ibus/issues/detail?id=1568 TEST=Disable global engine with ibus-setup. Review URL: https://codereview.appspot.com/12957046 M bus/ibusimpl.c M bus/panelproxy.c M bus/panelproxy.h M data/ibus.schemas.in M setup/setup.ui M src/ibuspanelservice.c M src/ibuspanelservice.h M ui/gtk3/panel.vala commit b4bb7c2d103170e30e86b55fb61a9344f62252bb Author: Julien Humbert Date: 2013-08-28 09:53:56 +0900 Update french translation Review URL: https://codereview.appspot.com/13260043 Patch from Julien Humbert . M po/fr.po commit e5ca9e5b4bf2ad2499ccbfad588342a143eba24e Author: fujiwarat Date: 2013-08-20 15:01:42 +0900 Use gsettings instead of ibus-config in ibus-setup and ibus-ui-gtk3. TEST=ibus-setup and ibus-ui-gtk3 Review URL: https://codereview.appspot.com/12442044 M setup/main.py M ui/gtk3/application.vala M ui/gtk3/panel.vala commit 4adc001208cec701ca8f5fe53154c2c1e93c851e Author: fujiwarat Date: 2013-08-15 15:18:21 +0900 Update translations Update po/LINGUAS po/as.po po/de.po po/es.po po/fr.po po/gu.po po/hi.po po/hu.po po/ia.po po/it.po po/ja.po po/kn.po po/ko.po po/ml.po po/mr.po po/nl.po po/or.po po/pa.po po/pl.po po/pt_BR.po po/ru.po po/uk.po po/ta.po po/te.po po/uk.po po/zh_CN.po po/zh_TW.po Review URL: https://codereview.appspot.com/12583045 M po/LINGUAS M po/as.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po A po/ia.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/nl.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/ta.po M po/te.po M po/uk.po M po/zh_CN.po M po/zh_TW.po commit 3b3a7ceccbf75f36dee0df45589d79f7e96131f4 Author: Daiki Ueno Date: 2013-08-14 13:29:45 +0200 Notify engines of the content-type of input context Add a new D-Bus method SetContentType to InputContext and Engine, to notify engines of the content-type (primary purpose and hints) of input context. This is useful to implement intelligent features in engines, such as automatic input-mode switch and text prediction. The "purpose" and "hints" arguments are compatible with GtkInputPurpose and GtkInputHints: https://developer.gnome.org/gtk3/unstable/GtkEntry.html#GtkInputPurpose https://developer.gnome.org/gtk3/unstable/GtkEntry.html#GtkInputHints and the API is similar to the content_type event in the Wayland Input Method Framework: http://cgit.freedesktop.org/wayland/weston/tree/protocol/input-method.xml#n202 BUG= Review URL: https://codereview.appspot.com/11422043 M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M client/gtk2/ibusimcontext.c M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibustypes.h commit 5136dbc59fd3048445826c534fd6b5f3f8ca6b1e Author: Jan Arne Petersen Date: 2013-08-13 10:30:52 +0200 wayland: Add wayland client This patch adds a new client which supports the Wayland input method protocol. Note that the support is disabled by default until the input method protocol becomes official in the Wayland upstream. Supply --enable-wayland to configure to try it. Also, you will need to set the executable path of ibus-wayland under the "input-method" section of weston.ini, like this: [input-method] path=.../libexec/ibus-wayland BUG=Issue#1617 Review URL: https://codereview.appspot.com/11320043 Patch from Jan Arne Petersen . M client/Makefile.am A client/wayland/Makefile.am A client/wayland/README A client/wayland/input-method-client-protocol.h A client/wayland/input-method-protocol.c A client/wayland/main.c M configure.ac commit 1bdcf218eeda728391b5b4e33d536d2debfef1bc Author: fujiwarat Date: 2013-08-09 13:48:17 +0900 Update source files with LGP 2.1 according to COPYING. BUG=http://code.google.com/p/ibus/issues/detail?id=1424 TEST=rpmlint Review URL: https://codereview.appspot.com/12526043 M Makefile.am M bindings/Makefile.am M bindings/pygobject/Makefile.am M bindings/pygobject/gi/__init__.py M bindings/pygobject/gi/overrides/IBus.py M bindings/pygobject/gi/overrides/__init__.py M bindings/pygobject/test-override-ibus.py M bindings/vala/Makefile.am M bus/Makefile.am M bus/component.c M bus/component.h M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/global.c M bus/global.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/panelproxy.c M bus/panelproxy.h M bus/server.c M bus/server.h M bus/test-client.c M bus/test-client.h M bus/test-stress.c M bus/types.h M client/Makefile.am M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/gtk3/Makefile.am M client/x11/Makefile.am M client/x11/gdk-private.c M client/x11/gdk-private.h M client/x11/main.c M conf/Makefile.am M conf/dconf/Makefile.am M conf/dconf/config-private.h M conf/dconf/config.c M conf/dconf/main.c M conf/gconf/Makefile.am M conf/memconf/Makefile.am M conf/memconf/config.c M conf/memconf/config.h M conf/memconf/main.c M configure.ac M data/Makefile.am M data/dconf/Makefile.am M data/icons/Makefile.am M data/keymaps/Makefile.am M docs/Makefile.am M docs/reference/Makefile.am M engine/Makefile.am M engine/main.vala M ibus/Makefile.am M ibus/__init__.py M ibus/_config.py.in M ibus/_gtk.py M ibus/application.py M ibus/attribute.py M ibus/bus.py M ibus/common.py M ibus/component.py M ibus/config.py M ibus/engine.py M ibus/enginedesc.py M ibus/exception.py M ibus/factory.py M ibus/inputcontext.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/iinputcontext.py M ibus/interface/inotifications.py M ibus/interface/ipanel.py M ibus/lang.py M ibus/lookuptable.py M ibus/modifier.py M ibus/notifications.py M ibus/object.py M ibus/observedpath.py M ibus/panel.py M ibus/property.py M ibus/serializable.py M ibus/text.py M ibus/utility.py M m4/Makefile.am M setup/Makefile.am M setup/engineabout.py M setup/enginecombobox.py M setup/enginetreeview.py M setup/ibus-setup.in M setup/icon.py M setup/keyboardshortcut.py M setup/main.py M src/Makefile.am M src/gtkimcontextsimpleseqs.h M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusattrlist.c M src/ibusattrlist.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibusenginesimple.c M src/ibusenginesimple.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeynames.c M src/ibuskeys.h M src/ibuskeysyms-compat.h M src/ibuskeysyms.h M src/ibuskeyuni.c M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproplist.c M src/ibusproplist.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusregistry.c M src/ibusregistry.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusutil.c M src/ibusutil.h M src/ibusversion.h.in M src/ibusxml.c M src/ibusxml.h M src/tests/Makefile.am M src/tests/ibus-inputcontext-create.c M src/tests/ibus-inputcontext.c M tools/Makefile.am M tools/ibus.bash M tools/main.vala M ui/Makefile.am M ui/gtk2/Makefile.am M ui/gtk2/candidatepanel.py M ui/gtk2/engineabout.py M ui/gtk2/handle.py M ui/gtk2/i18n.py M ui/gtk2/ibus-ui-gtk.in M ui/gtk2/icon.py M ui/gtk2/languagebar.py M ui/gtk2/main.py M ui/gtk2/menu.py M ui/gtk2/notifications.py M ui/gtk2/panel.py M ui/gtk2/propitem.py M ui/gtk2/toolitem.py M ui/gtk3/Makefile.am M ui/gtk3/application.vala M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/handle.vala M ui/gtk3/iconwidget.vala M ui/gtk3/panel.vala M ui/gtk3/pango.vala M ui/gtk3/property.vala M ui/gtk3/separator.vala M ui/gtk3/switcher.vala M util/IMdkit/Makefile.am M util/Makefile.am commit 1f2a94e0519021131cef2e509cfa11a0c6c3a291 Author: Daiki Ueno Date: 2013-08-02 10:33:21 +0200 tool: add "address" command to print D-Bus address This would be helpful to debug with dbus-monitor. Instead of: $ . .config/ibus/bus/* $ dbus-monitor --address $IBUS_ADDRESS ... one can do: $ dbus-monitor --address $(ibus address) ... This patch also adds help message to each sub-command. BUG= Review URL: https://codereview.appspot.com/11901044 M tools/ibus.1.in M tools/main.vala commit 3b013c9ee3e071a83351eb1bff59697b770f8b3a Author: fujiwarat Date: 2013-07-31 09:59:26 +0900 Remove IBUS_IS_ENGINE_DESC for freed pointer in ibus-bus.c BUG=http://code.google.com/p/ibus/issues/detail?id=1646 TEST=src/tests/ibus-bus.c Review URL: https://codereview.appspot.com/12093043 M src/tests/ibus-bus.c commit f16865829ff3dcc3fe835be1d40fd22322500d36 Author: fujiwarat Date: 2013-07-26 17:18:24 +0900 Release 1.5.3 Review URL: https://codereview.appspot.com/11708043 M README M configure.ac M src/ibusfactory.c commit bc2d0010ed29cb85e5507f2d91488bf1afab102c Author: fujiwarat Date: 2013-07-26 10:00:46 +0900 Add Norwegian keyboard in engine/simple.xml.in BUG=RH#987222 Review URL: https://codereview.appspot.com/11805043 M engine/simple.xml.in commit 583bfe6d59e9b5a8514bc250fcccb9cb793d8a02 Author: Daiki Ueno Date: 2013-07-25 18:12:26 +0900 daemon: fix PropertiesChanged signal emission This fixes a few problems of PropertiesChanged signal emission. First, it should be sent only when the properties have changed. Second, invalidated_properties should be set when the properties have been reset, not on error. Finally, the sender should be "org.freedesktop.IBus" rather than "org.freedesktop.DBus". BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/11465045 M bus/ibusimpl.c commit 77189092184d00f4ae1838e422026da0d0d96ae2 Author: Eduardo Lima (Etrunko) Date: 2013-07-23 10:43:36 +0900 Remove reference to primary owner on ReleaseName BUG=http://code.google.com/p/ibus/issues/detail?id=1636 TEST=src/tests/ibus-bus.c Review URL: https://codereview.appspot.com/11004043 Patch from Eduardo Lima (Etrunko) . M bus/dbusimpl.c M src/tests/ibus-bus.c commit ee6b756b9b89af0343ebcb5f60d6f49ac1813f94 Author: fujiwarat Date: 2013-07-19 18:19:07 +0900 Remove arrow buttons in ibus-setup, which no longer work. BUG=RH#851758 TEST=ibus-setup Review URL: https://codereview.appspot.com/6475068 M setup/enginetreeview.py M setup/setup.ui commit 5f356a34e88ccdd316a960fcb33703aacf28ff09 Author: Osamu Aoki Date: 2013-07-19 18:14:19 +0900 Fix error with gcc -Wformat -Werror=format-security BUG=http://code.google.com/p/ibus/issues/detail?id=1638 TEST=bus/ibusimpl.c Review URL: https://codereview.appspot.com/11471044 Patch from Osamu Aoki . M bus/ibusimpl.c commit 7fdcd865f14d5de6a276e71c2ed958a736dc34db Author: Peter Michael Green Date: 2013-07-19 18:09:43 +0900 Fix error with gcc -Wformat -Werror=format-security BUG=http://code.google.com/p/ibus/issues/detail?id=1638 TEST=src/ibusfactory.c Review URL: https://codereview.appspot.com/11503043 Patch from Peter Michael Green . M autogen.sh M src/ibusfactory.c commit f64d4fdf43a17dc39132354ffdb1060a185fa715 Author: fujiwarat Date: 2013-07-17 11:50:25 +0900 Remove ibus_bus_list_active_engines in bus/test-client.c BUG=http://code.google.com/p/ibus/issues/detail?id=1637 TEST=bus/test-client.c Review URL: https://codereview.appspot.com/11336044 M bus/test-client.c commit 632a5c13072312015226c408ddb3d4eb478abe6f Author: Daiki Ueno Date: 2013-07-12 18:39:54 +0900 registry: use binary format instead of XML for cache Currently the registry cache is in the XML format, that may cause unnecessary parsing overhead on ibus-daemon startup. This patch changes the format to GVariant based binary representation. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/9963043 M src/ibusregistry.c M src/ibusregistry.h M src/ibusshare.c M tools/main.vala commit 9037ffe0f3ab419554903de6f12d00ee74f2f3ff Author: Daiki Ueno Date: 2013-07-12 18:05:06 +0900 build: fix make check This contains several fixes to the current tests: - Remove glib mem profiler call from src/tests, which is known not to work with the latest glib release: https://bugzilla.gnome.org/show_bug.cgi?id=701694 valgrind could be used instead. - Replace g_type_init() call in tests with ibus_init(). - Fix ibus-bus test after the DBus property change (commit 458945e7). no global engine may be set in the test environment. Also add more assertions to check the return values. - Fix pygobject test to use LOG_COMPILER and move sys.path adjustment into the test script itself. - Add new files to po/POTFILES.in. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/11156043 M bindings/pygobject/Makefile.am M bindings/pygobject/gi/__init__.py M bindings/pygobject/gi/overrides/__init__.py M bindings/pygobject/test-override-ibus.py M po/POTFILES.in M po/POTFILES.skip M src/tests/ibus-bus.c M src/tests/ibus-configservice.c M src/tests/ibus-engine.c M src/tests/ibus-factory.c M src/tests/ibus-global-engine.c M src/tests/ibus-inputcontext-create.c M src/tests/ibus-inputcontext.c M src/tests/ibus-keymap.c M src/tests/ibus-keynames.c M src/tests/ibus-proxy.c M src/tests/ibus-registry.c M src/tests/ibus-serializable.c M src/tests/ibus-share.c commit ecced4f45a46cb7557717b04e1ce1b284a397b8c Author: fujiwarat Date: 2013-07-12 10:41:38 +0900 Delete xdg in ibus-setup. Review URL: https://codereview.appspot.com/11100044 M setup/main.py commit 88ce21749e84cc92cbc91c919d27721c0f2e1ceb Author: fujiwarat Date: 2013-07-10 16:55:19 +0900 Load the system registry cache prior to the user one. gnome-settings-daemon runs ibus-daemon after the user configures any input method engines and causes a delay to show the engines on UI because no cache exists for ibus-daemon. The system cache can avoid the user timing. Review URL: https://codereview.appspot.com/10364043 M bus/Makefile.am M bus/dbusimpl.c M bus/ibus-daemon.1.in M bus/ibusimpl.c M bus/ibusimpl.h M bus/main.c D bus/registry.c D bus/registry.h D bus/test-registry.c M docs/reference/ibus/ibus-docs.sgml.in M docs/reference/ibus/ibus.types M src/Makefile.am M src/ibus.h A src/ibusregistry.c A src/ibusregistry.h M src/tests/Makefile.am A src/tests/ibus-registry.c M tools/ibus.1.in M tools/main.vala commit 5ed2b8c8253717b6c26281a8721403b006db04e6 Author: fujiwarat Date: 2013-07-05 13:03:49 +0900 Delete the python xdg dependency. BUG=RH#980749 Review URL: https://codereview.appspot.com/10930043 M debian/control M ibus.spec.in M ibus/common.py M setup/main.py commit 458945e7308ab2661355edbf6880102c5f628dbe Author: fujiwarat Date: 2013-06-14 12:13:13 +0900 Refactor old getter and setter to dbus property in bus/ibusimpl.c Review URL: https://codereview.appspot.com/9477043 M bus/ibusimpl.c M src/Makefile.am M src/ibusbus.c M src/ibusbus.h M src/ibusshare.h M src/tests/Makefile.am M src/tests/ibus-bus.c commit c9ba5e1d155ab711c68f18d26de38bdba3128f03 Author: Daiki Ueno Date: 2013-06-14 11:01:08 +0900 Make ibus-config tests side effect free Previously we assumed that test cases are executed in the order of registration. This is no longer true after glib change 89aa9dbd which fixed test case grouping. Clear the default match rule in each test case to avoid side effect. BUG= Review URL: https://codereview.appspot.com/10069045 M src/tests/ibus-config.c commit 7b9633ab6e20920710cd1f422bd4e6d18a363f35 Author: fujiwarat Date: 2013-06-11 12:46:02 +0900 Modify valac --target-glib. valac --ccode --target-glib=2.36 can disable g_type_init in the generated C files since g_type_init is deprecated in glib 2.36. But ibus tarball includes C files so that users do not require vala and vala versions are different between dist and build. If dist could have glib 2.36 to generate the ibus tarball but a user build would have glib 2.34, the user build would be failed because glib 2.34 requires g_type_init. This change makes sure the target-glib is minimum of the glib version for ibus. Review URL: https://codereview.appspot.com/10156044 M configure.ac M engine/Makefile.am M tools/Makefile.am M ui/gtk3/Makefile.am commit 4a68e97e32cc58baf233a8357d423614def3aac0 Author: fujiwarat Date: 2013-06-11 12:42:16 +0900 Fix an error message of gnome-autogen in autogen.sh BUG=http://code.google.com/p/ibus/issues/detail?id=1631 Review URL: https://codereview.appspot.com/10167044 M autogen.sh commit 5f78b55ee930a671c8ef63435925dcef9cd0ab5c Author: Daiki Ueno Date: 2013-06-10 11:22:39 +0900 Suppress warnings with Automake 1.13 The make variable INCLUDES is now obsoleted by AM_CPPFLAGS. BUG= R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/9915054 M bus/Makefile.am M client/gtk2/Makefile.am M client/gtk3/Makefile.am M engine/Makefile.am M src/tests/Makefile.am M tools/Makefile.am M ui/gtk3/Makefile.am commit 2a34936437e5c3c3e5e7f3621cf92fa94eaa466a Author: Daiki Ueno Date: 2013-06-07 13:01:44 +0900 build: improve test harness Run each test in isolated directory so it can run in parallel. Also improve the test wrapper and rename it to a better name. BUG= Review URL: https://codereview.appspot.com/9937047 M autogen.sh M configure.ac M src/tests/Makefile.am A src/tests/runtest D src/tests/setupenv commit 7ff8271dee2e3f5a9f65f64ee5ba798f4aa00b84 Author: fujiwarat Date: 2013-06-04 11:12:53 +0900 Remove g_type_init() calls. https://git.gnome.org/browse/glib/commit/?id=1dc774a653e992e1153fbed16f90097fa8db467f https://git.gnome.org/browse/vala/commit/?id=f1fbafdfdc91fadaa57d2e073fc29cc6804d6ae3 Review URL: https://codereview.appspot.com/9727047 M bus/dbusimpl.c M bus/test-matchrule.c M bus/test-registry.c M configure.ac M engine/Makefile.am M po/POTFILES.in M src/ibusshare.c M src/ibusshare.h M src/tests/ibus-bus.c M src/tests/ibus-config.c M src/tests/ibus-configservice.c M src/tests/ibus-engine-switch.c M src/tests/ibus-engine.c M src/tests/ibus-factory.c M src/tests/ibus-global-engine.c M src/tests/ibus-inputcontext-create.c M src/tests/ibus-inputcontext.c M src/tests/ibus-keymap.c M src/tests/ibus-keynames.c M src/tests/ibus-proxy.c M src/tests/ibus-serializable.c M src/tests/ibus-share.c M tools/Makefile.am M ui/gtk3/Makefile.am commit 5bb877682c218a5c0cd41e86a80655a7fd2269b9 Author: Colin Walters Date: 2013-05-29 10:56:17 +0900 Delete ibus.desktop This is not an actual application, it just starts the daemon in the background. That's not something that should be in the application list. It should be started in the background when necessary. BUG=http://code.google.com/p/ibus/issues/detail?id=1628 Review URL: https://codereview.appspot.com/9833043 Patch from Colin Walters . M bus/Makefile.am D bus/ibus.desktop.in commit 62f07b7a6904b8b03a59f3baf413becb2d5d9e14 Author: fujiwarat Date: 2013-05-17 12:12:54 +0900 Let users know the default hotkey is Super+space with libnotify. Review URL: https://codereview.appspot.com/9407043 M configure.ac M data/ibus.schemas.in M ui/gtk3/Makefile.am M ui/gtk3/panel.vala commit 3c96d67404da274c34631ad821da736cf55a2b62 Author: fujiwarat Date: 2013-05-15 12:03:54 +0900 Add man files of /usr/bin files. Review URL: https://codereview.appspot.com/9413043 M bus/Makefile.am A bus/ibus-daemon.1.in M setup/Makefile.am A setup/ibus-setup.1.in M tools/Makefile.am A tools/ibus.1.in commit f3d80dc026853c1024cdf6bda31b1496939cb095 Author: fujiwarat Date: 2013-05-13 16:36:19 +0900 Defalut triggers key is changed to space. We have been used space as the default triggers key. GNOME3 and Windows7 applied space as the default trigger key and IBus follows it for the consistent key between desktops. BUG=RH#953404 Review URL: https://codereview.appspot.com/9081043 M data/ibus.schemas.in M setup/main.py M ui/gtk3/panel.vala commit 927e9f58da9b4a9898403c8e339109e2ad2fa966 Author: Daiki Ueno Date: 2013-05-13 11:47:29 +0900 Check GtkIMContext:input-purpose to disable IM on lock screen Recent GtkIMContext has "input-purpose" property, which can be used to check if the target widget is a password entry, in a more reliable way. BUG=none R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/7064059 M client/gtk2/ibusimcontext.c commit 667b7f0b96e5a7e1190e606a9c680bcbda8c2a88 Author: fujiwarat Date: 2013-04-30 21:46:02 +0900 Implement embed_preedit_text. BUG=http://code.google.com/p/ibus/issues/detail?id=1606 Review URL: https://codereview.appspot.com/8112044 M bus/ibusimpl.c M src/ibusbus.c M src/ibusbus.h M ui/gtk3/panel.vala commit 4e175e3337337f2c261088d4576ea63a144cee3a Author: fujiwarat Date: 2013-04-24 13:44:35 +0900 Use EXTRA_DIST instead of DIST_SOURCES. Review URL: https://codereview.appspot.com/8698047 M bindings/vala/Makefile.am commit 0b612dfb8ab52a61896b9079acd2d76a360f8666 Author: fujiwarat Date: 2013-04-22 20:16:31 +0900 Fix make dist errors. Review URL: https://codereview.appspot.com/8850043 M bindings/pygobject/Makefile.am M bindings/vala/Makefile.am commit fe321d51ee5f7f4e7f3886ef6f55e4820a92675f Author: fujiwarat Date: 2013-04-17 09:57:33 +0900 Release 1.5.2 Review URL: https://codereview.appspot.com/7530044 M configure.ac commit 261bc3046f1e5deb5879bac23900ff7dbfa5a20d Author: Peng Huang Date: 2013-03-26 06:55:09 -0400 Draw highlight for focused IME in IME switcher. BUG=None TEST=Manual Review URL: https://codereview.appspot.com/7689046 M ui/gtk3/switcher.vala commit af1f409a3eace2ea9a063957a8797a50a77d131a Author: Peng Huang Date: 2013-03-26 06:54:43 -0400 Fix build error and warnings in Fedora 18. BUG=None TEST=Manual Review URL: https://codereview.appspot.com/7531047 M bus/dbusimpl.c M bus/main.c M client/gtk2/ibusimcontext.c M configure.ac M ibus.spec.in commit 928351ee88778cf97136d1a7dbc940390c23ddfc Merge: 175df22 4d7f4ad Author: Peng Huang Date: 2013-03-25 07:29:41 -0700 Merge pull request #6 from maxiaojun/master Show all g-ir-scanner warnings commit 175df2261b431eff65349b47bc6bd086051cde41 Author: fujiwarat Date: 2013-03-21 11:13:52 +0900 Move ibus.bash script from /etc to /usr/share BUG=RH#922996 Review URL: https://codereview.appspot.com/7863045 M tools/Makefile.am commit 2e7ece775f5412ab8e83a11e4d423b32a6114159 Author: Ville Skyttä Date: 2013-03-12 11:17:59 +0900 bash completion: No need to install it as executable. BUG=http://code.google.com/p/ibus/issues/detail?id=1601 Review URL: https://codereview.appspot.com/7696043 Patch from Ville Skyttä . M tools/Makefile.am commit 42dd60fe1fcdce11e7ac517786b398eba0cb9e17 Author: Daiki Ueno Date: 2013-03-12 06:41:43 +0900 Add textdomain property to IBusEngineDesc BUG=Issue#1580 Review URL: https://codereview.appspot.com/7692043 M bindings/pygobject/gi/overrides/IBus.py M src/ibusenginedesc.c M src/ibusenginedesc.h commit 69b48942e8ac9d39afeadfd9eb34f83247e8082a Author: Daiki Ueno Date: 2013-03-10 14:55:42 +0900 Simplify component xml generation using sed BUG=none Review URL: https://codereview.appspot.com/7445048 M conf/dconf/Makefile.am A conf/dconf/dconf.xml.in D conf/dconf/dconf.xml.in.in M conf/gconf/Makefile.am A conf/gconf/gconf.xml.in D conf/gconf/gconf.xml.in.in M conf/memconf/Makefile.am A conf/memconf/memconf.xml.in D conf/memconf/memconf.xml.in.in M configure.ac M engine/Makefile.am M engine/gensimple.py A engine/simple.xml.in D engine/simple.xml.in.in M ui/gtk2/Makefile.am A ui/gtk2/gtkpanel.xml.in D ui/gtk2/gtkpanel.xml.in.in M ui/gtk3/Makefile.am A ui/gtk3/gtkpanel.xml.in D ui/gtk3/gtkpanel.xml.in.in commit cff35929a9330081db25a86a8258489a27d4bdd5 Author: fujiwarat Date: 2013-03-08 11:21:25 +0900 Launch the second ibus engine too to reduce the launching time. Currently the first ibus engine only is running but the second engine is also frequently used. It is good to run the second engine before user types Ctrl+space. BUG=RH#838734 TEST=src/tests/ibus-bus Review URL: https://codereview.appspot.com/7433049 M bus/ibusimpl.c M src/ibusbus.c M src/ibusbus.h M src/tests/ibus-bus.c M ui/gtk3/panel.vala commit 5fa461889939a91fecff89a67630076b8cb987b2 Author: fujiwarat Date: 2013-03-07 13:16:10 +0900 Change set_use_system_keyboard_layout() timing. Call set_use_system_keyboard_layout() before update_engines() is called in panel.vala because update_engines() calls switch_engine(). BUG=http://code.google.com/p/ibus/issues/detail?id=1558#c43 Review URL: https://codereview.appspot.com/7559043 M ui/gtk3/panel.vala commit 4b2f6a477019b50375aba2e5f9c43e618b6905ad Author: fujiwarat Date: 2013-03-04 10:10:53 +0900 Implement use-system-keyboard-layout BUG=http://code.google.com/p/ibus/issues/detail?id=1558 Review URL: https://codereview.appspot.com/7414045 M data/ibus.schemas.in M ui/gtk3/panel.vala commit e0878144a704e9bfd0f5a60e6894b1de272aaa7b Author: Daiki Ueno Date: 2013-02-27 07:12:09 +0900 Fix make rpm errors due to ibus-dconf and pygobject override BUG=Issue#1600 Review URL: https://codereview.appspot.com/7404047 M ibus.spec.in commit f9ddda1e2d867b96889f80d9d30c0e88d3ec11b9 Author: Daiki Ueno Date: 2013-02-26 07:42:14 +0900 daemon: allow "eavesdrop" match rule Recent dbus-monitor supplies "eavesdrop" match rule which ibus-daemon does not accept. This patch silently ignores the rule so ibus-daemon behave the same as before. BUG=none Review URL: https://codereview.appspot.com/7225062 M bus/matchrule.c M bus/test-matchrule.c commit c79789fa1b5fd49a53b16e87813b88122168ff73 Author: fujiwarat Date: 2013-02-21 12:41:08 +0900 Fix annotation in ibus_bus_create_input_context BUG=http://code.google.com/p/ibus/issues/detail?id=1593 Review URL: https://codereview.appspot.com/7368044 M src/ibusbus.h M src/ibusinputcontext.h M src/ibuspanelservice.h commit 4d7f4ad5b5d6b29bb50cc9bf5b1442e3766151d9 Author: Ma Xiaojun Date: 2013-02-19 19:31:54 +0800 Show all GIR warnings M configure.ac commit 7e07299d17156e52b0b60b2cc50a82e29ef4f550 Author: fujiwarat Date: 2013-02-15 12:28:25 +0900 Fix no rule to make target test-override-ibus.py BUG=http://code.google.com/p/ibus/issues/detail?id=1592 Review URL: https://codereview.appspot.com/7332043 M bindings/pygobject/Makefile.am commit 62cd0492e3459416e1775aedc327bced53f66828 Author: Rui Matos Date: 2013-01-09 10:14:55 -0500 client: Queue events while the IBus context isn't ready There are actually 3 patches here. --- client: Queue events while the IBus context isn't ready We may lose events that ought to be processed while the IBus context isn't ready or if the connection to IBus isn't fully established yet. To avoid that, enqueue events to be processed later when the IBus context creation finishes. --- client: Don't cancel an ongoing create input context on another request This would only add more delays. --- client: Cancel any ongoing create input context request on finalize BUG= Review URL: https://codereview.appspot.com/6988047 Patch from Rui Matos . M client/gtk2/ibusimcontext.c commit 8ac534fc002356b93e2015a8866f1ea89e3895f9 Author: fujiwarat Date: 2012-12-15 17:40:18 +0900 Use Variant.unpack() instead of Variant.dup_strv(). Variant.dup_strv() returns a tuple in pygobject 3.2, e.g. (['space'], 1L), and a list in pygobject 3.4, e.g. ['space'] . BUG=RH#887153 Review URL: https://codereview.appspot.com/6941051 M setup/main.py commit d8c7e73464bdc65d7b96d7f0591aab608f66d0ea Author: fujiwarat Date: 2012-12-11 22:35:21 +0900 Release 1.5.1 BUG= Review URL: https://codereview.appspot.com/6925045 M configure.ac commit 346b83e3e015497f6ac2ec7fe8697bea175c2d25 Author: fujiwarat Date: 2012-12-11 22:32:06 +0900 Add fr(bepo) XKB engine. BUG=http://code.google.com/p/ibus/issues/detail?id=1558 Review URL: https://codereview.appspot.com/6926044 M engine/simple.xml.in.in commit 438e7d1d8586258cade509afb7de45327e953031 Author: fujiwarat Date: 2012-12-11 08:20:50 +0900 Fix IBus.py errors. BUG=http://code.google.com/p/ibus/issues/detail?id=1559 TEST=ibus-anthy Review URL: https://codereview.appspot.com/6867085 M bindings/pygobject/gi/overrides/IBus.py commit 9046f458ca817002e347275906555071b7d411d1 Author: Peng Huang Date: 2012-12-07 18:02:23 -0500 Relase 1.5.0 BUG=None Review URL: https://codereview.appspot.com/6906048 M configure.ac commit 76817548683606113dbf9d4dccec33555b9a65dc Author: fujiwarat Date: 2012-12-08 06:43:00 +0900 Remove transfer container in ibus_engine_simple_add_table. Review URL: https://codereview.appspot.com/6909049 M engine/main.vala M src/ibusenginesimple.c M src/ibusenginesimple.h commit 9e24b05ee36ca8edab72d9accc32460fae8eed55 Author: fujiwarat Date: 2012-12-07 11:18:20 +0900 Update translations. Update po/LINGUAS po/as.po po/bg.po po/bn_IN.po po/es.po po/et.po po/eu.po po/fr.po po/gu.po po/hi.po po/hu.po po/ja.po po/ko.po po/ml.po po/nl.po po/or.po po/pa.po po/pl.po po/ta.po po/te.po po/uk.po po/zh_CN.po po/zh_TW.po Review URL: https://codereview.appspot.com/6896046 M po/LINGUAS M po/as.po A po/bg.po M po/bn_IN.po M po/es.po A po/et.po A po/eu.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ja.po M po/ko.po M po/ml.po M po/mr.po A po/nb.po M po/nl.po M po/or.po M po/pa.po M po/pl.po M po/ta.po M po/te.po M po/uk.po M po/zh_CN.po M po/zh_TW.po commit 7198fed9f3dac572726f12aaae92a6972c7b11b4 Author: Daiki Ueno Date: 2012-12-07 06:21:56 +0900 Revert required valac version to 0.14. BUG=none Review URL: https://codereview.appspot.com/6905045 M configure.ac commit e7aa18c06be43e61776ca71815871f2c3ca7d61f Author: fujiwarat Date: 2012-12-06 11:51:09 +0900 Hide some unused settings on ibus-setup. Review URL: https://codereview.appspot.com/6873058 M setup/setup.ui commit 9b4e665262048d7119aff3a1ef02ab79490e74e2 Author: Evan Nemerson Date: 2012-12-05 12:18:51 +0900 build: quote $@ in autogen.sh BUG=http://code.google.com/p/ibus/issues/detail?id=1556 Review URL: https://codereview.appspot.com/6867067 Patch from Evan Nemerson . M autogen.sh commit e038d1c0084f1070afc2ff3652374c24e49faff6 Author: fujiwarat Date: 2012-12-05 12:00:30 +0900 Change the default config to ibus-dconf. Review URL: https://codereview.appspot.com/6849070 M configure.ac A m4/gconf-2.m4 commit a1840c00fad1798e7b62f469286415e8458125c4 Author: fujiwarat Date: 2012-12-05 11:20:37 +0900 Add Ctrl+space customization. Review URL: https://codereview.appspot.com/6822102 M data/ibus.schemas.in M setup/keyboardshortcut.py M setup/main.py M setup/setup.ui M ui/gtk3/panel.vala commit 58accdcb3075beec8a8fedb5b07562eea4fdd848 Author: Daiki Ueno Date: 2012-12-05 06:11:54 +0900 Modernize vala binding generation Use vapigen.m4 and Makefile.vapigen from vala to handle vapi file generation. Also generate vapi always when gir is updated. BUG=none Review URL: https://codereview.appspot.com/6849132 M bindings/Makefile.am M bindings/vala/Makefile.am M configure.ac M m4/Makefile.am A m4/vapigen.m4 commit 0639472efba34707d6f2d91511fc4c59c5255611 Author: Mike FABIAN Date: 2012-12-04 10:50:40 -0500 Fix red colour in rgb value in pango.vala The red part of the rgb value was always passed as 0 to Pango.attr_foreground_new(r, g, b) and Pango.attr_background_new(r, g, b). BUG= Review URL: https://codereview.appspot.com/6874050 Patch from Mike FABIAN . M ui/gtk3/pango.vala commit 098bc1f5871241fec93831bc37715e45cc4182d6 Author: Colin Walters Date: 2012-12-03 23:36:10 +0530 IBusFactory: Fix syntax of gtk-doc comment This was always invalid, but older versions of gobject-introspection accepted it. BUG=https://bugzilla.gnome.org/show_bug.cgi?id=689354 Review URL: https://codereview.appspot.com/6846138 Patch from Colin Walters . M src/ibusfactory.c commit ae98b5a58846e1326550027dc8d2a773ed8a24c5 Author: fujiwarat Date: 2012-11-30 11:43:43 +0900 Fix xmllint errors. Review URL: https://codereview.appspot.com/6842115 M conf/dconf/dconf.xml.in.in M conf/gconf/gconf.xml.in.in M conf/memconf/memconf.xml.in.in M ui/gtk3/gtkpanel.xml.in.in commit 0e8a207fff98c008b298acd0e6d7d96f3c4f263c Author: Daiki Ueno Date: 2012-11-23 11:14:48 +0900 Fix out-of-tree build Also cleanup Makefiles and fix build error with older valac. BUG=none Review URL: https://codereview.appspot.com/6782099 M bindings/vala/Makefile.am M docs/reference/ibus/Makefile.am M engine/main.vala M src/Makefile.am M src/tests/Makefile.am commit 0057397548a354b7eb359e5d45201db4077074e2 Author: Daiki Ueno Date: 2012-11-23 08:17:23 +0900 Install pygobject override To mitigate the gap between the old python binding and pygobject, add wrapper to some classes. BUG=none Review URL: https://codereview.appspot.com/6842079 M bindings/Makefile.am A bindings/pygobject/Makefile.am A bindings/pygobject/gi/__init__.py A bindings/pygobject/gi/overrides/IBus.py A bindings/pygobject/gi/overrides/__init__.py A bindings/pygobject/test-override-ibus.py M configure.ac commit dd6acfa5013b35b61aeb4085eef7da63f581f2f8 Author: fujiwarat Date: 2012-11-22 15:07:12 +0900 Remove gnome-icon-theme-legacy dependency. gtk_image_set_from_icon_name() accesses the icon_name only but gtk_image_set_from_stock() can fallback the stock name to the real name. E.g. "gtk-about.png" is the symlink of "help-about.png" and "gtk-about.png" is included in gnome-icon-theme-legacy package in Fedora. Review URL: https://codereview.appspot.com/6846058 M setup/engineabout.py M setup/enginecombobox.py M setup/enginetreeview.py M setup/icon.py M ui/gtk3/iconwidget.vala M ui/gtk3/panel.vala M ui/gtk3/property.vala M ui/gtk3/switcher.vala commit 11a83ef32c7c73f0feb48fd36cc9f33abaa8024a Author: fujiwarat Date: 2012-11-19 11:58:35 +0900 Add cedilla_compose_seqs table for pt_BR compose keys. Review URL: https://codereview.appspot.com/6814119 M engine/main.vala M src/ibusengine.h M src/ibusenginesimple.h commit e129cf261f18935f073ce083169c7168bc60ff06 Author: fujiwarat Date: 2012-11-15 16:58:06 +0900 Change the default icon to ibus-keyboard due to gnome ibus integration. Review URL: https://codereview.appspot.com/6851051 M configure.ac commit 15f3ccb38474c6bb206a2158d86171c93d6ec6a5 Author: fujiwarat Date: 2012-11-13 12:05:07 +0900 Update simple.xml to enable layout_variant tag. Review URL: https://codereview.appspot.com/6820129 M engine/simple.xml.in.in commit dce22003c388a7274dc148161cf0e02f44d29ad6 Author: fujiwarat Date: 2012-11-09 10:26:23 +0900 Disable IME switcher window when switcher-delay-time is less than 0 Review URL: https://codereview.appspot.com/6818102 M data/ibus.schemas.in M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 2ad1813370111608491e22e444bffe3607519652 Author: Daiki Ueno Date: 2012-11-06 17:31:55 +0900 gtk3: use different prev/next icons depending on orientation Use rotated icons for prev/next buttons on lookup table. BUG=none Review URL: https://codereview.appspot.com/6815080 M ui/gtk3/candidatearea.vala commit ebfb9ae7fe2af60f9c2b1c1bd56739316c01d097 Author: Peng Huang Date: 2012-11-05 09:24:15 -0500 Fix some build warnings. BUG=None Review URL: https://codereview.appspot.com/6775097 M bus/dbusimpl.c M tools/main.vala M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/keybindingmanager.vala commit 4b044a05047dc897c8556f7c8856c53f6f4ea266 Author: fujiwarat Date: 2012-11-05 14:28:02 +0900 Add some milliseconds interval before IME switcher is shown. Review URL: https://codereview.appspot.com/6826045 M data/ibus.schemas.in M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 1e6c42fa4fb42513ee9ae03b8534bce99dc02d73 Author: Daiki Ueno Date: 2012-10-26 16:56:34 +0900 ibus-daemon: use GFileMonitor instead of polling BUG=Issue#1514 Review URL: https://codereview.appspot.com/6589065 M bus/global.c M bus/global.h M bus/ibusimpl.c M bus/main.c M bus/registry.c M bus/registry.h M bus/server.c M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusobservedpath.c M src/ibusobservedpath.h commit 16295679bd6f74e5884e5872c524374945c40a05 Author: Daiki Ueno Date: 2012-10-23 13:35:24 +0900 ibus-daemon: ignore standard component path if IBUS_COMPONENT_PATH is set Don't load components from /usr/share/ibus/components if IBUS_COMPONENT_PATH is set. Currently the envvar is only useful for testing and appending the standard path makes little sense. BUG=none Review URL: https://codereview.appspot.com/6753044 M bus/registry.c commit cf5de7501e28fe929ff86d9b1d7689e15bc1cc4a Author: fujiwarat Date: 2012-10-20 11:45:05 +0900 Add version property in IBusEngineDesc. BUG=http://code.google.com/p/ibus/issues/detail?id=1524 TEST=Manually Review URL: https://codereview.appspot.com/6736043 M ibus/enginedesc.py M src/ibusenginedesc.c M src/ibusenginedesc.h commit afdb7f6c33fda44c2ad4054b7c23523d59218f47 Author: fujiwarat Date: 2012-10-16 10:28:26 +0900 Add layout_variant and layout_option in IBusEngineDesc for XKB. TEST=Manually Review URL: https://codereview.appspot.com/6586075 M ibus/enginedesc.py M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibusserializable.h M tools/main.vala M ui/gtk3/panel.vala commit f9059d696390c01564a196dd4a5b2cd39ef6d7ac Author: fujiwarat Date: 2012-10-15 11:45:30 +0900 Fix fallback 'C' locale in ibus-setup. BUG=RH#863673 TEST=Manually Review URL: https://codereview.appspot.com/6649043 M setup/main.py commit 41c5f3d13c306a9d3e7fe969df4c50eeaddb4c0a Author: fujiwarat Date: 2012-10-15 11:39:42 +0900 Fix a typo. TEST=Manually Review URL: https://codereview.appspot.com/6651061 M bus/engineproxy.c M setup/main.py commit ead48c8748521537beb0fbbe4af95c6b9a99a8af Author: fujiwarat Date: 2012-10-12 11:31:35 +0900 Fix typo in data/dconf/profile/ibus http://git.gnome.org/browse/gdm/commit/?id=aa25b559c6e907485cc9e I copied the typo by mitake. dconf_engine_source_new() supports "user-db" or "system-db". http://git.gnome.org/browse/dconf/tree/engine/dconf-engine-source.c#n75 TEST=Manually Review URL: https://codereview.appspot.com/6640058 M data/dconf/profile/ibus commit 469438987c6aa3b87aa215648d55a7c5e0e01451 Author: fujiwarat Date: 2012-10-08 13:00:21 +0900 Fix make dist in the latet doc build. TEST=Manually Review URL: https://codereview.appspot.com/6615051 M docs/reference/ibus/Makefile.am commit af3da0f1f0441615db89116c7a4ae065afa210ca Author: Peng Huang Date: 2012-10-05 12:21:05 -0400 Fix wrong return from key snooper. BUG=None Review URL: https://codereview.appspot.com/6623048 M client/gtk2/ibusimcontext.c commit c66a26a0e5b6909c0726ed46f0e7c3651fc38b3e Author: Daiki Ueno Date: 2012-10-05 09:50:38 +0900 tests: set LC_ALL to C instead of en_US.Utf-8 If LC_* is not "C" and there is no translation found in the current locale, gettext honors the LANGUAGE envvar. BUG=Issue#1515 Review URL: https://codereview.appspot.com/6592074 M src/tests/ibus-util.c commit e97056e15badac9c0578a89d0085bfcb57ff7a2e Author: fujiwarat Date: 2012-10-03 11:48:20 +0900 Fix SIGABRT by finalized IBusIMContext during _request_surrounding_text BUG=RH#859879 TEST=Manually Review URL: https://codereview.appspot.com/6573051 M client/gtk2/ibusimcontext.c commit a541503e53616e4fddda59986023e7c20a198d56 Author: Peng Huang Date: 2012-09-28 10:11:01 -0400 Fix wrong size of switcher window after removing some engines. BUG=None Review URL: https://codereview.appspot.com/6560060 M ui/gtk3/switcher.vala commit defa8ee66d4a1a780bad0e6799ed0bb166d69eba Author: fujiwarat Date: 2012-09-27 10:11:34 +0900 Fix IBus.Bus.get_config is null. Now im-ibus.so uses ibus_bus_new_async() instead of ibus_bus_new() and then if ibus-setup-anthy calls GTK+ UI before ibus_bus_new(), the async function is called instead and the delay is happened with the latest ibus 1.5. The fix is to call ibus_bus_new() before GTK+. BUG=RH#859585 TEST=Manually Review URL: https://codereview.appspot.com/6566053 M setup/main.py commit 1f66434b9cea881de0f14de105763dc650351aea Author: fujiwarat Date: 2012-09-26 10:16:32 +0900 Fix a docs build error with the latest libxslt-1.1.27. TEST=manually Review URL: https://codereview.appspot.com/6570048 M docs/reference/ibus/ibus-docs.sgml.in M src/ibusobservedpath.h M src/ibusproperty.h commit b4fb74727f39697ce94c2c8a37f46044f357e17e Author: fujiwarat Date: 2012-09-17 12:12:15 +0900 Fix SIGABRT in bus_panel_proxy_register_properties TEST=Manually Review URL: https://codereview.appspot.com/6499112 M bus/engineproxy.c commit ea36002109cfaba8e78265a4398c17a1114fd3fe Author: fujiwarat Date: 2012-09-17 12:09:31 +0900 Fix make dist. TEST=Manually Review URL: https://codereview.appspot.com/6492121 M po/POTFILES.skip M src/tests/Makefile.am commit 75826b04b90f78e5c1cb94bfd429b5fc88c1de67 Author: fujiwarat Date: 2012-09-14 11:24:30 +0900 Add IBusProperty.symbol for the short label. IBusProperty.label had been shared between the panel menu label and language-bar button label so the label is too short against the panel menu. Now we redefines IBusProperty.label as the long label and the new IBusProperty.symbol is defined as the short label for the language-bar and the panel status icon. TEST=Manually Review URL: https://codereview.appspot.com/6495117 M ibus/property.py M src/ibusproperty.c M src/ibusproperty.h commit 7ab4c75aa8fb180ff7e26b60561753701581b90a Author: Daiki Ueno Date: 2012-09-12 10:06:57 +0900 ibus-daemon: trigger engine to send RegisterProperties when panel appears BUG=none Review URL: https://codereview.appspot.com/6506094 M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c commit 8166b0b98bfe0d70c03fa26bb5e721a357ad4ef8 Author: Peng Huang Date: 2012-09-11 11:21:58 -0400 Use gdk_threads_add_idle_full() in gtkimmodule to avoid race condition in some multi-threaded apps. BUG=http://code.google.com/p/ibus/issues/detail?id=1505 Review URL: https://codereview.appspot.com/6488104 M client/gtk2/ibusimcontext.c commit b1bd749c0030d1822bb3b3dd096d071cc697d81e Author: Daiki Ueno Date: 2012-09-07 11:55:09 +0900 Prevent IME menu being empty when focus out Previously ibus-daemon did not make fake_context focused when focus-out, while it is supposed to do. BUG=none Review URL: https://codereview.appspot.com/6492086 M bus/ibusimpl.c commit 0ec6166efe8f74bf8e2c3a447cfd05700c23423d Author: Daiki Ueno Date: 2012-09-06 11:06:35 +0900 gtk3: Call XIGrabKeycode directly from Vala Port the logic of grabkeycode.c into Vala. This will make it easier to implement XI2 GenericEvent handling in KeybindingManager. BUG=none Review URL: https://codereview.appspot.com/6501080 M bindings/vala/Makefile.am A bindings/vala/xi.vapi M ui/gtk3/Makefile.am D ui/gtk3/grabkeycode.c M ui/gtk3/keybindingmanager.vala commit 489941fa3385b476a8c2daffe8d1805004349e04 Author: Daiki Ueno Date: 2012-09-03 12:53:18 +0900 Cleanup the vala code of gtk3 panel and tool by: - using config.vapi - omitting unnecessary "using X" Also localize ibus tool and make the argument handling better. BUG=none Review URL: https://codereview.appspot.com/6496066 M bindings/vala/Makefile.am A bindings/vala/config.vapi M tools/Makefile.am M tools/main.vala M ui/gtk3/Makefile.am M ui/gtk3/application.vala M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/handle.vala M ui/gtk3/iconwidget.vala M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/pango.vala M ui/gtk3/property.vala M ui/gtk3/separator.vala M ui/gtk3/switcher.vala commit 1961c2b2fc012988b0d7663c79787ab5b739c7b4 Author: Daiki Ueno Date: 2012-08-24 23:13:41 +0900 tests: fix "make check" with dash /bin/dash does not support ERR trap signal and ">&" redirect. Also fix copying non-existing component file. BUG=none Review URL: https://codereview.appspot.com/6478058 M src/tests/setupenv commit 738582c0cc4ef54e828209ba2c5d010e9a292679 Author: Daiki Ueno Date: 2012-08-24 21:52:06 +0900 Fix the last commit. Forgot to git add ibus-engine-switch.c. Review URL: https://codereview.appspot.com/6480052 A src/tests/ibus-engine-switch.c commit 69970b68c025a04f6ac557f8b196f2d5d3fe858e Author: Daiki Ueno Date: 2012-08-24 21:48:56 +0900 tests: add engine-switch test Moved engine specific test from ibus-bus.c to a separate file, so that it can be conditionally built depending on --enable-engine. Also do not register duplicate engine when loading component files. This is for the case when two engine descs with the same name are in different directories in IBUS_COMPONENT_PATH. BUG=none Review URL: https://codereview.appspot.com/6480052 M bus/registry.c M src/tests/Makefile.am M src/tests/ibus-bus.c commit 6bd9e0d2d49205fda366b20b18c7b20636993776 Author: fujiwarat Date: 2012-08-20 10:14:01 +0900 Fix to load the system gvdb with $DCONF_PROFILE in dconf 0.13.4 BUG=RH#844580 TEST=Manually Review URL: https://codereview.appspot.com/6446145 M conf/dconf/main.c M data/dconf/profile/ibus commit 2e81378f2251b2e5affd01b874fb0b59abd99240 Author: Daiki Ueno Date: 2012-08-20 10:00:17 +0900 engine: delay D-Bus name request after factory creation BUG=none Review URL: https://codereview.appspot.com/6441157 M engine/main.vala M src/tests/ibus-bus.c commit dd6a55663040eb34486d737cb62d9aa93f789c82 Author: Peng Huang Date: 2012-08-16 15:26:39 -0400 Do not use deprecated glib function g_atexit(). BUG=http://code.google.com/p/ibus/issues/detail?id=1489 Review URL: https://codereview.appspot.com/6454158 M client/x11/main.c commit 72ecfb351a1fe56cd23f9dc1db0a1c56ce7e65d3 Author: Daiki Ueno Date: 2012-08-09 10:58:47 +0900 Fix testcase failure when IBus is not installed. BUG=none Review URL: https://codereview.appspot.com/6455068 M bus/registry.c M src/tests/Makefile.am M src/tests/ibus-inputcontext.c A src/tests/setupenv commit bed48104cc27c4820b956f62cb853abadf8801a4 Author: Daiki Ueno Date: 2012-08-08 12:33:15 +0900 conf: always build ibus-memconf for testing BUG=none Review URL: https://codereview.appspot.com/6457087 M conf/Makefile.am M conf/memconf/Makefile.am commit bd4e87f39069331791da09649eb7bf1e675cfefa Author: Daiki Ueno Date: 2012-08-08 12:24:12 +0900 conf: cleanup GError usage - there are missing g_error_free - some code assume error != NULL when setting *error - src/tests/ibus-config.c has unconditional "unset" but it checks the return value BUG=none Review URL: https://codereview.appspot.com/6449103 M conf/dconf/config.c M conf/gconf/config.c M conf/gconf/main.c M conf/memconf/config.c M src/tests/ibus-config.c commit 644caf4add148deff0f697d2f48409145e414751 Author: Daiki Ueno Date: 2012-08-03 11:34:08 +0900 Set proper error code when config daemon is not running. BUG=none Review URL: https://codereview.appspot.com/6453076 M src/ibusconfig.c M src/ibustypes.h commit c013bbe9ac06c3418ca4d55c0302bcfb13d2977c Author: Daiki Ueno Date: 2012-08-01 10:26:48 +0900 Fix double-unref when looping over attachment. BUG=none Review URL: https://codereview.appspot.com/6445057 M src/ibusserializable.c commit a454448111650c3e92fc9ba65c26a57adc9c3c6c Author: fujiwarat Date: 2012-07-19 09:57:01 +0900 Support dconf 0.13.4 TEST=Manually Review URL: https://codereview.appspot.com/6426044 M conf/dconf/Makefile.am A conf/dconf/config-private.h M conf/dconf/config.c D conf/dconf/config.h M conf/dconf/main.c M configure.ac commit f453bf83f502d8b1e2b6f07cf669c14cbcfe008e Author: Peng Huang Date: 2012-07-12 16:41:30 -0400 IBusBus: honor new connect-async prop in the socket monitor callback I think we should make use of the async connection here if the property is set. But we also need a new flag for ongoing async connection attempts because the socket monitor callback may be called several times before the connection is established. BUG=http://code.google.com/p/ibus/issues/detail?id=1482 TEST= Review URL: https://codereview.appspot.com/6346090 M src/ibusbus.c commit 636dda476734869c0e1fbf4d0464779a4c6fe667 Author: Rui Matos Date: 2012-07-12 11:11:23 -0400 bus: Own a name on the DBus session bus This makes it easier for third parties to track the ibus-daemon life cycle. BUG=http://code.google.com/p/ibus/issues/detail?id=1476 TEST= Review URL: https://codereview.appspot.com/6374058 Patch from Rui Matos . M bus/server.c commit 22ebca106794af153c01eae7e0175eb9f1a27648 Author: Peng Huang Date: 2012-06-08 10:28:33 -0400 Fix issue - keybinding with Super, Hyper and Meta Modifiers does not work. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/6302047 M ui/gtk3/grabkeycode.c M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala commit 1ed8daa432f3fd922f26dac396f9cec1ad228f14 Author: Peng Huang Date: 2012-06-08 10:12:54 -0400 Refine IME switch keybinding related code. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/6295047 M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit d4f7a90936960ba3618cb621766e993951ed20de Author: Peng Huang Date: 2012-06-05 09:59:06 -0400 Use IM icon in switcher dialog. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/6274044 M ui/gtk3/Makefile.am M ui/gtk3/switcher.vala commit 39522cfd9ffdcf7fce1b73e8228d271828dfe55f Author: fujiwarat Date: 2012-05-31 11:45:15 +0900 Enhance ibus-ui-gtk3 switcher labels. TEST=Linux desktop Review URL: https://codereview.appspot.com/5956045 M ui/gtk3/switcher.vala commit c3688a9849e588e17db825dc24e6dde86d61a77a Author: fujiwarat Date: 2012-05-31 11:38:40 +0900 Fix a SEGV when close the shortcutkey dialog and update mnemonic. TEST=Manually Review URL: https://codereview.appspot.com/6256068 M setup/keyboardshortcut.py commit 1fc1dc476ddc65e55fa2834c13b42bdb5880d52d Author: Peng Huang Date: 2012-05-30 11:38:40 -0400 Change engines order when global_engine is changed. BUG=http://code.google.com/p/ibus/issues/detail?id=1464 TEST=Manually Review URL: https://codereview.appspot.com/6249064 M ui/gtk3/panel.vala commit 095e8232b871738ff2d22f33e70c4b1199ea6b4f Author: Peng Huang Date: 2012-05-30 07:42:51 -0400 Update setup ui file to gtk 3.0 and remove a debug print. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/6244057 M setup/enginecombobox.py M setup/setup.ui commit 82e628c3cb911e078cfe95a226ddb88cf75b1257 Author: Daiki Ueno Date: 2012-05-28 10:59:22 +0900 dconf: don't regenerate 00-upstream-settings after intltool-merge BUG=https://codereview.appspot.com/6215062/#msg10 TEST=manually with make distcheck Review URL: https://codereview.appspot.com/6245050 M data/dconf/Makefile.am commit 83397c256ff39da5c03cc9bdf935883046083f8f Author: Peng Huang Date: 2012-05-27 21:45:58 -0400 Refine inline document of ibus_engine_update_preedit_text_with_mode() BUG=http://code.google.com/p/ibus/issues/detail?id=1045 TEST=None Review URL: https://codereview.appspot.com/6249058 M src/ibusengine.h commit b745ea21b1ed6cbcec6614f957d1bd9c731f88c2 Author: Daiki Ueno Date: 2012-05-23 09:55:38 +0900 gtk3: don't show "missing" icon for each submenu BUG=none TEST=manually Review URL: https://codereview.appspot.com/6211072 M ui/gtk3/property.vala commit 4bee2863e8d2e51b185b6d149e6259848d8c0cb6 Author: Daiki Ueno Date: 2012-05-20 15:01:01 +0900 dconf: use text-based key file and dconf update BUG=none TEST=manually Review URL: https://codereview.appspot.com/6215062 M data/dconf/Makefile.am M data/dconf/make-dconf-override-db.sh commit 32533c72be144e0a26902e11ed0b967208a17317 Author: Peng Huang Date: 2012-05-17 11:08:14 -0400 Don't not set orientation when hide lookup table to improve UI performance. BUG=http://code.google.com/p/ibus/issues/detail?id=1461 TEST=manually Review URL: https://codereview.appspot.com/6203085 M ui/gtk3/candidatepanel.vala commit 6422f056a7e5946c59f105aabfc1bc724d13fc5a Author: Daiki Ueno Date: 2012-05-16 16:23:55 +0900 Improved the language of a couple of dialogs. Also update all po files. BUG=https://github.com/ibus/ibus/pull/4 TEST=manually Review URL: https://codereview.appspot.com/6212048 M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/en_GB.po M po/es.po M po/fa.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/lv.po M po/ml.po M po/mr.po M po/nl.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/tg.po M po/uk.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/main.py commit 1fbf1695a873e8deb80c032d467aaaa806ee6c4d Author: Jason Conti Date: 2012-05-14 13:55:30 -0400 Fix IBusBus gobject introspection by connecting in the constructor. BUG=http://code.google.com/p/ibus/issues/detail?id=1452 TEST=Manually Review URL: https://codereview.appspot.com/6210055 Patch from Jason Conti . M src/ibusbus.c commit 99cbfbdd6f6e5ebd570d2a4b983ea3561980f7a3 Author: Kim, Seung Won Date: 2012-05-09 10:05:59 -0400 Fix a typo. BUG=None TEST=None Review URL: https://codereview.appspot.com/6188057 Patch from Kim, Seung Won . M src/ibusbus.c commit bbbdd2efb005b77282311d8dd1536ed6a2bf32ac Author: Jason Conti Date: 2012-05-09 09:29:30 -0400 Add tests for ibus_bus_new_async BUG=http://code.google.com/p/ibus/issues/detail?id=1452 Review URL: https://codereview.appspot.com/6200055 Patch from Jason Conti . M src/tests/ibus-bus.c commit 7ca7db00f8d8feb5d68873089ac3418c795a0c15 Author: Jason Conti Date: 2012-05-08 15:42:38 -0400 Use ibus_bus_new_async in gtk2 client. BUG=http://code.google.com/p/ibus/issues/detail?id=1452 TEST=Manually Review URL: https://codereview.appspot.com/6198052 Patch from Jason Conti . M client/gtk2/ibusimcontext.c commit a78a254715fb410d4c2f7fd274894e51d74bc9bb Author: Jason Conti Date: 2012-05-08 14:01:57 -0400 Add function ibus_bus_new_async to create a new IBusBus object and asynchronously connect to the IBus daemon. BUG=http://code.google.com/p/ibus/issues/detail?id=1452 TEST=Manually Review URL: https://codereview.appspot.com/6159047 Patch from Jason Conti . M src/ibusbus.c M src/ibusbus.h commit e9f682d4c6bf90ba8c40e2920d24d7bbba449e8f Author: fujiwarat Date: 2012-05-08 10:44:36 +0900 Fix GtkBuilder bindtextdomain in ibus-setup. The patch was provided by Akio Obata BUG=http://code.google.com/p/ibus/issues/detail?id=1453 TEST=Linux desktop Review URL: https://codereview.appspot.com/6203045 M ui/gtk2/i18n.py commit c333b7604437d10b30e8e33ef18c276c11119394 Author: fujiwarat Date: 2012-04-27 11:42:00 +0900 Fix some test codes. BUG=http://code.google.com/p/ibus/issues/detail?id=1438 TEST=Linux desktop Review URL: https://codereview.appspot.com/6121053 M bus/test-client.c M bus/test-stress.c commit d0df8d3a62fd156029fb1422cd786d3f351b17fe Author: fujiwarat Date: 2012-04-27 11:27:03 +0900 Enable to fall back /etc/machine-id http://cgit.freedesktop.org/dbus/dbus/commit/dbus/dbus-sysdeps-unix.c?id=66e52541d5bdd4927a5c702963749760643313f4 BUG=http://code.google.com/p/ibus/issues/detail?id=1389 TEST=Linux desktop Review URL: https://codereview.appspot.com/6111060 M src/ibusshare.c commit b8fe4d782db37385246f651493f9d935dd58c301 Author: Daiki Ueno Date: 2012-04-18 10:37:07 +0900 Fix make check. The make variable TESTS is reserved by automake: https://www.gnu.org/software/automake/manual/automake.html#index-TESTS-832 and thus it causes error when make check: make[4]: Entering directory `/home/ueno/devel/ibus/src' /bin/sh: line 9: ./tests: Is a directory FAIL: tests BUG=none TEST=manually Review URL: https://codereview.appspot.com/6056043 M src/Makefile.am commit f2e266da9e60bc5318ea98ad40c8f83a8bb06026 Author: fujiwarat Date: 2012-04-17 10:25:58 +0900 Add options to disable to build UI and engines. TEST=Linux desktop Review URL: https://codereview.appspot.com/6031059 M Makefile.am M configure.ac commit 75df361698c7be58e33993784f2d6b9b0957fd44 Author: fujiwarat Date: 2012-04-16 10:19:57 +0900 Fix the order of arguments in NameOwnerChanged BUG=RH#799571 TEST=Linux desktop Review URL: https://codereview.appspot.com/6022044 M ui/gtk3/application.vala commit 6c5e5d09cb13989e21c7d533e9c0332feb3f0208 Author: fujiwarat Date: 2012-04-10 11:31:49 +0900 Ignore mouse masks in ui/gtk3/keybindingmanager for accessibility. TEST=Linux desktop Review URL: https://codereview.appspot.com/5975069 M ui/gtk3/keybindingmanager.vala commit 991eebc31aa605fbce03edda6eaecfd06c2fcb1b Author: fujiwarat Date: 2012-04-06 12:11:35 +0900 Fix ibus-x11 SEGV in _process_key_event_done. IMForwardEvent() calls _Xi18nFindClient() and it could return NULL. Maybe the connect_id would be disconnected during the async process_key_event. This fix checks XIM_DISCONNECT in ims_protocol_handler() to cancel IMForwardEvent() in _process_key_event_done(). BUG=RH#769135 TEST=Linux desktop Review URL: https://codereview.appspot.com/5498090 M client/x11/main.c commit b620e0bcda97934d6927b7cdde300598ac5de45f Author: fujiwarat Date: 2012-04-05 10:44:26 +0900 Fix ibus-setup SEGV on C locale. TEST=Linux desktop Review URL: https://codereview.appspot.com/5976076 M setup/enginecombobox.py commit 6ec73515cb040be531107b70705659a2668f0965 Author: Yusuke Sato Date: 2012-04-03 18:31:47 +0900 Fix typo in ibusfactory.c. BUG=None TEST=None Review URL: https://codereview.appspot.com/5969068 M src/ibusfactory.c commit ceaeb86d9b7c5d8674151c863551564a15c0924f Author: fujiwarat Date: 2012-03-23 11:40:29 +0900 Enable bindtextdomain in ibus-ui-gtk3. TEST=Linux desktop Review URL: https://codereview.appspot.com/5876049 M configure.ac M ui/gtk3/Makefile.am M ui/gtk3/application.vala commit b8c12964e9d14b8a15ef55b2f9ae23bf1592d6ee Author: fujiwarat Date: 2012-03-23 11:25:28 +0900 Add --help in ibus tool. TEST=Linux desktop Review URL: https://codereview.appspot.com/5868046 M tools/Makefile.am M tools/main.vala commit 99f6b739f3dd9d7448c5e546da1195a901881752 Author: fujiwarat Date: 2012-03-20 14:25:56 +0900 Set the custom font in ui.gtk3.CandidatePanel. BUG=RH#803250 TEST=Linux desktop Review URL: https://codereview.appspot.com/5845047 M ui/gtk3/panel.vala commit 942718e3a3177c33be2b04cf526c20be4ed227f6 Author: fujiwarat Date: 2012-03-19 16:20:55 +0900 Show language id on ibus-ui-gtk3.switcher window. BUG=RH#803177 TEST=Linux desktop Review URL: https://codereview.appspot.com/5843059 M ui/gtk3/switcher.vala commit 69902696928e6acb953ab30b1f70e462b5994272 Author: Daiki Ueno Date: 2012-03-15 14:42:43 +0900 ibus-daemon: make sure to focus out engine when unset. BUG=none TEST=manual Review URL: https://codereview.appspot.com/5824046 M bus/inputcontext.c commit 865488566851107a69c315ad7d1cf01496c5e019 Author: Daiki Ueno Date: 2012-03-15 13:21:08 +0900 gtk3: show language name on the IME menu. BUG=https://bugzilla.redhat.com/show_bug.cgi?id=803177 TEST=manual Review URL: https://codereview.appspot.com/5819049 M src/ibusutil.c M ui/gtk3/panel.vala commit ace5cdedf80608fb3524e643195c608543cf7a09 Author: Daiki Ueno Date: 2012-03-14 11:07:47 +0900 gtk3: honor lookup table labels and orientation BUG=none TEST=manual Review URL: https://codereview.appspot.com/5798074 M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala commit e38ff0fd94ae653eb0a39dde00712f809ef92654 Author: Peng Huang Date: 2012-03-13 12:02:15 -0400 libibus: Fix a refcount issue in ibus_prop_list_deserialize() BUG=None TEST=Linux desktop Review URL: https://codereview.appspot.com/5796079 M src/ibusproplist.c commit 3179c4fa298a89d2902842ccd30f475e012157b3 Author: fujiwarat Date: 2012-03-12 10:29:23 +0900 Fix to ungrab ui/gtk3/switcher for GTK 3.3.18 and GLib 2.31.20 BUG=RH#800897 TEST=Linux desktop Review URL: https://codereview.appspot.com/5795048 M ui/gtk3/switcher.vala commit af87f5ee161f1cfeab85cd0e19e8c77f6b89ee76 Author: Peng Huang Date: 2012-03-07 00:41:14 -0500 Remove some unused code. BUG=None TEST=Make Review URL: https://codereview.appspot.com/5756061 M bus/ibusimpl.c M client/x11/gdk-private.c M src/ibuscomponent.c M src/ibusconfigservice.c M src/ibusshare.c commit c1b7d86c3fc12274a569d0227877a53819927f25 Author: Peng Huang Date: 2012-03-07 00:40:47 -0500 Refine coding style. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/5753058 M ui/gtk3/handle.vala commit 24ea6f7077c4f44be5fca392160d44c73f03133a Author: Peng Huang Date: 2012-03-07 00:39:17 -0500 Shrink the IME switcher window size if necessary. BUG=None TEST=Manually Review URL: https://codereview.appspot.com/5753056 M ui/gtk3/switcher.vala commit bef66b7ce2344dd0a4c72a6738e99a05ca2d9e56 Author: Daiki Ueno Date: 2012-03-06 10:03:25 +0900 Restrict config notification to panel. BUG=none TEST=manual Review URL: https://codereview.appspot.com/5729064 M ui/gtk3/panel.vala commit f1c010f6b5a56e21b78e5ea97aea263b95d7e540 Author: fujiwarat Date: 2012-03-05 13:25:53 +0900 Fix python library to load libibus.so.Y TEST=Linux desktop Review URL: https://codereview.appspot.com/5731060 M ibus/_config.py.in M ibus/common.py M ui/gtk3/Makefile.am commit e786c06a6676c46dff74c2fcdd81948226625a42 Author: fujiwarat Date: 2012-03-05 10:19:05 +0900 Enhance make dist TEST=Linux desktop Review URL: https://codereview.appspot.com/5730046 M Makefile.am M autogen.sh M bus/Makefile.am M configure.ac M po/POTFILES.in A po/POTFILES.skip M src/Makefile.am M ui/gtk3/Makefile.am commit b7fb2107ca35662a92fe6b4964cade367a07c4c1 Author: fujiwarat Date: 2012-03-05 10:14:07 +0900 Revert Gdk.DeviceManager.list_devices to work with vala 0.15 Fixed a build error in ui/gtk3 with vala 0.15 TEST=Linux desktop Review URL: https://codereview.appspot.com/5720068 M ui/gtk3/switcher.vala commit f1c82fbc0681b471056b74f51b1fda71fc210e78 Author: Daiki Ueno Date: 2012-03-02 15:58:36 +0900 ibus-setup: improve ibus-daemon auto start Instead of repeatedly launch the daemon and wait, start it once and wait for IBusBus::connected signal for 5 seconds. BUG=none TEST=manually on Fedora 17 Review URL: https://codereview.appspot.com/5716045 M setup/main.py commit e2191142be323934b1c2dafc16736ff9999541f7 Author: fujiwarat Date: 2012-03-02 11:18:38 +0900 Change LT_VERSION_INFO so that SONAME is changed for ibus 1.5. TEST=Linux desktop Review URL: https://codereview.appspot.com/5707059 M configure.ac commit 07ec3b4c930445731708c2006a65dda11acfcc78 Author: Daiki Ueno Date: 2012-03-02 10:27:47 +0900 ibus-setup: minor typo fixes of GI enum names BUG=none TEST=manual Review URL: https://codereview.appspot.com/5710049 M setup/enginetreeview.py M setup/main.py commit 0c044387fe874fe403c27a50792c2c3720665bbe Author: fujiwarat Date: 2012-03-01 12:09:07 +0900 Fix build errors in ui/gtk3 with vala-0.15.1 and gtk3-3.3.14 TEST=Linux desktop Review URL: https://codereview.appspot.com/5704053 M ui/gtk3/candidatepanel.vala M ui/gtk3/handle.vala commit 991166db3bbcaf8c76569a368dcaaf4dd7c263d8 Author: fujiwarat Date: 2012-03-01 11:55:48 +0900 Fix no gconf engines_order and the engine setup button on ibus-setup. TEST=Linux desktop Review URL: https://codereview.appspot.com/5702057 M data/ibus.schemas.in M setup/main.py commit 25d05c609e0500dd2d51e946c672bc051a30972a Author: fujiwarat Date: 2012-03-01 11:38:15 +0900 Fix to launch ibus-setup without running ibus-daemon. BUG=RH#796070 TEST=Linux desktop Review URL: https://codereview.appspot.com/5704054 M setup/main.py commit 5af76e815d4680b16d297eb66bd3b5486a501802 Author: fujiwarat Date: 2012-03-01 11:33:52 +0900 Fix page_up and page_down signals in ibus-ui-gtk3 BUG=RH#796555 TEST=Linux desktop Review URL: https://codereview.appspot.com/5705050 M ui/gtk3/panel.vala commit d91bdc01d58629f65d6be01665f54767b1bd7f0e Author: Daiki Ueno Date: 2012-03-01 10:50:37 +0900 Simplify ibus_config_watch tests using fixtures. BUG=none TEST=manual Review URL: https://codereview.appspot.com/5702058 M src/tests/Makefile.am M src/tests/ibus-config.c commit 57846a1016a395f06e9b8fe8db1c537f791a6018 Author: Daiki Ueno Date: 2012-02-29 17:00:32 +0900 Add ibus_config_watch/unwatch. Currently IBusConfig proxy is notified every config value change. e.g. ibus-m17n will get notified even when ibus-anthy's config values are changed. With this patch, IBusConfig proxy will be able to restrict notification by calling ibus_config_watch(). For example, after: ibus_config_watch (config, "engine/M17N/hi/inscript", NULL); it will be notified value changes only under "engine/M17N/hi/inscript" section. BUG=none TEST=manually with modified ibus-m17n Review URL: https://codereview.appspot.com/5091045 M src/ibusbus.c M src/ibusconfig.c M src/ibusconfig.h M src/ibusinternal.h M src/tests/Makefile.am M src/tests/ibus-config.c commit 87863d575856768517f8f6bd8119eaea2b8e7c49 Author: fujiwarat Date: 2012-02-29 15:44:00 +0900 Fix to return false in ibus_simple_engine_process_key_event IM clients expect filter_keypress returns FALSE when IME is disabled. Now we use the simple engine instead of the disabled state so it would be better that process_key_event returns FALSE for ASCII. BUG=RH#769133 TEST=Linux desktop Review URL: https://codereview.appspot.com/5707057 M src/ibusenginesimple.c commit d050c5ba6c8a6546cb7855a3eff9a9c1f048b977 Author: Daiki Ueno Date: 2012-02-29 12:58:46 +0900 dconf: remove workaround for self-write notification. BUG=none TEST=manual Review URL: https://codereview.appspot.com/5709051 M conf/dconf/config.c commit 4fe94aee0d3099060433189f3457df3df6b89bea Author: Peng Huang Date: 2012-02-27 10:28:18 -0500 Remove redefinition of typedef IBusEngineSimplePrivate. BUG=None TEST=Make on Linux desktop Review URL: https://codereview.appspot.com/5699087 M src/ibusenginesimple.c commit 947ea295e8e9a75a4add59434677912e603bd6d0 Author: Peng Huang Date: 2012-02-27 09:57:47 -0500 Refine inline doc and test for ibus_bus_get_engines_by_names(). BUG=None TEST=Manually Review URL: https://codereview.appspot.com/5697067 M src/ibusbus.h M src/tests/ibus-bus.c commit 7d1df0e8aa0e630c6959061e1f49f296424982dd Author: Daiki Ueno Date: 2012-02-27 13:34:15 +0900 Fix build with vala 0.14.2. BUG=none TEST=manual Review URL: https://codereview.appspot.com/5697071 M ui/gtk3/switcher.vala commit 99e4d9d7af0bdeaf396bbd26cac949eca7cdfe1d Merge: 1b5b406 7975fa0 Author: Peng Huang Date: 2012-02-26 16:28:40 -0500 Merge remote-tracking branch 'origin/devel' TEST=Linux Desktop Review URL: https://codereview.appspot.com/5517048 commit 1b5b4067486212d5cf5d937d40eb18da6941acee Author: fujiwarat Date: 2012-02-23 12:07:44 +0900 Add ibus_unset_log_handler to remove the handler in ibus_set_log_handler TEST=Linux desktop Review URL: https://codereview.appspot.com/5690064 M src/ibusshare.c M src/ibusshare.h commit 7975fa01ae1cc1294b878681463e030fdd0de2bd Author: Peng Huang Date: 2012-01-31 10:40:40 -0500 ibus-engine-simple: Use icon ibus-keyboard for xkb layouts. M engine/gensimple.py M engine/simple.xml.in.in commit daf63a8db3293324245d918aec25f8c9ff58c359 Author: Peng Huang Date: 2012-01-27 10:18:59 -0500 vala: Fix vala binding M engine/main.vala commit 30d217ac85265a9913e2fdfd266b48c679882daa Author: Peng Huang Date: 2012-01-27 09:51:26 -0500 ibus-ui-gtk3: Add quit item in menu. M tools/main.vala M ui/gtk3/panel.vala commit ff9556cc215d7bf8319bea81e60ce22ea67566a9 Author: Peng Huang Date: 2012-01-24 12:15:40 -0500 ibus-ui-gtk3: Use longname in IME switch UI. M ui/gtk3/panel.vala commit 07f48ddfccaddad79dfd48b382b3e04f2705c09c Author: Peng Huang Date: 2012-01-24 12:15:13 -0500 libibus: Fix some reference issues. M src/ibusattrlist.c M src/ibusbus.c M src/ibusproplist.c commit c5721c6292dd9b23a425fc3bca01128e2d4bd382 Author: Peng Huang Date: 2012-01-23 14:21:42 -0500 libibus: add test case for ibus_bus_get_engines_by_names. M src/tests/ibus-bus.c commit 006f386313365154976134d9dfce4b4afe3d9b91 Author: Peng Huang Date: 2012-01-23 13:59:24 -0500 libibus: Fix annotation of ibus_bus_get_engines_by_names. M src/ibusbus.c M src/ibusbus.h commit 39422b6224ce511bd11093bf57af4b1bc163a181 Author: Peng Huang Date: 2012-01-23 13:27:59 -0500 ibus-ui-gtk2: Do not release gtk2 ui in tarball but keep them in repo. M configure.ac M ui/Makefile.am commit 9c6018bf91e4f288585c478ea566a0c7ec271a56 Author: Peng Huang Date: 2012-01-23 12:27:10 -0500 Fix review issues. M bus/Makefile.am M bus/component.c M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/global.c M bus/global.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h D bus/option.h M bus/panelproxy.c M bus/registry.c M bus/server.c M bus/test-client.c M bus/test-matchrule.c M configure.ac M src/gtkimcontextsimpleseqs.h M src/ibusenginesimple.c M src/ibuskeynames.c M src/ibuskeysyms-compat.h M src/ibuskeysyms.h M src/ibusutil.c M src/ibusxml.c commit f70cd8e334fed1020d0a03e8dc0f6bc2c50b23cb Author: Peng Huang Date: 2012-01-13 11:52:53 -0500 ibus-ui-gtk3: Disable panel when Panel name owership is lost. M ui/gtk3/application.vala M ui/gtk3/panel.vala commit 389ad09a6fff55652fd30159c1008018187e4d77 Author: Peng Huang Date: 2012-01-13 11:29:49 -0500 ibus-daemon: Fix a matchrule parse issue. M bus/matchrule.c M bus/test-matchrule.c commit 55a9300f49ea5b711dbbf78870f3d9d400e3b662 Author: Peng Huang Date: 2012-01-12 10:41:00 -0500 ibus-ui-gtk3: Fix hotkey issue when xkb -option ctrl:swapcap is using. M ui/gtk3/switcher.vala commit 3df2d9f52efe96a7d4d484860c81d2ed38a061f7 Author: Peng Huang Date: 2012-01-12 10:12:44 -0500 ibus-ui-gtk3: Hide the candidate window during starting up. M ui/gtk3/candidatepanel.vala M ui/gtk3/panel.vala commit a14ff9ea9e6168fd48071c45b8fbfdc5d1182b9a Author: Peng Huang Date: 2012-01-12 10:05:37 -0500 ibus-ui-gtk3: Fix a crash when config module is not ready. M ui/gtk3/panel.vala commit 1537971b607190eee248cf82020075ef6fecbc3c Author: Peng Huang Date: 2012-01-11 22:18:10 -0500 Rename xinput-ibus.in to xinput-ibus M Makefile.am M configure.ac A xinput-ibus D xinput-ibus.in commit ab6b68c2d273336ead3492954844ce244e15480a Author: Peng Huang Date: 2012-01-11 20:41:16 -0500 ibus-daemon: Move global variables into separated files. A bus/global.c A bus/global.h commit 05af2cf44375d560f7340151738d25ed156aa67a Author: Peng Huang Date: 2012-01-11 17:27:01 -0500 Do not create IBusInputContext in focus_in virtual function M ui/gtk3/panel.vala commit 3981f1e46d14b37012aaa138d1681f196c0cfebd Author: Peng Huang Date: 2012-01-11 17:26:44 -0500 Reenable test casues for ibus-daemon M bus/Makefile.am M bus/inputcontext.c M bus/main.c M bus/test-client.c M bus/test-matchrule.c M bus/test-stress.c commit 985dadc47c09460db4e812f9d2b539aefab34ac8 Author: Peng Huang Date: 2012-01-11 17:25:59 -0500 Fix match rule parsing bug. M bus/matchrule.c commit 6d6f93858b59948f747b9d42cd529e72d3db0deb Author: Peng Huang Date: 2012-01-11 11:20:36 -0500 Ignore some unused bits in modifiers M ui/gtk3/keybindingmanager.vala commit 0bbb10e9fbdd42eefdc731b6bb81589bbb6678d1 Author: Peng Huang Date: 2012-01-06 15:17:32 -0500 Refine ibus_get_language_name() test case M src/tests/ibus-util.c commit fccbddcc3553fde537ee61545f95487cd8a3f4b2 Author: Peng Huang Date: 2012-01-06 14:52:40 -0500 Remove some unused code and fix a focus issue M bus/ibusimpl.c M bus/inputcontext.c commit d7dbac12fd428ec55e36f8fa163729149cdb56b8 Author: Peng Huang Date: 2012-01-06 14:52:18 -0500 Create __languages_dict with g_hash_table_new_full M src/ibusutil.c commit 25a884b6afab4bc6ee3f97704608e352e4e1163a Author: Peng Huang Date: 2012-01-06 12:28:42 -0500 Fix a bug in simple.xml.in.in M engine/gensimple.py M engine/simple.xml.in.in commit f80d56d7599dd7f31ecba28d7c8d9df162006287 Author: Peng Huang Date: 2012-01-06 12:17:04 -0500 Move current language to the first place in the IME combobox M setup/enginecombobox.py commit 48276af4f487c0c27d5b1a0f6cf9224aa72e35b3 Author: Peng Huang Date: 2012-01-06 11:55:24 -0500 Fix a bug in ibus_get_language_name and add a unit test M setup/enginecombobox.py M src/ibusutil.c M src/tests/Makefile.am A src/tests/ibus-util.c commit c5421afdd1357f4599367b048be89818dc2630b3 Author: Peng Huang Date: 2012-01-06 11:07:15 -0500 Fix a build error M bus/ibusimpl.c commit 661bb47f98f82c8887b11d3ad1f6c7ac8e546f2c Author: Peng Huang Date: 2012-01-06 10:57:31 -0500 Remove some useless xkb layout M bus/ibusimpl.c M engine/gensimple.py M engine/simple.xml.in.in M ui/gtk3/panel.vala commit fc72d2f6b11595e38216fbffd1048e2ba07d524d Author: Peng Huang Date: 2012-01-05 17:34:30 -0500 refine code for reviewing M bus/Makefile.am M bus/ibusimpl.c M engine/gensimple.py commit 2872ba0f68bc960668eddabd00c39529235919d6 Author: Peng Huang Date: 2012-01-05 15:11:14 -0500 Execute ibus-setup in panel correctly M ui/gtk3/panel.vala commit 866efc43a4ae8a91956fe1d9d252eb5963d3170a Author: Peng Huang Date: 2012-01-05 14:59:35 -0500 WIP M configure.ac M engine/gensimple.py M src/ibusutil.c D ui/gtk3/gtkpanel.xml.in M ui/gtk3/panel.vala commit 369a7906fb980ba5d2b69d2ac0bffcc9951b83fe Author: Peng Huang Date: 2012-01-05 14:34:59 -0500 Escape some desc M engine/gensimple.py M engine/simple.xml.in.in commit 9a8ce1b1a97063aed41ac9bfdbf98721ed38cf20 Author: Peng Huang Date: 2012-01-05 14:27:58 -0500 Generate simple.xml.in.in from xkb layouts A engine/gensimple.py M engine/simple.xml.in.in commit 1cf24fbfd61a5fc7bd1286b34f60656015d2dba8 Author: Peng Huang Date: 2012-01-04 17:41:21 -0500 Deprecated ibus python library. M ibus/__init__.py commit 64f8274b599a4caa3e501e3a06cf8082db1d5475 Author: Peng Huang Date: 2012-01-04 17:08:03 -0500 WIP add gtkpanel.xml for gtk3 ui M configure.ac M ui/gtk3/Makefile.am A ui/gtk3/gtkpanel.xml.in A ui/gtk3/gtkpanel.xml.in.in commit a773bc6313763d828de015fcfd2b44ec10fb733b Author: Peng Huang Date: 2012-01-04 16:48:16 -0500 WIP Disable gtk2 ui in rpm spec file. M ibus.spec.in commit 7520633eac6a773c7b53bb51ccc062890811edbc Author: Peng Huang Date: 2012-01-04 16:02:20 -0500 WIP add --enable-python-library M Makefile.am M configure.ac M ui/Makefile.am M ui/gtk3/property.vala commit 3bb751415b4337ef2479ae7553afad3d883d7afe Author: Peng Huang Date: 2012-01-04 15:35:00 -0500 WIP IME and sys menus. M ui/gtk3/Makefile.am M ui/gtk3/panel.vala M ui/gtk3/property.vala commit 3b96fd09796b311699dad881737000b2ff503561 Author: Peng Huang Date: 2012-01-04 10:52:28 -0500 Add restart and exit commands in ibus tools M tools/ibus.bash M tools/main.vala commit 55492f4491972c0cbc1f082540f639b79484269e Author: Peng Huang Date: 2011-12-22 11:25:17 -0500 Make registered IME visible to panel. M bus/ibusimpl.c commit 96201f111217b064317606cc9adb67cc1dfe2535 Author: Peng Huang Date: 2011-12-19 16:18:40 -0500 Change IME icon on systray. M ui/gtk3/panel.vala commit ad17864ed34d00b65ae40ff69bd2c133addaebcf Author: Peng Huang Date: 2011-12-19 15:36:59 -0500 Delay showing switch popup window to avoid annonying. M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 303308e397f409e3c74be72eaf307efc2a7cb832 Author: Peng Huang Date: 2011-12-17 15:20:29 -0500 WIP move all conf components into conf dir M Makefile.am A conf/Makefile.am A conf/dconf/Makefile.am A conf/dconf/config.c A conf/dconf/config.h A conf/dconf/dconf.xml.in.in A conf/dconf/main.c A conf/gconf/Makefile.am A conf/gconf/config.c A conf/gconf/config.h A conf/gconf/gconf.xml.in.in A conf/gconf/main.c A conf/memconf/Makefile.am A conf/memconf/config.c A conf/memconf/config.h A conf/memconf/main.c A conf/memconf/memconf.xml.in.in M configure.ac D dconf/Makefile.am D dconf/config.c D dconf/config.h D dconf/dconf.xml.in.in D dconf/main.c D gconf/Makefile.am D gconf/config.c D gconf/config.h D gconf/gconf.xml.in.in D gconf/main.c D memconf/Makefile.am D memconf/config.c D memconf/config.h D memconf/main.c D memconf/memconf.xml.in.in commit 07c3d35786349db0f0b561e4ccb5051b71c8b0ed Author: Peng Huang Date: 2011-12-17 15:07:07 -0500 WIP fix gtk3 setup issues M setup/enginetreeview.py M setup/main.py commit e1d9ff1dbd0a5169dd685027c31f843ac1636f57 Author: Peng Huang Date: 2011-12-17 10:55:26 -0500 WIP fix some issues with gtk3 and gi M setup/enginetreeview.py M setup/icon.py M setup/keyboardshortcut.py M setup/main.py commit 9983fbfb473347669b058254c55537ce707f7c2a Author: Peng Huang Date: 2011-12-16 18:02:54 -0500 WIP port setup ui to gtk3 M setup/engineabout.py M setup/enginecombobox.py M setup/enginetreeview.py M setup/icon.py M setup/keyboardshortcut.py M setup/main.py M setup/setup.ui commit c2f197c6fc7626857a59f2d3a0fd7d889742a939 Author: Peng Huang Date: 2011-12-16 15:11:49 -0500 WIP port enginecombobox.py icon.py to gtk3 M setup/engineabout.py M setup/enginecombobox.py M setup/icon.py commit ee6d61921d92bc5657634d57c51d6efbbf0fd348 Author: Peng Huang Date: 2011-12-16 14:44:11 -0500 WIP port engineabout.py to gtk3 T setup/engineabout.py commit dcf309af71d23d8c3dd94ba0b009c5e2b39008cc Author: Peng Huang Date: 2011-12-16 14:10:51 -0500 Remove some unused module in py file M setup/main.py commit ba24671167c1b4b632771b3146448485489bbbf8 Author: Peng Huang Date: 2011-12-16 13:25:41 -0500 Comment out all debug log in ibusenginesimple.c M src/ibusenginesimple.c commit 51ee0ae762ff8d9c7c76d1669012f63928327737 Author: Peng Huang Date: 2011-12-16 11:39:57 -0500 Refine ibus.bash M tools/ibus.bash commit 205dfcbff7473b760966145f5bf316650d63f918 Author: Peng Huang Date: 2011-12-15 18:38:53 -0500 Use xkb:layout:us as default engine. M bus/ibusimpl.c commit 1ddca02cd9c86e55ec6742716459cf6a66bf5ede Author: Peng Huang Date: 2011-12-15 18:27:18 -0500 set xkblayout in 'ibus engine' command M tools/main.vala commit aae1c575e4f42805b7d44c269c3721afa189bbc2 Author: Peng Huang Date: 2011-12-15 18:14:45 -0500 Fix bash completion issue M tools/ibus.bash commit 72dcb202700c74ed2ff971e46d124152f665754d Author: Peng Huang Date: 2011-12-15 17:56:16 -0500 WIP app ibus bash completion script and fix rpmbuild M ibus.spec.in M setup/engineabout.py M setup/i18n.py M tools/Makefile.am A tools/ibus.bash M tools/main.vala commit a91abfb49fa7c68229f72ca920031800eb815828 Author: Peng Huang Date: 2011-12-15 12:29:30 -0500 WIP add ibus switch-engine command M tools/main.vala commit ba7496ec4bb4c1ed16e450bf7344addc3dfad24d Author: Peng Huang Date: 2011-12-15 12:05:49 -0500 WIP ibus list-engine command M tools/main.vala commit 3e114c4cbbebbfdf89fd36dc74ed4cdb6f5004c2 Author: Peng Huang Date: 2011-12-14 16:35:04 -0500 WIP add a shell tool. M Makefile.am M configure.ac A tools/Makefile.am A tools/main.vala M ui/gtk3/property.vala commit 0fb7788fb103da00d38f69b44ee63f78f3cda14e Author: Peng Huang Date: 2011-12-14 15:21:49 -0500 Rename ui/gtk to ui/gtk2 M configure.ac M ui/Makefile.am D ui/gtk/Makefile.am D ui/gtk/candidatepanel.py D ui/gtk/engineabout.py D ui/gtk/gtkpanel.xml.in.in D ui/gtk/handle.py D ui/gtk/i18n.py D ui/gtk/ibus-ui-gtk.in D ui/gtk/icon.py D ui/gtk/languagebar.py D ui/gtk/main.py D ui/gtk/menu.py D ui/gtk/notifications.py D ui/gtk/panel.py D ui/gtk/propitem.py D ui/gtk/toolitem.py A ui/gtk2/Makefile.am A ui/gtk2/candidatepanel.py A ui/gtk2/engineabout.py A ui/gtk2/gtkpanel.xml.in.in A ui/gtk2/handle.py A ui/gtk2/i18n.py A ui/gtk2/ibus-ui-gtk.in A ui/gtk2/icon.py A ui/gtk2/languagebar.py A ui/gtk2/main.py A ui/gtk2/menu.py A ui/gtk2/notifications.py A ui/gtk2/panel.py A ui/gtk2/propitem.py A ui/gtk2/toolitem.py commit ca0d5c22eb78e4cdce79f573374ef3d339740d6d Author: Peng Huang Date: 2011-12-14 12:54:39 -0500 Bump the version and fix rpmbuild script M configure.ac M ibus.spec.in M ui/Makefile.am M ui/gtk3/Makefile.am commit 53d83b393061ae25d829f9d825197c52f878ec55 Author: Peng Huang Date: 2011-12-14 12:52:22 -0500 Do not release remote InputContext. M ui/gtk3/panel.vala commit a13c4b978c835349f6df52719edfb0040fed5708 Author: Peng Huang Date: 2011-12-13 12:06:49 -0500 Save and load engines order. M ui/gtk3/panel.vala commit 78fab6af0f6843a3b5de7b9800896c18f5ab25d7 Author: Peng Huang Date: 2011-12-12 18:10:15 -0500 Handle preload_engines config changes. M ui/gtk3/panel.vala commit 65d88f8797f67027380dc0b09c658422159b7488 Author: Peng Huang Date: 2011-12-12 16:57:36 -0500 Fix radio menu group and keybinding problems. M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/property.vala M ui/gtk3/switcher.vala commit dd4e001ac71e6c933fc5bf5745515eb161dbc2ac Author: Peng Huang Date: 2011-12-05 16:47:10 -0500 wip M ui/gtk3/panel.vala commit 229d5431b16de7257deb6c8244f2c6258211c91d Author: Peng Huang Date: 2011-12-05 15:57:06 -0500 Add xkb layouts switch support and add three demo xkb layouts. M bus/ibusimpl.c M engine/simple.xml.in.in M src/ibusenginesimple.c M ui/gtk3/panel.vala commit 29312ba148c8e43e1b8cb4d9abc433d7404a0965 Author: Peng Huang Date: 2011-12-05 14:21:00 -0500 Create simple engine M Makefile.am M configure.ac A engine/Makefile.am A engine/main.vala A engine/simple.xml.in.in M src/ibusfactory.c commit 436516f78b26c5e2201e35f0af6fa60745a84dd0 Author: Peng Huang Date: 2011-11-30 16:37:39 -0500 Use g_list_free_full to simplified some code. M bus/connection.c M bus/dbusimpl.c M bus/ibusimpl.c M bus/registry.c M src/ibuscomponent.c M src/ibusfactory.c M src/ibusxml.c commit 1983e58d9f4f7471bcd1e59b2ef7729ca3fecc25 Author: Peng Huang Date: 2011-11-30 15:46:52 -0500 Port gtk_im_context_simple_add_table to libibus. M src/ibusenginesimple.c M src/ibusenginesimple.h commit 76c804e3c99af12dd918983df71cc06a57a62d1a Author: Peng Huang Date: 2011-11-30 15:01:34 -0500 Integrate IBusEngineSimple from ibus-xkb project. M src/Makefile.am A src/gtkimcontextsimpleseqs.h M src/ibus.h M src/ibusengine.c A src/ibusenginesimple.c A src/ibusenginesimple.h commit abf2bbe61071f27a7993e08e6022e8bc4cca5e53 Author: Peng Huang Date: 2011-11-28 18:25:10 -0500 wip M ui/gtk3/panel.vala M ui/gtk3/property.vala commit 9d5f0ace3f3b9d8aeaaeb409b61991446ac480b4 Author: Peng Huang Date: 2011-11-28 18:08:27 -0500 WIP implement register_properties and set_property M ui/gtk3/Makefile.am M ui/gtk3/panel.vala A ui/gtk3/property.vala commit 32cff2880506b0c2249ad38c50e15331d22ace80 Author: Peng Huang Date: 2011-11-28 11:55:29 -0500 Fix a valac warning M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala commit 2af1fcdd8626fa04c8736d5e3076e9dbd6381c43 Author: Peng Huang Date: 2011-11-28 11:30:22 -0500 Remove switchertest.vala M ui/gtk3/Makefile.am D ui/gtk3/switchertest.vala commit b97ab9f70b033fd53fbc62c2173db7f318c660c4 Author: Peng Huang Date: 2011-11-27 19:57:08 -0500 WIP make engine switch hotkey work M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit dece8ebebf771193ca071329919e35dc122a2b4f Author: Peng Huang Date: 2011-11-27 00:21:02 -0500 WIP implement engine switcher popup ui M src/ibusbus.c M src/ibusbus.h M ui/gtk3/Makefile.am M ui/gtk3/candidatepanel.vala M ui/gtk3/grabkeycode.c M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/switcher.vala M ui/gtk3/switchertest.vala commit c9700e577276328adbbb4d1afde26a61079dd10b Author: Peng Huang Date: 2011-11-25 17:28:31 -0500 wip M ui/gtk3/application.vala M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit b935e9ca9eb5bf1ca6d32a22d385cf782336e3ee Author: Peng Huang Date: 2011-11-25 14:17:51 -0500 Use XI2 in keybindingmanager. M ui/gtk3/Makefile.am M ui/gtk3/application.vala A ui/gtk3/grabkeycode.c M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/switcher.vala M ui/gtk3/switchertest.vala commit bcac07401ab4df6157097fee53de3ab887011fe0 Author: Peng Huang Date: 2011-11-24 18:13:00 -0500 wip M ui/gtk3/Makefile.am M ui/gtk3/keybindingmanager.vala A ui/gtk3/switcher.vala A ui/gtk3/switchertest.vala commit 89dfb1f4f0b18d684ffc3bb2bcee4683416c23e8 Author: Peng Huang Date: 2011-11-24 13:27:44 -0500 Fix src/Makefile.am to install ibuskeysym-compat.h M src/Makefile.am commit 7446203bcd7ce8b6f075e960e4c1653e62e82ecd Author: Peng Huang Date: 2011-11-24 11:55:26 -0500 Rename ibus keysyms. M bus/Makefile.am M bus/engineproxy.c M bus/inputcontext.c M src/ibus.h M src/ibushotkey.c M src/ibuskeymap.c M src/ibuskeynames.c A src/ibuskeysyms-compat.h M src/ibuskeysyms-update.pl M src/ibuskeysyms.h M src/tests/ibus-keynames.c M ui/gtk3/Makefile.am commit 53d33ec4e6ad41a116f25cfa7ce12e04f6f93752 Author: Peng Huang Date: 2011-08-16 07:26:42 -0400 Remove enable status of input context and hotkey logic in ibus-daemon M autogen.sh M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M client/gtk2/ibusimcontext.c M configure.ac M ibus/bus.py M ibus/inputcontext.py M ibus/interface/iibus.py M ibus/interface/iinputcontext.py M src/ibusbus.c M src/ibusbus.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/tests/ibus-inputcontext.c M ui/Makefile.am M ui/gtk/candidatepanel.py M ui/gtk/languagebar.py M ui/gtk/panel.py A ui/gtk3/Makefile.am A ui/gtk3/application.vala A ui/gtk3/candidatearea.vala A ui/gtk3/candidatepanel.vala A ui/gtk3/handle.vala A ui/gtk3/iconwidget.vala A ui/gtk3/keybindingmanager.vala A ui/gtk3/panel.vala A ui/gtk3/pango.vala A ui/gtk3/separator.vala commit 60587bf804feb7ed4dcb8c1731f115420ca28b49 Author: fujiwarat Date: 2012-02-16 13:04:05 +0900 Fix gir annotations. - It seems python does not allow to use 'exec' as a variable. Renamed 'exec' property so that the constructor in IBus.Component is used. - It seems the python virtual method is available when the function is described in header files in case that annotations are needed so the signal function ibus_factory_create_engine is added newly. TEST=Linux desktop Review URL: https://codereview.appspot.com/5649082 M src/ibusattribute.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusfactory.c M src/ibusfactory.h commit 3b8d6ee8fbd42a8daf3b544e8d0ba17a198a9acf Author: Daiki Ueno Date: 2012-02-14 10:45:20 +0900 Fix typoes in gtk-doc comments. BUG=none TEST=manually Review URL: https://codereview.appspot.com/5645095 M src/ibusbus.h M src/ibusconfig.h M src/ibusengine.h M src/ibushotkey.h M src/ibusinputcontext.h M src/ibusserializable.h M src/ibusshare.h commit a5b51c91cb1185f35f3315ad35e1e03b84264faf Author: fujiwarat Date: 2012-02-13 16:03:13 +0900 Fix typo. BUG=http://code.google.com/p/ibus/issues/detail?id=1388 TEST=Linux desktop Review URL: https://codereview.appspot.com/5652077 M configure.ac commit 3862735d41168a87d9b77e9ce78ddf228212e015 Author: Daiki Ueno Date: 2012-02-13 13:56:44 +0900 Don't look for ibus-1.0.pc when generating GIR. BUG=http://lists.alioth.debian.org/pipermail/pkg-ime-devel/2012-February/001778.html TEST=manually Review URL: https://codereview.appspot.com/5653072 M src/Makefile.am commit 91dd6724035bf89eb843b7d147e08794a35a569a Author: Peng Huang Date: 2012-02-05 09:04:22 -0500 Release 1.4.1. BUG=None TEST=Make dist Review URL: https://codereview.appspot.com/5602056 M configure.ac commit 185dd51b595bdeedf8d86eb1214466e2de93f5f3 Author: Peng Huang Date: 2012-02-02 00:28:42 -0500 Fix typoes and remove Encoding from desktop files. BUG=None TEST=None Review URL: https://codereview.appspot.com/5618046 M bus/ibus.desktop.in M client/x11/main.c M setup/ibus-setup.desktop.in commit 6c777b2d17cbbbf84cddebec0da980374774542b Author: Daiki Ueno Date: 2012-02-01 10:00:42 +0900 Minor fixes related to git.mk. Remove .gitignore files from the git repo, define GITIGNOREFILES in some Makefiles, and update git.mk from the Behdad upstream. BUG=none TEST=manually Review URL: https://codereview.appspot.com/5581057 D .gitignore M Makefile.am D bus/.gitignore D client/x11/.gitignore D data/.gitignore M data/dconf/Makefile.am D debian/.gitignore D docs/.gitignore D docs/reference/ibus/.gitignore D gconf/.gitignore M git.mk D ibus/.gitignore D m4/.gitignore M m4/Makefile.am D po/.gitignore D setup/.gitignore D src/.gitignore D src/tests/.gitignore D ui/gtk/.gitignore commit cbdd673a040c95ba42f33c0c3884319b37155b46 Author: Daiki Ueno Date: 2012-02-01 09:59:37 +0900 Generate vapi from gir instead of gi. BUG=none TEST=manually on Fedora 16 Review URL: https://codereview.appspot.com/5599052 A bindings/vala/IBus-1.0-custom.vala A bindings/vala/IBus-1.0.metadata M bindings/vala/Makefile.am D bindings/vala/ibus-1.0.vapi D bindings/vala/ibus-1.0/ibus-1.0-custom.vala D bindings/vala/ibus-1.0/ibus-1.0.defines D bindings/vala/ibus-1.0/ibus-1.0.excludes D bindings/vala/ibus-1.0/ibus-1.0.files D bindings/vala/ibus-1.0/ibus-1.0.gi D bindings/vala/ibus-1.0/ibus-1.0.metadata D bindings/vala/ibus-1.0/ibus-1.0.namespace M configure.ac commit deaa090367c89128490a9247a7d0fd5d1b21149c Author: Daiki Ueno Date: 2012-01-31 12:56:27 +0900 Minor fixes when generating GIR. BUG=none TEST=manually Review URL: https://codereview.appspot.com/5600052 M src/Makefile.am M src/ibusengine.h M src/ibusfactory.h commit eb1dbdce044f43a1064179c4ee2591cff0f74aad Author: Daiki Ueno Date: 2012-01-30 12:29:48 +0900 dconf: preserve names under /desktop/ibus/engine/bopomofo. BUG=none TEST=manually on Fedora 16 Review URL: https://codereview.appspot.com/5595047 M data/ibus.schemas.in commit 3e363af1c526a92456df5d1597763d175cd7ba7d Author: fujiwarat Date: 2012-01-29 10:32:01 +0900 Fix the GIR annotation of ibus_bus_get_global_engine #2. BUG=none TEST=Linux desktop Review URL: https://codereview.appspot.com/5578054 M src/ibusbus.h commit d380b11952513f3862be4d91d2c2042d76621ee3 Author: fujiwarat Date: 2012-01-27 11:16:52 +0900 Fix the GIR annotation of ibus_bus_get_global_engine. BUG=none TEST=Linux_desktop Review URL: https://codereview.appspot.com/5576048 M src/ibusbus.h commit d3610308ed0d1d722de061d3957dcef55bcf7448 Author: fujiwarat Date: 2012-01-26 11:09:33 +0900 Fix the return value in IBusEngine.process_key_event with signal. BUG=none TEST=Linux_desktop Review URL: https://codereview.appspot.com/5569061 M src/ibusengine.c commit 90e971bdbb0d46ad474d3e952286fb40f3d04bfe Author: Daiki Ueno Date: 2012-01-26 10:27:27 +0900 Add a dconf option to inhibit dconf name conversion. BUG=https://code.google.com/p/ibus/issues/detail?id=1395 TEST=manually with ibus-hangul and ibus-skk on Fedora 16 Review URL: https://codereview.appspot.com/5570062 M data/ibus.schemas.in M dconf/config.c commit 50491822d6bc6738a5f565360b14a6913059b006 Author: fujiwarat Date: 2012-01-24 11:06:19 +0900 Rename ibus_engine_new_type with ibus_engine_new_with_type. seed assigns GType in IBus.Engine.type and also assignes "*_new_foo" method in IBus.Engine.foo so renamed the function. BUG=http://code.google.com/p/ibus/issues/detail?id=1397 TEST=Linux_desktop with seed and gjs Review URL: https://codereview.appspot.com/5572046 M src/ibusengine.c M src/ibusengine.h M src/ibusfactory.c commit 64c5f3d8667f26cd44ed35c229a8983ba75c6eff Author: Peng Huang Date: 2012-01-06 10:17:10 -0500 Add G_GNUC_PRINTF for function ibus_text_new_from_printf(), so compiler can check arguments. BUG=None TEST=Manually Review URL: http://codereview.appspot.com/5519047 M src/ibustext.h commit f25acc22028e3dd98d8482e58c3925d2611683b9 Author: fujiwarat Date: 2011-12-31 09:55:20 +0900 Fix g-ir-scanner errors in ibusproperty.h and ibustext.h. BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/5498091 M src/ibusproperty.h M src/ibustext.h commit 4d1f38314b3a9c3dc1683053cda10cfa36fd9019 Author: Peng Huang Date: 2011-12-22 09:59:05 -0500 Fix a typo in docs/references/ibus/Makefile BUG=None TEST=make Review URL: http://codereview.appspot.com/5496079 M docs/reference/ibus/Makefile.am commit df10a24f905c8eea420a5fd33eff78417312410c Author: Peng Huang Date: 2011-12-22 09:57:23 -0500 Add ibus_text_set_attributes for scipt language bindings. BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/5500067 M src/ibustext.c M src/ibustext.h commit ee9c4fba4535e85bd1f02743cab8914dd84e6178 Author: Peng Huang Date: 2011-12-22 09:57:01 -0500 Make all fields of IBusProperty as gobject property. BUG=http://code.google.com/p/ibus/issues/detail?id=1383 TEST=Linux desktop Review URL: http://codereview.appspot.com/5500066 M src/ibusproperty.c M src/ibusproperty.h commit fd07a5a761fe1c242ba8babaab1060d5679a3618 Author: fujiwarat Date: 2011-12-20 13:46:45 +0900 Fix a SEGV if ibusimcontext->ibuscontext is null. BUG= TEST=Linux desktop Review URL: http://codereview.appspot.com/5489086 M client/gtk2/ibusimcontext.c commit 028e2dca75f6cf12c589216b4f156aa10ffdd2bb Author: fujiwarat Date: 2011-12-14 09:55:26 +0900 Update translations. po/LINGUAS: Updated po/ ca.po da.po de.po es.po fr.po hu.po ja.po pa.po te.po zh_TW.po: Updated po/ fa.po lv.po tg.po: Added BUG= TEST=Linux desktop Review URL: http://codereview.appspot.com/5483055 M po/LINGUAS M po/ca.po M po/da.po M po/de.po M po/es.po A po/fa.po M po/fr.po M po/hu.po M po/ja.po A po/lv.po M po/pa.po M po/te.po A po/tg.po M po/zh_TW.po commit 5236e2159f2e6184c18df9a9ecbb05bfb09106d4 Author: fujiwarat Date: 2011-11-30 12:28:22 +0900 Add the engine preference button on ibus-setup The new preference button launches $libexecdir/ibus-setup- + engine.name by default. The engine is IBusEngineDesc. If engine.setup has a value, the button launches it instead. BUG=RH#618229 TEST=Linux desktop Review URL: http://codereview.appspot.com/5437062 M ibus/enginedesc.py M setup/ibus-setup.in M setup/main.py M setup/setup.ui M src/ibusenginedesc.c M src/ibusenginedesc.h commit 5d2ac19e1524b1802f5298eedff1ba52423c847f Author: Daiki Ueno Date: 2011-11-30 09:40:15 +0900 Disable surrounding-text when retrieve-surrounding signal is not handled in GTK. BUG=https://code.google.com/p/ibus/issues/detail?id=1358 TEST=On Fedora with ibus-m17n tis820 Review URL: http://codereview.appspot.com/5431086 M client/gtk2/ibusimcontext.c commit 23abee88ca1a234d0ed549489a505cd2a07a9a5c Author: fujiwarat Date: 2011-11-21 11:06:21 +0900 Use ibus_input_context_process_key_event_async in ibus-x11 ibus-hangul calls ibus_commit_text() in process_key_event with returing FALSE. ibus_commit_text() is async API and there is a time issue in ibus_commit_text() and returning process_key_event. This fix adds async in ibus-x11 process_key_event too. BUG=RH#753781 TEST=Linux desktop Review URL: http://codereview.appspot.com/5417044 M client/x11/main.c commit 613e01520f27a53c947fed476d99aeb8ae1ae39b Author: fujiwarat Date: 2011-11-08 10:48:42 +0900 Fixed fallback icons. 1. Set 'ibus-keyboard' icon for IME off in non-GNOME theme. People would think the application icon for non-GNONE classic desktop. The themed icon is applied for GNOME icon theme only. 2. Set gtk-fallback-icon-theme as 'gnome' ibus gtk panel needs gtk stock icons but some desktop does not load GNOME icon theme. I assigned 'gnome' for gtk-fallback-icon-theme if it's none. 3. Use 'gtk-dialog-info' if 'gtk-info' is not found. It seems the latest gtk2 does not have 'gtk-info' icon via pygtk2. BUG=RH#711632 TEST=Linux desktop Review URL: http://codereview.appspot.com/5320066 M ibus/_config.py.in M ui/gtk/main.py M ui/gtk/panel.py commit 02893693fc0a8692a6242b0be6dc8f09e14c1c54 Author: fujiwarat Date: 2011-11-02 14:17:50 +0900 Rerotate next/previous engines without global engine. BUG=http://code.google.com/p/ibus/issues/detail?id=1331 TEST=Linux desktop Review URL: http://codereview.appspot.com/5321067 M bus/ibusimpl.c commit cca4fd8993613a6993965c3120323e43c4647ef5 Author: Daiki Ueno Date: 2011-10-28 15:42:08 +0900 Don't set focus on GTK password entry. For an old bug: https://bugzilla.redhat.com/show_bug.cgi?id=484643 Input method should be disabled on password entry for security reason. BUG=none TEST=manually with gtk-demo "Entry Buffer" example Review URL: http://codereview.appspot.com/5319053 M client/gtk2/ibusimcontext.c commit 910f8a64098d89b04c50056f621ec1a49dd3e7ea Author: fujiwarat Date: 2011-10-25 10:50:34 +0900 Fix previous_engine without global engine. BUG=http://code.google.com/p/ibus/issues/detail?id=1331 TEST=Linux desktop Review URL: http://codereview.appspot.com/5297047 M bus/ibusimpl.c commit ee966e327cc3b1b4bba40379bc0fbb3d46c38239 Author: fujiwarat Date: 2011-10-25 10:37:22 +0900 Add ibusutil.h in ibus.h BUG=http://code.google.com/p/ibus/issues/detail?id=1338 TEST=Linux desktop Review URL: http://codereview.appspot.com/5294054 M src/ibus.h commit d19018b8709847009d2e0836c942dd9f1385e7cb Author: Yusuke Sato Date: 2011-10-09 13:52:42 +0900 Always consume a hotkey press BUG=1324 Review URL: http://codereview.appspot.com/5242044 M bus/ibusimpl.c commit cb519c852dfc7a652df1768c81974d750ef48f58 Author: Daiki Ueno Date: 2011-09-29 12:24:53 +0900 Fix hiding button items in GTK panel. BUG=none TEST=manual Review URL: http://codereview.appspot.com/5148041 M ui/gtk/toolitem.py commit 600fd9ab1607a6d5780fb07a6cd49290ca85c4fc Author: Peng Huang Date: 2011-09-23 11:11:24 -0400 Release 1.4.0 BUG=None TEST=make dist Review URL: http://codereview.appspot.com/5106043 M configure.ac commit a5aadb62244d699fa38f6699cf38faf71a7c24c0 Author: Peng Huang Date: 2011-09-23 11:10:53 -0400 Fix make distcheck error BUG=None TEST=make distcheck Review URL: http://codereview.appspot.com/5113041 M po/POTFILES.in commit 55cb3cd2e398169a1335564e3e95003df469dd66 Author: Daiki Ueno Date: 2011-09-21 10:00:17 +0900 Fix dconf profile installation. BUG=none TEST=manual Review URL: http://codereview.appspot.com/5077042 M data/dconf/Makefile.am commit e42dda581368a77e2f6f87caee1b9355f7f725fa Author: Peng Huang Date: 2011-09-18 10:39:09 -0400 Add some warning message in ibustext.c BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/5051043 M src/ibustext.c commit 235ef3ae4a0796bc03f2265b15e9a0a7a39b892c Author: Peng Huang Date: 2011-09-18 10:36:02 -0400 Refine configure.ac and fix make distcheck errors. BUG=None TEST=Test on Linux desktop Review URL: http://codereview.appspot.com/5045043 M configure.ac M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am M ibus.spec.in M src/Makefile.am commit 6c474596e43c932467d4d35afa23db59a71093f5 Author: fujiwarat Date: 2011-09-16 23:36:44 +0900 Add get methods for the members in IBusAttribute for non-C language. TEST=Linux desktop Review URL: http://codereview.appspot.com/4956068 M src/ibusattribute.c M src/ibusattribute.h commit 4438c043aafa301579737094dbccc02c9ef8c2c1 Author: Daiki Ueno Date: 2011-09-16 10:22:38 +0900 Implement org.freedesktop.DBus.StartServiceByName. BUG=none TEST=tested with https://github.com/ueno/ibus-gucharmap/tree/charmap-service Review URL: http://codereview.appspot.com/4960060 M bus/dbusimpl.c M ibus/bus.py M src/ibustypes.h commit 02604ac968d6f0c6064b4620f8a65148a178eacd Author: Peng Huang Date: 2011-09-09 09:47:37 -0400 Fix make dist error if dsettings does not exist. BUG=make dist failed without gsettings TEST=make dist Review URL: http://codereview.appspot.com/4994043 M data/dconf/Makefile.am commit 19a504a62574b9f2d1ef9f61bedfbac2819d8c8b Author: Peng Huang Date: 2011-09-08 22:09:26 -0400 Do not send surrounding text to ibus-daemon if engine does not need surrounding text. BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/4977058 M src/ibusinputcontext.c commit 894ecc8e16b01d5594ef9b8f9c5530bb2e9d0502 Author: fujiwarat Date: 2011-08-25 09:59:42 +0900 Add Disable signal when bus_ibus_impl_set_context_engine_from_desc is called. BUG=#1261 TEST=Linux desktop Review URL: http://codereview.appspot.com/4875049 M bus/inputcontext.c commit adcf71e6e5de45530a09e7b9f310f2e489cd9631 Author: fujiwarat Date: 2011-08-24 11:44:21 +0900 Check if BusInputContext has an enabled engine in global input method. BUG=RH#731610 TEST=Linux desktop Review URL: http://codereview.appspot.com/4917041 M bus/ibusimpl.c commit ac9dfac13cef34288440a2ecdf067cd827fb2f8f Author: Peng Huang Date: 2011-08-19 08:23:33 -0400 Use GVariant as attachment for IBusSerializable. BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/4902051 M src/ibusserializable.c M src/ibusserializable.h M src/tests/ibus-serializable.c commit 9614076737ee88c092af209485d1d65d2269f4ad Author: Tsuyoshi Horo Date: 2011-08-18 11:48:30 -0400 Fix for ibus_serializable_{get,set}_attachment. TEST=Linux desktop Review URL: http://codereview.appspot.com/4905054 Patch from Tsuyoshi Horo . M src/ibusserializable.c M src/ibusserializable.h M src/tests/ibus-serializable.c commit 97afd4854b0af0483539d2ab8f0e6f15309d1ec4 Author: fujiwarat Date: 2011-08-14 08:56:31 +0900 Add create-engine signal in IBusFactory for non-C applications. TEST=Linux desktop Separated from CL #4853041. Review URL: http://codereview.appspot.com/4801081 M src/ibusfactory.c M src/ibusfactory.h M src/ibusmarshalers.list M src/ibusservice.h commit 02a4f3e8ab4bb0f4c7310b5e654bec1fb1892f56 Author: Peng Huang Date: 2011-08-11 21:13:28 -0400 Port keyval and unicode converting functions from gtk. BUG=None TEST=None Review URL: http://codereview.appspot.com/4870042 M src/Makefile.am M src/ibus.h M src/ibuskeymap.c A src/ibuskeys.h A src/ibuskeyuni.c M src/ibusshare.h commit 2ed0adc7a238d5a19f8b01cdcd165a34608bf9f3 Author: Seigo Nonaka Date: 2011-08-11 20:53:13 -0400 Support selection text retrival. This patch enable us to get selection text on client application. Currently only GtkTextView widget can get them in gtk application. BUG=None TEST=manually done.(By gedit text editor) Review URL: http://codereview.appspot.com/4844041 Patch from Seigo Nonaka . M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M client/gtk2/ibusimcontext.c M ibus/engine.py M ibus/inputcontext.py M ibus/interface/iengine.py M ibus/interface/iinputcontext.py M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusmarshalers.list commit 6ec33ea8cdf16c6225896351a59ac9a01d5e36ca Author: Peng Huang Date: 2011-08-11 20:23:18 -0400 Add missing config.h in gdk-private.c Forget include config.h in gdk-private.c. So the HAVE_X11_XKBLIB_H is always undefined, and ibux-x11 can not get correct group from x key event. BUG=ibus-x11 can not handle group correctly TEST=Linux desktop Review URL: http://codereview.appspot.com/4865041 M client/x11/gdk-private.c commit 4980dab52ca40b5b6904f9e9df397ac6dfa57ded Author: Peng Huang Date: 2011-08-10 21:46:27 -0400 Fix make rpm errors BUG=make rpm failed in fedora TEST=make rpm in fedora Review URL: http://codereview.appspot.com/4862041 M configure.ac M docs/reference/ibus/.gitignore M ibus.spec.in commit 0cb912cfe5664714e612206d955d458532adc707 Author: Peng Huang Date: 2011-07-23 09:23:41 +0800 Always enable the new focused BusInputContext BUG=http://crosbug.com/17013 TEST=On ChromeOS Review URL: http://codereview.appspot.com/4816047 M bus/ibusimpl.c commit 51fe80487d523243d1eaaa9cf5da566184fcd654 Author: Daiki Ueno Date: 2011-07-18 18:44:23 +0900 Add ibus-dconf. BUG=https://code.google.com/p/ibus/issues/detail?id=1235 TEST=manually with "make check" and interactive testing Review URL: http://codereview.appspot.com/4750041 M Makefile.am M configure.ac M data/Makefile.am A data/dconf/Makefile.am A data/dconf/ibus.convert A data/dconf/make-dconf-override-db.sh A data/dconf/profile/ibus M data/ibus.schemas.in A dconf/Makefile.am A dconf/config.c A dconf/config.h A dconf/dconf.xml.in.in A dconf/main.c commit 88a44759ce5d3d785c7be96525130c67e8c63e1e Author: Daiki Ueno Date: 2011-07-15 09:51:07 +0900 Fix GObject ref/unref issues. BUG=none TEST=manual Review URL: http://codereview.appspot.com/4700048 M bus/registry.c M bus/test-client.c commit 48cc200d7dbe999f92b05507a7c59bea42ac6f1c Author: fujiwarat Date: 2011-07-12 15:14:59 +0900 Fixed an error in IBus.Bus.register_component TEST=Linux desktop Review URL: http://codereview.appspot.com/4668060 M ibus/component.py commit 290a37e1d4e3ec44dfea4b99744520f781c92592 Author: Yusuke Sato Date: 2011-07-12 14:04:30 +0900 Use g_variant_dup_string for consistency. This fix is similar to https://github.com/ibus/ibus/commit/624c4451da2bd171bd8ac53a9b9dd2a4227ef67f . BUG=None TEST=None Review URL: http://codereview.appspot.com/4641101 M bus/ibusimpl.c commit 55a5652ac7d91fb319ef6576500e421eb53e80f4 Author: Yusuke Sato Date: 2011-07-11 11:55:19 +0900 Remove the callback on destroy. BUG=crosbug.com/17293 TEST=src/tests/ibus-bus.c Review URL: http://codereview.appspot.com/4675074 M src/ibusbus.c M src/tests/ibus-bus.c commit 624c4451da2bd171bd8ac53a9b9dd2a4227ef67f Author: Peng Huang Date: 2011-07-07 12:42:52 -0400 Fix several GVariant related issues. And remove a wrong unref. BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/4667067 M bus/ibusimpl.c M bus/inputcontext.c M src/ibusconfig.c commit ed2a89506271e4ed6cd20568a0e6aa32cc5d5cce Author: Peng Huang Date: 2011-07-05 13:11:41 -0400 Fix SEGV in ibus_keymap_lookup_keysym TEST=Linux desktop Review URL: http://codereview.appspot.com/4636083 M bus/engineproxy.c commit b9cfc5eb2e0b33d866301de7b6724b7f134ffae5 Author: Peng Huang Date: 2011-07-05 10:45:20 -0400 Add org.freedesktop.IBus.Config.GetValues to get all values in one RPC. BUG=http://crosbug.com/16287 TEST=Linux desktop Review URL: http://codereview.appspot.com/4667056 M debian/control M debian/libibus-1.0-0.symbols M gconf/config.c M ibus/config.py M ibus/interface/iconfig.py M memconf/config.c M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/tests/ibus-config.c commit 0e315c18c79c02cb5ea88c8b966cee0d70bedbf0 Author: Peng Huang Date: 2011-07-04 12:26:03 +0800 Fix make dpkg errors. BUG=None TEST=Make dpkg Review URL: http://codereview.appspot.com/4673041 A debian/ibus-gtk3.install M debian/libibus-1.0-0.symbols M debian/rules M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am commit 83d4b3ac538320bfb8e872dd9282ca5bbedf4652 Author: Peng Huang Date: 2011-07-04 03:27:23 +0800 Fix BusEngineProxy instance leak. BUG=none TEST=manually with / without global-engine setting Review URL: http://codereview.appspot.com/4662043 M bus/engineproxy.c M bus/inputcontext.c commit 8677fac588f4189d59c95e6dbead9fd9c5152871 Author: Peng Huang Date: 2011-07-04 03:24:47 +0800 Add icon_symbol property in IBusEngineDesc. TEST=Linux desktop Review URL: http://codereview.appspot.com/4648050 M ibus/enginedesc.py M src/ibusenginedesc.c M src/ibusenginedesc.h commit 508f6a11d39860f4fdb005e8a54574a5fba52e9d Author: Kazuhiro Inaba Date: 2011-06-18 00:10:36 -0400 Store capabilities when ibuscontext is not ready yet. Due to the asynchronous creation of contexts, gtk_im_set_use_preedit may be called before the context is ready. This patch is to record the change of capability flag and enables to set it later in _create_input_context_done. BUG=http://crosbug.com/16500 TEST=ChromeOS Cr-48 Review URL: http://codereview.appspot.com/4635049 Patch from Kazuhiro Inaba . M client/gtk2/ibusimcontext.c commit aec97ac090980dfcd7eeef55c1755f6cd3f87a01 Author: Daiki Ueno Date: 2011-06-18 00:03:07 -0400 Simplify surrounding-text initialization. Currently the immodule tries to retrieve surrounding-text unconditionally on focus_in and enabled. These calls could be eliminated if engine were able to proclaim that it will need surrounding-text. This patch extends ibus_engine_get_surrounding_text() to allow this. Engines that need surrounding-text are expected to have: /* Indicate we will use surrounding-text. */ ibus_engine_get_surrounding_text (engine, NULL, NULL); in their enable() method. This would work because enable() is called before SetCapabilities DBus call. BUG=none TEST=manually with ibus-m17n, with the above change. Review URL: http://codereview.appspot.com/4613043 Patch from Daiki Ueno . M client/gtk2/ibusimcontext.c M src/ibusengine.c M src/ibusengine.h commit 92b30f09885a91cd74840677aab46159a23192c6 Author: Peng Huang Date: 2011-06-17 23:46:31 -0400 Restore cursor location when a new IBusInputContext is created. BUG=http://crosbug.com/16500 TEST=Linux desktop Review URL: http://codereview.appspot.com/4635044 M client/gtk2/ibusimcontext.c commit 1da68ecf2fd4aca41e90715822a9902f4e8162f6 Author: Peng Huang Date: 2011-06-16 15:46:46 -0400 Fix some fuction signatures to make ibus g-i firendly. BUG=None TEST=Test on Linux desktop Review URL: http://codereview.appspot.com/4517146 M client/gtk2/ibusimcontext.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/tests/ibus-bus.c M src/tests/ibus-inputcontext-create.c M src/tests/ibus-inputcontext.c commit e73de0283f14fa1207b5cfc35dc43c1cf1d78d40 Author: Peng Huang Date: 2011-06-16 13:13:01 -0400 Fix make dpkg errors. BUG=make dpkg failed TEST=make dpkg Review URL: http://codereview.appspot.com/4629044 M debian/libibus-1.0-0.symbols commit 45ed668b8099a6e2dfcbeefeba36125c515241e6 Author: Yusuke Sato Date: 2011-06-17 01:12:06 +0900 Check IBUS_CONFIG_HOME environment variable when reading/writing the socket file. BUG=crosbug.com/16501 TEST=export IBUS_CONFIG_HOME=/tmp, start Chrome on Chromium OS, verify an empty dir /tmp/ibus/bus exists with mode 0700, log in, enable IME, verify IME works, verify the socket file is created in /tmp/ibus/bus. Review URL: http://codereview.appspot.com/4621043 M src/ibusshare.c commit fc9dedec30f724e91e7b3bb9111177e96b58ee43 Author: Peng Huang Date: 2011-06-15 10:38:17 -0400 Add IBUS_ERROR domain and reply IBUS_ERROR_NO_ENGINE in org.freedesktop.IBus.InputContext.GetEngine BUG=None TEST=Manually Review URL: http://codereview.appspot.com/4528140 M bus/inputcontext.c M src/Makefile.am M src/ibus.h A src/ibuserror.c A src/ibuserror.h M src/ibusinputcontext.c M src/ibusshare.c M src/ibustypes.h A src/tests/ibus-gi-inputcontext.py commit 59ce675e335e599ed18d74ab8849b9a5fe75d4be Author: Peng Huang Date: 2011-06-13 13:18:29 -0400 Fix some race condition between idle and timeout events. Also fix a memory leak. BUG=http://crosbug.com/16387 TEST=Linux desktop Review URL: http://codereview.appspot.com/4568072 M bus/engineproxy.c commit 7dd0436e19663475de6444c5e1c82b8372db50bf Author: Peng Huang Date: 2011-06-08 21:11:28 -0400 Add functions for creating IBusConfig asynchronously. BUG=http://crosbug.com/13245 TEST=make check Review URL: http://codereview.appspot.com/4581041 M src/ibusconfig.c M src/ibusconfig.h M src/tests/.gitignore M src/tests/Makefile.am A src/tests/ibus-config.c commit cdcf5c74d348432415326ab42696e8b23f06c3b4 Merge: 52425da d059132 Author: Peng Huang Date: 2011-06-08 07:21:50 -0700 Merge pull request #2 from ryoqun/master ibus python binding wasn't working due to incorrect forward-key-event signature commit 52425daa537a32bed1781958e1ef62dbf199ad8b Author: Peng Huang Date: 2011-06-06 09:30:27 -0400 Fix Python input context binding. Export "forward-key-event" and "delete-surrounding-text" signals to Python; clear __needs_surrounding_text property on "enabled" and "disabled" signals. BUG=none TEST=briefly tested, at least I don't see any regression Review URL: http://codereview.appspot.com/4437062 M ibus/inputcontext.py M ibus/interface/iinputcontext.py commit 4d15995dc22f4ec3006e40586f86d0e2a5447af6 Author: Peng Huang Date: 2011-06-02 08:30:34 -0400 Fix build warnings with gcc 4.6 BUG=Build warnings with gcc 4.6 TEST=Manually Review URL: http://codereview.appspot.com/4517127 M client/x11/main.c M src/ibusconfig.c commit d3e750eab6db7035f494fcdb328b87b2923e33a2 Author: Yusuke Sato Date: 2011-06-01 23:37:14 +0900 Send the new capabilities to ibus-daemon in ibus_im_context_set_use_preedit. BUG=none TEST=none Review URL: http://codereview.appspot.com/4529103 M client/gtk2/ibusimcontext.c commit 5aea31b733334fbf24879549a901bc6212155c3b Author: fujiwarat Date: 2011-05-16 14:51:45 +0900 Update translations. Update da.po ja.po nl.po pl.po te.po uk.po zh_CN.po M po/da.po M po/ja.po M po/nl.po M po/pl.po M po/te.po M po/uk.po M po/zh_CN.po commit d059132885d3c90647f08f3083e39daa9f82b700 Author: Ryo Onodera Date: 2011-05-17 20:07:40 +0900 fix wrong forward key event signature M ibus/engine.py M ibus/interface/iengine.py commit 75db3e14c75a70dcacb2b8d5f95d2463218e86db Author: Peng Huang Date: 2011-05-10 21:59:15 -0400 Fix build warnings with gcc 4.6 BUG=crosbug.com/15039 TEST=Linux desktop Review URL: http://codereview.appspot.com/4518042 M src/ibusshare.c commit 27a66ea2e434b2e23f6fbba29251ef7b8ed2c20a Author: Julien Humbert Date: 2011-04-08 00:45:46 +0200 Update name M po/fr.po commit fe118688698e774ec4dc20fb7205e459df89adaf Author: Espreon Date: 2011-04-30 01:20:06 -0400 Added British English translation. M AUTHORS M po/LINGUAS A po/en_GB.po commit 2371d4fde2df1d0582603fd9d10098384a4523ce Author: Peng Huang Date: 2011-05-03 09:55:39 -0400 Fix make dpkg errors, and add gtk3 support for debian BUG=None TEST=Linux desktop Review URL: http://codereview.appspot.com/4436076 M Makefile.am M debian/control D debian/ibus-gtk.install A debian/ibus-gtk2.install M debian/libibus-1.0-0.symbols M debian/rules M debian/xinput/ibus commit 80e5bd0785ca91a70f0b5fe511a3bd8e143d8d05 Author: Takao Fujiwara Date: 2011-04-27 07:48:50 -0400 Fix the zombie process of ibus-gconf when ibus-daemon restarts. - Fix the typo in bus_dbus_impl_destroy() (dbusimpl.c) - Modify bus_server_run() and _ibus_exit() (ibusimpl.c, server.c) bus_ibus_impl_destroy() needs to be called so that waitpid() prevents processes from becoming zombie. - Change the declaration of bus_server_quit(). (server.h) BUG=redhat#697471 TEST=Linux desktop Review URL: http://codereview.appspot.com/4440059 Patch from Takao Fujiwara . M bus/dbusimpl.c M bus/ibusimpl.c M bus/server.c M bus/server.h M src/ibusbus.c commit 9af7672d3ed9b7354f17025e1d05b554ce05470b Author: Yusuke Sato Date: 2011-04-22 20:17:14 +0900 Fix SEGV in im-ibus.so on Chromium OS Review URL: http://codereview.appspot.com/4440060 M client/gtk2/ibusimcontext.c commit c2c8a023a9f14aafb4010ed5f0d8c40fa14dc54f Author: Yusuke Sato Date: 2011-04-22 20:07:43 +0900 Add org.freedesktop.IBus.InputContext.ProcessHandWritingEvent and CancelHandWriting to support a handwriting engine. Review URL: http://codereview.appspot.com/4433059 M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusmarshalers.list commit 5cb14a2d82efc3a2011011581936ef278c8d495c Author: Daiki Ueno Date: 2011-04-18 17:09:10 -0400 Export input context surrounding-text API to Python. BUG=none TEST=manual Review URL: http://codereview.appspot.com/4442059 Patch from Daiki Ueno . M ibus/inputcontext.py commit e3957545d18900109e19d607ad17eac136a38d1c Author: Peng Huang Date: 2011-04-18 11:18:27 -0400 Use g_initable_new to create BusFactoryProxy. BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4446051 M bus/factoryproxy.c commit 0838133ce617c6113574f12ab1ba6a8bb90aaf43 Author: Peng Huang Date: 2011-04-08 23:29:23 -0400 Revert "Change default values of some config." This change was commited by mistake. This reverts commit ed4775b5fec355c1ccb13947d03dcac0aaaeb47f. M bus/ibusimpl.c commit 0f08033ed8ea8fc494a459909722b19eb6e53427 Author: Peng Huang Date: 2011-04-08 09:45:18 -0400 Fix problem in creating IBusPoxy in synchronous mode. M src/ibusproxy.c commit 2f358544a1fcc9c8c3924a722b38a86d297c9da1 Author: Peng Huang Date: 2011-04-08 09:49:20 -0400 Refine RequestName code and fix make dpkg errors. BUG=none TEST=Linux Desktop Review URL: http://codereview.appspot.com/4368056 M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/ibusimpl.c M debian/libibus-1.0-0.symbols M ibus/common.py M src/ibusutil.c M src/ibusutil.h M ui/gtk/Makefile.am M ui/gtk/main.py commit 782566b452ca688e619bc66015bf9e8b0685ef41 Author: Peng Huang Date: 2011-04-08 09:19:13 -0400 Fix focus issue when reconnect to ibus-daemon BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4365049 M bus/inputcontext.c M bus/inputcontext.h M client/gtk2/ibusimcontext.c commit 37e6e58792bef4284653e4d8f4c93c901780eafd Author: Takao Fujiwara Date: 2011-04-08 09:18:23 -0400 Implement APIs for another non-Python panel. 1. Support icon and prop_list = null in ibus_property_new with GIR. 2. Add getter methods in IBusText and IBusProperty since GJS cannot access the members in C-Structure. 3. Add ibus_get_language_name() since GIR libxml2 does not provide the useful APIs. 4. Implement flags in ibus_bus_request_name() to follow DBus RequestName signal spec. http://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-names This is needed to terminate the current IBus panel. E.g. IBus GTK panel is launched by ibus-daemon but another panel is launched by gnome-shell. 5. Support IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT in ui/gtk/main.py 6. Fix bus_component_set_factory() not to call bus_component_factory_destroy_cb() twice. 7. Hide ibus_text_new_from_static_string() for GIR. 8. Add ibus_is_running_gnome_shell() for ibus-ui-gtk because gnome-shell runs earlier than ibus-ui-gtk. Review URL: http://codereview.appspot.com/4279042 Patch from Takao Fujiwara . M bus/component.c M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/ibusimpl.c M bus/marshalers.list M ibus/bus.py M ibus/common.py M src/Makefile.am M src/ibusbus.c M src/ibusbus.h M src/ibusproperty.c M src/ibusproperty.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h A src/ibusutil.c A src/ibusutil.h M ui/gtk/main.py M ui/gtk/panel.py commit ac30990eddbe9e4a0f9b08cc86155654d8fb3c3d Author: Daiki Ueno Date: 2011-04-08 10:11:39 +0900 Export surrounding-text API to Python. BUG=none TEST=manually with modified ibus-anthy https://github.com/ueno/ibus-anthy/commit/2303095f Review URL: http://codereview.appspot.com/4377045 M ibus/engine.py M ibus/interface/iengine.py commit 65c5465863bc4d9408cbec5ac0ef7f98d5db779f Author: Peng Huang Date: 2011-04-05 10:27:32 -0400 Fix make dpkg errors. BUG=none TEST=make dpkg Review URL: http://codereview.appspot.com/4324047 M debian/libibus-1.0-0.symbols M debian/rules commit 06e6abee9f221bdf7c277538ce136154465619d7 Author: Daiki Ueno Date: 2011-04-05 10:11:49 -0400 Support surrounding-text retrieval. Unlike the GtkIMContext API, IBus automatically retrieves surrounding-text when certain events occurred to the client ("before filter_keypress", for example). This makes the engine API simpler but causes periodical emission of D-Bus signals for updating surrounding-text information, which is unwanted for typical engines. For this reason, the surrounding-text support is currently disabled by default. To enable it, pass --enable-surrounding-text to configure. Also, even surrounding-text support is compiled in, IBus does not start polling until an engine requests surrounding-text using ibus_engine_get_surrounding_text(). To make the function work for the first time, clients should retrieve initial surrounding-text when the engine is enabled (see ibus_im_context_focus_in() and _ibus_context_enabled_cb() in client/gtk2/ibusimcontext.c). BUG=Issue#778 TEST=manual Review URL: http://codereview.appspot.com/4276082 Patch from Daiki Ueno . M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M client/gtk2/ibusimcontext.c M configure.ac M ibus/engine.py M ibus/interface/iengine.py M ibus/interface/iinputcontext.py M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusmarshalers.list commit 6a39a86f84fb59c06a246c1bb3f50abbf6c9f8d1 Author: Peng Huang Date: 2011-04-05 10:08:34 -0400 Fix a crash during creating IBusProxy asynchronously BUG=chromium-os:13629 TEST=Linux desktop Review URL: http://codereview.appspot.com/4344061 M src/ibusbus.c M src/ibusproxy.c M src/tests/.gitignore M src/tests/Makefile.am A src/tests/ibus-inputcontext-create.c commit 15e29ac3ad45c1b909fc532fe98cf3b09dfb6426 Author: fujiwarat Date: 2011-04-04 19:33:47 +0900 Update translations. Update ar.po as.po da.po es.po fr.po gu.po hi.po kn.po mr.po nl.po or.po pa.po pl.po pt_BR.po ta.po te.po uk.po zh_CN.po zh_TW.po and LINGUAS. M po/LINGUAS M po/ar.po M po/as.po M po/da.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/kn.po M po/mr.po A po/nl.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ta.po M po/te.po A po/uk.po M po/zh_CN.po M po/zh_TW.po commit 1428a361cd3b416c4e4da7839f4a3ec23a67eb12 Author: fujiwarat Date: 2011-03-31 12:56:45 +0900 Use ibus panel icon from the desktop theme instead of ibus-keyboard. M configure.ac M ibus/_config.py.in M ui/gtk/panel.py commit ed4775b5fec355c1ccb13947d03dcac0aaaeb47f Author: James Su Date: 2010-05-12 15:38:42 -0700 Change default values of some config. This CL changes the default value of use_global_engine, enable_by_default and use_sys_layout to TRUE. And also removes the default trigger key. BUG=none TEST=none Review URL: http://codereview.chromium.org/2008016 M bus/ibusimpl.c commit ef2be0415bbe948ce4be39b8a5d2bc60c3384bb2 Author: Daiki Ueno Date: 2011-03-29 09:39:44 -0400 Use gtk_status_icon_set_name() only if it is available. gtk_status_icon_set_name() is not exported to python through pygtk2 <= 2.17, which is the version from Debian sid and Fedora 14. >>> import gtk >>> gtk.pygtk_version (2, 17, 0) >>> hasattr(gtk.StatusIcon, 'set_name') False This patch checks the availability. BUG=none TEST=manual Review URL: http://codereview.appspot.com/4327042 Patch from Daiki Ueno . M ui/gtk/panel.py commit 5ef29602141945ed1255662576c2e8194af78325 Author: fujiwarat Date: 2011-03-25 13:57:31 +0900 Set WM_CLASS name instead of main.py M ui/gtk/panel.py commit 637947404f977b830e2bd9719a292ad48d0dac5b Author: Daiki Ueno Date: 2011-03-25 11:16:18 -0400 Add "in" keymap which maps Alt_R to AltGr. BUG=none TEST=manually with ibus-m17n Review URL: http://codereview.appspot.com/4273109 Patch from Daiki Ueno . M data/keymaps/Makefile.am A data/keymaps/in commit ee54659184e384b25b7ee5016a12e1b81415fe66 Author: Peng Huang Date: 2011-03-25 11:07:38 -0400 Verify global engine after changing preload_engines BUG=http://crosbug.com/13406 TEST=Linux desktop Review URL: http://codereview.appspot.com/4273111 M bus/ibusimpl.c commit 7903a536375936efb6b8a38fd8f44b8d2ac6a837 Author: Peng Huang Date: 2011-03-23 09:44:20 -0400 Fix make debian package errors. BUG=none TEST=make dpkg Review URL: http://codereview.appspot.com/4279068 M debian/libibus-1.0-0.symbols commit cff009de738fe0a6cb0cfdd725952b928afc6c58 Author: Peng Huang Date: 2011-03-23 09:44:06 -0400 Fix typos in IBusInputContext document BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4273094 M src/ibusinputcontext.h commit 0514dc88147f7f178325f546bf073d0e1a261ddb Author: Peng Huang Date: 2011-03-23 09:43:43 -0400 Use $(SED) to replace sed BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4280059 M docs/reference/ibus/Makefile.am commit 597820e6ad9f59f596aec6f714ca6b37f2a991c6 Author: Yusuke Sato Date: 2011-03-22 22:36:52 +0900 Link appropriate libraries to ibus-scan. TEST=git clone the clean tree, ran ./autogen.sh --enable-gtk-doc, then ran make. Review URL: http://codereview.appspot.com/4289060 M docs/reference/ibus/Makefile.am commit 0929e30b91dbb7955c9f90e058bb644ff946298d Author: Yusuke Sato Date: 2011-03-22 14:09:34 +0900 Add asynchronous InputContext.IsEnabled and InputContext.GetEngine APIs. * Added asynchronous InputContext.IsEnabled and InputContext.GetEngine APIs. Now all InputContext IPCs can be async. * Added comments to src/ibusinputcontext.h. * Moved input context tests from ibus-bus.c to ibus-inputcontext.c (new file), and fixed flaky tests. * Fixed typos in bus/. BUG=http://code.google.com/p/ibus/issues/detail?id=1215 TEST=ran the new test Review URL: http://codereview.appspot.com/4298049 M bus/ibusimpl.c M bus/inputcontext.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/tests/.gitignore M src/tests/Makefile.am M src/tests/ibus-bus.c A src/tests/ibus-inputcontext.c commit 8306617bc88fc85d818af749ee23ff115c3de5f8 Author: Peng Huang Date: 2011-03-18 09:24:18 -0400 Create a separate test case for ibus_bus_create_input_context_async(). Create a separate test case for ibus_bus_create_input_context_async(), so we can use `ibus-bus -p /ibus/create-input-context' to test and debug ibus_bus_create_input_context_async() only. BUG=none TEST=make check Review URL: http://codereview.appspot.com/4298045 M src/tests/ibus-bus.c commit 1861184a71b1210d7e07a19fdf90ecc4ce0be7b9 Author: Peng Huang Date: 2011-03-17 10:52:38 -0400 Refine document and coding style in ibusbus.[ch] and trim some private structs and api from document BUG=none TEST=make Review URL: http://codereview.appspot.com/4290053 M .gitignore M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am A docs/reference/ibus/trim.sed M src/.gitignore M src/ibusbus.c M src/ibusbus.h commit 13697b0aec5efcb999d02720170fe968ac6dfaba Author: Peng Huang Date: 2011-03-17 10:49:03 -0400 Do not block UI in IBusIMContext anymore. Replace some block IPC calls with async IPC calls, and then IBusIMContext will not block UI anymore. BUG=http://crosbug.com/12310 TEST=Linux desktop Review URL: http://codereview.appspot.com/4287054 M bus/ibusimpl.c M bus/inputcontext.c M client/gtk2/ibusimcontext.c M debian/libibus-1.0-0.symbols M src/ibusbus.c M src/ibusbus.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/tests/ibus-bus.c commit b9b2c42596e1a7394e89c11025074aed2fcb099a Author: Peng Huang Date: 2011-03-16 10:02:47 -0400 Fix issue of InputContext.SetEngine. InputContext.SetEngine returns error sometimes, because "request-engine" signal handler calls an async function to set the engine of the context. So checking context->engine != NULL just after emiting "request-engine" signal is not correct. BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4287049 M bus/ibusimpl.c M bus/inputcontext.c M bus/marshalers.list commit 14b7d1a071c08c327ab836a2b7bd3e3b2ab7d1af Author: Peng Huang Date: 2011-03-16 10:01:18 -0400 Add git.mk from gtk+ project, Use it to update .gitignore BUG=none TEST=make Review URL: http://codereview.appspot.com/4280050 M .gitignore M Makefile.am M bindings/Makefile.am M bindings/vala/Makefile.am M bus/.gitignore M bus/Makefile.am M client/Makefile.am M client/gtk2/Makefile.am M client/gtk3/Makefile.am M client/x11/.gitignore M client/x11/Makefile.am M data/.gitignore M data/Makefile.am M data/icons/Makefile.am M data/keymaps/Makefile.am A debian/.gitignore M docs/.gitignore M docs/Makefile.am M docs/reference/Makefile.am M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am M gconf/.gitignore M gconf/Makefile.am A git.mk M ibus/.gitignore M ibus/Makefile.am M ibus/interface/Makefile.am M m4/.gitignore M m4/Makefile.am M memconf/Makefile.am M po/.gitignore M setup/.gitignore M setup/Makefile.am M src/.gitignore M src/Makefile.am M src/tests/.gitignore M src/tests/Makefile.am M ui/Makefile.am M ui/gtk/.gitignore M ui/gtk/Makefile.am M util/IMdkit/Makefile.am M util/Makefile.am commit 596680ba3cfd5aa8e4c2ef4bd5905a25c4c855b0 Author: Peng Huang Date: 2011-03-15 13:32:55 -0400 Update gtk-doc BUG= TEST=Linux documemt Review URL: http://codereview.appspot.com/4277054 M docs/reference/ibus/Makefile.am D docs/reference/ibus/ibus-sections.txt M src/ibusbus.h commit 71bcf46f2aac7a81291bf2782915b8bf4cc36edf Author: Zach Kuznia Date: 2011-03-14 15:42:32 +0900 This can cause crashes on cleanup when multiple components are implemented in the same process. Review URL: http://codereview.appspot.com/4241058 Patch from Zach Kuznia . M src/ibusservice.c commit 26084822d7ac9395b4553a7852a78d6d0d4bed0f Author: fujiwarat Date: 2011-03-11 15:53:53 +0900 Fix preedit_string = NULL in ibus-x11 _free_ic() M client/x11/main.c commit 5617ef1553bccb4894ef2e83f2021fda7ca6b815 Author: Peng Huang Date: 2011-03-11 10:37:40 -0500 Fix make check error BUG=none TEST=make check Review URL: http://codereview.appspot.com/4250077 M po/POTFILES.in commit 57eee844b6087c188be1c7f8676d2c5acdf89a7d Author: Yusuke Sato Date: 2011-03-10 08:44:38 +0900 Update symbols file. ./autogen.sh ./configure --enable-gtk-doc make dpkg cp ppa/ibus-1.3.99.20110309/debian/libibus-1.0-0/DEBIAN/symbols debian/libibus-1.0-0.symbols vi debian/libibus-1.0-0.symbols # remove "-1phuang1~maverick1" make dpkg # confirm that lintian does not report an error. Review URL: http://codereview.appspot.com/4253068 M debian/libibus-1.0-0.symbols commit 32367ad614c9f4bceb55eb812860ea8ae674925e Author: Yusuke Sato Date: 2010-09-15 12:25:17 +0900 Fix issues of the "previous_engine" hotkey. Check global_previous_engine_name when the previous engine is requested and rewrite it if necessary. This change ensures that the "previous_engine" hotkey (Ctrl+space on Chrome OS) always works whenever two or more engines are preloaded. Currently, Ctrl+space could become NOP by the following scenarios (http://crosbug.com/6609): (1) 1. preload engines A, B, C. 2. switch to A. 3. switch to B. 4. at this point, ctrl+space works fine. It selectes A and B alternately. 5. switch to A. 6. remove B from the preloaded engline list. 7. at this point, ctrl+space suddenly becomes NOP although C is still preloaded. This is because the callback function of ctrl+space detects global_previous_engine_name (i.e. B) is removed and automatically selects A (not C) as a global_previous_engine_name. (2) 1. preload engines A, B. 2. switch to A. 3. switch to B. 4. at this point, ctrl+space works fine. It selectes A and B alternately. 5. switch to A. 6. remove B from the preloaded engline list. 7. press ctrl+space several times, confirm that nothing happens (this is expected since only one engine, A, is preloaded). 8. preload additional engine, C. 9. at this point, ctrl+space is still NOP although two engines, A and C, are preloaded. M bus/ibusimpl.c commit 2fbbf4312d4b33885aa36df7b8d966c6ebf698c6 Author: James Su Date: 2010-05-26 22:31:06 -0700 If the current engine is removed, then switch to another engine automatically. BUG=http://crosbug.com/3577 TEST=manual test. Review URL: http://codereview.chromium.org/2259004 M bus/ibusimpl.c commit f4eae684f5e83af489b3d36662f9eddb79a0cc8e Author: Yusuke Sato Date: 2011-03-08 21:57:10 +0900 Remove -Wall warnings. Review URL: http://codereview.appspot.com/4261056 M client/gtk2/ibusimcontext.c M src/tests/ibus-bus.c commit 3980dd91d097a009e0967a122f284e5e4cfd07c6 Author: Yusuke Sato Date: 2011-03-08 00:55:36 +0900 Add asynchronous APIs to ibusbus.h Modified src/tests/ibus-bus.c so that it could be compiled with ibus-1.3.99 as well. BUG=chromium-os:12581 TEST=added async api tests to the src/tests/ibus-bus.c and ran it locally. Review URL: http://codereview.appspot.com/4179061 M src/ibusbus.c M src/ibusbus.h M src/tests/ibus-bus.c commit fbdd157b2ab1e6e873818132530dd9e55e4f94dd Author: Peng Huang Date: 2011-03-07 10:26:04 -0500 Move gtk_key_snooper_remove from function object_fini to class_fini. BUG=http://crosbug.com/12803 TEST=Linux desktop Review URL: http://codereview.appspot.com/4267044 M client/gtk2/ibusimcontext.c commit 279ee5d5b3697b427cc22cd99a55f4e611318e25 Author: Peng Huang Date: 2011-03-01 15:34:37 -0500 Optimize focus_in to avoid call some UI blocking functions. focus_in calls some X blocking functions. It will block UI. This change delays the X blocking calls to idle callback, to avoid blocking UI. BUG=http://crbug.com/74237 TEST=Linux desktop Review URL: http://codereview.appspot.com/4254048 M client/gtk2/ibusimcontext.c commit 690be230c116afd52a6002d2ef92b56e28d829b1 Author: Peng Huang Date: 2011-02-28 15:57:47 -0500 Unify async and sync function names. BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4246042 M client/gtk2/ibusimcontext.c M client/x11/main.c M debian/libibus-1.0-0.symbols M src/ibusinputcontext.c M src/ibusinputcontext.h commit 31b3b6a9577bb4c2787c73675f53ba38647a1501 Author: Peng Huang Date: 2011-02-28 10:25:54 -0500 Fix a race problem in SetGlobalEngine and add set_global_engine in python library The race problem: 1. global engine == A 2. call SetGlobalEngine(B) asynchronously 3. call SetGlobalEngine(A) immediately 3.1 Because step 2 is not finished, so the global engine is still A, and SetGlobalEngine(A) returns sucessfully. 4. SetGlobalEngine(B) is completed and the global engine becomes B BUG=http://crosbug.com/12414 TEST=Linux desktop Review URL: http://codereview.appspot.com/4250041 M bus/ibusimpl.c M ibus/bus.py M ibus/interface/iibus.py commit 8ebad5f07b1ba821e278d4d04ab74e2d31a40139 Author: fujiwarat Date: 2011-02-19 04:52:40 +0900 Call gtk_key_snooper_remove when GTK IM client is switched. M client/gtk2/ibusimcontext.c commit fb153c2a95746fde7a166775c65d281cb757cbfa Author: Peng Huang Date: 2011-02-18 10:59:49 -0500 Fix make dpkg errors. BUG=none TEST=make dpkg Review URL: http://codereview.appspot.com/4184055 M debian/libibus-1.0-0.symbols commit 0b02c819eee5d7cf9b7be449887677af76ee4731 Author: Peng Huang Date: 2011-02-18 10:59:06 -0500 Add enable_conditional and disable_conditional in gconf schemas file BUG=none TEST=manual Review URL: http://codereview.appspot.com/4183057 M data/ibus.schemas.in commit d68f26bd70933df9d18d88e98c2079ce8c2f3dc2 Author: Peng Huang Date: 2011-02-18 10:58:27 -0500 Fix crash when turn off "use global engine" option BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4170061 M bus/ibusimpl.c commit ff5db2e177944df295cf370ee066812223a75b0e Author: Peng Huang Date: 2011-02-18 09:08:41 -0500 Destroy IBusInputContext correctly in ibus-x11 BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4178062 M client/x11/main.c commit 5bd623d697da442c9107bcb8ecd9012d2e3f8731 Author: fujiwarat Date: 2011-02-17 15:08:37 +0900 s/LC_MESSAGES/LC_CTYPE/ in set_default_preload_engines. M bus/ibusimpl.c commit 9edd39912564e07dc734b5101b2c9995389aa234 Author: Peng Huang Date: 2011-02-16 15:49:09 -0500 Do not create GSimpleAsyncResult in ibus_input_context_process_key_event This change also fixes memory leak of simple result object BUG=none TEST=Linux desktop Review URL: http://codereview.appspot.com/4175051 M src/ibusinputcontext.c commit d0755b083d954383a791256b2db4f1b3d1f0a001 Author: Yusuke Sato Date: 2011-02-16 23:42:27 +0900 Add async version of set_global_engine. Patch from Zach Kuznia , modified by Yusuke Sato . Review URL: http://codereview.appspot.com/4175047 M src/ibusbus.c M src/ibusbus.h commit d9f8ed3e18338afefe4cf0ec2c12ca6d6e76e3b6 Author: Yusuke Sato Date: 2011-02-16 15:45:29 +0900 Implement async version of ibus_config_set_value. BUG=crosbug.com/11903 Review URL: http://codereview.appspot.com/4185041 M src/ibusconfig.c M src/ibusconfig.h commit 07877cf6f15d4d222738ab18cb9860083581ca82 Author: Yusuke Sato Date: 2011-02-15 16:44:05 +0900 Add engine_name parameter to the global-engine-changed signal. This makes it possible for a client to know the current global engine w/o issuing GetGlobalEngine reqeust. BUG=chromium-os:11908 Review URL: http://codereview.appspot.com/4177045 M bus/ibusimpl.c M src/ibusbus.c commit 661f1e860ea0d5145485a3c141c811e999f522a4 Author: Yusuke Sato Date: 2011-02-15 10:27:03 +0900 Use LC_MESSAGES instead of LC_ALL in bus_ibus_impl_set_default_preload_engines. This is a fix for https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/716314. Calling setlocale(LC_ALL, NULL); in the function seems not to be a good idea since the function could return a complex string like "LC_CTYPE=ja_JP.UTF-8;LC_NUMERIC=C;LC..." when two or more values are used for LC_xxx variables (e.g. ja_JP.UTF-8 and C.) BUG=1204 Review URL: http://codereview.appspot.com/4160046 M bus/ibusimpl.c commit 5743b6da70f7722792c21ec50415dce4f1790af5 Author: Yusuke Sato Date: 2011-02-15 10:24:20 +0900 Never use ibus's US keymap in bus_input_context_filter_key, and use the keyval from X as-is. I think this is important for supporting non-US keyboards like a Japanese-106 keyboard correctly. Currently, when use_sys_layout config is unchecked (the default), ibus-daemon discards a keyval being passed from X, and regenerates a keyval from a keycode assuming the US layout. However, I believe this behavior is not good for non-US keyboard layout users (e.g. Japanese or Korean keyboard users.) For example, the Japanese 106 keyboard has a key called Zenkaku_Hankaku (全角_åŠè§’, whose keycode is 49) on the left hand of the '1' key, and most users want to use the key for toggling IME. But, even if a user set 'Zenkaku_Hankaku' as the toggle hotkey using ibus-setup, the user cannot toggle IME unless the 'Use system keyboard layout' option is explicitly turned on. This is because when use_sys_layout is unchecked, ibus-daemon treats the Zenkaku_Hankaku key press (keycode=49) as tilde (~) key press (remember that the tilde's keycode is also 49 in the US keyboard layout.) This is very inconvenient and confusing. Please also note that the hotkey configuration tool in ibus-setup always respects a keyval from X, and never checks the use_sys_layout value. Review URL: http://codereview.appspot.com/4173046 M bus/inputcontext.c commit c394fea7874df0173cf07d891976086ab343bead Author: Yusuke Sato Date: 2011-02-15 10:22:48 +0900 Always call g_simple_async_result_complete in ibus_input_context_process_key_event_done in order to handle IPC errors correctly. Review URL: http://codereview.appspot.com/4171049 M src/ibusinputcontext.c commit b2c7173b30fb41925dbef8355477497fba43d887 Author: Ahmad Sharif Date: 2011-02-12 23:38:35 +0900 Fix compiler warnings in util/IMdkit/. BUG=1201 Review URL: http://codereview.appspot.com/4171046 Patch from Ahmad Sharif . M util/IMdkit/i18nPtHdr.c M util/IMdkit/i18nX.c commit 753835819886f7a46f938826632b123287f589f0 Author: Yusuke Sato Date: 2011-02-12 22:56:49 +0900 Ran 'make update-po' in po/. BUG=1173 Review URL: http://codereview.appspot.com/4181044 M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit b66b337e9a30d55542fbae4611565e47e932ce0a Author: Yusuke Sato Date: 2011-02-11 23:53:34 +0900 Reimplement ibus_bus_watch_dbus_signal for GDBus and export it. BUG=crosbug.com/11479 Review URL: http://codereview.appspot.com/4186041 M src/ibusbus.c M src/ibusbus.h commit e3140b7206d409419faa0c8bfa50f25ad3644cd0 Author: Yusuke Sato Date: 2011-02-11 23:48:42 +0900 Support enable/disable hotkeys that enable or disable ibus unconditionally (i.e. not toggle.) I'll update ibus/po/*po files if the change looks good to you. BUG=http://code.google.com/p/ibus/issues/detail?id=1173 TEST=manually Review URL: http://codereview.appspot.com/3807047 M bus/ibusimpl.c M ibus/common.py M setup/main.py M setup/setup.ui commit 377c06515e792c2da4f4cf342ba5faa26eac5170 Author: phuang Date: 2011-02-09 21:02:44 +0900 Fix ibus-daemon deadlock in engineproxy.c. How to reproduce the deadlock on a desktop Linux like Ubuntu Maverick: 1. Add 20 seconds sleep in the beginning of the main() function of an engine (e.g. ibus-engine-mozc). See http://crosbug.com/11379#c16 . 2. Set preload_engines to "mozc" using ibus-setup. 3. Start ibus-daemon. 4. press the trigger hotkey twice within the 20 seconds. Expected: The second trigger hotkey press cancels the bus_engine_proxy_new operation started by the first one. Actual: ibus-daemon freezes. Stack trace: http://crosbug.com/11379#c20 BUG=http://crosbug.com/11379 TEST=see the steps above. Review URL: http://codereview.appspot.com/4125053 Patch from phuang . M bus/engineproxy.c M bus/inputcontext.c commit 0501756a1e51469849eca064aeb1e340afbf8be2 Author: fujiwarat Date: 2011-02-09 00:51:39 +0900 Add pkgdatadir in ibus-1.0.pc.in M ibus-1.0.pc.in commit 8199abcde4175971da78141b680eb9bb80fc2ad2 Author: fujiwarat Date: 2011-02-09 00:50:44 +0900 Add GTK3 definitions. M client/gtk2/ibusimcontext.c commit 31d1e1c41cc644d3c3c9da2e076728134d3b7439 Author: fujiwarat Date: 2011-02-09 00:50:56 +0900 Fix typo. M client/gtk2/ibusimcontext.c commit 03c9e591430c62354bbf26ef7bd4a2e6acfb7c8f Author: Yusuke Sato Date: 2011-02-03 10:15:24 +0900 Overwrite Gtk+'s default compose table to fix crosbug.com/11421. BUG=chromium-os:11421 TEST=manually done on Chrome OS. Review URL: http://codereview.appspot.com/3989060 M client/gtk2/ibusimcontext.c commit 0e6fa20c2521c5e23fe2f5bdd17bcbdfcf227da8 Author: Peng Huang Date: 2011-01-27 18:01:34 -0500 Fix build debian package error. BUG= TEST=make dpkg Review URL: http://codereview.appspot.com/4013046 M debian/libibus-1.0-0.symbols commit af0c9bcf7483a3d1f4520526f6d08222ae21ec1b Author: Peng Huang Date: 2011-01-27 10:06:09 -0500 Export async version ibus_input_context_process_key_event. Some application may want to integrate with ibus directly, and want to use async mode for processing key events. So I make ibus_input_context_process_key_event to be an async function, and also added ibus_input_context_process_key_event_sync. Fix problem in introspection of Engine. BUG=none TEST=Tested in Ubuntu 10.10 Review URL: http://codereview.appspot.com/4032044 M client/gtk2/ibusimcontext.c M client/x11/main.c M debian/libibus-1.0-0.symbols M src/ibusinputcontext.c M src/ibusinputcontext.h commit 8f3bd1b11df8806c596b9b311997f24cbfec1e66 Author: Peng Huang Date: 2011-01-26 19:18:05 -0500 Fix problem in introspection of Engine. BUG=http://code.google.com/p/ibus/issues/detail?id=1194 TEST=Tested in Ubuntu 10.10 Review URL: http://codereview.appspot.com/4084046 M src/ibusengine.c commit ea3917659bb7be5ee93ced938d5b522a468f7677 Author: fujiwarat Date: 2011-01-26 13:15:08 +0900 Fix introspection definitions. M src/ibusbus.h M src/ibusinputcontext.h commit cc1d776aeb65b481b1bd93e1f7acfbe4fea8e1f2 Author: fujiwarat Date: 2011-01-26 14:01:25 +0900 Set QT_IM_MODULE=xim in case of no ibus-qt. M xinput-ibus.in commit 73135d06d2195cee5630918e48003347315eb653 Author: fujiwarat Date: 2011-01-26 14:01:17 +0900 Add signals in IBusPanelService for non-C classes. M src/ibuspanelservice.c M src/ibuspanelservice.h commit f28d3e30cb04dc0eee5a657469f2c8d49d7056e0 Author: fujiwarat Date: 2011-01-24 12:25:48 +0900 Set GdkEventKey time for gdk_event_put with IBUS_FORWARD_MASK. M client/gtk2/ibusimcontext.c commit d26f418a3df4a9ad78dd952d997e028ba24c88f9 Author: Yusuke Sato Date: 2011-01-24 10:56:05 +0900 Add to introspection_xml in src/ibusconfigservice.c. I don't think that GDBus library in glib-2.26.[01] uses the information to filter out undefined signals, but just in case. BUG=none TEST=manually Review URL: http://codereview.appspot.com/4015043 M src/ibusconfigservice.c commit e1e72a2052ea3c869002bbba9055eab4a9e88aaa Author: Peng Huang Date: 2011-01-21 10:57:54 -0500 Fix some race conditions during create engine, also fix dpkg build error. BUG=chromium-os:10750 TEST=on Linux desktop Review URL: http://codereview.appspot.com/3970044 M bus/engineproxy.c M debian/libibus-1.0-0.symbols commit 683e301b689f3fe74769f4a7f2ad1b159e54790d Author: Yusuke Sato Date: 2011-01-21 21:03:23 +0900 Emit the connected signal after setting up the connection. Otherwise, we might miss the first a few DBus and IBus signals. BUG=http://crosbug.com/11144 TEST=see the bug. Review URL: http://codereview.appspot.com/4029043 M src/ibusbus.c commit b5382549a2f4009e0e4da20c7491ba28e7cca60f Author: Yusuke Sato Date: 2011-01-19 10:55:16 +0900 Fix race condition between ibus_bus_set_global_engine() and ibus_bus_get_global_engine(). If focus moves between the two API calls, ibus_bus_get_global_engine() might return an unexpected engine name: 1. context A is focused, and the current global engine is "X". 2. ibus_bus_set_global_engine("Y") is called. 3. a user moves the focus from A to B. First, A's engine is set to NULL in bus_ibus_impl_set_focused_context(). Then, in the same function, B's engine is set to "X" (not "Y") since the _ibus_set_global_engine asynchronous call is not finished yet. 4. ibus_bus_set_global_engine("Y") async call successfully finishes. Context A's (not B's) engine is set to "Y", but context B, which has a focus, is not updated. 5. ibus_bus_get_global_engine() is called. expected: Y is returned. actual: X is returned. Since the context B has a focus, and B's engine is X. BUG=http://crosbug.com/11031 TEST=see the bug Review URL: http://codereview.appspot.com/4063041 M bus/ibusimpl.c commit e194133baa0afc7fdb1befc18c2c1f516979a9be Author: Yusuke Sato Date: 2011-01-19 10:18:13 +0900 Do not allow clients to destroy the server-side config service for safety. Unset the own flag of priv->config so that the config proxy object never destroys the config service even if a client wrongly unref()s the priv->config object. BUG=none TEST=manually Review URL: http://codereview.appspot.com/4060041 M src/ibusbus.h M src/ibusconfig.c commit 302c85138bac23e7e5faf223119df0d5d04f9b0d Author: Yusuke Sato Date: 2011-01-18 22:00:57 +0900 Fix possible SEGV in ibus_bus_get_global_engine. The g_variant_get returns NULL when the IPC call times out. BUG=none TEST=none Review URL: http://codereview.appspot.com/3974043 M src/ibusbus.c commit 6b4874283c510869080eed2c63d61e54f8beeba8 Author: Yusuke Sato Date: 2011-01-18 21:51:40 +0900 Handle GlobalEngineChanged signals from ibus-daemon. BUG=http://crosbug.com/11011 TEST=manually Review URL: http://codereview.appspot.com/4037042 M src/ibusbus.c M src/ibusbus.h commit 469bfe396a0fa680ade8536b9bd9829918be2994 Author: Yusuke Sato Date: 2011-01-18 10:33:48 +0900 On ChromeOS, we don't have to (and don't want to) set default preload engines. BUG=none TEST=manually Review URL: http://codereview.appspot.com/4054041 M bus/ibusimpl.c commit 6a5c7666e1194e8ac8a3d0c3f680269b42fe80c2 Author: Daiki Ueno Date: 2011-01-17 14:22:18 +0900 Set nonzero serial number for RegistryChanged / EngineChanged signals. libdbus expects each message serial is greater than 0. https://code.google.com/p/ibus/issues/detail?id=1186 BUG=none TEST=manual test described in the issue#1186 Review URL: http://codereview.appspot.com/4050041 M bus/ibusimpl.c commit 990ff3920657584d356c48bebde031405285bf80 Author: Yusuke Sato Date: 2011-01-16 11:35:09 +0900 Fix typo in the default configuration of the trigger hotkeys. According to setup/keyboardshortcut.py, "Control" seems to be correct. BUG=none TEST=compile ibus with --enable-memconf, start ibus-daemon, start ibus-setup, click "..." button for the "Enable or disable" hotkey, then verify that the "Control" checkbox in the pop-up dialog is checked from the beginning. Review URL: http://codereview.appspot.com/4017042 M ibus/common.py commit ee6abd76f7b0f0fc8e1a8b6964f4d8216a3b6618 Author: Yusuke Sato Date: 2011-01-16 11:34:34 +0900 Set correct g-flags to proxy objects. This change is similar to https://github.com/ibus/ibus/commit/19247aac5a348185a0e180f254ab3858c5f85703. The flag can prevent unnecessary communications between ibus-daemon and e.g. engines like this: $ . ~/.config/ibus/bus/*-unix-0 ; dbus-monitor --address $IBUS_ADDRESS 2>&1 | tee /tmp/ibus.log ... method call sender=org.freedesktop.DBus -> dest=(null destination) serial=3 path=/org/freedesktop/IBus/Factory; interface=org.freedesktop.IBus.Factory; member=CreateEngine string "mozc-jp" method return sender=:1.15 -> dest=org.freedesktop.DBus reply_serial=3 object path "/org/freedesktop/IBus/Engine/1" method call sender=org.freedesktop.DBus -> dest=(null destination) serial=4 path=/org/freedesktop/IBus/Engine/1; interface=org.freedesktop.DBus.Properties; member=GetAll string "org.freedesktop.IBus.Engine" method return sender=:1.15 -> dest=org.freedesktop.DBus reply_serial=4 array [ ] Calling an engine's org.freedesktop.DBus.Properties.GetAll method when the engine is created is unnecessary for ibus-daemon, while it's not harmful though. BUG=none TEST=verified using dbus-monitor that ibus-daemon does not call GetAll anymore. Review URL: http://codereview.appspot.com/4036041 M bus/engineproxy.c M bus/factoryproxy.c M bus/panelproxy.c commit ca4909cc8349a9931958c3010f965cf19bf23cd7 Author: Yusuke Sato Date: 2011-01-12 22:44:08 +0900 Fix a gcc warning seen in Chromium OS build. Please note that gcc's warn_unused_result check is enforced on the build environment. Anyway, I believe it's good to check the return value in this case. BUG=none TEST=ran emerge-x86-generic ibus. Review URL: http://codereview.appspot.com/3904044 M bus/registry.c commit 199f80396f2c3db4953bac36c953742ece2d2270 Author: Yusuke Sato Date: 2011-01-12 22:43:16 +0900 Remove a gcc warning. ibusxml.c: In function 'ibus_xml_parse_file': ibusxml.c:213: error: 'retval' may be used uninitialized in this function BUG=none TEST=ran make CFLAGS="-Wall -O2" Review URL: http://codereview.appspot.com/3858044 M src/ibusxml.c commit 1403dc6abe87bd649c95b2454b49af2deba63461 Author: Yusuke Sato Date: 2011-01-12 22:42:24 +0900 Fix typo in ibus_bus_exit. BUG=none TEST=ran make CFLAGS="-Wall -O2" Review URL: http://codereview.appspot.com/3900045 M src/ibusbus.c commit 411d8c5f21ea0d3f65bfc0cbdc98733af360b441 Author: Yusuke Sato Date: 2011-01-10 14:25:07 +0900 Fix the return value of ibus_bus_register_component so it returns TRUE on success. Do the same for ibus_bus_set_global_engine as well. Currently it always returns TRUE regardless of the result of the method call. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3902043 M src/ibusbus.c commit 783905fd6e6c8983237745ba90e05070559e0458 Author: Yusuke Sato Date: 2011-01-09 15:12:11 +0900 Change the return type of ibus_bus_exit to make it compatible with ibus-1.3 API. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3923042 M src/ibusbus.c M src/ibusbus.h commit d5bdf851d25b07062ecb2ea932b91317b1d9e72a Author: Daiki Ueno Date: 2011-01-07 10:42:44 +0900 Set correct sender and interface when sending org.freedesktop.IBus signals. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3775042 M bus/dbusimpl.c M bus/ibusimpl.c M bus/inputcontext.c commit b24b403295a655e0c5644c5ddca1cf3488a938ce Author: Yusuke Sato Date: 2011-01-07 01:38:23 +0900 Set the "g-default-timeout" property for ibusconfig, ibusinputcontext, and ibusbus objects. The GDBus default timeout (25 seconds) seems to be too long for IBus. BUG=none TEST=manually, with IBUS_BUS_TIMEOUT=-3,-2,-1,0,1,1000,6000,abc,1abc,abc1 Review URL: http://codereview.appspot.com/3799049 M src/ibusbus.c M src/ibusconfig.c M src/ibusinputcontext.c M src/ibusshare.c M src/ibusshare.h commit 144272e3a8b56cc9e9cec3f09688ae47c6166032 Author: Yusuke Sato Date: 2011-01-06 12:28:54 +0900 Use the G_DBUS_CALL_FLAGS_NO_AUTO_START flag just in case. BUG=none TEST=manually on Chromium OS. Review URL: http://codereview.appspot.com/3774043 M src/ibusbus.c commit dd4a4c1a7f64a9a7737171d7aeb8272de130475e Author: Yusuke Sato Date: 2011-01-06 12:24:36 +0900 Do not write empty string to "preload_engines" for safety. Without the change, bus_ibus_impl_set_default_preload_engines() might erase an existing preload_engines config when --timeout option for ibus-daemon is too short for ibus_config_get() to success. BUG=none TEST=manually with 'ibus-daemon --timeout=1' Review URL: http://codereview.appspot.com/3789046 M bus/ibusimpl.c commit 44e94a3d0c7812fd24bd0548601682a1c0b043d7 Author: Yusuke Sato Date: 2011-01-06 08:44:49 +0900 Call ibus_hotkey_profile_remove_hotkey_by_event in bus_ibus_impl_set_trigger before registering the fallback hotkey, just in case. Probably it's better to call the remove function in bus_ibus_impl_set_trigger just as bus_ibus_impl_set_hotkey already does, so that a wierd error message like 'IBUS-CRITICAL **: ...: file ibushotkey.c: line 381 (ibus_hotkey_profile_add_hotkey): should not be reached' will not be shown. The fallback hotkey could be registered twice, via bus_ibus_impl_init and _dbus_name_owner_changed_cb, if the --timeout parameter is too small to talk to the configuration daemon, for example. BUG=none TEST=ran ibus-daemon with --timeout=1 and verified that the IBUS-CRITICAL message above was not shown. Review URL: http://codereview.appspot.com/3796044 M bus/ibusimpl.c commit af1460aea63a65877544e65a335398bd670ad6ee Author: Yusuke Sato Date: 2011-01-06 08:25:47 +0900 Replace g_return_if_fail with g_warning since the error message 'desc != NULL' seems confusing. BUG=none TEST=manually. removed all engines using ibus-setup and ran ibus-daemon, then press a trigger hot-key. Review URL: http://codereview.appspot.com/3786047 M bus/ibusimpl.c commit c6e273c0ee91858bf5af2a87048f9d2977d368d5 Author: Yusuke Sato Date: 2011-01-06 08:22:38 +0900 Fix --timeout command line option of ibus-daemon. On 1.3.99, currently the option is just ignored and '-1' (i.e. the default timeout of gdbus which is 25 seconds in glib-2.26.1) is always used. We should fix this since the default, 25 secs, is too long for some platforms like Chromium OS. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3784047 M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/ibusimpl.c M bus/inputcontext.c M bus/main.c M bus/option.h M bus/panelproxy.c commit 2f0877decf4adde5d4779a13ab15c40c41985525 Author: Yusuke Sato Date: 2011-01-01 17:34:37 +0900 Support hotkeys that use Super/Hyper modifiers. BUG=1175 TEST=checked that Super+space and Hyper+space work as intended with and without the use_sys_layout option enabled. Review URL: http://codereview.appspot.com/3856041 M src/ibushotkey.c M src/ibuskeynames.c commit f4075519710719aa245ed8421f0219a129152fdb Author: Peng Huang Date: 2010-12-28 16:44:16 -0700 Reply an error message to sender, if ibus-daemon can not forward method call message successfully. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3825042 M bus/dbusimpl.c commit 017077ceb9ec2f26a8c524f3794a832164f21768 Author: Daiki Ueno Date: 2010-12-28 12:46:25 +0900 Fix g_variant_get() call in DeleteSurroundingText signal handler. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3820042 M src/ibusinputcontext.c commit 61f0894c3555478117e9d5f286d0085bd5afdad3 Author: Yusuke Sato Date: 2010-12-27 07:58:29 +0900 Fix API compatibility issue in ibus_config_new. On ibus-1.3, ibus_config_new returns NULL when ibus-gconf is not started yet, but on 1.4 it returns a valid, non-NULL IBusConfig object. This patch fixes the discrepancy by changing the behavior of ibus_config_new of 1.4. If we don't return NULL when ibus-gconf does not exist, successive calls e.g. ibus_config_set_value will fail with a cryptic error message like 'IBUS-WARNING **: org.freedesktop.IBus.Config.SetValue: Cannot invoke method; proxy is for a well-known name without an owner and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag'. I believe returning NULL makes it easier to use the ibusconfig.h APIs. Please note that this patch is particularly important for Chromium OS. Since ibus_config_new is called shortly after ibus-daemon starts on the OS, ibus_config_new is sometimes called before ibus-memconf starts actually. This change helps the glue between chrome and ibus-daemon to remain clean. BUG=none TEST=manually on Chromium OS Review URL: http://codereview.appspot.com/3784043 M src/ibusconfig.c commit 19247aac5a348185a0e180f254ab3858c5f85703 Author: Yusuke Sato Date: 2010-12-27 07:57:09 +0900 Create an instance of GDBusProxy with G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag. Without the flag, on_name_owner_changed() in glib-2.26.x/gio/gdbusproxy.c might invoke a remote method named GetAll in org.freedesktop.DBus.Properties interface, but the method is not implemented in ibus-daemon. Since ibus-daemon ignores the method call, the caller, which is UI thread of Chrome on Chromium OS, will block for 25 seconds (i.e. the default timeout of GDBus) waiting for a reply. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3836042 M src/ibusconfig.c M src/ibusinputcontext.c commit 7a8b3d722b83221168a339f46c7e8a617c735ade Author: Peng Huang Date: 2010-12-25 22:05:13 -0700 Fix Alt+Shift hotkey issue for chrome os BUG=chromium-os:6225 TEST=manual Review URL: http://codereview.appspot.com/3741043 M src/ibushotkey.c commit 911490b3f8adac433a91153000a63a0a7143fff2 Author: Yusuke Sato Date: 2010-12-22 23:03:03 +0900 Fix hot-key handling in inputcontext.c. Without the fix, some key combinations might not trigger a hot-key event. For example, one of Chrome OS hot-keys, "press Shift, then press Alt, then release Alt", does not work without the fix. BUG=none TEST=manually checked using ChromeOS and IBus-1.4 Review URL: http://codereview.appspot.com/3828041 M bus/inputcontext.c commit 2c3021469f770666e54e72bf8e6c306c7dd3a046 Author: Yusuke Sato Date: 2010-12-21 01:04:49 +0900 Add comments to ibusproxy.[ch] and related functions. BUG=none TEST=none Review URL: http://codereview.appspot.com/3802042 M bus/ibusimpl.c M src/ibusproxy.c M src/ibusproxy.h commit e4d8612776dbb5eca85ab35d9ad71ddd68db63e4 Author: Yusuke Sato Date: 2010-12-21 01:04:05 +0900 Fix ibus_input_context_get_input_context() so IBus.Service.Destroy will not be called when the returned object is disposed. BUG=none TEST=verified that calling g_object_unref(the_returned_object) does not result in the remote method call. Review URL: http://codereview.appspot.com/3803041 M src/ibusinputcontext.c M src/ibusproxy.c M src/ibusproxy.h commit fb0aee6d9f04e2b9e3177cfbd6cff359d40af879 Author: Daiki Ueno Date: 2010-12-20 18:19:04 +0900 Don't call nonexistent org.freedesktop.IBus.InputContext.Destroy. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3800041 M ibus/inputcontext.py commit 7ca2d0f5b8fe5eb395fdff850d482d44b6216300 Author: Yusuke Sato Date: 2010-12-20 15:02:20 +0900 Fix typo in introspection_xml[] for InputContext. https://github.com/ibus/ibus/commit/ed778cd7cfc78eb39fc74167f2169b69f4d72a6b was incomplete, sorry. BUG=none TEST=verified that properties can be changed via input context on Chrome OS. Review URL: http://codereview.appspot.com/3795041 M bus/inputcontext.c commit 6a8b35d0d0ffd4c130a849a86e8c3e50cbeba14a Author: Daiki Ueno Date: 2010-12-15 18:33:33 +0900 Init GError before calling g_dbus_proxy_call*(). BUG=none TEST=manual Review URL: http://codereview.appspot.com/3669041 M src/ibusinputcontext.c commit c3c20f8e45c27440e188e2bac3baca05cc966d71 Author: Daiki Ueno Date: 2010-12-15 18:32:17 +0900 Fix gtk version check for deprecated keysyms. From the git log of gtk3, they started adding _KEY from 2.91.0 not 2.90.0. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3670041 M client/gtk2/ibusimcontext.c commit bd5ead57debd3165d7dd89b099a1faadaa223eb3 Author: Peng Huang Date: 2010-12-15 17:04:43 +0800 Disconnect closed signal from GDBusConnection before creating a new connection. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3668041 M src/ibusbus.c commit 4de438c3dbb35399b479b78ada3398c5319fb7ba Author: Yusuke Sato Date: 2010-12-15 15:13:00 +0900 Fix assertion failure in ibusbus.c. The following code does not work since the underlying connection for IBus-1.4 is not a sub class of IBusObject. ibus_object_destroy ((IBusObject *)priv->connection); g_assert (priv->connection == NULL); BUG=none TEST=ran Chrome for Chrome OS. Review URL: http://codereview.appspot.com/3658041 M src/ibusbus.c commit 872aec110599de061e587746e8500e98f59feed9 Author: Yusuke Sato Date: 2010-12-15 14:36:19 +0900 Fix type mismatch in src/ibuspanelservice.c. BUG=none TEST=ran candidate_window for Chrome OS. Review URL: http://codereview.appspot.com/3661041 M src/ibuspanelservice.c commit ed778cd7cfc78eb39fc74167f2169b69f4d72a6b Author: Yusuke Sato Date: 2010-12-15 14:09:20 +0900 Use unsigned for the parameter of the PropertyActivate message. unsigned would be better since the Python binding and engine proxy use unsigned for this purpose. BUG=none TEST=ran Chrome for Chrome OS. Review URL: http://codereview.appspot.com/3660041 M bus/inputcontext.c M src/ibusinputcontext.c M src/ibusinputcontext.h commit 2ce1bd05306e416d243c49eed5608b18b12f62cf Author: Yusuke Sato Date: 2010-12-15 11:55:16 +0900 Fix type mismatch in the PropertyActivate message. src/ibusinputcontext.c sends the massage with "(si)" but the daemon use the massage as "(&su)". This triggers assertion failure on Chrome OS. BUG=none TEST=change ibus-mozc's property on Chrome OS via the IME menu. Review URL: http://codereview.appspot.com/3636041 M bus/inputcontext.c commit c2c4c6df3c0b650406be0615adb738540ebaf7af Author: Peng Huang Date: 2010-12-02 13:12:53 +0800 Fix crash in im-ibus.so BUG=chromium-os:9868 TEST=manual Review URL: http://codereview.appspot.com/3401041 M client/gtk2/ibusimcontext.c commit e0b882f5fb5e274f8ae909c2b2c3b634890c31b5 Author: Peng Huang Date: 2010-11-21 19:26:18 +0900 Focus out/in fake input context if the input window changed. BUG=chromium-os:8855 TEST=manual Review URL: http://codereview.appspot.com/3199042 M client/gtk2/ibusimcontext.c commit 93ceb44131ad5cef4691dae151259f268f3ba986 Author: Peng Huang Date: 2010-12-14 10:16:32 +0800 Focus out the fake context in im-ibus.so, when a real context gets the focus. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3561042 M client/gtk2/ibusimcontext.c commit 856bd2ea703a27fb88a82022392dbcd366a56d95 Author: Peng Huang Date: 2010-12-14 10:14:45 +0800 Add fake context back in IBusIMContext. The fake context is removed by mistake in ibus-1.4. It is necessary for Chrome OS. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3574042 M client/gtk2/ibusimcontext.c commit ac1be736ab513b46c642e9ceb8bfc3bf4dc50de4 Author: Peng Huang Date: 2010-12-13 17:37:09 +0800 Fix typo and annotation. Fix typo in IBusEngineDesc:rank doc and GI transfer mode for ibus_component_get_engines(). BUG=none TEST=manual Review URL: http://codereview.appspot.com/3614041 M src/ibuscomponent.h M src/ibusenginedesc.c commit 98419a4133f6358ec2e8ad56c62aacf3e3754c3e Author: Peng Huang Date: 2010-12-08 16:37:42 +0800 Fix GI transfer mode annotation in ibus_bus_list_*engines() comment. See https://bugzilla.gnome.org/show_bug.cgi?id=635248. Also, do not mark those functions as "not implemented", since they are apparently implemented. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3274044 M src/ibusbus.h commit 9b0e04d311f9e3e65cbdd245332502a7d36e9739 Author: Yusuke Sato Date: 2010-12-03 00:42:45 +0900 Add #include to ibus.h. Add #include to ibus.h so an external project (e.g. Chromium OS project) could implement its own panel component in C/C++. Review URL: http://codereview.appspot.com/3411041 M src/ibus.h commit 036554a6106ba28bf2282ad63711a277c0abfe85 Author: Yusuke Sato Date: 2010-12-03 00:41:15 +0900 Remove unused header file, src/ibusconfigprivate.h Review URL: http://codereview.appspot.com/3412041 M src/Makefile.am D src/ibusconfigprivate.h commit 4f1f7e241edf9c41bc158c1367380e5b0da9a670 Author: Yusuke Sato Date: 2010-12-01 22:00:44 +0900 Fix compile errors on Chromium OS. This is for the master branch of ibus. BUG=crosbug.com/9685 TEST=ran emerge-x86-generic ibus. Review URL: http://codereview.appspot.com/3368041 M bus/inputcontext.c commit 50ceef360174ab6709a4215706ea527735f10c7e Author: Yusuke Sato Date: 2010-11-29 12:04:27 +0900 Do not call g_critical when ibus->config is NULL since it's not an error. The change is originally for chromeos branch of ibus (http://codereview.appspot.com/3304043/) but I believe this is also good for the master branch of ibus. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3269043 M bus/ibusimpl.c commit cf2c9302528b9ece00eb3430600e8391f05f2a5c Author: Yusuke Sato Date: 2010-11-26 16:07:56 +0900 Add the "destroy" signal handler back following Peng's suggestion at http://codereview.appspot.com/3293042/. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3335041 M bus/panelproxy.c commit 85b5e0e92104d921f161bac22349db7f1f89790a Author: Yusuke Sato Date: 2010-11-26 10:15:08 +0900 Add function comments to bus/panelproxy.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3293042 M bus/panelproxy.c M bus/panelproxy.h commit ede7506ad1e69092a334bbd5b90a9f4b6c6349df Author: Yusuke Sato Date: 2010-11-25 17:54:19 +0900 Fix unexpected client capabilities in ibus-daemon. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3323041 M bus/inputcontext.c M src/ibusinputcontext.h commit a902bf42cb1bb8ce2ba9db147435cb52228281b4 Author: Yusuke Sato Date: 2010-11-25 17:40:43 +0900 Change the order of engine method calls for consistency. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3304042 M bus/inputcontext.c commit 9ff18b80fdb3be5ed1209698c9f22d06cad4dc47 Author: Yusuke Sato Date: 2010-11-25 16:55:04 +0900 Add function comments to bus/inputcontext.[ch] and bus/engineproxy.[ch]. Removed a temporary hack for PREEDIT_CONDITION by adding bus_ibus_impl_is_embed_preedit_text function to ibusimpl.c. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3321041 M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h commit 21c14908e7f274c32d1e454e57cd51840b15ed14 Author: Yusuke Sato Date: 2010-11-24 18:50:57 +0900 Re-enable the use_sys_layout feature. Currently use_sys_layout cannot be disabled. BUG=none TEST=manually Review URL: http://codereview.appspot.com/3306041 M bus/engineproxy.c M bus/ibusimpl.c M bus/inputcontext.c commit 5d4f22c81caad3ea6503fa8e0862aacf7fc2107a Author: Peng Huang Date: 2010-11-24 17:46:12 +0900 Pass cancellable object to bus_factory_proxy_create_engine BUG=none TEST=manual Review URL: http://codereview.appspot.com/3304041 M bus/engineproxy.c commit 5f1d5dd0089094f4ace175b451387d646ce81877 Author: Peng Huang Date: 2010-11-24 11:33:10 +0900 Clean up the code of focus switch logic, and fix a crash when focused context is destroyed. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3192042 M bus/ibusimpl.c M bus/inputcontext.c commit b483041c3b8b01ccc6a11dd97d313d191cb11093 Author: Peng Huang Date: 2010-11-24 11:29:19 +0900 Fix some crashs when engine processes are killed. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3152042 M bus/component.c M bus/engineproxy.c M bus/ibusimpl.c M bus/registry.c M client/gtk2/ibusimcontext.c M src/ibusobject.h M src/ibusproxy.c commit ee09d6331a4816044da78d8f5394da2b9d318989 Author: Peng Huang Date: 2010-11-24 10:29:26 +0900 Use g_object_add_weak_pointer to make code simpler. BUG=none TEST=none Review URL: http://codereview.appspot.com/3252041 M client/gtk2/ibusimcontext.c commit 3460cc569fc5e58ed538c23b23582166ed796fba Author: Jim Huang Date: 2010-11-22 01:37:04 +0800 Add generated files into .gitignore M .gitignore M bus/.gitignore A src/tests/.gitignore commit 50c0d8399e7f31135647999fc9cd78f8a888264a Author: Jim Huang Date: 2010-11-22 01:24:08 +0800 Avoid comparison of unsigned expression comparison of unsigned expression < 0 is always false M src/ibuskeymap.c commit 5fc6d9b8459ce47634012a42a638b6a091c205ee Author: Jim Huang Date: 2010-11-22 01:15:25 +0800 Add assertions to connection_destroy callback M bus/inputcontext.c commit be50bec410f0b4730dd80c69c4037521eceae9d9 Author: Peng Huang Date: 2010-11-21 19:13:34 +0900 Remove some unused header files. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3218041 M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c commit 4830992d531347f6cd464c384364e9b2cf7e96a6 Author: fujiwarat Date: 2010-11-18 12:23:45 +0900 Fix NULL of focused input context M bus/inputcontext.c commit b1b50dbbf0d3117da388e8035b490fb4c3e19ab2 Author: Yusuke Sato Date: 2010-11-17 19:15:38 +0900 Add comments to bus/connection.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3164041 M bus/connection.c M bus/connection.h commit 96cc5ab07c5c84e9807f3fb195166b7a5b09f2f5 Author: Yusuke Sato Date: 2010-11-17 19:14:44 +0900 Add comments to bus/factoryproxy.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3163041 M bus/factoryproxy.c M bus/factoryproxy.h commit f8416ad2ed6bf581a1f746b4205eda25804ee9b9 Author: Yusuke Sato Date: 2010-11-17 17:34:29 +0900 Add comments to bus/registry.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3162041 M bus/registry.c M bus/registry.h commit 2242d0279e7cc71c653c673acaedd4c47305ec17 Author: Yusuke Sato Date: 2010-11-17 17:12:32 +0900 Add comments about thread safety. BUG=none TEST=none Review URL: http://codereview.appspot.com/3156041 M bus/dbusimpl.c commit a632d5e774eef4f5384f62580a682192c46ac9a9 Author: Yusuke Sato Date: 2010-11-17 16:01:17 +0900 Add comments to bus/component.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3161041 M bus/component.c M bus/component.h commit e237282d262d27d97c441885c62aaacc4ae90f76 Author: Yusuke Sato Date: 2010-11-17 13:49:55 +0900 Add comments to bus/ibusimpl.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3154041 M bus/ibusimpl.c M bus/ibusimpl.h commit 90305393b3862fdb9d5860fa81aab59bb5d1eccc Author: fujiwarat Date: 2010-11-16 18:11:37 +0900 Fix no defined '_' in EngineAbout M ui/gtk/engineabout.py commit 60c0bc54c0654ac89b56e94b756bbba95e8f3521 Author: Peng Huang Date: 2010-11-16 17:59:48 +0900 Add introspection data for org.freedesktop.IBus.Panel and remove Destroy method. Add introspection data for org.freedesktop.IBus.Panel interface. And remove Destroy method from Panel interface, because it is moved to org.freedesktop.IBus.Service interface. BUG=none TEST=none Review URL: http://codereview.appspot.com/3137041 M src/ibuspanelservice.c M src/ibuspanelservice.h commit 217d2b49264d5335f8a0b5e8c70ff417547364aa Author: Yusuke Sato Date: 2010-11-16 15:43:12 +0900 Add comments to bus/dbusimpl.[ch]. BUG=none TEST=none Review URL: http://codereview.appspot.com/3132041 M bus/dbusimpl.c M bus/dbusimpl.h commit 7ccb594a14ff3e2f189af80a34c92e6b1113f577 Author: Peng Huang Date: 2010-11-16 14:22:23 +0900 Make sure send the reply of method IBus.Exit out before the daemon exits. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3133041 M bus/ibusimpl.c commit ac3ff55b7e4c23dd6ccd634b5b5eda683c0b2f43 Author: Peng Huang Date: 2010-11-16 14:02:34 +0900 Add global variable DOMAINNAME to replace "ibus10" in everywhere. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3093042 M setup/main.py M ui/gtk/i18n.py commit 97fe1c47e189178b10c23fb18b575813f60fe72a Author: fujiwarat Date: 2010-11-16 12:08:53 +0900 Fix ibus_version in configure and translation domain in ibus-setup. M configure.ac M setup/main.py commit 6e848591c101cbf6e14ed12f0e50deac7a486d71 Author: fujiwarat Date: 2010-11-11 18:09:52 +0900 Always read Window as 32 bits integer to fix problem in ppc64. M client/x11/main.c commit a72b99373425872bc7a0a4b2659ac8cb5ccb546e Author: Yusuke Sato Date: 2010-11-16 11:17:33 +0900 Use "org.freedesktop.IBus" instead of "org.freedesktop.DBus" for the well-known bus name for the input context proxy. Though "org.freedesktop.DBus" works fine, since bus_dbus_impl_connection_filter_cb in bus/dbusimpl.c treats the two bus names equally, "org.freedesktop.IBus" which matches the interface name looks more natural. BUG=none TEST=manually done Review URL: http://codereview.appspot.com/3128041 M src/ibusinputcontext.c commit 5e823fcbff6b29286babc99e783d13af7ba505b3 Author: Peng Huang Date: 2010-11-16 10:24:03 +0900 Remove block call in ibus-daemon, and use async call instead and clean up code. 1. Do not use poll factory of a component. Sometime, it will cause a dead lock of ibus: ibus-daemon are waiting reply from engine, and engine are also waiting for reply from ibus-daemon. 2. Move some API from IBusComponent to BusComponent, Because of those API is for internal using only 3. Add a fake input context in server side to support switching input method when no context has focus. 4. Remove fake input context in imcontext, because we added the server side fake context BUG=none TEST=manual Review URL: http://codereview.appspot.com/3077042 M bindings/vala/test/Makefile M bus/Makefile.am A bus/component.c A bus/component.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/registry.c M bus/registry.h M client/gtk2/ibusimcontext.c M debian/libibus-1.0-0.symbols M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusenginedesc.h M src/ibusproxy.h commit 911a104d0597435fb090d6079b60b47863c3ea0b Author: Yusuke Sato Date: 2010-11-15 17:39:51 +0900 Add function comments to bus/server.[ch] BUG=none TEST=none Review URL: http://codereview.appspot.com/3040041 M bus/server.c M bus/server.h commit 2ba1c99304b1b91a1b533a222b160febe650003f Author: Yusuke Sato Date: 2010-11-15 13:05:27 +0900 Add function comments to bus/main.c. BUG=none TEST=none Review URL: http://codereview.appspot.com/3036041 M bus/main.c commit d495f82052dda24cb96181aa42e1a0d2e82b08f9 Author: Yusuke Sato Date: 2010-11-15 13:02:23 +0900 Delete src/ibusserver.[ch] that are no longer used. BUG=none TEST=none Review URL: http://codereview.appspot.com/3018042 D src/ibusserver.c D src/ibusserver.h D src/tests/ibus-server.c commit 4bddbd04d850ad7891ad3620f8ce0d7e34070ecd Author: Peng Huang Date: 2010-11-12 10:12:22 +0900 Disable snooper in chromium, chrome, firefox and gnome-do Those applications has problems with snooper enabled. So update the NO_SNOOPER_APPS to disable snooper for those applications by default. BUG=ibus:1140 TEST=manual M configure.ac commit 26f62c002fcc9f7c8cc00a735dc78e6d74eb7924 Author: Peng Huang Date: 2010-11-04 12:58:13 +0900 Remove a debug output M client/gtk2/ibusimcontext.c commit 420b7b4a80d37b1fb277d1922d3a669f28bb5a9d Author: fujiwarat Date: 2010-11-02 14:12:06 +0900 Remove GDK_DISPLAY, this macro has been removed in gtk3 http://live.gnome.org/GnomeGoals/RemoveDeprecatedSymbols/GTK%2B M client/x11/main.c commit 6670716f7307084972796b00feb0781827f6636c Author: Peng Huang Date: 2010-11-04 12:05:39 +0900 Update python test scripts for gobject-introspection M src/python/ibus.py M src/python/test.py commit 5d8096b8464f98038827f71429c489ae2aae49f7 Author: fujiwarat Date: 2010-11-04 11:07:36 +0900 Remove the ability to attach to a status icon with libnotify 0.7.0 M ui/gtk/main.py commit 071dab2be51ae1142a75adc7a595a3ee9ef4230a Author: Peng Huang Date: 2010-11-04 09:38:23 +0900 Refine some code and remove some dead code. M bus/ibusimpl.c M src/ibusinputcontext.c commit c464170208fee4abfb577bfaa8585b6f45d5c7ee Author: Peng Huang Date: 2010-11-03 13:37:57 +0900 Fix some issues within codereview. M bus/connection.c M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/inputcontext.c M bus/main.c M bus/matchrule.c M bus/registry.c M bus/server.c M bus/server.h M bus/test-client.c M client/gtk2/ibusimcontext.c M debian/rules M docs/reference/ibus/ibus-sections.txt M gconf/config.c M memconf/config.c M src/ibusbus.c M src/ibusconfigservice.c M src/ibusengine.c M src/ibusfactory.c M src/ibuspanelservice.c M src/ibusservice.c commit f1c4fcb0e0cd7427999c5c97e47d85a60544a4be Author: Peng Huang Date: 2010-11-02 20:30:02 +0900 Fix crash when icon of property is Null M bus/factoryproxy.c M src/ibusproperty.c commit a0e4923aa8c3dd3865bac7ba67b9a3979432c7fb Author: fujiwarat Date: 2010-11-01 18:16:25 +0900 Fix UnsetValue name. M ibus/config.py M ibus/interface/iconfig.py commit 2cac54a2a77459ec5f3e0fdbed376249fee0d2a4 Author: fujiwarat Date: 2010-11-01 16:13:55 +0900 Fix serialized order. M src/ibusenginedesc.c commit 7fa9f32f3157176a90505749426416d440e39a69 Author: Peng Huang Date: 2010-11-01 15:05:29 +0900 Rename ibus_engine_desc_new2 and ibus_component_new2 to *_new_varargs. wip. M debian/libibus-1.0-0.symbols M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusenginedesc.c M src/ibusenginedesc.h commit 0a0668a92a5710435e93587bb5534f25a04ab120 Author: Peng Huang Date: 2010-11-01 14:03:17 +0900 Fix a typo. M ibus/common.py commit 8d8ea067c7809bd95ee69401af9960a5ea05c71e Author: Peng Huang Date: 2010-10-29 17:28:13 +0900 Fix a typo in client/gtk3/Makefile.am M client/gtk3/Makefile.am commit 7e07c6d87e3e9b7612d74c1ba4a71bdb3fa4565f Author: Peng Huang Date: 2010-10-29 17:08:38 +0900 Fix some problems in debian packages. M debian/control A debian/libibus-1.0-0.install A debian/libibus-1.0-0.symbols D debian/libibus1.install D debian/libibus1.symbols M debian/rules commit d00fb1d1ce308f4848ede89ca4ff3cd3994923d6 Author: Peng Huang Date: 2010-10-29 14:25:50 +0900 Add i18n.py. A setup/i18n.py A ui/gtk/i18n.py commit 841f83c9918c2cd44d3054d1e9742be98fbd5f22 Author: Peng Huang Date: 2010-10-29 12:16:52 +0900 Fix some merge failed. M src/tests/ibus-global-engine.c commit 955c2c2df5516aeba951a91c607d0705dd1c877f Author: Peng Huang Date: 2010-10-28 13:00:54 +0900 Rewrite memconf in c languages. M gconf/Makefile.am M gconf/config.c M gconf/config.h M memconf/Makefile.am A memconf/config.c D memconf/config.cc M memconf/config.h A memconf/main.c D memconf/main.cc M src/Makefile.am commit a9b24316d5deb7a1358885ea37f76cd1dc68ef13 Author: Peng Huang Date: 2010-10-27 14:36:30 +0900 Emit NameOwnerChanged signal with non-zero serial to make libdbus happy. M bus/dbusimpl.c commit e4044fa0a00e7d7fa8f691fbbb727f25edf514aa Author: Peng Huang Date: 2010-10-27 14:35:36 +0900 Add metadata file to fix some object ownership correctly M bindings/vala/Makefile.am M bindings/vala/ibus-1.0.vapi M bindings/vala/ibus-1.0/ibus-1.0.metadata M bindings/vala/test/config.vala commit 21185b24f07b1757960fec383b5db4edbda4695d Author: Peng Huang Date: 2010-10-26 13:50:36 +0900 Add vala test for config module M bindings/vala/test/Makefile A bindings/vala/test/config.vala M memconf/main.cc commit 7a0f88ca2e4d841cd65a67d150b3b892a4bb5a95 Author: Peng Huang Date: 2010-10-21 21:03:37 +0900 Fix vala and gir build issues. M bindings/vala/Makefile.am M bindings/vala/test/enchant.vala M src/Makefile.am M src/ibusconfigservice.h commit 8854d5039f25bf791731c5e3f125a6100a9374ef Author: Peng Huang Date: 2010-10-20 20:48:07 +0900 Remove ibusdbus.h M bindings/vala/ibus-1.0.vapi M bindings/vala/ibus-1.0/ibus-1.0.gi M src/Makefile.am D src/ibusdbus.h commit 16304d0882068d01f897a64451041aebc389d045 Author: Peng Huang Date: 2010-10-20 19:48:01 +0900 wip. M bindings/vala/Makefile.am A bindings/vala/ibus-1.0.deps M bindings/vala/ibus-1.0.vapi A bindings/vala/ibus-1.0/ibus-1.0.defines M bindings/vala/ibus-1.0/ibus-1.0.files M bindings/vala/ibus-1.0/ibus-1.0.gi M bindings/vala/ibus-1.0/ibus-1.0.metadata M bindings/vala/test/enchant.vala commit f85753ee33d44b805a956d283079ef41189f9d8c Author: Peng Huang Date: 2010-10-20 17:15:56 +0900 wip. M bindings/vala/test/Makefile A bindings/vala/test/enchant.vala D bindings/vala/test/test.vala commit 3b2bf6f4a389fb2a10d9da9a9a55430ebfca882d Author: Peng Huang Date: 2010-10-19 21:19:06 +0900 Fix some runtime errors. M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/matchrule.c M bus/panelproxy.c M bus/registry.c M bus/server.c M debian/rules M gconf/config.c M gconf/main.c M ibus/interface/iengine.py M ibus/interface/ipanel.py M setup/Makefile.am M setup/enginecombobox.py M setup/enginetreeview.py M setup/keyboardshortcut.py M setup/main.py M src/ibuscomponent.c M src/ibusconfig.c M src/ibusengine.c M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusservice.c M src/ibusxml.c M ui/gtk/candidatepanel.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/panel.py commit 3b3f56d0248d9772c581e42d7efadfd7ac223874 Author: Peng Huang Date: 2010-10-19 18:23:19 +0900 Change version to 1.3.99 M Makefile.am M bindings/vala/Makefile.am A bindings/vala/ibus-1.0.vapi A bindings/vala/ibus-1.0/ibus-1.0-custom.vala A bindings/vala/ibus-1.0/ibus-1.0.excludes A bindings/vala/ibus-1.0/ibus-1.0.files A bindings/vala/ibus-1.0/ibus-1.0.gi A bindings/vala/ibus-1.0/ibus-1.0.metadata A bindings/vala/ibus-1.0/ibus-1.0.namespace D bindings/vala/ibus-2.0.vapi D bindings/vala/ibus-2.0/ibus-2.0-custom.vala D bindings/vala/ibus-2.0/ibus-2.0.excludes D bindings/vala/ibus-2.0/ibus-2.0.files D bindings/vala/ibus-2.0/ibus-2.0.gi D bindings/vala/ibus-2.0/ibus-2.0.metadata D bindings/vala/ibus-2.0/ibus-2.0.namespace M bindings/vala/test/Makefile M bus/Makefile.am M client/gtk2/Makefile.am M client/x11/Makefile.am M configure.ac M debian/clean M debian/control A debian/libibus1.install A debian/libibus1.symbols D debian/libibus2.install D debian/libibus2.symbols M debian/rules M docs/reference/ibus/Makefile.am M gconf/Makefile.am A ibus-1.0.pc.in D ibus-2.0.pc.in M ibus/_config.py.in M ibus/common.py M memconf/Makefile.am M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M src/Makefile.am M src/ibusversion.h.in M src/tests/Makefile.am M ui/gtk/Makefile.am M ui/gtk/candidatepanel.py M ui/gtk/engineabout.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/notifications.py M ui/gtk/panel.py commit eb0c12036b8806c1e0587dba1744cd4998f66d4e Author: Peng Huang Date: 2010-10-19 10:26:08 +0900 Use va_list in IBusEngineDesc and IBusComponent for back compatibility. Provided by fujiwarat Conflicts: bus/engineproxy.c bus/factoryproxy.c bus/ibusimpl.c src/ibuscomponent.c src/ibusenginedesc.c src/test-bus.c src/tests/ibus-global-engine.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/registry.c M ibus/component.py M ibus/enginedesc.py M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/tests/ibus-global-engine.c commit 164fc1f12467a73c32552292076fd8226873252e Author: Peng Huang Date: 2010-06-16 23:47:09 +0800 Use gdbus in glib, and get rid of libdbus M Makefile.am M autogen.sh M bindings/vala/Makefile.am D bindings/vala/ibus-1.0.vapi D bindings/vala/ibus-1.0/ibus-1.0-custom.vala D bindings/vala/ibus-1.0/ibus-1.0.excludes D bindings/vala/ibus-1.0/ibus-1.0.files D bindings/vala/ibus-1.0/ibus-1.0.gi D bindings/vala/ibus-1.0/ibus-1.0.metadata D bindings/vala/ibus-1.0/ibus-1.0.namespace A bindings/vala/ibus-2.0.vapi A bindings/vala/ibus-2.0/ibus-2.0-custom.vala A bindings/vala/ibus-2.0/ibus-2.0.excludes A bindings/vala/ibus-2.0/ibus-2.0.files A bindings/vala/ibus-2.0/ibus-2.0.gi A bindings/vala/ibus-2.0/ibus-2.0.metadata A bindings/vala/ibus-2.0/ibus-2.0.namespace M bindings/vala/test/Makefile M bus/Makefile.am M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c A bus/marshalers.list M bus/matchrule.c M bus/matchrule.h M bus/option.h M bus/panelproxy.c M bus/panelproxy.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M bus/test-matchrule.c A bus/types.h M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk3/Makefile.am M client/x11/Makefile.am M configure.ac M debian/libibus-dev.install M debian/libibus2.install M debian/libibus2.symbols M debian/rules M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus-sections.txt M docs/reference/ibus/ibus.types M gconf/Makefile.am M gconf/config.c M gconf/config.h M gconf/main.c D ibus-1.0.pc.in A ibus-2.0.pc.in M ibus.spec.in M ibus/common.py A m4/introspection.m4 M memconf/main.cc M po/POTFILES.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/pt_BR.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M src/Makefile.am M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusattrlist.c M src/ibusattrlist.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigprivate.h M src/ibusconfigservice.c M src/ibusconfigservice.h D src/ibusconnection.c D src/ibusconnection.h M src/ibusdbus.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibusenumtypes.c.template D src/ibuserror.c D src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h D src/ibusinternal.c M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeysyms.h M src/ibuslookuptable.c M src/ibuslookuptable.h D src/ibusmainloop.c D src/ibusmainloop.h M src/ibusmarshalers.list D src/ibusmessage.c D src/ibusmessage.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspanelservice.c M src/ibuspanelservice.h D src/ibuspendingcall.c D src/ibuspendingcall.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproplist.c M src/ibusproplist.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusserver.c M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusxml.h D src/test-attribute.c D src/test-bus.c D src/test-engine.c D src/test-global-engine.c D src/test-keymap.c D src/test-keynames.c D src/test-lookuptable.c D src/test-proxy.c D src/test-server.c D src/test-text.c A src/tests/Makefile.am A src/tests/ibus-bus.c A src/tests/ibus-configservice.c A src/tests/ibus-engine.c A src/tests/ibus-factory.c A src/tests/ibus-global-engine.c A src/tests/ibus-keymap.c A src/tests/ibus-keynames.c A src/tests/ibus-proxy.c A src/tests/ibus-serializable.c A src/tests/ibus-server.c A src/tests/ibus-share.c commit 0f6fd61b6ee06e070a739e5315318e6af2b72ddd Author: fujiwarat Date: 2010-11-02 11:21:24 +0900 Replace s/gdk_drawable_get_size/gdk_window_get_height/ for GTK3. M client/gtk2/ibusimcontext.c commit fd7e899c327ba9e1bf33fa79ce6027e35ac3bccc Author: Peng Huang Date: 2010-10-29 18:46:07 +0900 Use block mode of g_main_context_iteration to avoid consuming too much cpu time. BUG=none TEST=manual Review URL: http://codereview.appspot.com/2768043 M bus/ibusimpl.c commit 9cf6eed3c3fc7a40d0c6f75117fd2c4784b60536 Author: Peng Huang Date: 2010-10-26 19:27:56 +0900 Use the automake 1.10 in autogen.sh BUG=ibus:1039 TEST=manual Review URL: http://codereview.appspot.com/2746041 M autogen.sh commit f0ee4f8e8460e234cabafc8cb76df6de05d65761 Author: Peng Wu Date: 2010-10-25 14:52:21 +0800 sort combo box by locale strcoll M setup/enginecombobox.py M setup/main.py commit 243211310fb771ba55453a1b4e101490597e2397 Author: fujiwarat Date: 2010-10-26 11:49:48 +0900 Fix s/python/@PYTHON@/ in libexec scripts. The patch is provided by federico.schwindt@google.com M setup/ibus-setup.in M ui/gtk/ibus-ui-gtk.in commit 537b4dc1b8c20ec5cc5a03ce949b807035a65880 Author: fujiwarat Date: 2010-10-26 11:45:29 +0900 Fix ENV value for NetBSD M bus/Makefile.am M configure.ac M setup/Makefile.am commit 5f5017accfb859cac8829ef9d8b19547b5cc1c41 Author: Peng Huang Date: 2010-10-22 15:15:39 +0900 Bump the version to 1.3.8 M configure.ac commit 4ed0cee9a76e1123fc116ba4a251c8cfba407990 Author: Peng Huang Date: 2010-10-22 15:15:12 +0900 Comment out test-keymap test case. Comment out test-keymap test case, because it is not automatic test case. it will cause make distcheck failed. BUG=none TEST=manual Review URL: http://codereview.appspot.com/2667041 M src/test-keymap.c commit 2b1fa3dc2a2cb57484de5506f4081f933ba1c0a4 Author: Peng Huang Date: 2010-10-22 14:56:12 +0900 Limit typing rate to 800 hits/minutes, and fix make distcheck error. The old version test-stress will send key events to ibus-daemon as fast as possible. It will take all CPU resources, and the daemon, UI and input methods will not get enouch CPU resources to process those events. So all key events will be putted in the buffer. It will causes out of system memory. So I add a limitation of typing rate as 800 hits/minute. BUG=none TEST=manual Review URL: http://codereview.appspot.com/2662042 M bus/Makefile.am M bus/test-stress.c commit 74cf9101c7d1700d6add470df9db59fe3593f3a1 Author: Peng Huang Date: 2010-10-22 12:27:37 +0900 Catch exceptions from os.kill. BUG=none TEST=manual Review URL: http://codereview.appspot.com/2659042 M ui/gtk/panel.py commit acf2a46cdce536945d56ecc2a581fda38470dfe5 Author: fujiwarat Date: 2010-10-21 18:44:40 +0900 Fix CPU 100% usage with signal.SIGCHLD M client/gtk2/ibusimcontext.c M ui/gtk/panel.py commit 15db48fc217cb6e91c91e1819f2347dfdac905e0 Author: fujiwarat Date: 2010-10-21 17:30:42 +0900 Fix keyval and state in __keycode_button_clicked_cb M data/ibus.schemas.in M setup/keyboardshortcut.py commit 96b64a2eff1fb4c9bec4e712b47b23a7900f44e7 Author: Peng Huang Date: 2010-10-21 17:27:12 +0900 Destroy existing connection before creating a new connection, and only create the fake context once. BUG=chromium-os:7998 TEST=manual Review URL: http://codereview.appspot.com/2640041 M client/gtk2/ibusimcontext.c M src/ibusbus.c commit 8c131cfee02c9104495f11456eb40dc162458a2f Author: Yusuke Sato Date: 2010-10-21 13:27:06 +0900 Move the candidate window just above the cursor when the window and a preedit string overlap. BUG=http://code.google.com/p/ibus/issues/detail?id=1106 TEST=manually done. Review URL: http://codereview.appspot.com/2599041 M ui/gtk/candidatepanel.py M ui/gtk/panel.py commit 1c2b65dd3fde6891eff44b7b3bf3371897e3a582 Author: Yusuke Sato Date: 2010-10-21 10:35:07 +0900 Remove compiler warnings. BUG=none TEST=checked by ./autogen.sh && make Review URL: http://codereview.appspot.com/2632041 M bus/ibusimpl.c commit 9ae13a3d95c7dc775084c58339e42375622df83e Author: Yusuke Sato Date: 2010-10-20 22:21:00 +0900 Enable key snooper by default again, except Chrome/Chromium browsers, to fix application compatibility issues like 1068. This change is logically a revert of http://github.com/ibus/ibus/commit/7e715146794d5fa5324885f8d1dcebb8805bc31b The new behavior is: 1) If IBUS_DISABLE_SNOOPER environment variable is set, and the value of the variable is "" (an empty string) or "0" or "false" or "False" or "FALSE", key snooper is enabled. 2) If IBUS_DISABLE_SNOOPER environment variable is set, and the value of the variable is other than the 5 above, e.g. "1", "true", .., key snooper is disabled. 3) If IBUS_DISABLE_SNOOPER environment variable is not set, and ibus-daemon is explicitly configured with --disable-key-snooper, key snooper is disabled. 4) If IBUS_DISABLE_SNOOPER environment variable is not set, and ibus-daemon is not configured with --disable-key-snooper, the GTK_IM_MODULE, im-ibus.so, checks IBUS_NO_SNOOPER_APPS environment variable: 4-a) if IBUS_NO_SNOOPER_APPS environment variable is not set, and the application name matches ".*chrome", key snooper is disabled. 4-b) if IBUS_NO_SNOOPER_APPS environment variable, which should be comma-separated regexps, is set, and one of the regexps matches the application name, key snooper is disabled. 4-c) otherwise, key snooper is enabled. Please note that when no configure options nor no environment variables are set, key snooper is enabled on all applications except Chrome/Chromium web browsers. For example, key snooper would be enabled on xchat and gedit by default. I believe the new default behavior would satisfy both Linux desktop and Chromium OS requirements. Test: - With ibus built without --disable-key-snooper: yusukes@harapeko:~$ gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER= gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER=0 gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="0" gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="false" gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="False" gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="FALSE" gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="1" gedit # no-snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="true" gedit # no-snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="unknownstring" gedit # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS=gedit gedit # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS='g.*dit' gedit # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS='foobar,g.*dit' gedit # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS=foobar gedit # snoop yusukes@harapeko:~$ google-chrome # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS=foobar google-chrome # snoop - With ibus built with --disable-key-snooper: yusukes@harapeko:~$ gedit # no-snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="false" gedit # snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="true" gedit # no-snoop yusukes@harapeko:~$ IBUS_DISABLE_SNOOPER="unknownstring" gedit # no-snoop yusukes@harapeko:~$ IBUS_NO_SNOOPER_APPS=foobar gedit # no-snoop, because IBUS_NO_SNOOPER_APPS is ignored when --disable-key-snooper is specified. BUG=http://code.google.com/p/ibus/issues/detail?id=1068 TEST=manually done. see above. Review URL: http://codereview.appspot.com/2568043 M client/gtk2/ibusimcontext.c M configure.ac commit 4be55968e7f98d1b042068b47be82395715bf9bc Author: Peng Huang Date: 2010-10-20 20:53:36 +0900 Always consume the hotkey, even if the hotkey associated engine already activated. BUG=6376 TEST=manual Review URL: http://codereview.appspot.com/2596042 M bus/ibusimpl.c commit 2100c1f781fec3a2157e57514d413a977042d84c Author: Yusuke Sato Date: 2010-10-19 20:30:09 +0900 Fix race condition in bus_ibus_impl_create_engine() If the bus_ibus_impl_create_engine() function is called right after an ibus_component_start() call, the function might fail getting a factory object. To avoid the problem, we should use the busy-wait logic even when ibus_component_is_running() returns true. BUG=http://crosbug.com/7244 TEST=see the bug (comment #4,7,9) Review URL: http://codereview.appspot.com/2562041 M bus/ibusimpl.c commit 65fb5ea4f009d29c688b2be6d87849209beb77fa Author: fujiwarat Date: 2010-10-13 14:05:02 +0900 Fix a build error of IBus-1.0.gir with gobject-introspection 0.9.6 M bus/dbusimpl.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/server.c M configure.ac M src/Makefile.am M src/ibusdbus.h M src/ibusenumtypes.c.template M src/ibuserror.c M src/ibuserror.h M src/ibusmessage.h M src/ibuspendingcall.h commit 27d8ca4935b75269ca9480806942819381f5a140 Author: Peng Huang Date: 2010-10-13 08:14:58 +0900 Fix a typo. M ibus/property.py commit 53e303cf41236186b43e4e9c9e90c52582c020c0 Author: Peng Huang Date: 2010-10-08 10:41:41 +0800 Remove unused dbus-1 package in gir includes BUG=none TEST=manual Review URL: http://codereview.appspot.com/2331041 M src/Makefile.am commit bcfa545f0789573e805f721a953c6864f1f62a1b Author: Hirotake Kobayashi Date: 2010-10-02 00:45:49 +0900 Implement stress tool for ibus. A test-stress.c sends key message each time by client. Client.h and client.c store modifier key and send key event. They check ibus-daemon and engine is alive. Review URL: http://codereview.appspot.com/2204051 Patch from Hirotake Kobayashi . M bus/Makefile.am A bus/test-client.c A bus/test-client.h A bus/test-stress.c commit 92f838c697ff9470d403537b22e15d55a403c6e0 Author: fujiwarat Date: 2010-09-30 10:58:31 +0900 Fix a build error with GTK3 gdkkeysyms.h M client/gtk2/ibusimcontext.c commit cf48af79ba606352d22238f556cb667c62b4258e Author: Peng Huang Date: 2010-09-21 06:57:10 +0800 Update gu.po from Sweta Kothari M po/gu.po commit a0694521739f91666f663e5538f06462e49eef3f Author: Yusuke Sato Date: 2010-09-17 22:26:50 +0900 Fix g_assertion failure in bus_ibus_impl_{load,save}_global_engine_name functions. Add NULL checks to the functions so they don't abort with assertion failure even if the functions are called before the ibus configuration daemon gets ready. See http://code.google.com/p/chromium-os/issues/detail?id=6689#c27 for details. M bus/ibusimpl.c commit 1396c4649255efb8c48abe39bf09ef7ffbbed7af Author: Peng Huang Date: 2010-09-10 19:04:25 +0800 Add some comments about registry BUG=none TEST=built fine Review URL: http://codereview.appspot.com/2159046 M bus/ibusimpl.c M bus/registry.c commit 37ed695bfcaa764c6fd80d4f3d29f3df9032f83f Author: Satoru Takabayashi Date: 2010-09-09 13:24:42 +0900 Add Emacs modeline for .c and .h files. /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ TEST=confirmed that the modelines for vim and emacs both worked. BUG=none Review URL: http://codereview.appspot.com/2168042 M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/option.h M bus/panelproxy.c M bus/panelproxy.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M bus/test-matchrule.c M bus/test-registry.c M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/x11/gdk-private.c M client/x11/gdk-private.h M client/x11/locales.h M client/x11/main.c M gconf/config.c M gconf/config.h M gconf/main.c M memconf/config.h M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusattrlist.c M src/ibusattrlist.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigprivate.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusdbus.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusinternal.c M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeynames.c M src/ibuskeysyms.h M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibusmainloop.c M src/ibusmainloop.h M src/ibusmessage.c M src/ibusmessage.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibuspendingcall.c M src/ibuspendingcall.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproplist.c M src/ibusproplist.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusserver.c M src/ibusserver.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusxml.c M src/ibusxml.h M src/test-attribute.c M src/test-bus.c M src/test-engine.c M src/test-global-engine.c M src/test-keymap.c M src/test-keynames.c M src/test-lookuptable.c M src/test-proxy.c M src/test-server.c M src/test-text.c commit a751fd3ee3d0273a70d09a616d62b1dbbf3e4cbb Author: Satoru Takabayashi Date: 2010-09-09 11:05:55 +0900 Move the log handler code from bus/main.cc to src/ibusshare.cc. The log handler is useful for IBus client programs. For instance, the log handler was used inside the chromium browser for debugging IBus startup issue: http://code.google.com/p/chromium-os/issues/detail?id=6375#c29 (chrome:11824): IBUS-DEBUG: 00:00:46.929430: The socket file is now created (monitoring done). BUG=none TEST=manually ran ibus-daemon with and without -v Review URL: http://codereview.appspot.com/2122047 M bus/main.c M src/ibusshare.c M src/ibusshare.h commit 7c5f46e3e8580d080aac0a25d8e97a0fc7fc70a7 Author: Satoru Takabayashi Date: 2010-09-08 15:58:31 +0900 Add codereview.settings. This is for us to use codereview.appspot.com for code reviews. Instructions to use codereview.appspot.com: 1. Get depot_tools and add PATH to the directory http://dev.chromium.org/developers/how-tos/depottools 2. In your local IBus git repository, % git checkout master % git checkout -b somefix make changes % git cl upload do code reviews at codereview.appspot.com once it's done, run "git cl push" if you can commit. otherwise, ask committers to commit on behalf. Review URL: http://codereview.appspot.com/2166043 A codereview.settings commit f0f50b5b003adfc062fef5781a9646e9eea67d78 Author: Peng Huang Date: 2010-09-07 08:35:03 +0800 Add time info in log message from satorux@chromium.org M bus/main.c commit 888189eba783ac014e7c367004a70dad6f7b8ac0 Author: Peng Huang Date: 2010-09-06 17:17:24 +0800 Fix memory leak in ibus_input_context_process_key_event by Fujiwarat M src/ibusinputcontext.c commit 85565b7a146e5ccbd484273b647b6195b6c08b03 Author: fujiwarat Date: 2010-09-02 12:58:42 +0900 Fix segv in bus_engine_proxy_process_key_event_reply_cb M bus/engineproxy.c commit 0b8d9594d5fb3afa6e988e321d5d124e5da1eee2 Author: Peng Huang Date: 2010-09-06 16:16:51 +0800 Set CFLAGS to "-Wall -Werror" in autogen.sh M autogen.sh commit c8794994fde7f52dc29a7b9ebea926e66cf093da Author: Peng Huang Date: 2010-08-12 15:22:00 +0800 Fix property issue. M bus/inputcontext.c commit 9bb5c58da874dcd3293476726201a54498fc92e1 Author: Peng Huang Date: 2010-08-06 14:02:25 +0800 Update fr.po M po/fr.po commit 733a0b12388aa4cc4092a4f9b4f2cce9e0fd7383 Author: Peng Huang Date: 2010-08-05 17:13:56 +0800 Fix a build warning M bus/ibusimpl.c commit 19d03011e00db27753aa874c1404a858605b4a87 Author: Peng Huang Date: 2010-08-03 16:59:32 +0800 Release 1.3.7 M configure.ac commit b0a71e50d6e343c8a8ad3385a49087ba695ebc78 Author: Peng Huang Date: 2010-08-03 14:43:42 +0800 Update ko.po M po/ko.po commit 14aa3cc0d4fd12a9aa0ee4db3dfc085b77672811 Author: Peng Huang Date: 2010-08-03 10:04:19 +0800 Update po files. M po/bn_IN.po M po/ml.po commit 8706da8a65274da26ac3b593501ff3d44e81087a Author: James Su Date: 2010-06-28 19:39:31 -0700 Make sure that we won't wrongly match a hotkey after losing and getting focus. BUG=http://crosbug.com/3892 TEST=manually Review URL: http://codereview.chromium.org/2884006 M bus/inputcontext.c commit b2fcd7eeb13676b0cbffeca37bfcfb142bcac3f6 Author: satorux Date: 2010-05-26 18:03:29 +0900 When the previous engine name is unknown, switch to the next engine in menu. Before the change, hitting the "previous-engine" key does nothing if the previous engine name is unknown. The behavior is not good for users as they think the hot key is not working. TEST=manually on the netbook BUG=3579 Review URL: http://codereview.chromium.org/2255002 M bus/ibusimpl.c commit e2793f52bf3da7a22321f053f3ba8154026fd6fa Author: James Su Date: 2010-05-11 13:41:59 -0700 Support engine specific hotkey. BUG=http://crosbug.com/2543 TEST=none With this CL, each engine can specify one or more special activation hotkeys. This CL doesn't support customizing global hotkeys per engine. I'd still prefer to customize the global hotkeys based on current locale rather than input method engine. Add hotkeys property to IBusEngineDesc, so that each engine can specify their own special hotkeys. This is useful for input methods that have dedicated hotkeys, such as Japanese input methods, which has a dedicated hotkey key: Kana. Review URL: http://codereview.chromium.org/1702015 M bus/ibusimpl.c M bus/ibusimpl.h M ibus/component.py M ibus/enginedesc.py M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibushotkey.c M src/ibushotkey.h commit 1350806a4d1a23036ea7e4dac9e0169b77127cb1 Author: Peng Huang Date: 2010-07-30 23:32:20 +0800 Update po files. M po/hi.po M po/ja.po commit beedeb4e19409555b4bc2cff98fb0be1976a04f6 Author: Peng Huang Date: 2010-07-30 07:12:15 +0800 Fake IC does not grab focus, if other real IC has focus. M bus/inputcontext.c commit 353d36626f81389d0e70fea3ed58a65d367e6115 Author: Peng Huang Date: 2010-07-27 15:57:05 +0800 Keep input window for fake IC M client/gtk2/ibusimcontext.c commit 519e649849d7ce1f1550f5a653238080f3b0f67e Author: Peng Huang Date: 2010-07-23 16:11:22 +0800 Support switching keyboard by hotkey without input focus Add fake input context in im module. The fake input context will hold the focus if no other input context has focus. This change for fixing input method switch issue if no focus input context. BUG=http://crosbug.com/4381 Review URL: http://codereview.chromium.org/3052003 M bus/inputcontext.c M bus/inputcontext.h M client/gtk2/ibusimcontext.c commit 3609568f318b0d6ae831d0d4eb2a24398f81531f Author: Peng Huang Date: 2010-07-23 11:41:44 +0800 Add memcomf/main.cc A memconf/main.cc commit d400b92229e7c03d7a893bc8ed33382c933e32d3 Author: Peng Huang Date: 2010-07-23 15:25:45 +0800 Fix a problem in build script of memconf M Makefile.am M memconf/config.cc commit 810037e12a5b00712e5d01c576deca4a36c18527 Author: Yusuke Sato Date: 2010-03-30 13:45:19 +0900 Reimplement ibus-gconf so it does not depend on GConf-2 database. (Please review the README.chromium first.) BUG=crosbug.com/1638 TEST=run autotest/files/config/site_tests/desktopui_IBusTest Review URL: http://codereview.chromium.org/1539001 M Makefile.am M configure.ac A memconf/Makefile.am A memconf/config.cc A memconf/config.h A memconf/memconf.xml.in.in commit 6372ea214bc0c3d60f7059727b4848b809257f7e Author: Peng Huang Date: 2010-07-30 17:46:51 +0800 Update po files. M po/te.po commit 565a01828be2837c8de1d2b16c8a7232355bb734 Author: Peng Huang Date: 2010-07-30 17:34:41 +0800 Update po files M po/or.po M po/ta.po commit bd86020a1e5f545db666c24fda837fff7361f704 Author: Peng Huang Date: 2010-07-30 11:55:03 +0800 Update po files. M po/ja.po M po/mr.po M po/pt_BR.po M po/ru.po M po/zh_CN.po commit 81562759e8ad57e6d2ac71188369d0e991514428 Author: Peng Huang Date: 2010-07-30 07:15:30 +0800 Update po files. M po/de.po M po/it.po commit 8c764551ff81b084d0595922f840544a374c5ca2 Author: Peng Huang Date: 2010-07-29 21:25:52 +0800 Update po files. M po/gu.po M po/kn.po commit 652cd0ca10ce9a203ab578e24847aa52f4b6c4b8 Author: Peng Huang Date: 2010-07-27 11:23:30 +0800 Add pt_BR.po from Glaucia Freitas M AUTHORS M po/LINGUAS A po/pt_BR.po commit d9923c07be7248f1fc7d8458c9025df8cf8e282d Author: Peng Huang Date: 2010-07-15 15:04:25 +0800 Fix a memory leak in IBusConfigService. M src/ibusconfigservice.c commit eca8735df7909cffba4184eef8bafdb0d3a37142 Author: Peng Huang Date: 2010-07-13 13:57:40 +0800 Add a new ibus-daemon option to set cache mode. --cache=[auto/refresh/none] auto: Loads registry from cache. If the cache does not exist or the cache is outdated, ibus-daemon will recreate the cache. refresh: Does not load the cache, force load components information from /usr/share/ibus/components/*.xml and write registry to cache file. none: Always loads components from /usr/share/ibus/components/*.xml, does not read or write cache. M bus/main.c M bus/option.h M bus/registry.c commit 4a7dff9b49d7305312c0167027b281d3d533765f Author: Peng Huang Date: 2010-07-08 18:01:38 +0800 Use dbus.Interface. M ibus/bus.py M ibus/config.py M ibus/inputcontext.py commit 674bc53c30c8ac40e021da660f2af533ab015587 Author: Daiki Ueno Date: 2010-06-30 12:05:32 +0900 Fix "Show language panel: Embedded in menu" behavior. Signed-off-by: Daiki Ueno M ui/gtk/languagebar.py M ui/gtk/menu.py commit f7ad6dfbff87a138d4857d7cfc9520b8541456e2 Author: Peng Huang Date: 2010-07-05 13:44:22 +0800 Release 1.3.6 M configure.ac commit 22c3c5f1077130f5da2cb17e774755ba90fdf4d1 Author: Peng Huang Date: 2010-07-05 13:42:38 +0800 Set interface for config and inputcontext proxy M src/ibusconfig.c M src/ibusinputcontext.c commit 6c5945fb67f098be70e1a28eb5accc2b580b2427 Author: Peng Huang Date: 2010-07-05 13:42:27 +0800 Update gtk-doc M docs/reference/ibus/ibus-sections.txt commit 179e1642186dcddf877871f66521978c3a08005c Author: Peng Huang Date: 2010-07-05 13:42:10 +0800 Update libibus2.symbols M debian/libibus2.symbols commit c9ab368469d2fbf54f723c74295d2a6abefa3f35 Author: Peng Huang Date: 2010-07-05 13:10:00 +0800 Remove some patches. M debian/patches/00list D debian/patches/01_ubuntu_desktop.dpatch commit 887aa04857544e98b1f7a0b380349483e6a60733 Author: Peng Huang Date: 2010-07-01 11:52:30 +0800 Update es.po from daniel cabrera M po/es.po commit e54703b537d3b94b3c2a7c5e77b6837da87ef303 Author: Peng Huang Date: 2010-06-28 13:16:02 +0800 Update zh_TW.po from Tseng, Cheng-Chia M po/zh_TW.po commit 817399605bdeeb83fa4729018b2b17ad7870576d Author: Peng Huang Date: 2010-06-24 11:11:51 +0800 Fix next_engine & prev_engine settings problems. M bus/ibusimpl.c M setup/main.py commit 2e19fbadd285ae2d81d3ba5612da4d7357bb5139 Author: Peng Huang Date: 2010-06-23 13:35:00 +0800 Update po files M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 8b6cc2e285655471cc340e15bc3871a3043d59a6 Author: Peng Huang Date: 2010-06-23 13:32:04 +0800 Update desktop files. M bus/ibus.desktop.in M setup/ibus-setup.desktop.in commit 06114fef552bc5ec3f94704580d59e926d04a43d Author: Peng Huang Date: 2010-06-23 10:35:32 +0800 fill right value of GdkEventKey::is_modifier M client/gtk2/ibusimcontext.c commit a25970bc951768c44271b7e6c2b54ef22c49d76c Author: Peng Huang Date: 2010-06-20 08:02:58 +0800 workaround for applications do not set client window and refine code. M client/gtk2/ibusimcontext.c commit f16baaffebe6af29f23ef537c071150acf2397bc Author: Peng Huang Date: 2010-06-18 09:14:18 +0800 Check gtk2 too if configure with --enable-xim M configure.ac commit 9bc7166f81cf77b369f9610166839c0ae1aa953b Author: Peng Huang Date: 2010-06-17 20:19:23 +0800 Use IBUS_TYPE_OBJECT_PATH for return value of CurrentInputContext M bus/ibusimpl.c M ibus/interface/iibus.py M src/ibusbus.c commit cad8e70c3928eec31837215696dfa40ec3475734 Author: Peng Huang Date: 2010-06-15 17:02:31 +0800 Preload all values. M gconf/config.c commit 92949de6497247add592a4a790bddda439791fc3 Author: Peng Huang Date: 2010-06-15 16:21:29 +0800 Fix conflict between --restart and --replace M bus/main.c commit a842158b3dc01855cb1ad194dd8b75f744f7d037 Author: Peng Huang Date: 2010-06-15 16:18:10 +0800 Set release = 0 M configure.ac commit c7608cb5dfa683328d8f0ce9c2e16283464e36b0 Author: Peng Huang Date: 2010-06-15 00:23:44 +0800 Update es.po from daniel cabrera M po/es.po commit 9d99fa7db69e81e05164d55bf20fbf265ea1c03c Author: Peng Huang Date: 2010-06-14 22:47:21 +0800 Add --restart option by satorux@chromium.org M bus/main.c M src/ibuscomponent.c M src/ibuscomponent.h commit 2dfd255535c8367d210409b3a16ddbba1dbb166a Author: Peng Huang Date: 2010-06-12 09:00:00 +0800 read env IBUS_SNOOPER_APPS M client/gtk2/ibusimcontext.c commit 7e715146794d5fa5324885f8d1dcebb8805bc31b Author: Peng Huang Date: 2010-06-12 08:53:43 +0800 Disable snooper by default. M client/gtk2/ibusimcontext.c M configure.ac commit 79438c1322520b3a468bba296512972c16d60f7b Author: Peng Huang Date: 2010-06-12 08:10:25 +0800 prepare to release 1.3.5 M configure.ac commit 3234f71aa8c00fcbb3eaa43b06032784ed480ac6 Author: Peng Huang Date: 2010-06-12 08:06:22 +0800 Update ibus.spec.in M ibus.spec.in commit 49a848a70cc1e0393438fe7cfb3b118d1de24476 Author: Peng Huang Date: 2010-06-12 07:50:22 +0800 Use regex for no snooper applications, and disable snooper in chrome M client/gtk2/ibusimcontext.c M configure.ac commit e3b576d1bd8255eaef153e69996665a7eef75b55 Author: Peng Huang Date: 2010-06-10 14:43:44 +0800 Update document of ibus_bus_new M src/ibusbus.h commit 07e9d903c1856d8379da29c7966c040b8aaf34a0 Author: Peng Huang Date: 2010-06-10 07:09:02 +0800 Check connection state before call ibus_connection_call M src/ibusproxy.c commit a30e416bfac3915858626a122c0b1688f0ea5df8 Author: Peng Huang Date: 2010-06-09 07:16:33 +0800 Emit FORWARD_KEY_EVENT signal correctly M client/x11/main.c M src/ibusinputcontext.c commit 46a8b5a1bc9f2024beab573ef141bd2bc9a6565c Author: Peng Huang Date: 2010-06-09 00:09:51 +0800 Update debian build scripts M debian/ibus.install commit d34559042ddd44a64dc415426ea9ef581cf50469 Author: Peng Huang Date: 2010-06-08 22:16:53 +0800 Refine coding style M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c commit 7606b92e05e3216d09bc4b96c2efcbc5560134cb Author: Peng Huang Date: 2010-06-08 21:43:55 +0800 Fix problem of create GdkEventKey from keyval keycode and state M client/gtk2/ibusimcontext.c commit d8a4d1d348184d6e7c96fcb46ab431d9a020c61f Author: Peng Huang Date: 2010-06-08 21:16:15 +0800 Ignore handled key event in xim server M client/x11/main.c commit ca20ca904fb0264f9b8ac7da97ca4e782ed31ab1 Author: Peng Huang Date: 2010-06-08 20:55:27 +0800 Fix keycode in xim server M client/x11/main.c commit 92f8191f2b0f4186131ce13c6b42ff2ec68a9412 Author: Peng Huang Date: 2010-06-08 16:17:15 +0800 Unify compare expression in configure.ac M configure.ac commit b921d7b7f7299356ae0984ad6d526a2cb0339f6d Author: Peng Huang Date: 2010-06-08 10:58:53 +0800 Refine log message of configure. M configure.ac commit 5f4506ee2f61f66cce877ac44316c11b8a4d6326 Author: Peng Huang Date: 2010-06-07 15:10:06 +0800 Only test global-engine, when global-engine is enabled. M src/test-global-engine.c commit d1238aedeb8c2f5a55bc118691862ff8a7044fa3 Author: Peng Huang Date: 2010-06-07 15:08:55 +0800 Update debian build scripts M configure.ac M debian/control M debian/libibus-dev.install M debian/libibus2.install commit bc341df136da59524e97693078019ba7100f779d Author: Peng Huang Date: 2010-06-07 08:49:56 +0800 Update vala demo engine M bindings/vala/test/Makefile M bindings/vala/test/test.vala commit 35e3104bc4f67fe327e6e9e6c3454163eb6821e7 Author: Peng Huang Date: 2010-06-07 07:53:57 +0800 Add Makefile A bindings/vala/test/Makefile commit c4728ba8399d25812d53ff7ca176253758cfcc4f Author: Peng Huang Date: 2010-06-06 20:25:11 +0800 Refine demo engine M bindings/vala/test/test.vala commit 48c4e43560e0a7990922ca4d610bff49095bd109 Author: Peng Huang Date: 2010-06-06 19:37:38 +0800 Regenerate vapi from header files. M bindings/vala/ibus-1.0.vapi M bindings/vala/ibus-1.0/ibus-1.0.files M bindings/vala/ibus-1.0/ibus-1.0.gi commit d3f227722f621feced89c453fdb701188469f1fc Author: Peng Huang Date: 2010-06-06 19:37:28 +0800 Add a demo vala engine A bindings/vala/test/test.vala commit 4b976f8b048dfb10fb86368d59c09bb84f60190d Author: Peng Huang Date: 2010-06-06 18:29:00 +0800 Fix ibus_service_get_connections in vala binding M bindings/vala/ibus-1.0.vapi M bindings/vala/ibus-1.0/ibus-1.0.metadata commit a8a6709da393b4d61203f0811be35cc8455d48a5 Author: Peng Huang Date: 2010-06-06 16:31:25 +0800 Fix coding style M src/ibusinputcontext.h commit 0ef49cb255babb6845db6120fd41332d8c02b95a Author: Peng Huang Date: 2010-06-06 16:26:38 +0800 Update vala files M bindings/vala/ibus-1.0.vapi M bindings/vala/ibus-1.0/ibus-1.0.metadata commit 2743296f5a52f723334a8c09b0812944526563ee Author: Peng Huang Date: 2010-06-06 16:02:38 +0800 Add some annotation for g-ir-scanner M src/ibusattrlist.h M src/ibusbus.h M src/ibuscomponent.h M src/ibuslookuptable.h M src/ibusproplist.h M src/ibusproxy.h M src/ibusservice.h commit e84375407a6675890113cffec81837b8c289dc60 Author: Peng Huang Date: 2010-06-06 14:42:29 +0800 Fix problem in ibus_bus_get_name_owner M src/ibusbus.c commit 42b5828d2aa0057b6a6979e8f93148a25d00be51 Author: Peng Huang Date: 2010-06-06 13:44:07 +0800 Add --disable-vala in configure M Makefile.am M bindings/Makefile.am M configure.ac D ibus.sh commit 230c5b4439d765acc3a4e1064ff66e6800af8b81 Author: Peng Huang Date: 2010-06-06 13:35:51 +0800 Add ibus-1.0-custom.vala M bindings/vala/Makefile.am M bindings/vala/ibus-1.0/ibus-1.0-custom.vala commit c4c565dc706a0c262beba447095950485a4d6a55 Author: Peng Huang Date: 2010-06-06 13:24:27 +0800 Add vala in rpm spec file M Makefile.am M ibus.spec.in commit 85231d5f85f298bfbb2805f6f1f851e82fb75a66 Author: Peng Huang Date: 2010-06-06 12:30:06 +0800 Add vala support M bindings/Makefile.am A bindings/vala/Makefile.am A bindings/vala/ibus-1.0.vapi A bindings/vala/ibus-1.0/ibus-1.0-custom.vala A bindings/vala/ibus-1.0/ibus-1.0.excludes A bindings/vala/ibus-1.0/ibus-1.0.files A bindings/vala/ibus-1.0/ibus-1.0.gi A bindings/vala/ibus-1.0/ibus-1.0.metadata A bindings/vala/ibus-1.0/ibus-1.0.namespace M configure.ac commit 1b06b1f9b1ae304d82a5658a6e2dfb92b51da481 Author: Peng Huang Date: 2010-06-06 11:14:42 +0800 Remove python in bindings M bindings/Makefile.am D bindings/python/Makefile.am D bindings/python/common.h D bindings/python/gendefs.sh D bindings/python/ibus-types.defs D bindings/python/ibus-virtual-methods.defs D bindings/python/ibus.defs D bindings/python/ibus.override D bindings/python/ibusmodule.c commit ea2e5113453f6cef5d93ff3b7e533d62fbc3c115 Author: Peng Huang Date: 2010-06-05 21:44:54 +0800 Update rpm spec file. M ibus.spec.in commit cbe5540dd8c8a1b25522c1592d076ed3ffe0bfa4 Author: Peng Huang Date: 2010-06-05 21:28:04 +0800 Support gtk3 M Makefile.am M client/Makefile.am M client/gtk2/Makefile.am A client/gtk3/Makefile.am A client/gtk3/ibusim.c A client/gtk3/ibusimcontext.c A client/gtk3/ibusimcontext.h M configure.ac M debian/control M ibus.spec.in M util/Makefile.am commit e9bf772df8cdb3c06520dcc0e0dccee067e3a776 Author: Peng Huang Date: 2010-06-05 20:44:32 +0800 Repace some deprecated macros to fix build errors with gtk3 M client/gtk2/ibusimcontext.h commit 190074f40707c0a2aa8ba7156217121a3d5023bd Merge: 2d6eeb6 683f8d0 Author: Peng Huang Date: 2010-06-05 09:41:30 +0800 Merge branch 'async_process_key_event' commit 2d6eeb67267c65a9bc7c537d80a6970121af714a Merge: 3f64078 9dabf25 Author: Peng Huang Date: 2010-06-05 09:41:10 +0800 Merge branch 'singleton_bus' commit 683f8d03ecbf6de5a031fdec3bc89999db857faa Author: Peng Huang Date: 2010-06-04 19:40:59 +0800 Set keycode in GdkEvent correctly. M client/gtk2/ibusimcontext.c commit 3f6407877244f390fc3f4c3da4c2d279983795c4 Author: Julien Humbert Date: 2010-06-04 12:07:42 +0200 Minor changes to the previous commited translation M po/fr.po commit 637fc2473c80f44cf6bbb760e90fae2370c4c660 Author: Julien Humbert Date: 2010-06-04 12:01:15 +0200 Update French tranlation M po/fr.po commit 72b07456b95198201fae43c222a8aaecad453ab9 Merge: 42b31b8 978325d Author: Julien Humbert Date: 2010-06-04 11:26:07 +0200 Merge branch 'master' of git://github.com/phuang/ibus commit 554e35e6dcbee874fbcaebd81b7558ca4ff48d5d Author: Peng Huang Date: 2010-06-04 15:04:12 +0800 Make ibus_input_context_process_key_event in async mode M src/ibusinputcontext.c commit 978325de556641717f4d75d3f58053d9747a977d Author: Peng Huang Date: 2010-06-03 23:16:46 +0800 Remove unused define in ibusxml.c M src/ibusxml.c commit 9dabf25c5a9265523b96d517a4d39753f679898c Author: Peng Huang Date: 2010-06-03 18:12:26 +0800 Share one IBusBus instance in whole process. M src/ibusbus.c commit 0ac0c0a91d5a50f8286b9aff662a46e51cc8ae6e Author: Peng Huang Date: 2010-06-03 18:13:14 +0800 Use g_assert to check if connection is alive M src/ibusconnection.c commit 9d9b4e240a34b31daea7a73f4b3ec5d75920f68c Author: Peng Huang Date: 2010-06-03 23:12:13 +0800 Fix function name typo M src/ibusxml.c commit 54fa37f9b1497a380ce10c140c1c992b3e6c8786 Author: Peng Huang Date: 2010-06-03 21:18:50 +0800 Add all classes in ibus.py M src/python/ibus.py commit adda25656efac6357ff1f1f3d697fec5cf26b21b Author: Peng Huang Date: 2010-06-03 17:52:32 +0800 Fix document of IBusConfig M src/ibusconfig.c commit efad0c3e731da7a3ca46a68d04ffb60614752fa5 Author: Peng Huang Date: 2010-06-03 08:43:08 +0800 Add a small test code for gir A src/python/ibus.py A src/python/test.py commit 5d7869453a1c2305291bedcb2edf5e567bbcb5b8 Author: Peng Huang Date: 2010-06-02 21:19:48 +0800 Add --version -V option for ibus-daemon M bus/main.c commit ad3e270a3e1f3d56b824fad4ab4b4f40a8979649 Author: Peng Huang Date: 2010-06-02 14:17:57 +0800 Fix build warnings M src/ibusproxy.h commit dab9563a6fb8a70b916fe565c97f73990eea86c4 Author: Peng Huang Date: 2010-06-02 14:14:00 +0800 Remove _DummyStruct M src/ibusdbus.h commit 28b8525b00107c04a52254e26082a43d713a5920 Author: Peng Huang Date: 2010-06-02 10:37:59 +0800 Update zh_TW.po from Tseng, Cheng-Chia M po/zh_TW.po commit ef3bc4281040a29be58b58e697362a8c05d575be Author: Peng Huang Date: 2010-06-01 21:40:47 +0800 Fix coding style. M src/ibusenginedesc.h commit 2f7901c539ce97b718b002f39c8398179225026b Author: Peng Huang Date: 2010-06-01 21:36:08 +0800 Remove dbus in pc file, and fix spec file. M configure.ac M ibus-1.0.pc.in M ibus.spec.in commit 45834ea4cb7f2900c847e97ff86391bc4a50780f Author: Peng Huang Date: 2010-06-01 20:40:25 +0800 Require gobject-introspection 0.6.9 M configure.ac commit 741867f30c3e4586f17816176c696f2024872cc2 Author: Peng Huang Date: 2010-06-01 19:47:19 +0800 Fix build errors M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/inputcontext.c M bus/matchrule.c M bus/panelproxy.c M bus/test-matchrule.c M gconf/config.c commit 23825e6f50f41f9e0eeb40f067153bdebe57b7fa Author: Peng Huang Date: 2010-06-01 19:17:46 +0800 Add annotation for some return types M src/ibusbus.h M src/ibuscomponent.h M src/ibusobservedpath.h M src/ibusservice.h commit d91324c034e83e17715cfa5aa9f8434aacd05a23 Author: Peng Huang Date: 2010-06-01 18:37:09 +0800 Add gobject-introspection support M configure.ac M src/Makefile.am M src/ibusattrlist.c M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibusconfig.c M src/ibusconfigservice.c M src/ibusconnection.c M src/ibusconnection.h A src/ibusdbus.h M src/ibusengine.c M src/ibusengine.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibusinputcontext.c M src/ibusinternal.c M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuslookuptable.c M src/ibusmainloop.h M src/ibusmessage.c M src/ibusmessage.h M src/ibuspanelservice.c M src/ibuspendingcall.c M src/ibuspendingcall.h M src/ibusproplist.c M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserver.c M src/ibusserver.h M src/ibusservice.c M src/ibusservice.h M src/test-lookuptable.c commit b899ae494cc354c2748762b9de31abfebc41e873 Author: Peng Huang Date: 2010-06-01 16:39:39 +0800 refine coding style M src/ibusproxy.h commit 7842b20b3e268227826dd4249f6c1e73a5d71248 Author: Peng Huang Date: 2010-06-01 20:50:19 +0800 Fix problem in ibus_engine_update_lookup_table_fast. M src/ibusengine.c commit 42b31b806fc86f04a4810c5819ad2ec7ca75e1da Author: Julien Humbert Date: 2010-06-01 12:38:23 +0200 Updated French translation M po/fr.po commit a7b42886ca6a8dba90fd9387bca585f8e5388aaf Author: Peng Huang Date: 2010-06-01 14:28:18 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 6cd06247077cdec320f32e1891cbfe6c4156079a Author: James Su Date: 2010-05-26 20:34:16 -0700 Add a test for global engine related functions in ibusbus.c. M src/Makefile.am A src/test-global-engine.c commit 389f6704d3950174fec78c1f22304edd9de11fc6 Author: James Su Date: 2010-05-26 20:06:53 -0700 Add "global-engine-changed" signal. M src/ibusbus.c commit b606f91b1f455ce7bae8d4e4904dd9ce922a9fa1 Author: James Su Date: 2010-05-26 19:17:03 -0700 Fix global engine related functions. M src/ibusbus.c commit c5705b4c037d7fc14bd38ded069a8437f1256250 Author: James Su Date: 2010-05-21 14:56:36 -0700 Implement the ability to manipulate the global engine. lib parth. M src/ibusbus.c M src/ibusbus.h M src/test-bus.c commit 9aacf3588d39400ab75a481ff9ada5bb868fc460 Author: James Su Date: 2010-05-21 14:53:36 -0700 Implement the ability to manipulate the global engine, daemon part. M bus/ibusimpl.c commit d2e8791f78227058e211c6b7db338ec521cb6c22 Author: James Su Date: 2010-05-03 21:34:57 -0700 Part 1 of XKB support. This change includes: 1. Adds hotkey for switching to previous engine (renaming the old unused "prev_engine" to previous_engine). 2. Renames next_engine hotkey to next_engine_in_menu. 3. Saves/loads current and previous global engine names to/from config. 4. Adds enable_by_default config to enable the input method by default. 5. Moves hotkey filter function from inputcontext.c into ibusimpl.c. M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M data/ibus.schemas.in commit 99f9e06bb995b406ad3d4498971bec2c58878f16 Author: Peng Huang Date: 2010-06-01 11:37:18 +0800 Fix some exceptions in setup ui M setup/keyboardshortcut.py commit 6c32af7c6f151aad64f339abdecfce10498ea701 Author: Peng Huang Date: 2010-05-31 16:42:36 +0800 Fix problem in ibus_lookup_table_set_label M src/ibuslookuptable.c commit 5da6aa482b5429da2162921a3893b14bcebf7b22 Author: Peng Huang Date: 2010-05-29 07:34:06 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 61f0c9611c37a189681f2e1b3a8f896e83a52009 Author: Peng Huang Date: 2010-05-29 06:44:16 +0800 Release 1.3.4 M configure.ac commit 7af503aaba624c26aff791943490f2aee410cd99 Author: Peng Huang Date: 2010-05-28 16:38:01 +0800 Add include M bus/ibusimpl.c commit 9372a7c64bea26f19ae6bcda9395aa86da60071b Author: Peng Huang Date: 2010-05-28 16:37:50 +0800 Remove changelog D debian/changelog commit aec6c3a1fb241810e0dc9e58d7da34299eb0f200 Author: Peng Huang Date: 2010-05-28 10:18:24 +0800 Add ppa target to generate debian source package. M Makefile.am M configure.ac A debian/README.source M debian/changelog A debian/changelog.in M debian/clean M debian/control D debian/libibus1.install D debian/libibus1.symbols A debian/libibus2.install A debian/libibus2.symbols A debian/patches/00list A debian/patches/01_ubuntu_desktop.dpatch M debian/rules A debian/source/format M debian/xinput/ibus commit dc1e9d38ce4612ee7fb05a39f25ae5dfb499dd4a Author: Peng Huang Date: 2010-05-27 06:47:34 +0800 Remove some unused variables. M src/ibusbus.c M src/ibusconnection.c commit 7912b45a0526f78467098b36022adfb203d587b0 Author: Peng Huang Date: 2010-05-26 12:20:29 +0800 Fix restart problem when the image file is removed. M bus/ibusimpl.c commit e502b41e2fedd11bccd739ed9d7257d88073904e Author: James Su Date: 2010-05-26 15:38:37 -0700 Change ibus_bus_hello() to return const gchar*. M src/ibusbus.c M src/ibusbus.h commit c91d8429a01725dd881abe7014fbf5c1fdba07d6 Author: James Su Date: 2010-05-26 14:56:15 -0700 Fix memory issues in ibusconnection.* and ibusproxy.c M src/ibusconnection.c M src/ibusconnection.h M src/ibusproxy.c commit 1c50507a2f0a0bfcc74d99dec3706605d211119d Author: James Su Date: 2010-05-26 12:41:43 -0700 Fix memory issues in ibusbus.c M src/ibusbus.c M src/ibusbus.h M src/test-bus.c commit 0ba0b49831c38772884cdad787a596c4ddc23a23 Author: James Su Date: 2010-05-21 14:44:41 -0700 Fix typos in ibus_bus_current_input_context(). M src/ibusbus.c M src/test-bus.c commit 3c491bce532059391429c17c46a96f723a0a1270 Author: fujiwarat Date: 2010-05-17 18:17:57 +0900 Fix not to emit property-activate when state is not changed. M ui/gtk/menu.py M ui/gtk/toolitem.py commit 5326f3c05c4ef69cbf88ca8e3d91f9eb3efc1f96 Author: Peng Huang Date: 2010-05-15 20:05:51 +0800 Update pl.po from Piotr DrÄ…g M po/pl.po commit 9026db8da82df0229cd3c7f9055bccad338f6a91 Author: Peng Huang Date: 2010-05-15 20:02:19 +0800 Refine some build options. M Makefile.am M client/Makefile.am M configure.ac M gconf/Makefile.am M ibus/Makefile.am M ibus/interface/Makefile.am M setup/Makefile.am M ui/Makefile.am M ui/gtk/Makefile.am M util/Makefile.am commit c75f40f35168f752ba5380e229d889bfb7bf4074 Author: Peng Huang Date: 2010-05-15 19:48:37 +0800 Add --disable-clients to disable gtk x11 clients M client/Makefile.am M configure.ac commit 1477bcd22f7a9896348d6f67a4f98af0e829ed66 Author: Peng Huang Date: 2010-05-14 20:52:53 +0800 Add ibus_lookup_table_set_label. M src/ibuslookuptable.c M src/ibuslookuptable.h commit 86d4cf8b4e1d8485952172ebcda455d64351f575 Author: Peng Huang Date: 2010-05-10 09:09:42 +0800 Make version in ibus-docs configurable. M configure.ac D docs/reference/ibus/ibus-docs.sgml A docs/reference/ibus/ibus-docs.sgml.in commit facc441f48a9f6ed385578106daa1eef7e1cd8c5 Author: Peng Huang Date: 2010-05-07 22:13:46 +0800 Update kn.po from Shankar Prasad Venkateshbhat M po/kn.po commit a847b223c4b220ae36ba3f565df3de5c93857dcc Author: Peng Huang Date: 2010-05-07 15:35:36 +0800 Update zh_TW.po from Tseng, Cheng-Chia M po/zh_TW.po commit 19a8c3ae2e11005bb20c1dd98e4ffe5b02d5c06d Author: Peng Huang Date: 2010-05-06 16:44:49 +0800 Update hi.po from Rajesh Ranjan M po/hi.po commit 4be5b98dab33b351bc22d91e3f6cfa5e1c5787fd Author: Peng Huang Date: 2010-05-06 16:35:04 +0800 Update ja.po from Kiyoto James Hashida M po/ja.po commit 1ce102f4e3ee675f8d3a2329db52da81a09e4b72 Author: Peng Huang Date: 2010-05-06 16:04:05 +0800 Update ml.po from Ani Peter M po/ml.po commit ddf4c9462a044561cbb4632f722c52bf9c28a2a5 Author: Peng Huang Date: 2010-05-06 15:05:43 +0800 Update mr.po from sandeep shedmake M po/mr.po commit 704747b00f8b41d1099574c856e55d4c7f29016d Author: Peng Huang Date: 2010-05-06 10:32:20 +0800 Update ru.po from Yulia Poyarkova M po/ru.po commit 93b3ab9b433fa9540af140a08ae6f81eec5ae531 Author: Peng Huang Date: 2010-05-06 10:31:19 +0800 Update te.po from Krishnababu Krothapalli M po/te.po commit c924bf47d4f227baf4fe4938a4467d26c2d633b7 Author: Peng Huang Date: 2010-05-05 19:09:39 +0800 Fix a typo in setup.ui M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.ui commit 6b76860b86cfb45aedf8a010a4af45335396441c Author: Peng Huang Date: 2010-05-05 19:03:19 +0800 Update pa.po from Jaswinder Singh M po/pa.po commit 74e5fcace7101354b560e0aa2bc0c0d2b91d5fc3 Author: Peng Huang Date: 2010-05-04 13:33:46 +0800 Release 1.3.3 M configure.ac commit fd5289885358aebcffac82a71494bcb72193aded Author: Peng Huang Date: 2010-05-04 11:16:31 +0800 Revert "Remove dbus library from ibus-1.0.pc" This reverts commit 1a60516d29bae164213c2337e4d877079b1c3ba0. M ibus-1.0.pc.in commit d8d386f6bd2823e96e0380e065ccc0b522b7e9e6 Merge: 1a60516 80c35b5 Author: Peng Huang Date: 2010-05-04 07:29:45 +0800 Merge branch 'no_snooper_apps' commit 80c35b5fc53672a0791f847d811c71843e1c7156 Author: Peng Huang Date: 2010-05-04 07:27:53 +0800 Add configure --disable-key-snooper M client/gtk2/ibusimcontext.c M configure.ac commit 1a60516d29bae164213c2337e4d877079b1c3ba0 Author: Peng Huang Date: 2010-05-03 17:45:05 +0800 Remove dbus library from ibus-1.0.pc M ibus-1.0.pc.in commit 550d0adb701d456c1097be805cd010b95e60f9c8 Author: Peng Huang Date: 2010-05-02 15:44:13 +0800 ibus-x11 does not call g_error, when it connects to ibus-daemon failed. M client/x11/main.c commit aab40e06078512c7a70b071e3eb5acfe47921ca4 Author: Peng Huang Date: 2010-05-01 20:58:36 +0800 Refine comments M configure.ac commit 180371b895cc9217710220e1a2dce5d91f86cf2b Author: Peng Huang Date: 2010-05-01 17:22:46 +0800 add configure option to disable keyboard snooper in some applications M client/gtk2/ibusimcontext.c M configure.ac commit 14bf7bdb80920c7cf8f4fd38aabfa8c5b6deee33 Author: Peng Huang Date: 2010-05-01 09:00:27 +0800 include ignore and handled mask in IBUS_MODIFIER_MASK M src/ibustypes.h commit 9111a6cfcd6b1357a4c288366661faef7d757add Author: Peng Huang Date: 2010-04-30 15:05:29 +0800 Check if client connection is alive, when engine replies the process_key_event M bus/inputcontext.c commit 670693885a114ba3c3455db695dee52edfc605d8 Author: Peng Huang Date: 2010-04-29 17:09:58 +0800 mark ibus_free_strv as depracated M src/ibusshare.c M src/ibusshare.h commit 479ef38a166a8e9fe72fdc52024b3676deedf16d Author: Peng Huang Date: 2010-04-27 07:37:42 +0800 Update es.po from daniel cabrera M po/es.po commit f823193fb424797554cc4953807f65bf038b10a9 Author: Julien Humbert Date: 2010-04-26 13:30:38 +0200 Updated French translation M po/fr.po commit 5d699f3d6d530cc5a709530c28fef3cedc086cb9 Author: Peng Huang Date: 2010-04-26 09:00:47 +0800 Remove option [Never] for language bar. M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/main.py M setup/setup.ui M ui/gtk/languagebar.py M ui/gtk/panel.py commit 269a0bb0ad207fc484b1867c53bc72f200a7cc15 Author: Peng Huang Date: 2010-04-24 08:18:58 +0800 Update kn.po from Shankar Prasad Venkateshbhat M po/kn.po commit e2c1359c02f975ea5cb7a51c7baa313b27b2e6c7 Author: Peng Huang Date: 2010-04-24 08:16:16 +0800 Add librsvg2 as requires in rpm spec file. M ibus.spec.in commit c0f4071d17351e4076fdbe476fff7030bfd1d3a9 Author: fujiwarat Date: 2010-04-23 16:02:54 +0900 Update ja.po M po/ja.po commit 633f5d03fcdd1206855a3a4071ee75d37829e619 Author: Peng Huang Date: 2010-04-22 16:54:03 +0800 Update API references of IBusEngine M src/ibusengine.c commit c0fe2773c4c750c871785e3ca07745fe76d51faf Author: Peng Huang Date: 2010-04-21 22:06:23 +0800 Update es.po from daniel cabrera M po/es.po commit a48386426142a6645b9beae712572dc1adfc082a Author: Peng Huang Date: 2010-04-21 13:19:23 +0800 Release 1.3.2 M configure.ac commit 4cd33ff5d4c8adcde22364365f0d892f013e5b01 Author: Peng Huang Date: 2010-04-21 13:18:34 +0800 workaround: set focus if context does not have focus. M bus/inputcontext.c commit 416f9ac05d2edab41379dad40315c0feb2d47406 Author: Peng Huang Date: 2010-04-21 11:04:43 +0800 Update string in UI M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.ui commit caefdc15452b63e87e5816c888b86be72feb5a56 Author: Peng Huang Date: 2010-04-21 10:56:19 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 943df5a35b5fa73f6195b362993a479b611116bb Author: Peng Huang Date: 2010-04-21 10:44:32 +0800 Fix issue - application does not response key events randomly. M bus/inputcontext.c commit fd38e7622440cbd7c78ba62fe92281edcea6a76e Author: Peng Huang Date: 2010-04-21 10:42:40 +0800 Add iso-codes-dev as BR in spec file. M ibus.spec.in commit 5be6364bb79d77fc21c799ea728be7d6ff24de5e Author: Peng Huang Date: 2010-04-20 17:58:05 +0800 Adjust setup dialog for better looking M setup/setup.ui commit 74f8f71853b215c3d2e9945be60f5c9ff6285415 Author: Peng Huang Date: 2010-04-20 17:21:41 +0800 Fix crash in registry M bus/registry.c M src/ibuscomponent.c commit e74ec5611e26b509c990024e919de21ec33976b5 Author: Peng Huang Date: 2010-04-15 17:06:55 +0800 Update or.po from Manoj Giri M po/or.po commit b69765ccf8417413678ad35e3e41710e8ed6d37b Author: Peng Huang Date: 2010-04-12 06:42:13 +0800 Fix some mistakes M po/zh_CN.po commit 473da4136f36dc344033723b8217a7b3003b6827 Author: Peng Huang Date: 2010-04-11 20:48:59 +0800 Fix mistakes in zh_CN.po M po/zh_CN.po commit 6d7f49c57e7013dabcd88c810eaa2fc49f94c87d Author: Peng Huang Date: 2010-04-11 17:48:49 +0800 Do not hardcode iso-codes anymore M configure.ac M ibus/_config.py.in M ibus/lang.py commit 064eb48804f34f1c2249d93b5df4b129d536febd Author: Peng Huang Date: 2010-04-11 17:04:19 +0800 Fix build warnings M src/test-bus.c commit 3b2f45a9abeffebdb4f583ce6ddfed674e74b4c6 Author: Peng Huang Date: 2010-04-11 17:02:55 +0800 Add X11_CFLAGS and X11_LIBS M client/x11/Makefile.am M util/IMdkit/Makefile.am commit 292c62c32e8e71383fafe09881c2ff247d460bb7 Author: Peng Huang Date: 2010-04-11 16:41:03 +0800 Fix make distcheck errors. M Makefile.am M configure.ac M gconf/Makefile.am M ibus/Makefile.am M ibus/interface/Makefile.am M po/POTFILES.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/Makefile.am M src/test-bus.c M ui/gtk/Makefile.am commit 271f02d9ee09477f61dcec43196c52768665f062 Author: Peng Huang Date: 2010-04-11 11:39:48 +0800 Use = in shell test expression M configure.ac commit 4d791dd6846f7610c0797f508d9760df49c710dd Author: Peng Huang Date: 2010-04-10 07:15:04 +0800 Update es.po from daniel cabrera M po/es.po commit eee4f66a4557dfb825b1ba3dac1cf021699d4e5d Author: Peng Huang Date: 2010-04-09 18:44:35 +0800 Update mr.po from sandeep shedmake M po/mr.po commit c1697ada529e5cf2dcf8c6292f6e3bef6ccbb5b2 Author: Peng Huang Date: 2010-04-09 12:01:19 +0800 Fix two build warnings M bus/registry.c M src/ibusbus.c commit 616c07538b3ea8cf0d5979bb4a22afa8e9d9220a Author: Peng Huang Date: 2010-04-09 11:30:50 +0800 Add some git targets M Makefile.am commit 39bf9044019b342380c32986c12ffc5a41ac29f3 Author: Peng Huang Date: 2010-04-09 11:23:42 +0800 Update some strings and po files. M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.ui M ui/gtk/languagebar.py commit 1dfaf677e210452056569ccfb0d47ef236771254 Author: Peng Huang Date: 2010-04-09 11:05:57 +0800 Update ru.po from Yulia Poyarkova M po/ru.po commit f7fe659fc8bd974fb609d66784e301cf3efca590 Author: Peng Huang Date: 2010-04-09 09:27:57 +0800 Fix AM_CONDITIONAL error in configure.ac M configure.ac commit 8db336807712dba41cbf3de37ae87a3fb084d39e Author: fujiwarat Date: 2010-04-08 18:40:54 +0900 Narrow the width of ibus-setup for ja M setup/setup.ui commit ff8cdb6f36a6f1024c3295ca75be6c444209d407 Author: Peng Huang Date: 2010-04-08 17:47:31 +0800 Clear the code for preedit text mode M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M bus/inputcontext.h M src/ibusmarshalers.list commit e4d02bb966788291168e51225aaeab24f80ff424 Author: fujiwarat Date: 2010-04-08 16:09:00 +0900 Commit preedit text when bus_input_context_disable is called. M bus/inputcontext.c commit 56968f1b9560298667d95908f2773ddec2c04c2a Author: Peng Huang Date: 2010-04-08 11:10:02 +0800 Try to create dir $(HOME)/.config/ibus/bus every time to avoid apps wake up once per second. M src/ibusbus.c M src/ibusshare.c M src/ibusshare.h commit 413afeb66e23acf06ffd8819b74895582c8d68a7 Author: Peng Huang Date: 2010-04-08 10:37:10 +0800 Insensitive 'Turn off input methon' menu item if ic is disabled already. M ui/gtk/panel.py commit 619283cc93725cfbfff598013671da0e6a2c3728 Author: Peng Huang Date: 2010-03-31 17:48:45 +0800 Update pa.po from Jaswinder Singh M po/pa.po commit fc59bca7eb6606abac94ffa5a3b4638edf87b22b Author: Peng Huang Date: 2010-03-31 12:26:40 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit dc505c75ae1eb182a0376b959ce4330628f06b54 Author: Peng Huang Date: 2010-03-31 12:26:24 +0800 Update ko.po from Hyunsok Oh M po/ko.po commit 11a4055f2050019266516c4b83b7c671144189e4 Author: Peng Huang Date: 2010-03-30 12:55:27 +0800 Release 1.3.1 M configure.ac commit 06b8aeabdbd347396ea5526abca70229cb2a47e9 Merge: 39782a6 2b25925 Author: Peng Huang Date: 2010-03-30 12:49:27 +0800 Merge remote branch 'origin/master' into 1.3.y commit 2b25925df7c193731afeb43fbee777a2fa9c2d13 Author: Peng Huang Date: 2010-03-29 15:28:26 +0800 Add configure option --disable-gconf M Makefile.am M configure.ac commit 39782a6a4ae6221868e2430d9085dacba98b8548 Author: Peng Huang Date: 2010-03-26 15:32:23 +0800 Set lookup table's orientation before updating candidates. M ui/gtk/candidatepanel.py commit 24e6c7643157440d3ad78fb07e140cd305683f35 Author: Peng Huang Date: 2010-03-26 09:24:18 +0800 Update from "Runa Bhattacharjee" M po/bn_IN.po commit 3154257e4335e92e47f7305f6ce43c2167a4abbd Author: Peng Huang Date: 2010-03-24 19:28:32 +0800 Update ml.po from Ani Peter M po/ml.po commit 487546090ad6ccff09b17e6d42395dc8ea7198bd Author: Peng Huang Date: 2010-03-26 15:32:23 +0800 Set lookup table's orientation before updating candidates. M ui/gtk/candidatepanel.py commit f509f658aa24b50426eaa0b34850a9153e6a7c63 Author: Peng Huang Date: 2010-03-23 14:41:50 +0800 Update gu.po from Sweta Kothari M po/gu.po commit b84c2405f6fcd22576950cebe1d56ab7a06bc85e Author: Peng Huang Date: 2010-03-26 09:24:18 +0800 Update from "Runa Bhattacharjee" M po/bn_IN.po commit 86e48f31bce0faa4ef8310b63a501b2bfc2f2de5 Author: Peng Huang Date: 2010-03-25 10:29:44 +0800 Always setup ibus_datedisplay M configure.ac commit e321f2844feeaa303f26b0072c508db26e065cbf Author: Peng Huang Date: 2010-03-25 10:29:44 +0800 Always setup ibus_datedisplay M configure.ac commit 70e975d44532ff706fb563c4d93afa66afeb4862 Author: Peng Huang Date: 2010-03-24 19:28:32 +0800 Update ml.po from Ani Peter M po/ml.po commit 468f7cca1e53e6db3b2b2ef002010bc5c334a9da Author: Peng Huang Date: 2010-03-23 17:10:02 +0800 Make make output look's better M docs/reference/ibus/Makefile.am M gconf/Makefile.am M src/Makefile.am M ui/gtk/Makefile.am commit 69e4a62041dbf8f78bc73a58ebd38a4ab78af72d Author: Peng Huang Date: 2010-03-23 16:30:19 +0800 Refine coding style and change source file header. M src/ibusinternal.c commit 8e2e49dd0a5a4560f10fb13fa660c28345d17195 Author: Peng Huang Date: 2010-03-23 15:02:33 +0800 Add configure --disable-python to disable build for python modules. M Makefile.am M configure.ac commit 1217396567a9b8dbbdf9efecb7c0550df57371ae Author: Peng Huang Date: 2010-03-23 14:41:50 +0800 Update gu.po from Sweta Kothari M po/gu.po commit 219adb293a275b4e02e21e7bc2111a0706ad99a2 Author: Peng Huang Date: 2010-03-22 21:21:36 +0800 Add AM_SILENT_RULES([yes]) M configure.ac commit a0988fc77bf1ba472c7b75b0321f1550f3e824c7 Merge: 6af061d 1d01af4 Author: Peng Huang Date: 2010-03-22 16:12:00 +0800 Merge branch '1.3.y' commit 1d01af4bba89868b5803a20f6d6c77474dabfec2 Author: Peng Huang Date: 2010-03-22 16:11:37 +0800 Does not check glib micro version anymore. M client/gtk2/ibusim.c commit 6af061df3987cf8f50870f28a6666dbd24d6e0b2 Author: Peng Huang Date: 2010-03-22 10:22:53 +0800 Set release to 0 M configure.ac commit 4e4d859a55236b670245a734c4a9a873d37e9b15 Author: Peng Huang Date: 2010-03-22 10:20:41 +0800 Bump version to 1.3.0 M configure.ac commit f41d86de36a38356d8ae3f1f9ee1035ef786545e Author: Peng Huang Date: 2010-03-22 10:07:32 +0800 Change version number in api document. M docs/reference/ibus/ibus-docs.sgml commit 0f2f4b7a8b30470b6f1c5e019e0af6de28e36dd1 Author: Peng Huang Date: 2010-03-22 09:52:14 +0800 ibus setup will execute ibus-daemon with --xim M setup/main.py commit f74809323895668329088ad2e627a62e90eb8b99 Author: Peng Huang Date: 2010-03-22 09:20:15 +0800 Fix deb build problem. M debian/libibus1.install commit 4a57966042e142a643bd5e9b7939fa8880d0a6c6 Author: Peng Huang Date: 2010-03-19 11:06:45 +0800 Avoid crash if the engine is destroyed M bus/ibusimpl.c M bus/inputcontext.c commit ebc47d54bf5be8bbbaf2ec523ad7f82abf44f0c8 Author: Peng Huang Date: 2010-03-17 13:50:22 +0800 Always put setup dialog in center of screen. M setup/setup.ui commit 0211cdaa80721aac1aade8c76c90ace9c9ccce3d Author: Peng Huang Date: 2010-03-16 15:45:00 +0800 Call ibus_engine_update_preedit_text_with_mode in ibus_engine_update_preedit_text M src/ibusengine.c commit 8ee38642d8e0b861cf03d60374a3462de201d16a Author: fujiwarat Date: 2010-03-16 16:33:26 +0900 Add ibus_engine_update_preedit_text_with_mode M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M ibus/common.py M ibus/engine.py M ibus/interface/iengine.py M src/ibusengine.c M src/ibusengine.h M src/ibustypes.h commit 701265d6db597388b7ad7dfa697aa55de29ebd08 Author: Peng Huang Date: 2010-03-16 10:32:06 +0800 Add Categories in ibus.desktop M bus/ibus.desktop.in commit 8ba5979f404725b684a005ab747c0fbf5baced87 Author: fujiwarat Date: 2010-03-12 10:55:34 +0900 Update ja.po M po/ja.po commit 43b68f70dc10a493b011bf106a40ce3318dab9cf Author: Peng Huang Date: 2010-03-10 10:24:01 +0800 Update version in document M docs/reference/ibus/ibus-docs.sgml commit 53a04bfb66c316df74132c0c1bcc1f97cbb26788 Author: Peng Huang Date: 2010-02-28 10:22:51 +0800 Update zh_TW.po from Tseng, Cheng-Chia M po/zh_TW.po commit 314eb4a1a31fd7fc1bd6769c7f7b92afe6622e00 Author: Peng Huang Date: 2010-02-28 10:19:16 +0800 Update pl.po from Piotr DrÄ…g M po/pl.po commit be47cfcceb6352001877e79d530514baa299d08e Author: Peng Huang Date: 2010-02-24 16:07:06 +0800 Remove unused code. M ui/gtk/panel.py commit f6aee0a3605f44336f881a3d133d176e6f890518 Author: Peng Huang Date: 2010-02-24 09:57:41 +0800 Refine inline document M src/ibusproxy.h commit 12d98ba000f29027b2d33cdef719906bbcb0e0b8 Merge: 80077fe 5454785 Author: Peng Huang Date: 2010-02-23 13:27:29 +0800 Merge remote branch 'epico/master' commit 80077fe1eae883bf5ae12e38a216dd1634c2db01 Author: Peng Huang Date: 2010-02-23 13:19:57 +0800 Fix a typo in API document M src/ibusproxy.h commit 54547855ee226bab4e7593acbc670496202013a7 Author: Peng Wu Date: 2010-02-23 12:41:37 +0800 change gtk-im client name. M client/gtk2/ibusimcontext.c commit b6567c635ccad90f3d669577f51074530f33c02d Author: Peng Huang Date: 2010-02-23 08:10:28 +0800 Remove the occurence of dbus_message_iter_get_array_len() due to its obsolescence. In Header #ifndef DBUS_DISABLE_DEPRECATED /* This function returns the wire protocol size of the array in bytes, * you do not want to know that probably */ DBUS_DEPRECATED int dbus_message_iter_get_array_len (DBusMessageIter *iter); #endif M src/ibusbus.c commit 6a546df559a59ba02ff0c59fa47bea8417f63355 Author: Peng Huang Date: 2010-02-19 13:51:53 +0800 Use G_N_ELEMENTS in for loop M bus/ibusimpl.c M bus/panelproxy.c M src/ibuspanelservice.c commit 5380820cb5da1c63799115141aae55e32d5e9139 Author: Peng Huang Date: 2010-02-15 19:39:17 +0800 Remove --rebuild-sections M docs/reference/ibus/Makefile.am commit dabf52c07a80e04f12ad72dd972558130f164f68 Author: Peng Huang Date: 2010-02-15 19:36:57 +0800 Fix cursor location problem. M client/gtk2/ibusimcontext.c commit 200de0a7c338149afac26fcba46949103f1f70ba Author: Peng Huang Date: 2010-02-15 17:43:45 +0800 Close child process in IBusComponent.Destroy M src/ibuscomponent.c M src/ibuscomponent.h commit 173b2e830201e837185aa06df9394ab0bc0cea5e Author: Peng Wu Date: 2010-02-11 11:12:11 +0800 update zh_CN.po for embedding preedit. M po/zh_CN.po commit fb8f42382426f11a6bf0b52f0eb4b8775c4afc56 Author: Peng Huang Date: 2010-02-11 10:37:53 +0800 Change the default setting of use_global_engine, and remove some unused code. M bus/ibusimpl.c M bus/ibusimpl.h M data/ibus.schemas.in commit ef68517390c94d254458097ee3c6bd3849e93b4f Author: Peng Huang Date: 2010-02-11 10:24:51 +0800 Upddate es.po from daniel cabrera M po/es.po commit 4e8235543be28d8e4c06e7af236da3aceed85839 Author: Peng Huang Date: 2010-02-10 14:52:01 +0800 Make sure the engine was not destroyed before real set the global engine. M bus/ibusimpl.c commit 31d31a736d818c2ed04fdc7f60b64ccc96f6b723 Author: fujiwarat Date: 2010-02-10 12:06:24 +0900 Fix default use_system_keyboard_layout M setup/main.py commit 115eedaa73e1880ac10991fbdc7dfa7ff0fb29e4 Author: Peng Huang Date: 2010-02-09 17:07:49 +0800 simplify preedit condition M bus/inputcontext.c commit ea9b9f21ae1a29224169e8f95f4a5e7fbd8c83e2 Author: Peng Wu Date: 2010-02-09 10:26:20 +0800 Add embed_preedit support to ibus. M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M data/ibus.schemas.in M setup/main.py M setup/setup.ui commit 51f8f4fb734292e568650464c2ba645bed21d988 Author: Peng Huang Date: 2010-02-05 08:08:28 +0800 Fix gtk-doc problems. M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am A docs/reference/ibus/ibus-sections.txt M src/ibuscomponent.h M src/ibusconfig.h M src/ibusconnection.h M src/ibusengine.h M src/ibusenginedesc.h M src/ibusfactory.h M src/ibusinternal.h M src/ibuskeymap.h M src/ibuskeysyms.h M src/ibusobject.h M src/ibuspendingcall.h M src/ibusproperty.h M src/ibusproplist.h commit 43e5004f54dc4dc3e1b2cad4836eab0d8357501d Author: Peng Wu Date: 2010-02-03 11:41:39 +0800 fixes a typo. M bus/ibusimpl.c commit d6bbeabf9d9e77a19a8f310bcf2573a24037096f Author: Peng Huang Date: 2010-02-03 07:29:51 +0800 Update es.po from Daniel Cabrera M po/es.po commit 85faf60e2981ce49bc88a3ba15ac81f919f370f4 Author: Peng Huang Date: 2010-02-02 10:21:20 +0800 Add property connection and fix crash in IBusFactory M src/ibusfactory.c commit 05ea126837cd4b879a2c0ada29f0f1db8fa9172d Author: Peng Huang Date: 2010-02-02 08:40:56 +0800 Remove duplication g_object_ref in ibus_keymap_get M src/ibuskeymap.c commit 813d0c5feb5d5750057ea92631e999bcb6c502bb Author: Peng Huang Date: 2010-02-02 08:25:57 +0800 Refine ibus_keymap_get M src/ibuskeymap.c commit 4966dfdd9637dc1e18f00ae9b5e4248de863d56f Author: Peng Huang Date: 2010-02-02 08:20:29 +0800 Refine ibus_connection_open M src/ibusconnection.c commit 71e91075c4ce4e11867cba84939b668112bb35eb Author: Peng Huang Date: 2010-02-02 08:15:39 +0800 Does not increase references in ibus_keymap_get M src/ibuskeymap.c commit d7d8096d71073e30652774efffe45a92d5178c3d Author: Peng Huang Date: 2010-02-01 18:23:11 +0800 Fix a type in comment M bus/inputcontext.c commit d11c577d31ab92e859cf6e01ae24105f6fb12d3c Author: Peng Huang Date: 2010-02-01 17:40:30 +0800 Update so version in common.py M ibus/common.py commit 9befb29b0e1a356b069ebc80cfe8813179bf5914 Author: Peng Huang Date: 2010-02-01 15:09:14 +0800 Bump version and so version M configure.ac commit ea5f939ccb49c58af28337a707e7e81e9a458b55 Author: Peng Huang Date: 2010-02-01 13:02:28 +0800 Add G_GNUC_DEPRECATED mark on ibus_keymap_new M src/ibuskeymap.c M src/ibuskeymap.h commit 3aec8b5cc40ac1552472aa23468f54093fb64765 Author: Peng Huang Date: 2010-01-31 11:03:10 +0800 Workaround for cursor following problem in some Java applications. M ui/gtk/candidatepanel.py commit f73d06cc030e0ecef761cd0862deccecfce2baa9 Author: Peng Huang Date: 2010-01-31 09:21:21 +0800 Workaround for autohide problem with metacity M ui/gtk/languagebar.py commit 7b7e338cf52578a24b6f50fbcfd80e1ced4dce1d Author: Peng Huang Date: 2010-01-31 09:19:13 +0800 Update fr.po from julroy67 M po/fr.po commit 44ef7c2035502f17c8bfb608d2d8c4eb672adc27 Author: Peng Huang Date: 2010-01-30 23:19:32 +0800 Use G_DEFINE_TYPE to simplify code. M bus/connection.c M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/inputcontext.c M bus/matchrule.c M bus/registry.c M bus/server.c M src/ibusattribute.c M src/ibusattrlist.c M src/ibusbus.c M src/ibuscomponent.c M src/ibusconnection.c M src/ibusengine.c M src/ibusenginedesc.c M src/ibusfactory.c M src/ibusinputcontext.c M src/ibuskeymap.c M src/ibuslookuptable.c M src/ibusobject.c M src/ibusobservedpath.c M src/ibuspanelservice.c M src/ibusproperty.c M src/ibusproplist.c M src/ibusproxy.c M src/ibusserializable.c M src/ibusserver.c M src/ibusservice.c M src/ibustext.c commit d48116864621e93072b4fb9ff60198f27bd201c5 Author: Peng Huang Date: 2010-01-30 22:22:30 +0800 Refine comment in configure.ac M configure.ac commit 9e1ffbf2b3b4d43d4f299db73068875bda6846cc Author: Peng Huang Date: 2010-01-28 16:06:30 +0800 Fix some problems of sharing global engine among contexts. M bus/ibusimpl.c commit c4f538017f8e1589c204688c2a4e20450db399a6 Author: Peng Huang Date: 2010-01-28 06:41:58 +0800 Attach/Detach global engine when switch focus. M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c M bus/inputcontext.c commit 85c107194f3f99be7ad5bbd986c71abc71ba6975 Author: Peng Huang Date: 2010-01-27 17:11:59 +0800 Add global engine in setup UI from Su Zhe. M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/main.py M setup/setup.ui commit cb216cedd6ee92c18384eded25766dee47d941a1 Author: Peng Huang Date: 2010-01-27 17:09:15 +0800 Support share global engine in all input context from Su Zhe. M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h commit 501b24ed272993838d7c774275feb9a1d2efb403 Author: Peng Huang Date: 2010-01-30 08:27:05 +0800 Fix a typo M debian/changelog commit cda6b25a135f964304aa328f0cb3bad473d9cac6 Author: Peng Huang Date: 2010-01-30 08:12:54 +0800 Update debian pacakge scripts M debian/changelog M debian/libibus1.symbols commit 90a9b33c336dcd067b9289de11f5f33c5bde2c19 Merge: b873dec 80f5d32 Author: Peng Huang Date: 2010-01-29 21:15:20 +0800 Merge branch 'G_DEFINE_TYPE' commit b873dec849e758dc376ad2a5588c6b3fefd6daa4 Author: Peng Huang Date: 2010-01-29 21:07:43 +0800 Refine API document of IBusInputContext M src/ibusinputcontext.c commit 80f5d32159e53623da82c868304f7bb23e9b1a02 Author: Peng Huang Date: 2010-01-29 20:48:17 +0800 Use G_DEFINE_TYPE to simplified code. M bus/inputcontext.c M bus/matchrule.c M bus/registry.c M bus/server.c commit f0a7973f66a2031a7a02c65659402d13ed6b689e Author: Peng Huang Date: 2010-01-29 20:34:05 +0800 Use G_DEFINE_TYPE to simplified code. M bus/connection.c M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/panelproxy.c commit ba48d22a1441c5b55efd4162b4447acdb65c3c7e Author: Peng Huang Date: 2010-01-29 19:58:38 +0800 Fix typo in API document M src/ibusengine.h commit 11099ced762a498d3a805264431a6fe8cf6fd6ac Author: Peng Huang Date: 2010-01-29 19:49:44 +0800 Refine API document for IBusEngine M src/ibusengine.h commit 8fd4a54b11c5bf9cd279bebed229d65124969303 Author: Peng Huang Date: 2010-01-28 07:35:22 +0800 Release floating objects in IBusEngine M src/ibusengine.c commit 93726dd3d8eade4c05d0d620110dccc3fc3b95b2 Author: Peng Huang Date: 2010-01-26 21:22:06 +0800 Use GInitiallyUnowned correctly M bus/Makefile.am M bus/dbusimpl.c M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/inputcontext.c M bus/matchrule.c M bus/panelproxy.c M bus/registry.c M client/gtk2/ibusimcontext.c M src/ibusattrlist.c M src/ibuscomponent.c M src/ibusconfigservice.c M src/ibusconnection.c M src/ibusengine.c M src/ibusfactory.c M src/ibusinputcontext.c M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuslookuptable.c M src/ibusobservedpath.c M src/ibuspanelservice.c M src/ibusproperty.c M src/ibusproplist.c M src/ibusproxy.c M src/ibusserver.c M src/ibusservice.c M src/ibustext.c M src/test-keymap.c commit bfdbf9855dea8a53ad47f4cf04f971335a73de9e Author: Peng Huang Date: 2010-01-28 09:03:31 +0800 Fix a typo. M bus/inputcontext.c M bus/panelproxy.c commit 07f8e8a54ca676f7b0cc8ee489a15044205f280d Author: Peng Huang Date: 2010-01-28 08:59:35 +0800 Fix typos. M bus/ibusimpl.c M bus/inputcontext.c M bus/panelproxy.c commit 0ba7c1ddc696ea7042657a0084c60a5e2961bfa5 Author: Peng Huang Date: 2010-01-28 08:42:47 +0800 Use G_N_ELEMENTS. M bus/ibusimpl.c M bus/inputcontext.c M bus/panelproxy.c commit 90553c93bb21387b257ce3e36ff8f6bfed521146 Merge: 7c842d9 59b2900 Author: Peng Huang Date: 2010-01-27 14:26:02 +0800 Merge branch 'master' of github.com:phuang/ibus commit 7c842d9a3e0db5ce6349b3b5bb003c95db8aa97f Author: Ding-Yi Chen Date: 2010-01-27 10:17:11 +1000 Fix some APIDOC M src/ibusbus.h M src/ibusfactory.h M src/ibusinputcontext.h M src/ibusinternal.h M src/ibusservice.h commit 59b2900f7336082b5690db4195e939b99a009a1f Author: fujiwarat Date: 2010-01-26 12:35:16 +0900 Fix destroy about menu item M ui/gtk/languagebar.py commit 0caac1e5fbb85d11b51c01ee8e4f826219faefa4 Author: Peng Huang Date: 2010-01-25 16:20:16 +0800 Show recommended engines with bold font M setup/enginecombobox.py commit 331e34332e9099121cfac689f40f71e3ca98f72b Author: Peng Huang Date: 2010-01-25 16:19:33 +0800 Only enable engines with rank > 0 at frist time startup M bus/ibusimpl.c commit 482be2ae0b50f423f1d172b4c13dcdad1beafea4 Author: Peng Huang Date: 2010-01-19 16:11:35 +0800 Show properties on systray menu by Fujiwara M setup/setup.ui M ui/gtk/languagebar.py M ui/gtk/panel.py commit 425bd8288079e58314c935a46c5920c3118ac25a Author: Peng Huang Date: 2010-01-19 13:25:22 +0800 Remove some symbols for debian package. M debian/libibus1.symbols commit ba13596c99ead9f24afd334552f8710edc5cad7e Author: Peng Huang Date: 2010-01-15 14:56:59 +0800 Unify the help message. M bus/main.c commit dbc992ba0bab3253032fbcd9fc1a477dec80b855 Author: Peng Huang Date: 2010-01-15 14:55:25 +0800 Check argument to avoid crash M gconf/config.c commit 157598a25f7c493313482868af9b800e6951ff14 Author: Peng Huang Date: 2010-01-15 14:35:15 +0800 Fix typo. M ibus/enginedesc.py commit 883bc5ed5ddfd96e0f8a15abc9748f06d2fbd86b Author: Peng Huang Date: 2010-01-14 08:31:37 +0800 Fix coding style M ui/gtk/candidatepanel.py commit 02ceec9193952243f0e05e3c2a25284600dba9b9 Author: Peng Huang Date: 2010-01-12 21:56:58 +0800 Change Title of IBusAttrList and IBusPropList M src/ibusattrlist.h M src/ibusproplist.h commit 54cc7180226dc93466ba9b69e2bbc5499ca7645b Author: Peng Huang Date: 2010-01-12 21:46:29 +0800 Fix gtk-doc issues. M docs/reference/ibus/Makefile.am M src/ibusmessage.h M src/ibuspendingcall.h commit c35651093e7e647c64dc2d54e870c4b8ddf6bc8b Author: Peng Huang Date: 2010-01-12 21:05:02 +0800 Fix gtk-doc problems. M src/ibusattrlist.h M src/ibusobject.h M src/ibusproperty.h M src/ibusproplist.h commit 07becd621cbf54bbc6faddf268a7d6e798ce6d69 Author: Peng Huang Date: 2010-01-12 20:27:11 +0800 Ignore some header files. M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus-docs.sgml commit 7e3e5d22c637de28cda17d8179b0c4edc80d93aa Author: Peng Huang Date: 2010-01-12 18:32:56 +0800 Separate IBusProperty and IBusPropList. M src/Makefile.am M src/ibus.h M src/ibusengine.h M src/ibusinputcontext.c M src/ibuspanelservice.h M src/ibusproperty.c M src/ibusproperty.h A src/ibusproplist.c A src/ibusproplist.h commit 6b1acacb23c8bef1fbf34197fb0fcb43774c03c0 Author: Peng Huang Date: 2010-01-12 18:08:42 +0800 include ibusattrlist.h in ibus.h M src/ibus.h commit 75c5ea98a9c67f616a8f252b8eff795ba18c7203 Author: Peng Huang Date: 2010-01-12 18:06:45 +0800 Separate IBusAttribute and IBusAttrList M src/Makefile.am M src/ibusattribute.c M src/ibusattribute.h A src/ibusattrlist.c A src/ibusattrlist.h M src/ibustext.h commit 7e7a45b333ae667e79647842d3e8c3e6412c33d7 Author: Peng Huang Date: 2010-01-12 17:07:21 +0800 Remove Class IBusFactoryInfo M docs/reference/ibus/ibus.types M src/ibusfactory.c M src/ibusfactory.h commit 6de5677aec441c30f52a7b0cf3a573571145b8b4 Author: Peng Huang Date: 2010-01-12 16:27:43 +0800 remove IBusFactoryInfo M src/ibusfactory.c M src/ibusfactory.h commit 8c7c06ecc3932f048a4961a9cce401073e9ee0df Author: Peng Huang Date: 2010-01-11 14:06:34 +0800 Fix string M po/zh_CN.po commit 70d202a8fa75f3ae246435fe041664cc33623c2c Author: Peng Huang Date: 2010-01-11 13:26:19 +0800 Update pl.po by Piotr DrÄ…g M po/pl.po commit 1df86898b54fcacfa6a14039a3fe46b4cbef1631 Author: Peng Huang Date: 2010-01-10 05:31:40 +0800 Refine coding style M src/ibusconfigservice.c M src/ibusconfigservice.h commit 1cbdea8d5f3183cc51c1d96e57ea9add4efcdfc3 Author: Peng Huang Date: 2010-01-10 05:20:27 +0800 Try Cython M ui/gtk/main.py commit 7f93fe7650a6721aaf8ccecf3803ca00bb7075ff Author: Peng Huang Date: 2010-01-10 03:29:59 +0800 Update copyright. M Makefile.am M bindings/Makefile.am M bindings/python/Makefile.am M bus/Makefile.am M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/option.h M bus/panelproxy.c M bus/panelproxy.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M client/Makefile.am M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/x11/Makefile.am M client/x11/main.c M configure.ac M data/Makefile.am M data/icons/Makefile.am M data/keymaps/Makefile.am M docs/Makefile.am M docs/reference/Makefile.am M gconf/Makefile.am M ibus/Makefile.am M ibus/__init__.py M ibus/_config.py.in M ibus/_gtk.py M ibus/application.py M ibus/attribute.py M ibus/bus.py M ibus/common.py M ibus/component.py M ibus/config.py M ibus/engine.py M ibus/enginedesc.py M ibus/exception.py M ibus/factory.py M ibus/inputcontext.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/iinputcontext.py M ibus/interface/inotifications.py M ibus/interface/ipanel.py M ibus/lang.py M ibus/lookuptable.py M ibus/modifier.py M ibus/notifications.py M ibus/object.py M ibus/observedpath.py M ibus/panel.py M ibus/property.py M ibus/serializable.py M ibus/text.py M ibus/utility.py M m4/Makefile.am M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/Makefile.am M setup/enginecombobox.py M setup/enginetreeview.py M setup/ibus-setup.in M setup/icon.py M setup/keyboardshortcut.py M setup/main.py M src/Makefile.am M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigprivate.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeysyms-update.pl M src/ibuskeysyms.h M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibusmainloop.c M src/ibusmainloop.h M src/ibusmessage.c M src/ibusmessage.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspendingcall.c M src/ibuspendingcall.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusserver.c M src/ibusserver.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusversion.h.in M src/ibusxml.c M src/ibusxml.h M ui/Makefile.am M ui/gtk/Makefile.am M ui/gtk/candidatepanel.py M ui/gtk/engineabout.py M ui/gtk/handle.py M ui/gtk/ibus-ui-gtk.in M ui/gtk/icon.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/menu.py M ui/gtk/notifications.py M ui/gtk/panel.py M ui/gtk/propitem.py M ui/gtk/toolitem.py M util/IMdkit/Makefile.am M util/Makefile.am commit 344ed80466ddd0be3735bdcc5877cf703efb89c2 Author: Peng Huang Date: 2010-01-09 18:04:14 +0800 Adjust pad to avoid break ABI M src/ibusconfigservice.h commit d61d13cbc8ae7fba461cfde1bc7e256bf9c96c7f Author: Daiki Ueno Date: 2010-01-07 18:06:48 +0900 Add IBusConfigService#unset(). Add a new method unset() to IBusConfigService, which removes existing entry to a configuration option. This also adds ibus.Config.unset() to the Python API and ibus_config_unset() to the C API. M gconf/config.c M ibus/config.py M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigservice.c M src/ibusconfigservice.h commit 515fcdb8e57d493ea06ac97111165d5b607a9090 Author: Peng Huang Date: 2010-01-09 17:36:14 +0800 Do not store arguments in global vars. M client/x11/main.c commit 6510918a09d502f9449288cc70fb20d892890396 Author: Peng Huang Date: 2010-01-09 17:12:56 +0800 Fix problems in XIM server. M client/x11/main.c commit f5519ff8f096e470780e70bfe6fcd5d24ecc2d0c Author: Peng Huang Date: 2010-01-07 14:39:18 +0800 Add ibus_input_context_property_activate by Yusuke M bus/inputcontext.c M src/ibusinputcontext.h commit 363e7f76183473943199575db128deaa12936a20 Author: Peng Huang Date: 2010-01-07 13:02:44 +0800 Only install signal handler for NORMAL, RADIO and TOGGLE M ui/gtk/menu.py commit ab1267e1f2b3c578e513423d8370a120ed609521 Author: Peng Huang Date: 2010-01-07 12:51:00 +0800 Fix a typo. M ui/gtk/menu.py commit 3bd1ea69cb0eb6fc730c2a0aebad05d483e4df26 Author: Peng Huang Date: 2010-01-07 12:25:04 +0800 Fix PROP_MENU problem. Patch from Fujiwara-san M ui/gtk/menu.py commit b501b31efda5f925d40ae04f102b5e006e0fdecf Author: Peng Huang Date: 2010-01-05 15:50:23 +0800 Add ibus_engine_delete_surrounding_text in ibusengine.h M src/ibusengine.h commit 71643e6f699ac4e60f41bd8e1739b4dea90ccd86 Author: Peng Huang Date: 2010-01-05 14:06:32 +0800 Use 5 scounds as default dbus reply timeout M bus/main.c commit 066d8ae1246002d051c0015ed2b46478c3a9eeed Author: Peng Huang Date: 2010-01-01 20:54:22 +0800 Do not update lookup table in recreate_ui M ui/gtk/candidatepanel.py commit c637c6f4bcc9df92571f26580a225e23d0ab27ba Author: Peng Huang Date: 2010-01-01 20:53:36 +0800 Refine code of update_lookup_table M ui/gtk/candidatepanel.py commit fd001d559a7af08ac1da54daad6c3da48d90e86e Author: Peng Huang Date: 2010-01-01 20:47:59 +0800 Remove gproperties from CandidatePanel M ui/gtk/candidatepanel.py commit 1b0f7f2093990ab829b826a4ab592856bac4770f Author: Peng Huang Date: 2010-01-01 19:28:27 +0800 Refine some code M ibus/lookuptable.py commit 15bc382dd95e7bb4cee52b45022f5fb89c652d1f Author: Peng Huang Date: 2010-01-01 19:25:54 +0800 Use ibus.ORIENTATION_* in panel.py M ui/gtk/panel.py commit 59106caf2ce397ab8f42278336a283eddfb3fcf7 Author: Peng Huang Date: 2010-01-01 18:58:40 +0800 Remove some unused code. M ui/gtk/candidatepanel.py commit acdc9fbefb6435678587674a5a0c83c227875447 Author: Peng Huang Date: 2010-01-01 16:46:05 +0800 Rename system_orientation to orientation, and use current_orientation M ui/gtk/candidatepanel.py M ui/gtk/panel.py commit f094435f25e900d66f8a7ea6dea401eef5064bad Author: Peng Huang Date: 2010-01-01 16:39:17 +0800 Use ibus.ORENTATION_* M ui/gtk/candidatepanel.py commit 6814942030df916a425838d6d8169b2781dbca18 Author: Daiki Ueno Date: 2010-01-01 13:22:58 +0900 Apply CandidatePanel orientation change request from IME. This version also saves the system orientation setting for a later IME switch. M ui/gtk/candidatepanel.py M ui/gtk/panel.py commit d8273edce75cf5a0b37b444efceef0ea5ac932ef Author: Peng Huang Date: 2010-01-01 16:17:09 +0800 Fix bug in ibus_engine_update_lookup_table_fast. M src/ibusengine.c commit 0531502772192aa442f2fd3fe2057797970bc197 Author: Peng Huang Date: 2010-01-01 16:16:37 +0800 Add getter and setter methods of orientation. M src/ibuslookuptable.c M src/ibuslookuptable.h commit 4c97ef4ee02866c5b2fe44e5a5b15bd85cb9be97 Author: Daiki Ueno Date: 2009-12-31 15:04:51 +0900 Merge double-defined im_ibus_la_LIBADD. M client/gtk2/Makefile.am commit 85ec75bba808580c6dd86f9a335eb7d910760d8c Author: Daiki Ueno Date: 2009-12-31 15:03:16 +0900 Set CFLAGS/LDADD for test-matchrule properly. M bus/Makefile.am commit 205d07ca2928e798ad303daa59a0481674424eb8 Author: Peng Huang Date: 2009-12-31 07:03:25 +0800 Fix typo. M client/x11/main.c commit 1277dca5b68853712026b837c3ce257cd8f96861 Author: Peng Huang Date: 2009-12-30 10:19:51 +0800 Currect use of autotools: Use *_LIBADD and *_LDADD to replace some *_LDFLAGS. M bus/Makefile.am M client/gtk2/Makefile.am M client/x11/Makefile.am M gconf/Makefile.am M src/Makefile.am commit 84229373ed5ac6dbb132f6bd83260b6378437530 Author: Peng Huang Date: 2009-12-30 10:06:09 +0800 Fix _FORTIFY_SOURCE warnings, from galtgendo M client/x11/main.c commit 89ff52ef5492bb1b767faf3c9eaac49913285322 Author: Peng Huang Date: 2009-12-27 18:34:07 +0800 Fix link errors in Ubuntu M bus/Makefile.am M client/x11/Makefile.am M gconf/Makefile.am M src/Makefile.am commit 3b140a91098560f569fe62b89895a9d5850a6845 Author: Peng Huang Date: 2009-12-27 09:53:27 +0800 Fix rpmlint warnings in spec file. M ibus.spec.in commit 7182448378b644bfe12e778c71333975055322bd Author: Peng Huang Date: 2009-12-25 08:33:11 +0800 Catch KeyboardInterrupt Exception M ui/gtk/main.py commit b0f395d7039bf29d87437b2d272ad67e486a3182 Author: Peng Huang Date: 2009-12-25 08:24:30 +0800 Change pinyin.xml to gtkpanel.xml M ui/gtk/gtkpanel.xml.in.in commit f167b19216dd3845674155169ecc2eeaa41c0e75 Author: Peng Huang Date: 2009-12-24 17:19:51 +0800 Process engine method call correctly. M src/ibusengine.c M src/ibusinputcontext.c commit 252e0e4217cf81903bb121bb0af804d810c43cf4 Author: Peng Huang Date: 2009-12-24 16:49:17 +0800 Fix coding style. M ibus/enginedesc.py commit d00778b6842e24da83f590130bec5c55e97147ab Author: Peng Huang Date: 2009-12-24 15:02:31 +0800 Fix some typos. M setup/enginecombobox.py M setup/enginetreeview.py M setup/main.py commit 043f6fe0b41e5c29d5e6bd7760ff2e301c00bf73 Author: Peng Huang Date: 2009-12-24 14:18:20 +0800 Sort engines in setup ui. M ibus/enginedesc.py M setup/enginecombobox.py M src/ibusenginedesc.c commit ae0a66775f2ce27c4355739167aca1f4e3b9faa1 Author: Peng Huang Date: 2009-12-24 14:05:14 +0800 Use 2 xpad in engine combobox M setup/enginecombobox.py commit 94c9b7a07a9f6eab6c02376d614768391e008943 Author: Peng Huang Date: 2009-12-24 13:59:27 +0800 Fix coding style and remove useless line. M setup/enginecombobox.py commit 1c02e76a0f5cca127fd34cad63aecce7b686e8c2 Author: Peng Huang Date: 2009-12-24 10:42:23 +0800 Make some buttons disabled, when they are not useful. M setup/enginecombobox.py M setup/enginetreeview.py M setup/main.py M setup/setup.ui commit d789a01a2c6cb13e088b1bf7ea04a530c42cd070 Author: Peng Huang Date: 2009-12-24 10:41:19 +0800 Update UI. M setup/setup.ui commit 4ec2a988a6546a73b92c8c6eed7985e19d550ce2 Author: Peng Huang Date: 2009-12-23 15:55:49 +0800 Do not init gthread if undefine G_THREADS_ENABLED. M bus/main.c commit f580326150d486f9dd86961d1bcb80daa4612519 Author: Peng Huang Date: 2009-12-23 15:39:17 +0800 Poll engine changes in different thread. M bus/Makefile.am M bus/ibusimpl.c M bus/main.c M bus/registry.c M bus/registry.h M configure.ac commit d3f11c5b489b63d26a8cc9c6c4fb6dba9881e53a Author: Peng Huang Date: 2009-12-22 17:56:31 +0800 ibus will poll changes of engines, and show notification to user. M bus/ibusimpl.c M bus/main.c M bus/registry.c M bus/registry.h M ibus/bus.py M ibus/interface/iibus.py M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M ui/gtk/main.py commit ea664de646e5d1d24ecb4ba465279861f77bdafd Author: Peng Huang Date: 2009-12-20 18:40:42 +0800 Remove space before and after = M xinput-ibus.in commit 69b0425825bce479cfb9923934f24c2e382231c8 Author: Peng Huang Date: 2009-12-20 18:37:21 +0800 Fix build rpm errors. M configure.ac D xinput-ibus A xinput-ibus.in commit 8b0d36cf4202b79d965095817c04354e069e25eb Author: Peng Huang Date: 2009-12-20 18:16:15 +0800 Fix build errors if ./configure is not executed in top src dir. M bus/Makefile.am M client/gtk2/Makefile.am M client/x11/Makefile.am M docs/reference/ibus/Makefile.am M gconf/Makefile.am commit d0d97b819cd64e4693bdac1124e15a2cc2c379f5 Author: Peng Huang Date: 2009-12-17 07:35:09 +0800 Use bold style to display current engine in engine menu. M ui/gtk/panel.py commit 5cfbb5077f51397d30b271946f81bb05dbf3f067 Author: Peng Huang Date: 2009-12-16 20:35:17 +0800 Do not use sub menu to list input methods. M ui/gtk/panel.py commit d23e87402abe96659cd402cdfd8db9417a4c1a40 Author: Peng Huang Date: 2009-12-16 07:37:58 +0800 Update es.po from daniel cabrera M po/es.po commit f869a58793c4b760173e5423e60ee1982b9d893b Author: Peng Huang Date: 2009-12-15 17:16:39 +0800 Fix a problem in document M src/ibusmessage.h commit fd395556c82b954d05029457f85e4640b65326d6 Author: Peng Huang Date: 2009-12-14 17:16:06 +0800 Remove comment M data/keymaps/kr commit f47f619901639955c6e084138925282e90f912d6 Author: Peng Huang Date: 2009-12-14 17:13:37 +0800 Define hangul and hanja key M data/keymaps/kr commit f20212a9c7444aa5835f542620352d04f44beaac Merge: 7645a2f abac005 Author: Peng Huang Date: 2009-12-14 16:41:37 +0800 Merge remote branch 'definite/master' commit abac005cc73683ecf638b33fb30ebaec4e6d82d1 Author: Ding-Yi Chen Date: 2009-12-14 18:11:03 +1000 Modify zh_TW.po APIDOC: new: ibusenumtypes,ibuspanelservice ibusshare, ibusservice, ibus-type, ibus-version, ibusxml revised: ibusconfig, ibusmessage, ibusoproxy, ibustext M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus-docs.sgml M docs/reference/ibus/ibus.types M po/zh_TW.po M src/ibusconfig.c M src/ibusconfig.h M src/ibusenumtypes.h.template M src/ibusmessage.h M src/ibuspanelservice.h M src/ibusproxy.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.h M src/ibustext.h M src/ibusversion.h.in M src/ibusxml.h commit 7645a2f493a84fd01c4e3ca394a0b4cb0272ffd9 Author: Peng Huang Date: 2009-12-14 16:00:04 +0800 Fix some problems in document M src/ibuslookuptable.h M src/ibuspanelservice.h commit 34609d92c063f55c94cf9ac59af13825a97b5b5b Author: Peng Huang Date: 2009-12-14 15:14:51 +0800 Move specification from doc to docs D doc/specification A docs/specification commit 49524f3ee29c0560656ada984e49b0a9643c75d7 Author: Peng Huang Date: 2009-12-13 13:12:16 +0800 Add a script for get keycode in Xorg A data/keymaps/keycode.py commit e1313c472472757131bdcf3f00ccafbd5f7b2f4f Author: Peng Huang Date: 2009-12-13 12:56:06 +0800 Add kr keymap M data/keymaps/Makefile.am A data/keymaps/kr commit 3e84effb5930c75d2fe566cd8e6ff9f8d5933244 Author: Peng Huang Date: 2009-12-13 09:59:00 +0800 Remove qt immodule source code D client/qt3/ibus-client.cpp D client/qt3/ibus-client.h D client/qt3/ibus-input-context.cpp D client/qt3/ibus-input-context.h D client/qt3/im-ibus-qt.cpp D client/qt4/.gitignore D client/qt4/Makefile.am D client/qt4/ibus-client.cpp D client/qt4/ibus-client.h D client/qt4/ibus-input-context.cpp D client/qt4/ibus-input-context.h D client/qt4/ibus.pro D client/qt4/im-ibus-qt.cpp M configure.ac M ibus.spec.in commit 1259c054ab4e1bd37b348d43325738de6b8bbdf2 Author: Peng Huang Date: 2009-12-12 14:30:56 +0800 Add ibus.pot into gitignore M po/.gitignore commit 7f7a29a70f3bff0a968fdefc94903e8a58418cf9 Author: Peng Huang Date: 2009-12-12 14:29:21 +0800 Add property orientation of IBusLookupTable. M ibus/common.py M ibus/lookuptable.py M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibustypes.h commit 2effc2aa01d1dd99f736075c12b5de15d070e8bf Author: Peng Huang Date: 2009-12-12 13:34:57 +0800 Use g_assert to replace some g_return_ M src/ibusattribute.c M src/ibusproperty.c commit 233d33874f8105a9656b235d6e3b07b76fcf7803 Author: Peng Huang Date: 2009-12-12 13:25:55 +0800 Use g_assert to replace some g_return_if_fail M src/ibuslookuptable.c commit 485502020a18870fb83717d3ff45c499fadf2a57 Author: Peng Huang Date: 2009-12-12 13:23:49 +0800 Add setter and getter for IBusLookupTable->round M src/ibuslookuptable.c M src/ibuslookuptable.h commit 52f4a8ee785ccd6a1e2e3eec72305d9b6f50af67 Author: Peng Huang Date: 2009-12-11 22:35:33 +0800 Update es.po from daniel cabrera M po/es.po commit 07f37d27a7f5a5d93f9d690e123592ff9fa37d90 Author: Peng Huang Date: 2009-12-11 20:47:15 +0800 Update as.po from Amitakhya Phukan M po/as.po commit 8f3bb8e840941448c03dbde0c7fa99f3b6f5be4a Author: Peng Huang Date: 2009-12-11 15:46:56 +0800 Use gettext replace locale M ui/gtk/Makefile.am M ui/gtk/ibus-ui-gtk.in M ui/gtk/main.py commit 1e150708c942de094ca7d1582546b36ddcc17d05 Author: Peng Huang Date: 2009-12-11 15:29:59 +0800 Add ibus_lookup_table_get_number_of_candidates M src/ibuslookuptable.c M src/ibuslookuptable.h commit 5c41d02dfa9b17457d0dc77ab31785cf0441d3bd Author: Peng Huang Date: 2009-12-11 15:29:45 +0800 Fix build error in bsd M bus/main.c commit 4a950b9e63775beaa12f24d1cd3c43f8bbbf7f3b Author: Peng Huang Date: 2009-12-11 15:11:35 +0800 Fix typo. M ibus/_config.py.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 6c2fb8c081d936d1bc2ceb26f2111fd7ec7b0de9 Author: Peng Huang Date: 2009-12-10 20:15:16 +0800 Update kn.po from Shankar Prasad Venkateshbhat M po/kn.po commit c27745189ba77a29be1cfff5a6ef848551c8d3d9 Author: Peng Huang Date: 2009-12-10 16:31:18 +0800 Change file mode. M debian/rules commit 36a7755099d3888105b1a156b82e3c40e66410fc Author: Peng Huang Date: 2009-12-10 16:30:36 +0800 Use correct GType to replace gint M src/ibusconfigprivate.h commit ed0623375526ca560b93f273aeaae592c78054c8 Author: Peng Huang Date: 2009-12-10 16:18:05 +0800 Remove ibus.pot file. D po/ibus.pot commit 7b1954516aa7c048ef7914d3516b75b72810bbf2 Author: Peng Huang Date: 2009-12-10 16:16:21 +0800 Touch ChangeLog in autogen.sh. M autogen.sh commit 4a6b0fc71454c495be7480fb8016b5965d66fa35 Author: Peng Huang Date: 2009-12-10 15:24:38 +0800 Update te.po from Krishnababu Krothapalli M po/te.po commit f1053036156245887fd9e031d9d5427dd146ddb3 Author: Peng Huang Date: 2009-12-10 07:54:49 +0800 Update de.po from Hedda Peters M po/de.po commit f5be96a8ad885d38598ea95dd46d8e4f6b9c3b04 Author: Peng Huang Date: 2009-12-10 07:37:52 +0800 Update it.po from Francesco Valente M po/it.po commit e400f03d84a17896d2ecb98fc6b88399ff808cff Author: Peng Huang Date: 2009-12-09 21:52:44 +0800 Update mr.po from sandeep shedmake M po/mr.po commit 80de02f3825df95f2e85481a66531c8ca4f4b21b Author: Peng Huang Date: 2009-12-09 21:51:00 +0800 Fix build error for rpm M src/Makefile.am commit cae9cf027e0b52411c3e27304a30b5826f7f523d Author: Peng Huang Date: 2009-12-09 21:47:09 +0800 Fix some warnings in ibus document M src/ibusinputcontext.h M src/ibuspanelservice.h commit 87523477c2ad6375ce6cb898fa74eb7f6592ace6 Author: Peng Huang Date: 2009-12-09 21:33:07 +0800 Add document about IBUS_CAP_SURROUNDING_TEXT M src/ibustypes.h commit 71286a807c8d0d2d9cd2808461ae332edbf9f8f0 Author: Peng Huang Date: 2009-12-09 21:33:00 +0800 Fix build warning M src/test-bus.c commit a872035ff00d05309b6b1545f7f62c521f53cabc Author: Peng Huang Date: 2009-12-09 19:29:08 +0800 Update ta.po from Felix M po/ta.po commit 953551a3bd5ae8e9b6b83fcd06799944ff231cb2 Author: Peng Huang Date: 2009-12-09 13:18:17 +0800 Update pa.po from Jaswinder Singh M po/pa.po commit 057b75f8160e3a2ff840ea21fce0084758681850 Author: Peng Huang Date: 2009-12-09 06:44:46 +0800 Update vi.po Lê Quốc Tuấn M po/vi.po commit 83129254fac22bdb62037d34eea7386a5b5ccd33 Author: Peng Huang Date: 2009-12-08 17:29:14 +0800 Implemented some methods of IBusBus and IBusInputContext from yusukes@chromium.org M src/Makefile.am M src/ibusbus.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/test-bus.c commit 129c6d6d5c96a1c3beff1a3c1920a262186658b7 Author: Peng Huang Date: 2009-12-08 16:11:57 +0800 Update hi.po from Rajesh Ranjan M po/hi.po commit 31ab5a5fea9ab3bcf9801408ea48aa1a91b739ed Author: Peng Huang Date: 2009-12-08 11:16:40 +0800 Update bn_IN.po from Runa Bhattacharjee M po/bn_IN.po commit 80e2e6b89c00837437d0c19b9b6481cda53d4d5a Author: Peng Huang Date: 2009-12-07 19:07:55 +0800 Update gu.po from Sweta Kothari M po/gu.po commit 08c2118064163dcacee738c903fb12df5a246469 Author: Peng Huang Date: 2009-12-07 06:51:42 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit c97856b3d6368f7029c9f1bd578af087dbaf99d2 Author: Peng Huang Date: 2009-12-07 06:51:23 +0800 Update es.po from Domingo Becker M po/es.po commit cd492ae8be91a7dbb9e9d62ee10d2fe564545a82 Author: Peng Huang Date: 2009-12-07 06:49:40 +0800 Fix the typo. M data/ibus.schemas.in commit 8b2fce304a55cb07da51bb0198abfb90fc010daa Author: Peng Huang Date: 2009-12-06 08:11:57 +0800 Avoid calling ibus_message_is_signal in loop. M bus/engineproxy.c commit 1bafbd10fc15ba3a53a317a9899b139145ce29b4 Author: Peng Huang Date: 2009-12-06 08:00:59 +0800 Refine code, and remove goto statements. M src/ibusengine.c commit ce4873dd2c9349e0fa31efdbf3c113237fa21393 Author: Peng Huang Date: 2009-12-05 19:42:46 +0800 Do not use deprecated Tooltips M po/ibus.pot M po/zh_CN.po M ui/gtk/candidatepanel.py commit 918d0b4dc706c230f42909a2410f1d646d57f3ef Author: Peng Huang Date: 2009-12-05 19:31:31 +0800 Fix a typo. M src/ibusinputcontext.c commit 837692d4a6d09c0142a5eedd20faf8fa7bc1f1a4 Author: Peng Huang Date: 2009-12-05 19:22:22 +0800 Change lib version info back. M configure.ac commit e643c74f5df52c7b51e3ba4f01801c78f4b038fc Author: Peng Huang Date: 2009-12-05 15:44:34 +0800 Use offset of member function in IBusPanelServiceClass. M src/ibuspanelservice.c commit 01d50beafcbb2cf404c128c8478a1dbbc670f6ca Author: Peng Huang Date: 2009-12-05 15:16:02 +0800 Add panel class from Satoru M src/Makefile.am A src/ibuspanelservice.c A src/ibuspanelservice.h commit 8c29821f9fea969f1979406221ad42d43baa4b2d Author: Peng Huang Date: 2009-12-05 18:30:44 +0800 Remove some goto statement M src/ibusconnection.c M src/ibusengine.c M src/ibusinputcontext.c M src/ibusxml.c commit 348b8c98eb7e509549c7d012bd221f6b01d5f1af Author: Peng Huang Date: 2009-12-05 17:17:33 +0800 Adjust the condition test order to get better performance M src/ibusengine.c M src/ibusinputcontext.c commit b3d54e82d4bca1420cbcae20dc8a15844655b0c0 Author: Peng Huang Date: 2009-12-05 17:08:03 +0800 Avoid using ibus_message_is in loop to get better performance. M src/ibusengine.c M src/ibusinputcontext.c commit 51a6ff5d19e1639592e2b41fdbb0da749502e660 Author: Peng Huang Date: 2009-12-05 16:55:31 +0800 Fix typo M src/ibusmessage.h commit b57aac8eb2157a3720c36f9a2de81409c6d234ca Author: Peng Huang Date: 2009-12-05 12:21:28 +0800 Add age of lib version M configure.ac commit 89521b240ca3ff519488fbcb0c4f04c7d3ea83c1 Merge: 7a9f000 c57f7dd Author: Peng Huang Date: 2009-12-05 12:15:00 +0800 Merge remote branch 'hindlemail/master' commit c57f7dd9dc06512ac3ab1a6792afe1e0c294dca2 Author: tom hindle Date: 2009-12-04 18:38:48 -0700 Added python client code for CurrentInputContext method M ibus/bus.py M ibus/interface/iibus.py commit 33a07df73f4cdf48cd4b979c4ef2333554466bd4 Author: tom hindle Date: 2009-12-04 18:38:41 -0700 Added c client side code for CurrentInputContext method M src/ibusbus.c M src/ibusbus.h commit 1c10d9fca8759495c7d6b6e1b2630a6fdee3d6ce Author: tom hindle Date: 2009-12-04 18:38:20 -0700 Added CurrentInputContext method M bus/ibusimpl.c commit 7a9f000aa6b4d8677179a17b1a61ccc94d9d1808 Author: Peng Huang Date: 2009-12-05 08:42:28 +0800 Update fr.po from Julroy67 M po/fr.po commit 6ff956dc491cec33d0059ad16f93671a6c0c6222 Author: Peng Huang Date: 2009-12-04 23:05:19 +0800 Refine coding style. M src/ibusengine.c commit 97ff497f1a40f2d7b3d63a0fc8c87019b90ae6b8 Author: Peng Huang Date: 2009-12-04 15:52:57 +0800 Move panel into the screen if the screen become small. M ui/gtk/languagebar.py M ui/gtk/panel.py commit d2792de2f01bae5bf380dba02636d73cc967f3e1 Author: Peng Huang Date: 2009-12-04 11:27:39 +0800 Fix problem with forward key event M client/x11/main.c commit 0dbc1252cd6e723cad776a5d76861c08d4ba2133 Author: Peng Huang Date: 2009-12-04 11:24:24 +0800 Add it.po from Milo Casagrande M AUTHORS M po/LINGUAS A po/it.po commit bbd1d1d8573ac14bc73b4a0df639f71aae066bae Author: Peng Huang Date: 2009-12-04 10:28:21 +0800 Add delete surrounding text feature. Fix forward key event. Developed by Doug Rintoul Thanks for Doug Rintoul M bus/engineproxy.c M bus/inputcontext.c M client/gtk2/ibusimcontext.c M client/x11/main.c M src/ibusengine.c M src/ibusinputcontext.c M src/ibusmarshalers.list M src/ibustypes.h commit 80946b75ffa111de77d6c83d70373296bbce77f0 Author: Peng Huang Date: 2009-11-30 10:34:43 +0800 Remove tooltip for AuxString M ui/gtk/candidatepanel.py commit 0cee090020bb71156a11d8f8f85514de30ea9734 Author: Peng Huang Date: 2009-11-29 22:51:51 +0800 Return correct address in _ibus_get_address M bus/ibusimpl.c commit 4294a7a6351cb0b3ca7ce97d14da68ebda93f9fb Author: Peng Huang Date: 2009-11-29 22:43:31 +0800 Remove unused code. M src/ibusbus.c commit 819199427fecd2c03557b36404d3fe63ce2ad8d5 Author: Peng Huang Date: 2009-11-28 15:45:50 +0800 Update translate msgs M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 89a1e54e0761d7d4d0bb5c3ac3dd6c6893ab2c68 Author: Peng Huang Date: 2009-11-28 15:38:41 +0800 Remember panel position M data/ibus.schemas.in M setup/main.py M setup/setup.ui M ui/gtk/languagebar.py M ui/gtk/panel.py commit 234e7f3768e8f4e8252bcf473fc199af971f0b9d Author: Peng Huang Date: 2009-11-27 16:45:58 +0800 Update ja.po by Fujiwarat M po/ja.po commit a1508b9d78311e9cf23bcdf07b00441186030864 Author: Peng Huang Date: 2009-11-25 12:49:24 +0800 Do not set engine if focus_ic is None M ui/gtk/panel.py commit 4d66a8cb4c8b2462cb9621401454d7b7369b758c Author: Peng Huang Date: 2009-11-24 11:10:57 +0800 Adjust some code order. M src/ibusconnection.c commit a3098789ff716ccc0c4b6c6211492ff586066158 Author: Peng Huang Date: 2009-11-24 11:06:06 +0800 Do not crash when bus is disconnected. M src/ibusbus.c commit cfcc63c927502501b069ca8a0556c636e61a5598 Author: Peng Huang Date: 2009-11-24 10:56:03 +0800 Do not abort when connection is closed. M src/ibusconnection.c commit d8541c58f5564f7f766ade13f6366de3017707d6 Author: Peng Huang Date: 2009-11-16 15:18:40 +1000 Update te.po from Krishnababu Krothapalli M po/te.po commit d8c129b99a8d459765a120c30b79906610aa21c9 Author: Peng Huang Date: 2009-11-16 15:17:31 +1000 Update hi.po from Rajesh Ranjan M po/hi.po commit c9584c322f56cff832050d3c1ff04839ec1dfbdd Author: Peng Huang Date: 2009-11-16 15:16:27 +1000 Update or.po from Manoj Giri M po/or.po commit d53ceb0123e158849f57a3c181853a2387877665 Author: Peng Huang Date: 2009-11-16 15:14:57 +1000 Update ta.po by Felix M po/ta.po commit 2fcf990fd447a9cb9a7a1a5b49d1365f8e8142bb Author: Peng Huang Date: 2009-11-12 18:17:29 +1000 Fix compile error. M src/ibusbus.c commit 5b358d8f1ddf425278706171d321b5dc2a5f8e94 Author: Peng Huang Date: 2009-11-12 14:31:09 +1000 Check CREATED event M src/ibusbus.c commit 0058d0f6a91b78845b3a9831b74a7fd2050a5ccf Merge: 4b2c6ed d494b47 Author: Peng Huang Date: 2009-11-12 08:38:08 +1000 Merge remote branch 'XueWei/master' commit d494b47eea331b8bc06c03dd06be24adb72149ce Author: william Date: 2009-11-12 00:08:26 +0800 Fixed on Solaris cannot re-connect after ibus-daemon restart. M src/ibusbus.c commit 4b2c6ed7c52e24f019e9ea6167c0d570be781c65 Author: Peng Huang Date: 2009-10-25 07:44:01 +0800 Update es.po from Domingo Becker M po/es.po commit 29a2503e4b47f41e4596fbc2124d425f789ca368 Author: Peng Huang Date: 2009-10-24 11:23:29 +0800 Fix problem in POTFILES.in M po/POTFILES.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 1da3d970c145e4b10059346754851afcacb5d10d Author: Peng Huang Date: 2009-10-24 11:16:29 +0800 Add mkinstalldirs in .gitingore M .gitignore commit 67939f0b1d678bcbbeaf510b0f8d368f438b11b9 Author: Peng Huang Date: 2009-10-24 07:30:07 +0800 Update pl.po from Piotr DrÄ…g M po/pl.po commit 2a2566b68d671469e7291306185c9ef1180ff139 Author: Peng Huang Date: 2009-10-23 15:58:14 +0800 Modify copying information M AUTHORS M README M client/qt4/ibus.pro M configure.ac M doc/specification M ibus/_config.py.in M po/Makevars M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/ibus-setup.in M src/ibuskeysyms-update.pl M src/ibusversion.h.in M ui/gtk/ibus-ui-gtk.in commit 8b2b2613e13258d7535bf09e818aebe9361ba52b Author: Peng Huang Date: 2009-10-23 14:42:16 +0800 Add Copying for Red Hat M Makefile.am M bindings/Makefile.am M bindings/python/Makefile.am M bus/Makefile.am M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/option.h M bus/panelproxy.c M bus/panelproxy.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M client/Makefile.am M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/qt4/Makefile.am M client/qt4/ibus-client.cpp M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h M client/qt4/im-ibus-qt.cpp M client/x11/Makefile.am M client/x11/gdk-private.c M client/x11/gdk-private.h M client/x11/main.c M data/Makefile.am M data/icons/Makefile.am M data/keymaps/Makefile.am M docs/Makefile.am M docs/reference/Makefile.am M gconf/Makefile.am M ibus/Makefile.am M ibus/__init__.py M ibus/_config.py.in M ibus/_gtk.py M ibus/application.py M ibus/attribute.py M ibus/bus.py M ibus/common.py M ibus/component.py M ibus/config.py M ibus/engine.py M ibus/enginedesc.py M ibus/exception.py M ibus/factory.py M ibus/inputcontext.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/iinputcontext.py M ibus/interface/inotifications.py M ibus/interface/ipanel.py M ibus/lang.py M ibus/lookuptable.py M ibus/modifier.py M ibus/notifications.py M ibus/object.py M ibus/observedpath.py M ibus/panel.py M ibus/property.py M ibus/serializable.py M ibus/text.py M ibus/utility.py M m4/Makefile.am M setup/Makefile.am M setup/enginecombobox.py M setup/enginetreeview.py M setup/icon.py M setup/keyboardshortcut.py M setup/main.py M src/Makefile.am M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigprivate.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeysyms.h M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibusmainloop.c M src/ibusmainloop.h M src/ibusmessage.c M src/ibusmessage.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspendingcall.c M src/ibuspendingcall.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusserver.c M src/ibusserver.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusxml.c M src/ibusxml.h M ui/Makefile.am M ui/gtk/Makefile.am M ui/gtk/candidatepanel.py M ui/gtk/engineabout.py M ui/gtk/handle.py M ui/gtk/icon.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/menu.py M ui/gtk/notifications.py M ui/gtk/panel.py M ui/gtk/propitem.py M ui/gtk/toolitem.py M util/IMdkit/Makefile.am M util/Makefile.am commit 95493e7c2a24898d5eaafd9c5cb2177afb2fec29 Author: Peng Huang Date: 2009-10-23 14:17:30 +0800 Change file header M Makefile.am M bindings/Makefile.am M bindings/python/Makefile.am M bus/Makefile.am M bus/connection.c M bus/connection.h M bus/dbusimpl.c M bus/dbusimpl.h M bus/engineproxy.c M bus/engineproxy.h M bus/factoryproxy.c M bus/factoryproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M bus/inputcontext.h M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/option.h M bus/panelproxy.c M bus/panelproxy.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M client/Makefile.am M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/qt4/Makefile.am M client/qt4/ibus-client.cpp M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h M client/qt4/im-ibus-qt.cpp M client/x11/Makefile.am M client/x11/gdk-private.c M client/x11/gdk-private.h M client/x11/main.c M data/Makefile.am M data/icons/Makefile.am M data/keymaps/Makefile.am M docs/Makefile.am M docs/reference/Makefile.am M gconf/Makefile.am M ibus/Makefile.am M ibus/__init__.py M ibus/_config.py.in M ibus/_gtk.py M ibus/application.py M ibus/attribute.py M ibus/bus.py M ibus/common.py M ibus/component.py M ibus/config.py M ibus/engine.py M ibus/enginedesc.py M ibus/exception.py M ibus/factory.py M ibus/inputcontext.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/iinputcontext.py M ibus/interface/inotifications.py M ibus/interface/ipanel.py M ibus/lang.py M ibus/lookuptable.py M ibus/modifier.py M ibus/notifications.py M ibus/object.py M ibus/observedpath.py M ibus/panel.py M ibus/property.py M ibus/serializable.py M ibus/text.py M ibus/utility.py M m4/Makefile.am M po/POTFILES.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/Makefile.am M setup/enginecombobox.py M setup/enginetreeview.py M setup/icon.py M setup/keyboardshortcut.py M setup/main.py M src/Makefile.am M src/ibus.h M src/ibusattribute.c M src/ibusattribute.h M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigprivate.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusdebug.h M src/ibusengine.c M src/ibusengine.h M src/ibusenginedesc.c M src/ibusenginedesc.h M src/ibuserror.c M src/ibuserror.h M src/ibusfactory.c M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusinternal.h M src/ibuskeymap.c M src/ibuskeymap.h M src/ibuskeysyms.h M src/ibuslookuptable.c M src/ibuslookuptable.h M src/ibusmainloop.c M src/ibusmainloop.h M src/ibusmessage.c M src/ibusmessage.h M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.c M src/ibusobservedpath.h M src/ibuspendingcall.c M src/ibuspendingcall.h M src/ibusproperty.c M src/ibusproperty.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusserver.c M src/ibusserver.h M src/ibusservice.c M src/ibusservice.h M src/ibusshare.c M src/ibusshare.h M src/ibustext.c M src/ibustext.h M src/ibustypes.h M src/ibusxml.c M src/ibusxml.h M ui/Makefile.am M ui/gtk/Makefile.am M ui/gtk/candidatepanel.py M ui/gtk/engineabout.py M ui/gtk/handle.py M ui/gtk/icon.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/menu.py M ui/gtk/notifications.py M ui/gtk/panel.py M ui/gtk/propitem.py M ui/gtk/toolitem.py M util/IMdkit/Makefile.am M util/Makefile.am commit 921b29ef089c8cb9fb3fc60b8177ba479e0fb174 Author: Peng Huang Date: 2009-10-20 14:45:28 +0800 Update es.po by Domingo Becker M po/es.po commit 50ad31397479119c02fce6892cd7cb6a6de06531 Author: Peng Huang Date: 2009-10-16 07:58:48 +0800 Change tooltip of shortcut keys. M setup/main.py commit 916f2eb94c56d9f699578a2630b4e20c1b3843fb Author: Peng Huang Date: 2009-10-16 07:22:55 +0800 Update some English strings. M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.ui commit c592ccade047fe82e149399132bd70e7fc05f8f3 Author: Peng Huang Date: 2009-10-15 07:08:23 +0800 Update es.po from daniel cabrera M po/es.po commit dfa70649d00084de5cbb29a1613817d9cb5bbcbc Author: Peng Huang Date: 2009-10-14 14:12:33 +0800 Update ru.po from Alexey Kotlyarov M po/ru.po commit a3a2bc47fb1da462f4df17b9c7bb4c311f832483 Author: Peng Huang Date: 2009-10-14 13:11:38 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/ru.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 3b8770ec863615b67d410abc34e379f0b44de259 Author: Peng Huang Date: 2009-10-14 13:11:21 +0800 Update some descriptions text M data/ibus.schemas.in M setup/setup.ui commit 36c6dc76bd83eb4c2fa7f39f00d486a03aeca9f5 Author: Peng Huang Date: 2009-10-14 10:59:16 +0800 Fix show icon on systray option M setup/main.py commit fe6bb742651bc50bae0c26dd80073d0442bd4042 Author: Peng Huang Date: 2009-10-14 09:32:41 +0800 Update ja.po M po/ja.po commit e3955616b1fb15152478dc99a8b81c6b9b345212 Author: Peng Huang Date: 2009-10-14 09:26:18 +0800 Update fr.po from julroy67 M po/fr.po commit 3de9055a53185309885ede71824677fc78fa3aee Author: Peng Huang Date: 2009-10-13 14:15:57 +0800 Dont need set "" to icon anymore. M src/ibusproperty.c commit 18d497a03d58b694f5713be41dc8cdef705a0326 Author: Peng Huang Date: 2009-10-13 14:11:46 +0800 Do not crash if append NULL string to IBusMessage. M src/ibusenginedesc.c M src/ibusmessage.c commit 563b82f8ea37bbcda78d40701dec667137e3c234 Author: Peng Huang Date: 2009-10-13 10:22:06 +0800 Update some icons. A data/icons/16/ibus-keyboard.png D data/icons/16/ibus-off.png A data/icons/22/ibus-keyboard.png D data/icons/22/ibus-off.png A data/icons/24/ibus-keyboard.png D data/icons/24/ibus-off.png A data/icons/32/ibus-keyboard.png D data/icons/32/ibus-off.png A data/icons/48/ibus-keyboard.png D data/icons/48/ibus-off.png M data/icons/Makefile.am D data/icons/ibus-engine.svg D data/icons/ibus-off.svg D data/icons/ibus-setup.svg D data/icons/ibus.svg A data/icons/scalable/ibus-engine.svg A data/icons/scalable/ibus-keyboard.svg D data/icons/scalable/ibus-off.svg A data/icons/scalable/ibus-setup.svg A data/icons/scalable/ibus.svg M ibus.spec.in M setup/setup.ui M ui/gtk/panel.py commit 9c81b2d7974a135075aa9be4d5dcdb49bc9bbb4f Author: Peng Huang Date: 2009-10-13 10:03:34 +0800 Update some icons. M data/icons/ibus-engine.svg M data/icons/ibus-setup.svg commit e00cf06ca3248478b6b98bc24edea695d3c38e2b Author: Peng Huang Date: 2009-10-13 08:30:29 +0800 Update po files M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 9d6faacab96ec30678556ddc7a8670306855b09d Author: Peng Huang Date: 2009-10-13 08:30:17 +0800 Add ru.po from koterpillar M AUTHORS M po/LINGUAS A po/ru.po commit 289c8fd7480c05eac28cc806099202676f461d55 Author: Peng Huang Date: 2009-10-10 16:06:21 +0800 Use ibus-engine as default icon for engine M setup/enginecombobox.py M setup/enginetreeview.py M ui/gtk/engineabout.py commit ecc591e78defcf65b7ec073c3c2f2d10ff7f10b6 Author: Peng Huang Date: 2009-10-10 16:01:49 +0800 Update ibus-engine.svg M data/icons/ibus-engine.svg commit 4d50b88437ab9f503724f8278c7fc08e2077ee94 Author: Peng Huang Date: 2009-10-10 15:57:49 +0800 Update ibus-setup.svg T data/icons/ibus-setup.svg commit 520ece79238373d87480cd15bafdde2568a44b6e Author: Peng Huang Date: 2009-10-10 13:48:59 +0800 Remove unused code. M setup/main.py commit 7aef3c3efb2653af2ecc93f8350f9c5c95e92ac7 Author: Peng Huang Date: 2009-10-10 13:47:33 +0800 Remove setup.glade M setup/Makefile.am D setup/setup.glade commit 2806c626f47bd15c4cf8168166d66aa9d2f86a61 Author: Peng Huang Date: 2009-10-10 13:44:33 +0800 Use gnome-autogen.sh M autogen.sh M configure.ac M src/Makefile.am commit 9c98bfc23772bd92388c94c23f3ee90c0e4dd82a Author: Peng Huang Date: 2009-10-10 13:37:04 +0800 Update po files. M po/POTFILES.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit 1a6b0f4b13b055571a54daa6c3fd121f534011bf Author: Peng Huang Date: 2009-10-10 11:34:30 +0800 Fix some problems. M setup/main.py M setup/setup.ui commit 5c64d26273fae00360347e9da1efa486396be1f8 Author: Xingshen Luo Date: 2009-10-10 11:29:35 +0800 migrate from libglade to libgtkbuilder M setup/main.py A setup/setup.ui commit c8f1385638e66e7c96fce82988ee1dd7995efde8 Author: Peng Huang Date: 2009-10-10 07:53:47 +0800 Change .ibus to ibus M bus/registry.c commit 0cecc08f0dc547f1431d0e1d4efe2fbb66d1f672 Author: Peng Huang Date: 2009-10-10 07:47:01 +0800 use XDG floder. M bus/registry.c commit 7366591b9673450315efc97d1b5000a2628137ea Author: Peng Huang Date: 2009-10-10 07:23:54 +0800 Move all tmp file to ~/.config/ibus M src/ibusshare.c commit 797248a19b88833fe00a46a0c8c926a15df093c5 Author: Peng Huang Date: 2009-10-09 19:30:10 +0800 Update zh_CN.po M po/zh_CN.po commit 8dd8a11667e1dd5e2c1f821a70fb3c6d99f8c784 Author: Peng Huang Date: 2009-10-09 07:35:00 +0800 Add option to show/hide icon on system tray M data/ibus.schemas.in M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ko.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/main.py M setup/setup.glade M ui/gtk/panel.py commit ee8685e8b7c71a7b3fc3551e0590d9d0835e64a1 Author: Peng Huang Date: 2009-10-04 08:03:02 +0800 Put all files in $(HOME)/.ibus M bus/registry.c M src/ibusshare.c commit 55971a86028f3d3856cac8508db9b88a9502dc1f Author: Peng Huang Date: 2009-10-04 07:19:15 +0800 Update pl.po from Piotr DrÄ…g M po/pl.po commit 9df6be63e0aa76867ce81b5e383d23b737167709 Author: Peng Huang Date: 2009-10-03 10:12:46 +0800 Use 2 second as default timeout M bus/main.c commit 8d630d2c1725264056adf0a07683cff5035536ad Author: Peng Huang Date: 2009-10-03 10:11:59 +0800 Add --timeout option. M bus/Makefile.am M bus/engineproxy.c M bus/factoryproxy.c M bus/ibusimpl.c M bus/main.c A bus/option.h M bus/registry.c commit 90bd8060ecb83a86dccc8662389736e12563cbe0 Author: Peng Huang Date: 2009-10-03 06:54:44 +0800 Build rpm in subfolder M .gitignore M Makefile.am commit ad718c65b5088308036baf50079ef8c753f3abdc Author: Peng Huang Date: 2009-09-30 13:38:58 +0800 Restore ibus.pot A po/ibus.pot commit fd1fe90c0d71f5e721efbf69a6630542afc9176c Author: Peng Huang Date: 2009-09-30 13:36:19 +0800 Update debian packaging scripts from ubuntu D debian/README.Debian M debian/changelog A debian/clean M debian/compat M debian/control M debian/copyright D debian/cron.d.ex D debian/dirs M debian/docs D debian/emacsen-install.ex D debian/emacsen-remove.ex D debian/emacsen-startup.ex A debian/ibus-daemon.1 D debian/ibus-default.ex A debian/ibus-gconf.1 A debian/ibus-gtk.install A debian/ibus-setup.1 A debian/ibus-ui-gtk.1 A debian/ibus-x11.1 A debian/ibus.1 D debian/ibus.doc-base.EX A debian/ibus.install A debian/ibus.manpages A debian/ibus.postinst A debian/ibus.prerm D debian/im-switch/ibus D debian/init.d.ex D debian/init.d.lsb.ex A debian/libibus-dev.install A debian/libibus1.install A debian/libibus1.symbols D debian/manpage.1.ex D debian/manpage.sgml.ex D debian/manpage.xml.ex D debian/menu.ex D debian/postinst D debian/postinst.ex D debian/postrm.ex D debian/preinst.ex D debian/prerm D debian/prerm.ex A debian/python-ibus.install A debian/pyversions M debian/rules A debian/watch D debian/watch.ex A debian/xinput/ibus D po/ibus.pot commit 9c96cfcd5c94125cc2ff84830748bec876dd11cb Author: Ding-Yi Chen Date: 2009-09-28 09:47:48 +1000 Update zh_TW.po M po/zh_TW.po commit 08289ea083a0793ce7818b27ae2910e704d80ccc Author: Peng Huang Date: 2009-09-16 15:33:24 +0800 Restore ibus.pot A po/ibus.pot commit c03249bd8ac36b542ab93fd767a6e7bc9d2359d5 Author: Ding-Yi Chen Date: 2009-08-31 18:09:49 +1000 Modify APIDOC chapters. APIDOC IBusServer D po/ibus.pot commit c51a34c296b23e8a2607c056ee0d046fd3269d78 Author: Peng Huang Date: 2009-09-27 15:06:00 +0800 Update zh_TW.po M po/zh_TW.po commit a2a5aa15bd38dd7d0ab43c9e4b464861977074a9 Author: Peng Huang Date: 2009-09-27 13:33:49 +0800 Write empty string instead "(null) in xml. M src/ibusenginedesc.c commit dbe90576e6980b05c8777c79719c2c80c96cd9b3 Author: Peng Huang Date: 2009-09-25 14:17:53 +0800 Update pa.po from A S Alam M po/pa.po commit 1674211fc8b5fe8ec3ecebf20d89c0ca3fba5f99 Author: Peng Huang Date: 2009-09-24 15:45:53 +0800 Update zh_CN.po M po/zh_CN.po commit 8b97e9ecbad917af69fd4f70af7ad305d44e48ee Author: Peng Huang Date: 2009-09-22 13:01:42 +0800 Fix restart problem in Unix M bus/Makefile.am M bus/ibusimpl.c commit 68206ef43cd0e7b7b441821bacf85da4774bb0d5 Author: Peng Huang Date: 2009-09-20 07:54:25 +0800 Update ca.po by Xavi Conde M po/ca.po commit a58dbb8b6ef693a086006a797c569571dfa61b9d Author: Peng Huang Date: 2009-09-19 15:17:35 +0800 Update one string. M po/zh_CN.po commit 8e465a32567bc16eae33e56fbd75f8bb41d037d8 Author: Peng Huang Date: 2009-09-16 16:09:45 +0800 Supports G_TYPE_LONG and G_TYPE_ULONG in ibus_message_iter_get M src/ibusmessage.c commit d922542114b11a2489967e34ceb66a610e43b453 Author: Peng Huang Date: 2009-09-16 15:33:24 +0800 Restore ibus.pot A po/ibus.pot commit bbc1f736a4ab818b45e2c3a19d45f100d3e45802 Author: Ding-Yi Chen Date: 2009-09-15 17:55:39 +1000 Correct keymaps/commons: Add KP_Decimal and KP_Divide M data/keymaps/common commit cf28ece8b12de5fe3acf673a7f9a7a5f8b313fae Author: Ding-Yi Chen Date: 2009-08-31 18:09:49 +1000 Modify APIDOC chapters. APIDOC IBusServer M docs/reference/ibus/ibus-docs.sgml D po/ibus.pot M src/ibusmainloop.h M src/ibusserver.c M src/ibusserver.h commit c2157aceb20024b61b22cd27691432ce3925f7a7 Author: Peng Huang Date: 2009-09-12 17:49:37 +0800 Add error underline. M ibus/attribute.py M src/ibusattribute.h commit b559c801479bab0baf3586e3c78bc47f58624526 Author: Peng Huang Date: 2009-09-12 12:53:09 +0800 Update test_client.py M ibus/inputcontext.py M test/test_client.py commit fa348d0a4691ede253d3a203e20498d7bcb973b8 Author: Peng Huang Date: 2009-09-11 11:41:20 +0800 Use GInitiallyUnowned as super parent M src/ibusobject.c M src/ibusobject.h commit 186e0ba948f3070ca52a7ab1eca13331e1c5a8c9 Author: Peng Huang Date: 2009-09-11 06:31:28 +0800 Add ko.po by Eun Ju Kim M AUTHORS M po/LINGUAS A po/ko.po commit 3f570085e9e8cecc74341d47ad07f27569d19290 Author: Peng Huang Date: 2009-09-10 16:40:59 +0800 Rix memory leak in toolitem.py M ui/gtk/toolitem.py commit 36cc87ec7c896708c3cc67dc3573f043a54fa2e4 Author: Peng Huang Date: 2009-09-10 09:09:37 +0800 Update te.po by Krishnababu Krothapalli M po/te.po commit ee19dd0b9a1ea9d11c936796f8f9f5dc4b47eaac Author: Peng Huang Date: 2009-09-09 14:52:35 +0800 Use system layout setting by default. M data/ibus.schemas.in commit b7d9d063ec5ff9b161f13628a649f304db469364 Author: Peng Huang Date: 2009-09-09 14:44:31 +0800 Use defualt icon for some engine without icon M ui/gtk/engineabout.py commit 9331a2a452f5ed2026f9e704c0edd52e952c2649 Author: Peng Huang Date: 2009-09-09 07:12:16 +0800 Update bn_IN.po by Runa Bhattacharjee M po/bn_IN.po commit 464e3736a0211ea6fe0709b4d7550d2008bd6709 Author: Peng Huang Date: 2009-09-08 17:32:16 +0800 Update ja.po M po/ja.po commit bfd5227bbc987c348a122b5ef2774f81d649c2e3 Author: Peng Huang Date: 2009-09-08 16:59:34 +0800 Update ja.po by Fujiwarat M po/ja.po commit 5bb8423124c09f023feb21a200235b97aab21d85 Author: Peng Huang Date: 2009-09-07 19:34:53 +0800 Update kn.po Shankar Prasad Venkateshbhat M po/kn.po commit 194441146c603f530e4d4523b9944afd7d8ee87d Author: Peng Huang Date: 2009-09-04 13:47:12 +0800 Update hi.po by Rajesh Ranjan M po/hi.po commit 51bc1d2bbbefde9906fd26fdef13ca19f5387d49 Author: Peng Huang Date: 2009-09-04 12:05:10 +0800 Add new icons. A data/icons/16/ibus-off.png A data/icons/22/ibus-off.png A data/icons/24/ibus-off.png A data/icons/32/ibus-off.png A data/icons/48/ibus-off.png M data/icons/Makefile.am A data/icons/scalable/ibus-off.svg M ibus.spec.in commit ced70161303a54c02dbb78215918887edab82262 Author: Peng Huang Date: 2009-09-03 21:30:01 +0800 Update gu.po by Sweta Kothari M po/gu.po commit a84a051d9d8d106ab47b96ab073032719b05240c Author: Peng Huang Date: 2009-09-03 21:27:47 +0800 Update ml.po by Ani Peter M po/ml.po commit f774c0d184a9583dc540e969f87bfca3a32c70a6 Author: Peng Huang Date: 2009-09-03 10:22:07 +0800 Update ja.po by Fujiwarat M po/ja.po commit cae9d409e38d7fe3137f9c469a27a76aae8d94ac Author: Peng Huang Date: 2009-09-03 07:09:29 +0800 Update or.po by Manoj Giri M po/or.po commit 75cee9fb96e32766bfb33e4b0e5d7791631a191a Author: Peng Huang Date: 2009-09-02 19:28:47 +0800 Update ta.py by Felix M po/ta.po commit 2ea7f145bda36e72432e0829fa3407adc23b4564 Author: Peng Huang Date: 2009-09-02 16:30:57 +0800 Remove '_' from begin of some keynames start with numbers M ibus/keysyms.py commit 606210b7cf9f8d024a301fd0a21a7f64fb259dd8 Author: Peng Huang Date: 2009-09-02 09:12:16 +0800 Update mr.po by sandeep shedmake M po/mr.po commit d84054c330a0562d8d7f4bd0fe52fac156be07c0 Author: Peng Huang Date: 2009-09-01 13:00:58 +0800 Update vi.po by Lê Quốc Tuấn M po/vi.po commit 1254a61a2c9d5cddb79d77293f365c75a0065e81 Author: Peng Huang Date: 2009-09-01 11:00:54 +0800 Update pl.po by Piotr DrÄ…g M po/pl.po commit a893830a35d2ddc4466d3088caa966dc8cfcbf55 Author: Peng Huang Date: 2009-08-31 15:08:19 +0800 Does not include bindings folder. M Makefile.am M configure.ac commit 58c9159a3db6222f1acdbb9fcf4120f14e0be632 Author: Peng Huang Date: 2009-08-31 15:08:00 +0800 Set icon of about dialog. M ui/gtk/panel.py commit b09f27f817ebd2871cea4fac60473d5d43048c6a Author: Peng Huang Date: 2009-08-31 07:07:28 +0800 Update es.po by Domingo Becker M po/es.po commit c6e4ffeda1a40f985dd3f176f69d495050b4052a Author: Peng Huang Date: 2009-08-31 07:04:31 +0800 Update fr.po by julroy67 M po/fr.po commit b7f4da664ae7ae299d35b8a4c0303473acd8d9c3 Author: Peng Huang Date: 2009-08-29 08:18:37 +0800 Change ibus.svg path in xinput-ibus M xinput-ibus commit f4ee9d7f299b08480831036c973119f52ec4b173 Author: Peng Huang Date: 2009-08-29 08:14:46 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit faa86f388b5dcc1536431e5478618ab3bbfe21d7 Author: Peng Huang Date: 2009-08-29 08:14:08 +0800 Unify some describions. M data/ibus.schemas.in commit c49067cb890a58250f9e77aeef34261578d42f5b Author: Peng Huang Date: 2009-08-29 06:39:03 +0800 Change timeout of engine reply M bus/engineproxy.c M bus/factoryproxy.c commit f7815b0c66dda855cc229ae2593498620338006c Author: Peng Huang Date: 2009-08-28 18:44:49 +0800 Fix a memory leak. M bus/engineproxy.c commit 99328a4f4ba501e1aed7604c9c687eb9e567738c Author: Peng Huang Date: 2009-08-28 16:58:21 +0800 Add an popup menu when no input window M po/ibus.pot M po/zh_CN.po M ui/gtk/panel.py commit ca911d79e22bf318754f28cfb6104a96f772090d Author: Peng Huang Date: 2009-08-28 16:31:07 +0800 Fix build warnings M src/ibusproperty.c commit 644fb9e22b252c0ef5f0331999b4db40e8d7c9a4 Author: Peng Huang Date: 2009-08-28 16:29:13 +0800 Update inline API document. M src/ibusattribute.h M src/ibuslookuptable.h M src/ibusproperty.h commit cf994c799fad1ef7b29575798d7232bfd309fff2 Author: Peng Huang Date: 2009-08-28 12:55:28 +0800 Remove empty line M src/ibusinputcontext.c commit d8dbd7cda906805c65d8f45c198984db54b428d7 Author: Peng Huang Date: 2009-08-28 11:36:28 +0800 Fix memory leak in ibus-daemon M bus/engineproxy.c commit 4da6b8628e65ced954b0ed5f5c3220194591e106 Author: Peng Huang Date: 2009-08-28 11:36:13 +0800 Fix memory leak in libibus.so M src/ibusattribute.c M src/ibustext.c commit b4acd49576acce9bc73a67dcb8e90d5aacf5f4f4 Author: Peng Huang Date: 2009-08-28 10:55:17 +0800 Fix typos. M ibus/inputcontext.py commit 93e07d55c0094005e5077c8a865cf7112a95a8f1 Author: Peng Huang Date: 2009-08-28 07:19:47 +0800 Add method in inputcontext.py to detach signals. M ibus/inputcontext.py commit 026fd461fcd7f6d7165be8b1198198ab75540fcf Author: Peng Huang Date: 2009-08-27 06:23:37 +0800 Update es.po by Domingo Becker M po/es.po commit 65c0269615e5f2596601dd9c1d2f4e2d170f28c9 Author: Peng Huang Date: 2009-08-26 17:25:29 +0800 Update po files. M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.glade commit 4d7d493e5035f58efeaca2d59253aed456593be5 Author: Peng Huang Date: 2009-08-26 16:57:40 +0800 Rename icon ibus-keyboard to ibus-off M data/icons/Makefile.am D data/icons/ibus-keyboard.svg A data/icons/ibus-off.svg M ui/gtk/panel.py commit e10aff2bd97dee1cdbc738500936ef2e39132702 Author: Peng Huang Date: 2009-08-26 15:53:29 +0800 Use icon name instead of the icon path in source code. M data/icons/Makefile.am D data/icons/engine-default.svg A data/icons/ibus-engine.svg M ui/gtk/panel.py commit a2e981a07dde4a7a36a88df452d43ccb31cbfeef Author: Peng Huang Date: 2009-08-26 11:07:15 +0800 Update all po files by 'make update-po' M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ja.po M po/kn.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/vi.po M po/zh_HK.po M po/zh_TW.po commit b88474d59fd13ef21257230707ccd5fe3754bfc6 Author: Peng Huang Date: 2009-08-26 11:06:42 +0800 Update the label "No input method" M po/.gitignore A po/ibus.pot M ui/gtk/panel.py commit cefdc5806d333fbaab89a7cb0ba607796e1bb24c Author: Peng Huang Date: 2009-08-26 11:03:50 +0800 Update zh_CN.po M po/zh_CN.po commit 418b49dfa47e7711254e34000549e23f83a918cc Author: Peng Huang Date: 2009-08-25 07:26:03 +0800 Update ca.po M po/ca.po commit 168c58770d274d80b8d457b7b55330849424ddfa Author: Peng Huang Date: 2009-08-24 21:24:52 +0800 Fix build error on freebsd M src/test-keymap.c commit 7444c329d719687059280259b12d7bce95150c3d Merge: c06938c cca94cf Author: Peng Huang Date: 2009-08-24 16:11:07 +0800 Merge commit 'definite/master' commit cca94cfa8938e7b07f84ba402a6e33db45b7ea5b Author: Ding-Yi Chen Date: 2009-08-24 17:55:57 +1000 APIDOC: New: IBusSerializable. Revised: IBusAttribute, IBusFactory, IBusObject, IBusObservedPath, IBusProperty M src/ibusattribute.h M src/ibusfactory.h M src/ibusobject.h M src/ibusobservedpath.h M src/ibusproperty.h M src/ibusserializable.c M src/ibusserializable.h commit c06938c850ee199d258a18b63cbaa6d7c186052e Author: Peng Huang Date: 2009-08-24 13:44:59 +0800 Use a symbol link for ibus-keyboard.svg T data/icons/ibus-keyboard.svg commit 8b5ee69eb13365493172257ecf26e566144420d4 Author: Ding-Yi Chen Date: 2009-08-05 17:33:35 +1000 APIDOC IBusPendingCall M src/ibuspendingcall.h commit f2452bfeedf06b4548b3d905a18e3147358eb13a Author: Ding-Yi Chen Date: 2009-08-03 18:06:06 +1000 APIDOC: IBusObject IBusObservedPath M src/ibusobject.c M src/ibusobject.h M src/ibusobservedpath.h commit 7518126ca57c1a10b19d8e9264a14f55d2e1189a Author: Peng Huang Date: 2009-08-20 15:39:51 +0800 call bindtextdomain to resolve i18n issue. M setup/Makefile.am M setup/ibus-setup.in M setup/main.py commit d44f4585a63b2aa4a05ba9a4daab9185b3361191 Author: Peng Huang Date: 2009-08-20 10:07:19 +0800 Update es.po - Domingo Becker M po/es.po commit 75401a434a0034f7b85f8fc2e25b6c9fd12126ad Author: Peng Huang Date: 2009-08-19 10:31:36 +0800 Watch on the right socket file. M src/ibusbus.c commit 3ec0f62c97d18473397dba62bc9f6f5f6a07d4c3 Author: Peng Huang Date: 2009-08-18 17:27:03 +0800 Add some setter functions for IBusProperty M src/ibusproperty.c M src/ibusproperty.h commit 4078e209d00748a57a2dc0683320de63b8c7d911 Author: Peng Huang Date: 2009-08-17 10:12:03 +0800 Fix segment fault in ibus_hotkey_profile_destroy. M src/ibushotkey.c commit 943a75b343c398ee6d45cd4d66a8f0bdfec777d7 Author: Peng Huang Date: 2009-08-14 08:01:14 +0800 Add * in default locales of ibus gtk immodule M client/gtk2/ibusim.c commit 8bbe9f77257508af7593ea4ca1c7102d53fc3333 Author: Peng Huang Date: 2009-08-13 15:44:14 +0800 Comment test-registry M bus/Makefile.am commit dc86b755b60a55d76585cab79f99699e046d851f Author: Peng Huang Date: 2009-08-13 15:41:54 +0800 Disable qt im module. M client/Makefile.am M configure.ac commit 276353d1e882a29325680e672320ef964d816c0b Author: Peng Huang Date: 2009-08-12 09:30:54 +0800 Fix some build warnings. M bus/server.c M src/ibusbus.c M src/ibusshare.c commit c3fa97f4172d9b490ea0d1060d151eb5d6df9fe2 Author: Peng Huang Date: 2009-08-12 09:23:24 +0800 Duplicate address. M src/ibusshare.c commit 38e28e06c2b8a34e5a12aabb3ff8e849865976f4 Author: Peng Huang Date: 2009-08-12 09:06:30 +0800 Only connect to the exist bus if the ibus_get_address return != NULL M bus/main.c commit b0899c2f7f27aa14a64e8ac85197e7a6ae9b923a Author: Peng Huang Date: 2009-08-12 08:31:38 +0800 Use one fprintf. M src/ibusshare.c commit a08eafeffd5aa889b2d7276d48af84aa546c1b58 Author: Peng Huang Date: 2009-08-12 07:51:41 +0800 Use %ld for pid M src/ibusshare.c commit e319143f168fb6c248ff691a18760f7cae8a9124 Author: Peng Huang Date: 2009-08-12 07:44:55 +0800 call g_unlink before write address. M src/ibusshare.c commit 049ca9f0830304bfb0907071804c2bc40942c86e Author: Peng Huang Date: 2009-08-12 07:43:59 +0800 Check if the daemon is alive in ibus_get_socket_address M src/ibusshare.c commit 33f77a4980486ade7bb0194ccfe79477814e3b14 Author: Peng Huang Date: 2009-08-12 07:33:31 +0800 Write IBUS_DAEMON_PID in address file. M src/ibusshare.c commit 5ec6b95170f15f66a553a97c02cb94cc3c3e6b91 Author: Peng Huang Date: 2009-08-11 17:23:04 +0800 Disable mkdir code in ibusbus.c M src/ibusbus.c commit 05e3fe4d90826c7b0234e17f691e6bb0734c1faf Author: Peng Huang Date: 2009-08-11 17:20:06 +0800 Create right path in ibusbus.c M src/ibusbus.c commit 669ff970d226e9dc8da6afa51e916c85d98bc8b2 Author: Peng Huang Date: 2009-08-11 17:01:31 +0800 Remove ibus_get_socket_folder M src/ibusshare.c M src/ibusshare.h commit 332b49d1ae363a85321b553d9e3ea5e9e8e745da Author: Peng Huang Date: 2009-08-11 16:57:03 +0800 Do not mkdir in ibusbus.c M src/ibusbus.c commit 74b5b2007b28341db2c7997824a7322fc9d0a336 Author: Peng Huang Date: 2009-08-10 13:57:52 +0800 Add argument --mem-profile to get memory profile of ibus-daemon M bus/main.c commit ab37f4ad671049bd5b24da6500b9727ccf61e3d6 Author: Peng Huang Date: 2009-08-10 13:29:46 +0800 Fix soem typos. M src/ibushotkey.c commit 7096cb14e2b9fb659ab79ab1d2b65e55493d3e19 Author: Peng Huang Date: 2009-08-10 13:26:45 +0800 Make code more readable. M src/ibuslookuptable.c commit f1cc9bb311d3ea765541e208b7f629e44e4c5e31 Author: Peng Huang Date: 2009-08-10 13:25:55 +0800 Remove some unused variables. M src/ibusbus.c M src/ibuskeymap.c commit 7c09e3922851d153887b9e3bf531d05661ef0877 Author: Peng Huang Date: 2009-08-10 13:25:19 +0800 Make code more readable. M src/ibushotkey.c commit 42c766c1c293e8b2ff8d191de927b462abcb3411 Author: Peng Huang Date: 2009-08-10 13:08:16 +0800 Fix error in ibus_prop_list_destroy function. M src/ibusproperty.c commit 605f48bbe15d79e7c3af0bb6fdf632f8d395034b Author: Peng Huang Date: 2009-08-10 13:05:47 +0800 Fix memory leak in ibusproperty.c M src/ibusproperty.c commit 43b532911e600a6d31b35777c747a65b8a4fd140 Author: Peng Huang Date: 2009-08-10 12:38:07 +0800 Disable memory debug. M src/ibusobject.c commit 6cdc132b142f9c8ef17c20b4f78201b2b21c8223 Author: Peng Huang Date: 2009-08-10 12:36:30 +0800 Fix memory leak in ibuslookuptable.c M src/ibuslookuptable.c commit 2f32f8c0f8c3c9719aad120bb83650d093cbdc5f Author: Peng Huang Date: 2009-08-10 12:36:21 +0800 Count all objects. M src/ibusobject.c commit b248c2ad1a63902caddbf4b046347919c366c3e9 Author: Peng Huang Date: 2009-08-10 12:31:17 +0800 Add code to debug memory M src/ibusobject.c commit 27dabca24a4e10670960c5c820df44da139471ee Author: Peng Huang Date: 2009-08-10 11:23:06 +0800 Remove some debug output. M bus/dbusimpl.c commit 49df5913820f47c4918c4001e9dea8c264106367 Author: Peng Huang Date: 2009-08-10 10:05:51 +0800 Fix numlock problem. M src/ibuskeymap.c commit 955c700f193571a58f391b06106d37bee0c50b2c Author: Peng Huang Date: 2009-08-10 09:47:40 +0800 Remove some debug verbose. M bus/ibusimpl.c commit 70a720de606721687f1c995ea50692d58bb3d101 Author: Peng Huang Date: 2009-08-07 14:34:43 +0800 Do not emit preedit changed signal if preedit text is still invisible M client/gtk2/ibusimcontext.c commit c11f58727996c134a4e27bd7c7c360320c7f6927 Author: Peng Huang Date: 2009-08-07 11:15:52 +0800 Fix a bug in name_to_keycode M ibus/keysyms.py commit c5ad08e89cf0c64f35ee1081d44a0f76246b4447 Author: Peng Huang Date: 2009-08-06 11:13:50 +0800 Include org.freedesktop.{DBus,IBus} in ListNames' return M bus/dbusimpl.c commit 3d30c8a28b27aac298bbdeb81488dfec1ca27df0 Author: Peng Huang Date: 2009-08-06 11:10:20 +0800 Change the order of the unique names and well know names. M bus/dbusimpl.c commit 2f4bfb99dc9e21a74ebc98961186cde240c75ca1 Author: Peng Huang Date: 2009-08-06 11:09:07 +0800 Use macros. M bus/dbusimpl.c commit e58348a1cba659b448ce04bc2c3ad8c032a64803 Author: Peng Huang Date: 2009-08-06 11:04:13 +0800 Do not allow RequstName org.freedesktop.{IBus, DBus} M bus/dbusimpl.c commit b6a8fa25027df23090e5d6f21017fa8df43fa1fc Author: Peng Huang Date: 2009-08-06 10:54:08 +0800 Fix bug in org.freedesktop.DBus.ListNames. M bus/dbusimpl.c commit c8f92c1d9c1bdc61413fa7f6fba62aa9e2da6358 Author: Peng Huang Date: 2009-08-04 18:26:48 +0800 Reduce size of keysyms.py M ibus/keysyms.py commit 6ee8bb59c4485d054017feb60eecfae06fe1a6df Author: Peng Huang Date: 2009-08-03 14:47:50 +0800 Fix bug in keymap: Press number with Shift & CapsLock modifiers. M data/keymaps/common M src/ibuskeymap.c M src/ibuskeymap.h commit 4b607482f562f4a2306d3b3e659bd1350395911c Author: Peng Huang Date: 2009-07-28 14:38:36 +0800 Change summary for for ibus-devel.rpm M ibus.spec.in commit 5be7c11bf6664d810300bb3965039a8c4c1201f2 Author: Peng Huang Date: 2009-07-27 17:57:14 +0800 set QT_IM_MODULE=ibus if the qt ibus im module exist M xinput-ibus commit 56b73694a90215618f00ec3233acd7548ff8af1e Author: Peng Huang Date: 2009-07-23 08:07:25 +0800 Fix dead loop in _from_dbus_value M src/ibusconfigprivate.h M src/ibusmessage.c commit 4b09c335f61a280a6b84331bbeb74a4132f2442e Author: Peng Huang Date: 2009-07-21 10:44:06 +0800 Use libibus.so.1 replace libibus.so M ibus/common.py commit 53ad8d6cb7ba02de86814a28564e764a5874a078 Author: Peng Huang Date: 2009-07-21 10:43:58 +0800 Fix typo. M bus/ibusimpl.c commit 01b3391e99f63762e3498f901d65d70c65d72352 Merge: 306f615 708737a Author: Peng Huang Date: 2009-07-21 10:42:39 +0800 Merge branch 'master' of git@github.com:phuang/ibus commit 708737a8a15a9aaf0b158fd110e6f2a72790812f Author: Peng Huang Date: 2009-07-19 12:50:22 +0800 Fix some build warnings. M src/ibusshare.c commit e35f363a366d5fc78d7f0851348f8cc86924cce5 Merge: cf56e57 2ec3479 Author: Peng Huang Date: 2009-07-19 09:40:42 +0800 Merge branch 'master' of git@github.com:phuang/ibus commit cf56e576fde975606f709cc731d2b256c45a15b4 Author: Peng Huang Date: 2009-07-18 08:39:50 +0800 Fix a typo. M bus/inputcontext.c commit 306f615f4d5b5e8ce32a734d899acde76134c8f2 Author: Peng Huang Date: 2009-07-17 10:35:18 +0800 Add gitignore M .gitignore M bus/.gitignore M bus/ibusimpl.c A data/.gitignore A docs/.gitignore M po/.gitignore M src/.gitignore commit 2ec3479e1647d7cfb5cf60043a94a5d546c90032 Author: Peng Huang Date: 2009-07-17 06:47:01 +0800 Add include to fix build warning. M src/ibusshare.c commit fbcc20f320a0ebba9b95658f7efa8cc52cf1476e Author: Peng Huang Date: 2009-07-16 10:37:32 +0800 Add introspect_dbus method. M ibus/bus.py commit a1da7b9ad9af3144911d145334d8eec49c9b4c88 Author: Peng Huang Date: 2009-07-16 10:36:53 +0800 Remove unimplemented methods and signals from DBus.Introspect return data M bus/dbusimpl.c commit 3beb987781d921902b4e20d9c844b75a9e962abe Author: Peng Huang Date: 2009-07-15 18:04:11 +0800 Use c version ibus_get_address in python directly M ibus/common.py M src/ibusshare.c commit d2ed9a3740a8b9e809615f99318ee14132a3159a Author: Peng Huang Date: 2009-07-15 16:31:09 +0800 Use abstract socket in ibus-daemon M bus/server.c M ibus/application.py M ibus/bus.py M ibus/common.py M src/ibusbus.c M src/ibusshare.c M src/ibusshare.h commit b3160e0b563c132347b1c97ce91d3d3882041fca Author: Peng Huang Date: 2009-07-15 11:19:08 +0800 Add ibus_get_local_machine_id function M src/ibusshare.c M src/ibusshare.h commit 1a007604992f4e2cb58e0d9eb5d37b8086445bf4 Author: Peng Huang Date: 2009-07-15 08:21:23 +0800 Update ml.po by Ani Peter M po/ml.po commit 780752efb2ca64ce4e87f28b85394ab1cef13b70 Author: Peng Huang Date: 2009-07-14 16:30:50 +0800 Remove debug output M bus/ibusimpl.c commit 4e7a1f9dfb0dfbe1310422bc322ea97b19bd3664 Author: Peng Huang Date: 2009-07-10 11:00:41 +0800 Fix a typo, Add introspect method. M bus/inputcontext.c M ibus/inputcontext.py commit f22552752d3ffdb693c223c61679061528a84fff Author: Peng Huang Date: 2009-07-10 10:48:39 +0800 Implement Introspect in inputcontext.c M bus/ibusimpl.c M bus/inputcontext.c M ibus/interface/iinputcontext.py commit fdebe6da41d3ad4a347d64cfa30a14a92446c3fb Author: Peng Huang Date: 2009-07-09 17:38:16 +0800 Add introspect_ibus M ibus/bus.py commit bbc54dcc2d1a3ece69ff191b4818aa549f27309e Author: Peng Huang Date: 2009-07-09 17:37:18 +0800 Add args' names, and remove out arg of org.freedesktop.IBus.Exit M bus/ibusimpl.c commit f5cb3df2a2c31c54a9e3b97ac32ecbbb933bcda3 Author: Peng Huang Date: 2009-07-09 17:09:37 +0800 Remove some deprecated methods. M ibus/interface/iibus.py commit 8fedd83a82049427c241d8dd8687ba75429b7111 Author: Peng Huang Date: 2009-07-09 17:09:03 +0800 Implemented Introspect of /org/freedesktop/IBus M bus/ibusimpl.c commit 3dbc3d46bb1166115ba40a6ef6ab98042b1c14f5 Author: Peng Huang Date: 2009-07-09 11:29:46 +0800 Implememnt org.freedesktop.IBus.Ping method. M bus/ibusimpl.c M ibus/bus.py M ibus/serializable.py M src/ibusattribute.c M src/ibuscomponent.c M src/ibusenginedesc.c M src/ibusfactory.c M src/ibushotkey.c M src/ibuslookuptable.c M src/ibusmessage.c M src/ibusmessage.h M src/ibusobservedpath.c M src/ibusproperty.c M src/ibusserializable.c M src/ibustext.c commit a25038fd60358cf06905ffd535eba2d2f2737efe Author: Peng Huang Date: 2009-07-08 11:43:22 +0800 Fix some typoes. M ibus/bus.py M ibus/interface/iibus.py commit ad8b19522dd6851d9854f7bdcc04441a1925b5d9 Author: Peng Huang Date: 2009-07-08 11:32:01 +0800 Add ibus_message_iter_copy method; Add Ping method of org.freedesktop.IBus interface. M bus/ibusimpl.c M ibus/bus.py M ibus/interface/iibus.py M src/ibusmessage.c M src/ibusmessage.h commit ec640a5e4658419e1183b14e89f3419e5735a742 Author: Ding-Yi Chen Date: 2009-07-08 16:58:36 +1000 APIDOC: Revised IBusMessage M src/ibusmessage.h commit da8f546d010bff2298eda65d75c44f6fcf5992b6 Author: Ding-Yi Chen Date: 2009-07-07 18:07:54 +1000 APIDOC: completed IBusMessage. M docs/reference/ibus/ibus-docs.sgml M src/ibuskeymap.h M src/ibusmessage.h commit 7a1cb83c9812107334f82b59e1092fe670e9ef3a Author: Ding-Yi Chen Date: 2009-07-06 18:09:22 +1000 APIDOC continuing IBusMessage M src/ibusmessage.h commit 3b8b42bf79a4e780947af1b67e7f28f866de7a30 Author: Ding-Yi Chen Date: 2009-07-03 18:03:17 +1000 APIDOC: completed: IBusInternal, IBusKeymap. starts: IBusMessage M src/ibusinternal.h M src/ibuskeymap.h M src/ibuskeysyms.h M src/ibusmainloop.h M src/ibusmessage.h commit 9c6b7e75a45ccc88c26c35fc7958e2f92931748f Author: Ding-Yi Chen Date: 2009-07-01 18:07:54 +1000 APIDOC: IBusKeymap M src/ibuskeymap.h commit 2cbd86e10a9f823cf4de47d5a95555cc45ca7776 Author: Ding-Yi Chen Date: 2009-06-30 18:07:12 +1000 APIDOC: IBusInternal, IBusKeymap M src/ibusinternal.c M src/ibusinternal.h M src/ibuskeymap.h commit 1ad3051b149bbc5e916ec794f7638be7f5563e59 Author: Peng Huang Date: 2009-07-01 12:32:08 +0800 Update buttons' states correctly M setup/keyboardshortcut.py commit 59d99c2e73f4c0d54967e4f9291cb0cfc4c4a923 Author: Peng Huang Date: 2009-07-01 12:17:18 +0800 Add PY prefix in gtype names. M ibus/attribute.py M ibus/bus.py M ibus/component.py M ibus/config.py M ibus/enginedesc.py M ibus/factory.py M ibus/inputcontext.py M ibus/lookuptable.py M ibus/object.py M ibus/observedpath.py M ibus/property.py M ibus/serializable.py M ibus/text.py commit a1a43490c284f40b7b2135b4346aeb80dbea5708 Author: Peng Huang Date: 2009-07-01 12:11:38 +0800 Update Add & Apply buttons' states on time. M setup/keyboardshortcut.py commit 4ffd3c3fb6b51da9c18f2b2a45325ade08ce9c0d Author: Peng Huang Date: 2009-06-30 16:45:45 +0800 Use MetaClass to register serializable classes automatically M ibus/attribute.py M ibus/component.py M ibus/enginedesc.py M ibus/factory.py M ibus/lookuptable.py M ibus/observedpath.py M ibus/property.py M ibus/serializable.py M ibus/text.py commit 1abb0f892a0429aafb42dbca09bd1e4b90f8081a Author: Peng Huang Date: 2009-06-30 10:54:16 +0800 Fix some coding style problems. M ui/gtk/notifications.py M ui/gtk/panel.py M ui/gtk/propitem.py M ui/gtk/toolitem.py commit 6cf406a376a88e8360fe5b073a481f31af06878a Author: Peng Huang Date: 2009-06-30 10:42:05 +0800 Fix CheckMenuItem problems and some coding style problems. M ui/gtk/menu.py commit 6138aab2d1c6209feddc5c65de8b844aff220cd1 Author: Peng Huang Date: 2009-06-30 07:40:37 +0800 Change some classes' name M ui/gtk/candidatepanel.py M ui/gtk/languagebar.py M ui/gtk/panel.py commit 34596d74e4ddcafe0b038d4600508806e569c8a1 Author: Peng Huang Date: 2009-06-30 07:19:22 +0800 Add __gtype_name__ for some gobject classes M ibus/attribute.py M ibus/bus.py M ibus/component.py M ibus/config.py M ibus/enginedesc.py M ibus/factory.py M ibus/inputcontext.py M ibus/lookuptable.py M ibus/object.py M ibus/observedpath.py M ibus/property.py M ibus/serializable.py M ibus/text.py commit 0eafa5985555827818b0fd8de58a01d672151934 Author: Peng Huang Date: 2009-06-29 20:49:32 +0800 Use __gtype_name__ to replace gobject.type_register M ui/gtk/candidatepanel.py M ui/gtk/handle.py M ui/gtk/languagebar.py M ui/gtk/menu.py M ui/gtk/panel.py M ui/gtk/toolitem.py commit 15ce741d370b815047e3ad06d9806131acbb40c0 Author: Peng Huang Date: 2009-06-29 17:57:47 +0800 Remove useless code. M ui/gtk/candidatepanel.py commit fb13ca28b412a15691ee2ab2bafd5b10df453c9b Author: Peng Huang Date: 2009-06-25 16:03:26 +0800 Modify introspect interface. M bus/ibusimpl.c commit 0c1e0848a2a20b4bc9d48f33830001ffc10e0fe0 Author: Ding-Yi Chen Date: 2009-06-25 17:58:08 +1000 APIDOC: Completed IBusInputContext Revised IBusBus, IBusConnection, IBusProxy, IBusService Keymap: Add dvorak, dvorak-classic, and dvorak-programmer A data/keymaps/dvorak-common A data/keymaps/us-dvorak A data/keymaps/us-dvorak-classic A data/keymaps/us-dvorak-programmer D po/ibus.pot M src/ibusbus.c M src/ibusconnection.c M src/ibusengine.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibusproxy.c M src/ibusservice.c commit 00b32660ee5552ff804c99c990ec0fe1278d6e8a Author: Ding-Yi Chen Date: 2009-06-24 18:04:56 +1000 APIDOC: revised IBusEngine, IBusLookupTable. continuing IBusInputContext M src/ibusengine.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibuslookuptable.h commit d72689240398232387187e383938186cda47ff99 Author: Ding-Yi Chen Date: 2009-06-22 18:08:55 +1000 APIDOC: revised IBusEngine, IBusInputContext M ibus.spec.in M src/ibusengine.c M src/ibusinputcontext.h commit 5a026c6221286139cae08b5799bc80fe1d1c9444 Author: Peng Huang Date: 2009-06-25 09:48:37 +0800 Add keycode argument in forward_key_event signal. M bus/engineproxy.c M bus/inputcontext.c M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c commit 64c7a4f4ed05010d32b521660302b5a85e083c35 Author: Peng Huang Date: 2009-06-24 07:49:50 +0800 Disable qt4 im module. M configure.ac commit 3193a8747492eccac75a245e5075644469cfbfef Author: Peng Huang Date: 2009-06-24 07:34:17 +0800 Add ibusversion.h.in M configure.ac M src/Makefile.am M src/ibus.h A src/ibusversion.h.in commit a79c7e87ee9ff80c673ce43bf2b0aa65775e8e07 Author: Peng Huang Date: 2009-06-24 07:33:53 +0800 Remove private struct in ibus-daemon. M bus/connection.c M bus/connection.h M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M bus/panelproxy.h commit 96f502bcfb6d23a2adc2b28d7bcd52fb01a9407e Author: Peng Huang Date: 2009-06-18 10:17:42 +0800 Fix a typo. M ui/gtk/engineabout.py commit 16fe6e02256a88d83be5bb59515fde86d20f4e12 Author: Peng Huang Date: 2009-06-18 09:53:58 +0800 Hide keyboard layout column in setup UI M setup/enginetreeview.py commit f435a80cee0877c2cee3dcd1920984deab2f51ff Author: Peng Huang Date: 2009-06-17 19:21:10 +0800 Avoid block in bus_factory_proxy_create_engine. M bus/factoryproxy.c commit 7606df8212c436c04044f3e0f864e37333540942 Author: Peng Huang Date: 2009-06-17 17:58:10 +0800 Add setup/enginetreeview.py into po/POTFILES.in M po/POTFILES.in commit 358008baa4777cd3eecf4aff5111bdbabb875ffc Author: Peng Huang Date: 2009-06-17 17:03:02 +0800 Remove IBUS_SESSION_ID from xinput-ibus M xinput-ibus commit a567430e1e2b61d0872bad3503041424d4832e16 Author: Peng Huang Date: 2009-06-17 15:42:06 +0800 Add --enable-gtk-doc in autogen.sh M autogen.sh commit 65b2fdeafc00bae17bddfc366a2cd1a012b85abc Author: Peng Huang Date: 2009-06-17 15:40:57 +0800 Fix problems for 'make rpm' M Makefile.am M ibus.spec.in commit 77c8da8df0ccde997b896338f2adf501e1576976 Author: Peng Huang Date: 2009-06-17 11:34:15 +0800 Remove two useless lines. M data/keymaps/common commit 4875bab43ca75f656268cd74d9ec629657d58ff2 Author: Peng Huang Date: 2009-06-17 10:41:00 +0800 Add configure item for keyboard layout M bus/engineproxy.c M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M data/ibus.schemas.in M setup/enginetreeview.py M setup/main.py M setup/setup.glade commit 9bf091463fc7084bee3733ab2c91bb0f1cfe6f9d Author: Peng Huang Date: 2009-06-16 11:00:52 +0800 Remove altgr in jp keymap M data/keymaps/jp commit a634c759b6d5588c1922db1c16fc635cc25410ca Author: Peng Huang Date: 2009-06-16 10:52:57 +0800 Fix problems in jp keymap. keycode 124 = yen M data/keymaps/jp commit 0f66ccbb471efed568f67dcaf5f2ce3f04aaf170 Author: Peng Huang Date: 2009-06-16 07:36:04 +0800 Fix build warnings. M client/gtk2/ibusimcontext.c M src/ibusconnection.c M src/ibusmainloop.c M src/ibusserver.c commit e7c0f1b4e4730a97431f4835606a9278a914a43a Author: Peng Huang Date: 2009-06-16 07:27:37 +0800 Add translation in pl.po M po/pl.po commit 114fb2cbe792d6dac360875cc60d6895b7af9d64 Author: Peng Huang Date: 2009-06-15 19:02:25 +0800 Add code to handle changing of engine's layout M setup/enginetreeview.py commit 0264e1e0c2615c2b17893ef95fe355b2170d5b50 Author: Peng Huang Date: 2009-06-15 16:34:26 +0800 Translate some messages. M po/zh_CN.po commit 94cedd30a5a67ab3558e822eb3621ba4ee630541 Author: Peng Huang Date: 2009-06-15 16:20:26 +0800 Fix some typos M po/zh_CN.po commit 73456141387d7d88e639978a091ea46380f243f4 Author: Peng Huang Date: 2009-06-15 16:18:57 +0800 Update ibus.pot M po/ibus.pot commit 186977b7abfeffc45157c02a9a586458a3f76c58 Author: Peng Huang Date: 2009-06-15 15:20:59 +0800 Update messages in zh_CN.po M po/zh_CN.po commit 6683283f521535710311ce2ec91ba4525a56a6a0 Author: Peng Huang Date: 2009-06-15 15:10:10 +0800 Add some tooltips in setup dialog. M setup/setup.glade commit b6b278d02c3ceb15581fbc6385a6e15a91079422 Author: Peng Huang Date: 2009-06-15 15:00:12 +0800 Show engines' keyboard layout in setup UI M setup/enginetreeview.py M setup/main.py M ui/gtk/engineabout.py commit 21d4b09a3b0f130af963fcfc6481ffc059b869ff Author: Peng Huang Date: 2009-06-15 06:50:12 +0800 Remove some 'shift keycode' item in common M data/keymaps/common commit e9cbd9bf8d74820ae4b1d02f13a547b5ed2a0f8f Author: Peng Huang Date: 2009-06-15 06:44:14 +0800 Autogen the ChangeLog from git D ChangeLog M Makefile.am M autogen.sh commit b389f0dcf7aff8e506a264500d0b5a95170c2254 Author: Peng Huang Date: 2009-06-15 06:11:08 +0800 Fix error in keymap M bus/inputcontext.c M data/keymaps/modifiers M src/ibuskeymap.c commit f19db832c2f3b9a5887712688b0f63618d79715d Author: Peng Huang Date: 2009-06-15 05:23:05 +0800 Fix some keycode error in common keymap. M data/keymaps/common commit c59be8eeb10b38bea8126986b652102045ea3dc7 Author: Peng Huang Date: 2009-06-14 14:29:27 +0800 Implement keymaps, merged keymaps branch M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c M bus/ibusimpl.h M bus/inputcontext.c M client/gtk2/ibusimcontext.c M client/x11/main.c M configure.ac M data/Makefile.am A data/keymaps/Makefile.am A data/keymaps/ar A data/keymaps/common A data/keymaps/da A data/keymaps/de A data/keymaps/de-ch A data/keymaps/en-gb A data/keymaps/es A data/keymaps/et A data/keymaps/fi A data/keymaps/fo A data/keymaps/fr A data/keymaps/fr-be A data/keymaps/fr-ca A data/keymaps/fr-ch A data/keymaps/hr A data/keymaps/hu A data/keymaps/is A data/keymaps/it A data/keymaps/jp A data/keymaps/lt A data/keymaps/lv A data/keymaps/mk A data/keymaps/modifiers A data/keymaps/nl A data/keymaps/nl-be A data/keymaps/no A data/keymaps/pl A data/keymaps/pt A data/keymaps/pt-br A data/keymaps/ru A data/keymaps/sl A data/keymaps/sv A data/keymaps/th A data/keymaps/tr A data/keymaps/us M ibus/engine.py M ibus/inputcontext.py M ibus/interface/iengine.py M src/Makefile.am M src/ibus.h M src/ibusengine.c M src/ibusengine.h M src/ibusinputcontext.c M src/ibusinputcontext.h A src/ibuskeymap.c A src/ibuskeymap.h M src/ibusmarshalers.list A src/test-keymap.c commit 0c1592432090cd232c8a0367ae5a853ffdf66ea9 Author: Peng Huang Date: 2009-06-14 14:19:33 +0800 Fix a typo in src/Makefile.am M src/Makefile.am commit 95e3cc13377467b00c183a8c21d2f84b3b30d622 Author: Peng Huang Date: 2009-06-13 06:10:44 +0800 Do not restore states when focus_in, if the enable is disabled. M bus/inputcontext.c commit 7cd6ba06d9a19c663d123982245947162441f8d6 Author: Peng Huang Date: 2009-06-13 05:27:51 +0800 Update da.po. M po/da.po commit a296b6a82b445dfb5ba7f213c4490b960092132e Author: Peng Huang Date: 2009-06-12 14:43:32 +0800 Add vi.po M AUTHORS M po/LINGUAS A po/vi.po commit 59500bdeb5ecaa7324c8a910fe633e6a25dc7252 Author: Peng Huang Date: 2009-06-12 09:54:47 +0800 Support mouse click on lookup table. M bus/engineproxy.c M bus/engineproxy.h M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M bus/panelproxy.h M ibus/engine.py M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibus/panel.py M src/ibusengine.c M src/ibusengine.h M src/ibusmarshalers.list M ui/gtk/candidatepanel.py M ui/gtk/panel.py commit eeed16080380d7e206f46a26cec8635e2b651e8b Author: Peng Huang Date: 2009-06-11 10:31:10 +0800 Redefine the arrow buttons meaning as PageUp & PageDown. M ui/gtk/candidatepanel.py M ui/gtk/panel.py commit 05c7deef8a7deb3ffd1b66ceefa044d61e511337 Author: Peng Huang Date: 2009-06-09 18:24:03 +0800 Add source files into POTFILES.in M po/POTFILES.in commit 8bd33642e1e95107f48206a95ef9a99e07149f44 Author: Peng Huang Date: 2009-06-09 15:42:36 +0800 Update kn.po M po/kn.po commit 5ade818e2724c763c85be4ff8ee1ebfeb38459d4 Author: Peng Huang Date: 2009-06-09 09:10:35 +0800 Add show_im_name schema in ibus.shemas.in M data/ibus.schemas.in commit be5bebbff7aa3de6f656a97ba34d10afd75f6dff Author: Peng Huang Date: 2009-06-09 09:08:04 +0800 Show im name on languagebar M setup/main.py M setup/setup.glade M ui/gtk/languagebar.py M ui/gtk/panel.py commit df464d2b06026dcfcb0d215238333d40bcecd29e Author: Peng Huang Date: 2009-06-08 16:52:38 +0800 Filter release key events follow the hotkey. M bus/inputcontext.c commit a556c9d0eda7a4118ea14e66ce5bfd4175f5f90c Author: Peng Huang Date: 2009-06-08 16:22:50 +0800 Update hi.po M po/hi.po commit d295fde64a1a95de3df72a0dc918be9e8432c37f Author: Peng Huang Date: 2009-06-07 11:32:20 +0800 Add About button in language bar. M ui/gtk/languagebar.py M ui/gtk/panel.py commit 1d58c734d7d2f649786078f3158ee2999c5347a2 Author: Peng Huang Date: 2009-06-07 10:58:57 +0800 Move engineabout dialog into a new python file. M setup/Makefile.am A setup/engineabout.py M setup/main.py M ui/gtk/Makefile.am A ui/gtk/engineabout.py commit e61302623e9315bea1b71d45d6f547ac17bd3a55 Author: Peng Huang Date: 2009-06-05 20:34:35 +0800 Fix some build warnings. M bus/connection.c M bus/dbusimpl.c M bus/ibusimpl.c M client/gtk2/ibusimcontext.c M client/x11/main.c M src/ibus.h M src/ibushotkey.c M src/ibusproperty.c commit 8317b65c5e45e3a4385d08bdd2047e9c04ee414a Author: Peng Huang Date: 2009-06-04 15:24:42 +0800 Update as.po. M po/as.po commit 943d46f3b9c0a2d2ac63bbc6ffd08d822bd990ea Author: Peng Huang Date: 2009-06-04 15:13:33 +0800 Use custom dialog to display engine information M setup/main.py M setup/setup.glade commit eb329bbb039cd0af2f0c53ca4ed8679b387495af Author: Peng Huang Date: 2009-06-04 10:19:55 +0800 Set the default candidates' label to '1234567890abcdef' M ui/gtk/candidatepanel.py commit 548a1c3a72d2ba9e01872a690b9cbd78f84be9d1 Author: Peng Huang Date: 2009-06-04 10:08:45 +0800 Update doc for ibus_lookup_table_new M src/ibuslookuptable.h commit b3691888a8686f53529f4faa66d8f51c2a89b98d Author: Peng Huang Date: 2009-06-04 10:04:16 +0800 Add labels attribute in LookupTable object. M ibus/lookuptable.py M src/ibuslookuptable.c M src/ibuslookuptable.h M ui/gtk/candidatepanel.py commit f5d64481c00aeaa11680a0b95a08d1eef8e8e512 Author: Peng Huang Date: 2009-06-03 16:08:29 +0800 Add help button for showing help message for input method. M setup/enginetreeview.py M setup/main.py M setup/setup.glade commit d2e8f17929a047177e16f4295d957565efc2c3fa Author: Peng Huang Date: 2009-06-02 19:49:34 +0800 Catch exception __sigchld_cb in panel.py M ui/gtk/panel.py commit 523f3fdd19f65195ed39aee7857871bfb9b9b72b Author: Ding-Yi Chen Date: 2009-06-01 18:21:05 +1000 APIDOC: Finished IBusConnection, IBusHotKey, IBusProxy Started IBusInputContext Revised IBusAttribute IBusBus IBusConfigServices, IBusEngine, .. M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus-docs.sgml M docs/reference/ibus/ibus.types M src/ibusattribute.h M src/ibusbus.c M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusengine.c M src/ibuserror.h M src/ibusfactory.h M src/ibushotkey.c M src/ibushotkey.h M src/ibusinputcontext.h M src/ibusproxy.c M src/ibusproxy.h M src/ibusservice.c M src/ibusservice.h commit bcf7868d4a42de8b7c2a54b74615dbe54e83e00d Author: Peng Huang Date: 2009-05-31 11:13:11 +0800 Add verbose argument for ibus_component_start function Do not use g_usleep M bus/ibusimpl.c M bus/main.c M src/ibuscomponent.c M src/ibuscomponent.h commit 01736b4eb9069045e2ec3fc34c295594836726e6 Author: Peng Huang Date: 2009-05-31 10:33:47 +0800 Update pa.po by A S Alam M po/pa.po commit 6878a785ebdb1a16ba3f243e9781d067ee861172 Author: Peng Huang Date: 2009-05-30 15:54:46 +0800 Update or.po by Manoj Giri M po/or.po commit de063eadad301d28901aad9563791436f4611010 Author: Peng Huang Date: 2009-05-26 19:47:11 +0800 Update mr.po & te.po M po/mr.po M po/te.po commit ec1b33141d583c384a655e03d330a4436ff0179f Author: Peng Huang Date: 2009-05-26 15:07:05 +0800 Update bn_IN.po by Runa Bhattacharjee M po/bn_IN.po commit 04cf7519643521fe013b9c82991c87935a924032 Author: Peng Huang Date: 2009-05-26 14:57:58 +0800 Update gu.po by Sweta Kothari M po/gu.po commit f7a607cd69526beec4b174d067dbd5c685474e0f Author: Peng Huang Date: 2009-05-26 08:17:42 +0800 Add information label in setup dailog to tell user the top one is the default M po/ar.po M po/as.po M po/bn_IN.po M po/ca.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hi.po M po/hu.po M po/ibus.pot M po/ja.po M po/kn.po M po/ml.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/ta.po M po/te.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po M setup/setup.glade commit 7ea778e4466087fe20d0e8a30d72dd369a226662 Author: Peng Huang Date: 2009-05-25 16:08:23 +0800 Raise set dialog when click preference in menu. M setup/main.py M ui/gtk/panel.py commit fef66db0cc4784d8cddec6df48fed12bc262a27f Author: Peng Huang Date: 2009-05-25 15:34:54 +0800 Show default IME with BOLD font. M setup/enginetreeview.py commit fd6aa7466f47efb9821333fd52a4a0870a0ac060 Author: Peng Huang Date: 2009-05-25 15:09:05 +0800 Append engine as last one in the engines list. M setup/enginetreeview.py M setup/main.py commit 18760665f021d57d27395275fac729f4f8b3ffff Author: Peng Huang Date: 2009-05-22 11:03:28 +0800 Remove prop copy in inputcontext, to fix properties bug. M bus/inputcontext.c commit affec926199d46d524c32cd144d13893078207fe Author: Peng Huang Date: 2009-05-19 11:30:30 +0800 Make code more readable. M bus/inputcontext.c commit e7136ceb43c16c6553baffba668f1c9c8f00b7ff Author: Peng Huang Date: 2009-05-08 14:25:12 +0800 Keep same order of shortcut keys list. M setup/keyboardshortcut.py M setup/main.py commit 374d4c6ece04c39bc3e828fa19c580a2af9da309 Author: Peng Huang Date: 2009-05-08 14:11:19 +0800 Add git-tag target in Makefile.am M Makefile.am commit 9175186092778e081ea68c732bfd9618221a71a5 Author: Peng Huang Date: 2009-05-08 13:19:10 +0800 Remove old locales define in main.c M client/x11/main.c commit d4a2cd3562bb475c8b70742df9443cad5ed8c2ed Author: Peng Huang Date: 2009-05-08 13:12:46 +0800 Update locale and add --locale-append argument of ibus-x11 M client/x11/Makefile.am A client/x11/locales.h M client/x11/main.c commit 196dac356027448f6128bf94104ba98d9b9de84a Author: Peng Huang Date: 2009-05-08 09:31:53 +0800 Refine coding style. M bus/main.c commit 656299118952511397240102445272fd04d79555 Author: Peng Huang Date: 2009-05-07 12:38:41 +0800 Only print out debug and warning messages when with --verbose M bus/main.c commit 840b71c45255c2b2824b3c6f9449b2e9a87d0d1c Author: Peng Huang Date: 2009-05-07 12:02:24 +0800 Replace strcmp with g_strcmp0 M bus/main.c commit b26f7ed2ac38ff31e805ad0a6706c5ac743d5bbf Author: Peng Huang Date: 2009-05-06 09:18:43 +0800 Update fr.po by julroy67 M po/fr.po commit b61cabbccb496efcd54b82564fbc74100a9d7b1b Author: Peng Huang Date: 2009-04-30 15:43:50 +0800 Destroy the BusServer during exit. M bus/ibusimpl.c commit cb57c882840036ccc2d357e5cdd8a4d58db40f9f Author: Peng Huang Date: 2009-04-30 11:09:41 +0800 Make main loop setupable. M src/Makefile.am M src/ibus.h M src/ibusconnection.c A src/ibusmainloop.c A src/ibusmainloop.h M src/ibusserver.c commit fd9b6b854b310ddcc4d54d5ef6d83f0aea0a57de Author: Peng Huang Date: 2009-04-28 15:43:45 +0800 Add zh_TW.po by Ding-Yi Chen M AUTHORS M po/LINGUAS M po/zh_TW.po commit b666ce4f9dfedffbfc16561948cf550f5e356764 Merge: 3b3f6ac 8825754 Author: Peng Huang Date: 2009-04-28 15:40:24 +0800 Merge commit 'definite/master' commit 3b3f6ac869f364a09233f9d2ef963a4fe6899484 Author: Peng Huang Date: 2009-04-28 15:36:12 +0800 Fix wrong args of trigger signal callbacks M src/ibushotkey.c M src/ibushotkey.h commit 4c11520ea2bb118ce66b97a214bb835b32de70e9 Author: Peng Huang Date: 2009-04-28 15:30:02 +0800 Fix wrong argument when emit IBusHotkeyProfile::trigger signal M src/ibushotkey.c commit 88257549f3ee87c8c935b1792eac92bc0bb0d7e5 Author: Ding-Yi Chen Date: 2009-04-28 14:15:53 +1000 Add back zh_TW.po A po/zh_TW.po commit 17d438103bf4c52ebb20f2b545dd40c2b894060f Author: Peng Huang Date: 2009-04-28 08:28:25 +0800 Add document for IBusModifiersType. M src/ibustypes.h commit 871ed0c8ef5da7eb3c71b51b669cb059d36aa4f4 Author: Peng Huang Date: 2009-04-28 08:22:34 +0800 Refine coding style in ibusinternal.c M src/ibusinternal.c commit 09cc67f8ac7caa624d57d11593de991bc4342088 Author: Peng Huang Date: 2009-04-27 07:43:21 +0800 Update fr.po by Charles-Antoine (cacouret@wanadoo.fr) M po/fr.po commit f9d3b06fbb591093b4df522b8c8e7ab3792bee85 Author: Peng Huang Date: 2009-04-23 10:45:18 +0800 Fix preedit problem in evolution M client/gtk2/ibusimcontext.c commit 0568e398bcd2e6996f900d12c3c61063a8350784 Author: Peng Huang Date: 2009-04-22 13:52:01 +0800 Read the iso_639_2 codes from iso-codes. M ibus/lang.py commit 471683a787afbfa18750e40ea0861349cf20e2c5 Author: Peng Huang Date: 2009-04-21 17:13:03 +0800 Add ml.po by Ani Peter M AUTHORS M po/LINGUAS A po/ml.po commit 2fa0dbb207f5f7d0fac83ab3a052a5245625255b Author: Peng Huang Date: 2009-04-21 14:48:56 +0800 Support drag and drop in engines view. M setup/enginetreeview.py commit 50696ba1d755363ed1f0c07dd44b6bf6fa53b8fb Author: Peng Huang Date: 2009-04-21 07:03:41 +0800 Update ca.po by Xavier Conde Rueda M po/ca.po commit 0c000dab6c34d865eba45723e1706204a753deb1 Author: Peng Huang Date: 2009-04-20 17:31:09 +0800 Check ownership of socket file. M src/ibusbus.c commit c6abf0ef1a84e35fd88e31f4626ee70f6b650d2c Author: Peng Huang Date: 2009-04-20 16:07:22 +0800 Check socket's ownership when client connects to the daemon M src/ibusbus.c M src/ibusconnection.c M src/ibusshare.c M src/ibusshare.h commit 164626ec6ff95341acbdbaef96f9e48016f0fe85 Author: Peng Huang Date: 2009-04-20 15:00:19 +0800 Add authentication code. Only allow root & same user connect to ibus-daemon. M bus/connection.c M bus/server.c M src/ibusconnection.c M src/ibusconnection.h M src/ibusmarshalers.list M src/ibusserver.c M src/ibusserver.h commit 1e4f119f94e8f3a7016500586480b7d292a21223 Author: Peng Huang Date: 2009-04-20 11:02:13 +0800 Remove ibusenumtypes.[ch], they are generated during make. D src/ibusenumtypes.c D src/ibusenumtypes.h commit 97aa04260e00f62f005e420aa601b7e1f43891b8 Author: Peng Huang Date: 2009-04-20 10:50:37 +0800 Create an new engine in bus_input_context_enable if the engine == NULL M bus/inputcontext.c commit 2eb2b3debaff98a6d077186deee5e5f6fcd9ae87 Author: Peng Huang Date: 2009-04-20 10:28:58 +0800 If im is not active, ibus will do nothing when prev engine hotkey is pressed. M bus/inputcontext.c commit fdb88e36b31dd943093a948999bf9eaabd2786fa Author: Peng Huang Date: 2009-04-17 19:04:19 +0800 Add de.po by Fabian Affolter M AUTHORS M po/LINGUAS A po/de.po commit 44e599c7014ec357777b2c61d264515321457fb2 Author: Peng Huang Date: 2009-04-17 18:41:42 +0800 Extend tab to spaces. M docs/reference/ibus/Makefile.am commit 606a6386a9fa56cde3204108dd580a1e1aafb3bb Author: Peng Huang Date: 2009-04-17 18:40:29 +0800 Fix 'make distcheck' errors. M docs/reference/ibus/Makefile.am commit 2a9be24af686724b33520dbaea0b00a4397ae5c7 Author: Peng Huang Date: 2009-04-17 17:12:14 +0800 Change the logic for add & apply buttons. M setup/keyboardshortcut.py commit eb83881e9b8299165f0f113e4f62e133f8a9cf69 Author: Peng Huang Date: 2009-04-17 16:23:08 +0800 Add scrolledwindow for shortcut key list. M setup/keyboardshortcut.py commit f94a7a084edfd08362cca8692826baf24ba06d69 Author: Peng Huang Date: 2009-04-17 14:29:39 +0800 Remove zh_TW.po M po/LINGUAS commit a40e368ccc4c413094ac090d02d4fe8e7eac065f Author: Peng Huang Date: 2009-04-17 14:26:54 +0800 Update coding style. M src/ibusengine.h commit a52bf160d5545c54537ce6fd15e1595b5852a7f0 Merge: a4f5ccb 912f742 Author: Peng Huang Date: 2009-04-17 14:19:05 +0800 Merge commit 'definite/master' commit 912f742d1224bd02167c3da707a3167767e22bc4 Author: dchen@redhat.com Date: 2009-04-17 16:10:21 +1000 API DOC-new: ibusdebug IBusError IBusFactory; and revised. M docs/reference/ibus/Makefile.am M src/ibusbus.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusdebug.h M src/ibusengine.c M src/ibuserror.h M src/ibusfactory.h commit a4f5ccb5db331e12edba798499315b569764233e Author: Peng Huang Date: 2009-04-17 13:56:11 +0800 Do nothing if the IM is not active. M bus/inputcontext.c commit 9b823482f4c60ac98e7509eb638c62b1019f4fa8 Author: Peng Huang Date: 2009-04-17 10:27:23 +0800 Change ibus startup phrase to Applications. M bus/ibus.desktop.in commit 03aa34685379928ba07ce354db8de272d1d87183 Author: dchen@redhat.com Date: 2009-04-15 18:38:51 +1000 API DOC for IBusConnection. M docs/reference/ibus/Makefile.am M src/ibusconnection.c M src/ibusconnection.h commit fc560cda9aa9f6f75c681c21c925a4fea8e4723a Author: dchen@redhat.com Date: 2009-04-15 10:11:36 +1000 Translation zh_TW updated; API DOC for IBusConfigServices; Modify Makefile.am for gtk-doc Surpress tmpl-build.stamp and trim ibus-sections.txt, so no need to keep ibus-sections.txt now. Revised some API DOC, Fix the API DOC of IBusEngine Add zh_TW translation, Add back some API DOC Add back some APIDOC API-DOC IBusBus IBusComponent IBusConfig IBusLookupTable Corrected spelling in ibuscompnent.[ch] Add documentation of ibusbus.c M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am D docs/reference/ibus/ibus-sections.txt M ibus.spec.in M po/LINGUAS M src/ibusbus.c M src/ibusbus.h M src/ibuscomponent.c M src/ibuscomponent.h M src/ibusconfig.c M src/ibusconfig.h M src/ibusconfigservice.c M src/ibusconfigservice.h M src/ibusconnection.c M src/ibusconnection.h M src/ibusengine.c M src/ibusengine.h M src/ibuslookuptable.h M src/ibusobject.h M src/ibusproperty.c M src/ibusservice.h M src/ibustypes.h commit e451b44e05244c673638cf9f54af4252adca55a8 Author: Peng Huang Date: 2009-04-15 11:29:20 +0800 Use mktemp replace $RANDOM M xinput-ibus commit 304e55afe5987e447941cb6aa5ba99c631801b8c Author: Peng Huang Date: 2009-04-15 11:09:07 +0800 Set $IBUS_SESSION_ID if it does not exsit. M xinput-ibus commit a18ca6fecb3180a188bb3571fbb67e6b72b30c67 Author: Peng Huang Date: 2009-04-15 11:02:27 +0800 Fix some problem when use IBUS_SESSION_ID M bus/server.c M src/ibusbus.c M src/ibusshare.c M xinput-ibus commit e61932c0922b189d8680b8cdc6e12d1881c98528 Author: Peng Huang Date: 2009-04-15 10:15:10 +0800 Add $IBUS_SESSION_ID in socket path. M bus/server.c M ibus/common.py M src/ibusbus.c M src/ibusshare.c M src/ibusshare.h commit 25ffd2b7f1952e07a072d94d6ab3409f82d3e8f0 Author: Peng Huang Date: 2009-04-15 07:54:28 +0800 Update te.po by krishna k M po/te.po commit cb890ef456badacbb72f19155b78e7c91f665f27 Author: Peng Huang Date: 2009-04-15 07:52:35 +0800 Add Alt+Release+Alt_R as trigger for Korean people. M data/ibus.schemas.in commit fd94b969dc64594a2d0d7af0518540bc742f65da Author: Peng Huang Date: 2009-04-15 07:50:09 +0800 Add HANDLED_MASK and IGNORED_MASK in python lib M ibus/modifier.py commit 590bb3a8993b029a4b4e46e05c2bfed7d200a8b4 Author: Peng Huang Date: 2009-04-15 07:48:06 +0800 Add IBUS_IGNORED_MASK and IBUS_HANDLED_MASK. M client/gtk2/ibusimcontext.c M src/ibusenumtypes.c M src/ibusinputcontext.c M src/ibustypes.h commit 44fe66329502e318d2a7fd78f80303b122c8def6 Author: Peng Huang Date: 2009-04-15 07:47:34 +0800 Add release mask if the hotkey is a signal key. M setup/keyboardshortcut.py commit 350be1a2e35669a483843fd2a3c9cc86415b3f11 Author: Peng Huang Date: 2009-04-14 18:42:38 +0800 Add IBUS_FORWARD_MASK for ignored key events. M client/gtk2/ibusimcontext.c commit 4332069bdd62573f6411c4912c7a0e15730e9f9b Author: Peng Huang Date: 2009-04-14 17:26:19 +0800 Add break in switch block M client/gtk2/ibusimcontext.c commit 1a0b3f8392ca94099534fc1e6ebcbc66d5d2f443 Author: Peng Huang Date: 2009-04-14 17:06:24 +0800 Add as.po by Amitakhya Phukan M po/as.po commit e1f5dc528e9063b9fbab8c01c2e1a2f313a9bced Author: Peng Huang Date: 2009-04-13 18:52:41 +0800 Change socket file permission to avoid securty issues. M bus/server.c commit 39ae49d1da9de17794021e5f118a7253f1897914 Author: Peng Huang Date: 2009-04-13 15:23:55 +0800 Fix a typo. M client/gtk2/ibusimcontext.c commit 9a69d238ff4ef62cbaeed2627a82e234b7cb5ad8 Merge: 9149a03 584c5c2 Author: Peng Huang Date: 2009-04-13 12:34:14 +0800 Merge commit 'iwaim/master' commit 9149a03e72629e77f676552bda7feb3a4293340f Author: Peng Huang Date: 2009-04-13 12:29:35 +0800 Add hu.po by Sulyok Peti M AUTHORS M po/LINGUAS A po/hu.po commit 15767b6c2ee265ea92b9bd17e52d91c1c960664d Author: Peng Huang Date: 2009-04-13 12:27:10 +0800 Store prev_key event in inputcontext object. M bus/inputcontext.c commit 584c5c27c739a5c759d8e62865d40c4bb618492b Author: IWAI, Masaharu Date: 2009-04-11 03:33:11 +0900 update ja.po M po/ja.po commit 0d0dfd5f17b5b947a8b66dc9f10464bb386e1516 Author: Peng Huang Date: 2009-04-09 13:30:38 +0800 Add as.po by Amitakhya Phukan M AUTHORS M po/LINGUAS A po/as.po commit 6553465ac314dd5d10703bc3bacb61a9bdb715ef Author: Peng Huang Date: 2009-04-09 12:22:45 +0800 Add ta.po by Felix M AUTHORS M po/LINGUAS A po/ta.po commit dab4cf2ae4c17a5de7603de88d57446b0b7ce6e4 Merge: 34db2e0 88e85a7 Author: Peng Huang Date: 2009-04-08 17:15:51 +0800 Merge commit 'origin/master' commit 34db2e09f5f1460e567e61060a6b6a86da750709 Author: Peng Huang Date: 2009-04-08 17:13:37 +0800 Rename te_IN.po to te.po. M AUTHORS M po/LINGUAS A po/te.po D po/te_IN.po commit 88e85a79259c463ec40536b3c9a962fd44a751a0 Author: Peng Huang Date: 2009-04-08 11:25:20 +0800 Update pl.po by Piotr DrÄ…g M po/pl.po commit 1e989dfd70001fb19d0e35ac8700b270ad23fdf7 Author: Peng Huang Date: 2009-04-08 11:23:54 +0800 Update or.po by Manoj Giri M po/or.po commit e47c703020e3cb3291ca04b256c108c68e796fa4 Author: Peng Huang Date: 2009-04-07 18:29:53 +0800 Make lookup table vertical for all locales. M data/ibus.schemas.in commit e25cd87e8b2aed89e687cdf971e25523c93a5165 Author: Peng Huang Date: 2009-04-07 18:01:56 +0800 Update kn.po by Shankar Prasad Venkateshbhat M po/kn.po commit b64ba0bbd722f4ff117c56cc9b9e6958f4d5afbf Author: Peng Huang Date: 2009-04-07 17:56:02 +0800 Add Telugu translation by krishna k M AUTHORS M po/LINGUAS A po/te_IN.po commit 53dd4d5ff8d749cf407f7ae20782064561f2dfc9 Author: Peng Huang Date: 2009-04-07 17:41:26 +0800 Do not crash when ibus-daemon is not running. M client/gtk2/ibusimcontext.c commit 6a2b633a718e16fe7a20c469d715120142b05f28 Author: Peng Huang Date: 2009-04-07 15:43:56 +0800 Update default trigger & next engine hotkeys. M data/ibus.schemas.in commit 2604910179fc49b17075d8440611fd33dc2780de Author: Peng Huang Date: 2009-04-07 15:42:10 +0800 Add zh_HK.po by cchance@redhat.com M AUTHORS M po/LINGUAS A po/zh_HK.po commit 62305a25fcd96bab55c4b91c0b8cc542b2b1d28a Author: Peng Huang Date: 2009-04-07 15:38:13 +0800 Add bn_IN.po by Runa Bhattacharjee M AUTHORS M po/LINGUAS A po/bn_IN.po commit bd9ed2c374711cc8c2958e8f46cf36da02dbf744 Author: Peng Huang Date: 2009-04-07 10:45:42 +0800 Rename gu_in to gu M AUTHORS M po/LINGUAS A po/gu.po D po/gu_IN.po commit 9e3211bb4773c604c6b2b2f69732731df47f85f0 Author: Peng Huang Date: 2009-04-07 10:44:57 +0800 Update mr.po M po/mr.po commit 46e24a871d03179e4525fc420a044855512d55aa Author: Peng Huang Date: 2009-04-07 10:41:02 +0800 Add Hindi translation by Rajesh Ranjan M AUTHORS M po/LINGUAS A po/hi.po commit 45aba8bcc27b8ff47d8ca1e4cf9835491e107c17 Author: Peng Huang Date: 2009-04-07 10:38:36 +0800 Update da.po by Kris Thomsen M po/da.po commit 01d5412ba373ae545be55ba35c49e2692537ee6b Author: Peng Huang Date: 2009-04-07 10:37:02 +0800 Add ar.po by muayyad.alsadi@ojuba.org M AUTHORS M po/LINGUAS A po/ar.po commit 646193035b3754997db71b9d97756b2a70879731 Author: Peng Huang Date: 2009-04-07 10:33:18 +0800 Update mr.po by sandeep shedmake M po/mr.po commit 2690a3c1bea2453c90e4ff841e0e8193452d16a5 Author: Peng Huang Date: 2009-04-06 15:09:07 +0800 Do not translate '[Control+space]' M po/ca.po commit ebfac70977b6f4d368f919f0f2d4561862deeeac Author: Peng Huang Date: 2009-04-06 15:07:46 +0800 Add gujarati translation by Sweta Kothari M AUTHORS M po/LINGUAS A po/gu_IN.po commit 16b03eb2c9973c0f2f5b96842687c96b6218f98b Author: Peng Huang Date: 2009-04-06 11:59:29 +0800 Add catalan translation by Xavier Conde Rueda M AUTHORS M po/LINGUAS A po/ca.po commit 7e78500ba5dd76387dcf58c65be68fd75f02317a Author: Peng Huang Date: 2009-04-06 11:47:44 +0800 Update po files. M po/da.po M po/es.po M po/fr.po M po/ibus.pot M po/ja.po M po/kn.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/zh_CN.po commit 8af16adfcc0d83af6c2cb528dd79db815281c99d Author: Peng Huang Date: 2009-04-06 11:44:45 +0800 Make desktop files translated M bus/ibus.desktop.in M setup/ibus-setup.desktop.in commit 9d0b73db025e460eb289a887ab66d3d2f2714431 Author: Peng Huang Date: 2009-04-06 11:33:44 +0800 Use 'Shift+space' in ko locale as trigger. M data/ibus.schemas.in commit 777c42af86476706d56b40d787d6fd1bd891d8a0 Author: Peng Huang Date: 2009-04-06 11:26:58 +0800 Add 'Alt+Zenkaku_Hankaku' and 'Alt+grave' as trigger in ja locale. M data/ibus.schemas.in commit c5f6c7b041051eeecbdb02d2480e72e62ac598e9 Author: Peng Huang Date: 2009-04-06 09:40:04 +0800 Change "previous input method:" to "Previous input method:" in setup. M po/da.po M po/es.po M po/fr.po M po/ibus.pot M po/ja.po M po/kn.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/zh_CN.po M setup/setup.glade commit 46780949a15c4e2e525dabb6e54b0ff0c1a2c737 Author: Peng Huang Date: 2009-04-06 09:35:58 +0800 Change 'engine' to 'input method' in language panel. M po/da.po M po/es.po M po/fr.po M po/ibus.pot M po/ja.po M po/kn.po M po/mr.po M po/or.po M po/pa.po M po/pl.po M po/sr.po M po/sr@latin.po M po/zh_CN.po M setup/main.py M ui/gtk/languagebar.py commit 40b52f16b54171492ba76bb257f544b8122fd3a4 Author: Peng Huang Date: 2009-04-05 23:10:18 +0800 Update pl.po by Piotr DrÄ…g M po/pl.po commit 87ca08bfacb5af34df40594dba2b79fe81503676 Author: Peng Huang Date: 2009-04-04 13:39:31 +0800 Change the comment of Modifiers mask M src/ibustypes.h commit a5bc4b13cbc22baecb41836e643abdc9e2faeaf2 Author: Peng Huang Date: 2009-04-04 13:28:08 +0800 Fix crash when engine is destroyed. M src/ibusfactory.c commit 23a12b33ad321da4db75a058b9d5010f8190f1ca Author: Peng Huang Date: 2009-04-04 13:00:43 +0800 Just call ibus_input_context_process_key_event in snooper callback. M client/gtk2/ibusimcontext.c commit f6cc29cabc88f968ff9a8196e135934e7b3ca83e Author: Peng Huang Date: 2009-04-04 09:24:56 +0800 Update fr.po by julroy67 M po/fr.po commit 4429e4d1bb6de1c6aea5c5080b346ce8bdd51713 Author: Peng Huang Date: 2009-04-03 20:16:20 +0800 Add Kannada translation by Shankar Prasad Venkateshbhat M AUTHORS M po/LINGUAS A po/kn.po commit 1104f938d8906688e2a32c9204d7205e90803225 Author: Peng Huang Date: 2009-04-03 16:19:30 +0800 Does not translate [Control+space] M po/sr.po M po/sr@latin.po commit f89a71220141320b4f5f59268ee19a25b3c5208d Author: Peng Huang Date: 2009-04-03 16:15:19 +0800 Add Danish translation by Kris Thomsen M AUTHORS M po/LINGUAS A po/da.po commit 5ec29c3ddc44816f932ab1ae57ba4b1ce8695cfd Author: Peng Huang Date: 2009-04-03 13:13:06 +0800 Fix crash when ibus-daemon shutdown or restart M client/gtk2/ibusimcontext.c M src/ibusbus.c commit aa0a469afe49da00dc1be96809df91fc74dc60e9 Author: Peng Huang Date: 2009-04-03 10:48:50 +0800 In ko locale, the lookup table will be vertical by default M data/ibus.schemas.in commit c3177a4b9d3fd2ca4150dcca96225df9303d96d0 Author: Peng Huang Date: 2009-04-03 10:39:22 +0800 Add Spanish translation by Domingo Becker M AUTHORS M po/LINGUAS A po/es.po commit e2194783810fc3b572a419ea3027a938f7357959 Author: Peng Huang Date: 2009-04-03 10:23:19 +0800 Use 'make update-po' to update po files. M po/fr.po M po/ja.po M po/pa.po M po/pl.po commit 11d929a343036a33d62a04ee865e18774b154e13 Author: Peng Huang Date: 2009-04-03 10:21:56 +0800 Tranlsate some msg in zh_CN.po M po/zh_CN.po commit 457bd430bf8f6f0338cc3ded1cfc61fb53c63ce6 Author: Peng Huang Date: 2009-04-03 10:10:11 +0800 Add Polish translation by Piotr DrÄ…g M AUTHORS M po/LINGUAS A po/pl.po commit cae3c41d789705c814dd0cd15c9d9a559fec7ba0 Author: Peng Huang Date: 2009-04-03 10:03:46 +0800 Add Oriya translation by Manoj Giri M AUTHORS M po/LINGUAS A po/or.po commit c964bc75c2308ad4355b753e256f4aa0684f0050 Author: Peng Huang Date: 2009-04-02 15:16:07 +0800 Add mr.po by sandeep shedmake M AUTHORS M po/LINGUAS A po/mr.po commit 68ce68c02044cbb50fa970dc3dec668954ebec35 Author: Peng Huang Date: 2009-04-02 15:14:23 +0800 Add ibus.pot M po/.gitignore A po/ibus.pot commit cc84817859e933d8728ec773898737d07786cd72 Author: Peng Huang Date: 2009-04-02 15:09:12 +0800 Add Serbian translations by MiloÅ¡ KomarÄević M AUTHORS M po/LINGUAS A po/sr.po A po/sr@latin.po commit 86be0ab7838a9b00ebf6c26675aa01007020bf43 Author: Peng Huang Date: 2009-04-02 15:04:50 +0800 Remove some useless code. M src/keyname-table.h commit ec032b9d8a80bb313ea10f13fd161b4022c2899a Author: Peng Huang Date: 2009-04-02 14:57:57 +0800 Update pa.po by A S Alam . M po/pa.po commit bff536620bd48884160f0186ee048d98feddf725 Author: Peng Huang Date: 2009-03-31 11:13:03 +0800 Fix make distcheck errors. M bus/Makefile.am M data/Makefile.am M po/POTFILES.in M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po M setup/Makefile.am commit 9397b0a70a8b645da67f7aab3d1c113c1b21ecf6 Author: Peng Huang Date: 2009-03-30 21:15:33 +0800 Use a global focus_im_context to track the focus, and deliver the key event to the focus_im_context. M client/gtk2/ibusimcontext.c commit d6ffbc6f62d9599a710801d3dc6c5132f1b5cccb Author: Peng Huang Date: 2009-03-30 17:43:29 +0800 Update po files. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po commit ccf200f97d67716f5cab683f6c035bf9a089a542 Author: Peng Huang Date: 2009-03-30 17:41:35 +0800 Localize desktop files and gconf schemas file. M autogen.sh M bus/Makefile.am D bus/ibus.desktop A bus/ibus.desktop.in M configure.ac M data/Makefile.am D data/ibus.schemas A data/ibus.schemas.in M setup/Makefile.am D setup/ibus-setup.desktop A setup/ibus-setup.desktop.in commit 2456d5b4d3a3d2dc97411551b871e6de1fd3e506 Author: Peng Huang Date: 2009-03-30 16:09:59 +0800 Fix indent problem in ibus.schemas. M data/ibus.schemas commit 0a16fb72e94db3115796db65afff10aad141371b Author: Peng Huang Date: 2009-03-30 14:47:09 +0800 Fix problem when create socket address. M client/gtk2/ibusimcontext.c M src/ibusshare.c commit aab43511420f04c37d96c39b6b807fe799036b9c Author: Peng Huang Date: 2009-03-30 14:31:15 +0800 Get display name from gdk_display_get_name M client/gtk2/ibusimcontext.c M src/ibusshare.c M src/ibusshare.h commit 81963e23e2688f28ef0acbdbf72d831be097bd62 Author: Peng Huang Date: 2009-03-30 14:13:30 +0800 Use "unix" as hostname if hostname is empty. M ibus/common.py M src/ibusshare.c commit 15e6b996bc63dcc6cf97802ce1905d2aa582144c Author: Peng Huang Date: 2009-03-30 14:07:27 +0800 Does not include X screen number in socket address. M ibus/common.py M src/ibusshare.c commit 7600d42c7cb5ccd91f1da694e8196fc8f57cba7d Author: Peng Huang Date: 2009-03-29 13:44:25 +0800 Use gtk key snooper to get the key events. M client/gtk2/ibusimcontext.c commit a3b47259c4bf15d5e0afb759acb2a68ebb7724b4 Author: Peng Huang Date: 2009-03-29 09:25:39 +0800 Change ibuscontext => ibusimcontext; ibus_context => ibuscontext M client/gtk2/ibusimcontext.c commit e48dfe9377db9c40fbfdf81515e730072cef362a Author: Peng Huang Date: 2009-03-29 09:15:10 +0800 Remove private struct. M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h commit 0236cd777e6088296a2ac51caf8d859eeac5d557 Author: Peng Huang Date: 2009-03-29 08:27:11 +0800 Emit preedit-start & preedit-end signals. M client/gtk2/ibusimcontext.c commit 56760794ebe6bb23e2fe2fdc5e3dca825be54df7 Author: Peng Huang Date: 2009-03-28 12:12:47 +0800 exit 1 when some command failed. M autogen.sh commit 483ebd376b30e905998c72c4e9c3dd095707d63e Author: dchen@redhat.com Date: 2009-03-27 14:19:04 +1000 Add ibus-sections.txt as gtk-doc needs it to show the title correctly. A docs/reference/ibus/ibus-sections.txt commit e3fe226e2ddbe7754ed9cb0c60301e4959075eb1 Author: dchen@redhat.com Date: 2009-03-27 14:17:35 +1000 API-DOC and Fix iBus Google issue 320. M .gitignore M configure.ac M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am M docs/reference/ibus/ibus-docs.sgml M ibus.spec.in M src/ibusattribute.h M src/ibusconnection.h M src/ibusengine.c M src/ibusenginedesc.h M src/ibusobject.h M src/ibusproperty.h M src/ibustext.h M src/ibustypes.h commit 7c6b337ece598b5c0cf9c92b0888b45f8770ff83 Author: Peng Huang Date: 2009-03-26 14:20:08 +0800 Fix problem when remove all hotkeys. M setup/main.py commit 11e8e771f4de51fabfed74f1b2e9a66215751da0 Author: Peng Huang Date: 2009-03-23 14:51:06 +0800 Set cursor pos to zero in ibus_lookup_table_clear. M src/ibuslookuptable.c commit 3dc5912b21668edb0c7f9656b40c2c4586f75557 Author: Peng Huang Date: 2009-03-23 10:17:04 +0800 Check reply of ProcessKeyEvent. M bus/engineproxy.c commit 2bd2d52476f4828f915ee54182cc0a654f05af53 Author: Huang Peng Date: 2009-03-22 20:31:06 +0800 Add method ibus_engine_update_lookup_table_fast, it only sends current page. M src/ibusengine.c M src/ibusengine.h commit bdb7e54c92b6a111a69889b85a17452b6e9d9abf Author: Huang Peng Date: 2009-03-22 19:22:32 +0800 Use GO_DOWN & GO_UP icons when candidates window is horizontal M ui/gtk/candidatepanel.py commit 4ecbd9354383b58a6345e3f3ac43552112c42897 Author: Huang Peng Date: 2009-03-22 09:30:34 +0800 Fix a typo. M bus/inputcontext.c commit 1b8433a38bb1bca0b2378a6a06568b73fc307991 Author: Huang Peng Date: 2009-03-20 18:34:05 +0800 Update fr.po by Julien M po/fr.po commit 203bc91e596a24d3935ace3f8f6827eace79b58e Author: Huang Peng Date: 2009-03-20 17:25:42 +0800 Open a new line after M src/ibusenginedesc.c commit ab417dd043ee6ba338518758c1c833f6ccbb7bdf Author: Huang Peng Date: 2009-03-20 11:24:27 +0800 Update ja.po by iwaim.sub M po/ja.po commit bf9ed69bfa4ee7c82397ba28b18869e1c80cc1a7 Author: Huang Peng Date: 2009-03-20 09:52:51 +0800 Change "Dynamically" to "When active" in setup window. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po M setup/setup.glade commit 4b3a45829005626d9f6e23dfde97731b70e2bdeb Author: Huang Peng Date: 2009-03-11 15:56:47 +0800 Remove is_press argument from gtk im module. M client/gtk2/ibusimcontext.c commit 9f2ca25b5638cc1e3f10a2671472dbd72e45e479 Author: Huang Peng Date: 2009-03-11 15:54:39 +0800 Remove is_press from ForwardKeyEvent signal. M src/ibusinputcontext.c commit 6af7e9f2f1ff18e4a6334d15f14c27e3edf2111c Author: Huang Peng Date: 2009-03-11 15:51:34 +0800 Implement ibus_engine_forward_event_key function. M src/ibusengine.c M src/ibusengine.h commit 3a560b8f18128c28fa759eb32d10bee7fd86e008 Author: Huang Peng Date: 2009-03-11 14:39:30 +0800 Update po files. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po commit 0dc9376baaf67e8fcb363b1c9623bd634e35ccff Author: Huang Peng Date: 2009-03-11 14:38:14 +0800 Fix problems during making distcheck M src/Makefile.am commit 09c1fe4ecaf790633d76408c4754ce535da6f4c5 Author: Huang Peng Date: 2009-03-11 14:28:50 +0800 Fix translation msg in zh_CN.po. M po/zh_CN.po commit a8f1c7d06886f282ceeb2637a843935287eaa46e Author: Huang Peng Date: 2009-03-11 14:18:11 +0800 Change sensitive of custom font label. M setup/main.py M setup/setup.glade commit cd8f83a89ae5f80a60fe344a56ef82206dc45725 Author: Huang Peng Date: 2009-03-11 14:14:27 +0800 Update setup ui, follow gnome UI guidelines. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po M setup/main.py M setup/setup.glade commit edbab2fa45e5775249e426309cee6b5254ab0342 Author: Huang Peng Date: 2009-03-09 17:23:50 +0800 Remove some debug output. M bus/matchrule.c commit 21b79630873c79ced591cf5e909660cf4c1bda69 Author: Huang Peng Date: 2009-03-09 17:21:45 +0800 Implement ibus_bus_get_config function. M bus/dbusimpl.c M bus/matchrule.c M src/ibusbus.c M src/ibusbus.h M src/ibusproxy.c M src/ibusproxy.h M src/test-proxy.c commit a1ac8682c81051518ad0ff613958a0b96054091c Author: Huang Peng Date: 2009-03-06 10:42:28 +0800 Implement language panel: Always hide feature. M data/ibus.schemas M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po M setup/main.py M setup/setup.glade M ui/gtk/languagebar.py M ui/gtk/panel.py commit d415e945d62d69c097cf6aae701f42806529dfb7 Author: Huang Peng Date: 2009-03-05 14:39:12 +0800 Process release key event correctly. M bus/inputcontext.c M src/ibushotkey.c M src/ibushotkey.h commit 740acea3c7103af63f4e572c4e4c3ae39153430e Author: Huang Peng Date: 2009-03-05 14:26:10 +0800 Fix name error. M src/ibuskeynames.c commit 5b4fafc09b31022d8eb031faf40692007e49e319 Author: Huang Peng Date: 2009-03-05 13:18:40 +0800 Do not restore preedit in _enabled_cb. M client/gtk2/ibusimcontext.c commit 57f551e57f9cc8c11a8e572f1db73036ad0e4d2b Author: Huang Peng Date: 2009-03-05 13:16:06 +0800 Save lookup table in input context. M bus/inputcontext.c commit 839bc5b981f72e391c1e33bda9a12d37d17a0d7f Author: Huang Peng Date: 2009-03-04 18:16:05 +0800 Store and restore properties for input context. M bus/inputcontext.c commit fa8b528ae670b04ec75f3c634dec032e7eee0cca Author: Huang Peng Date: 2009-03-04 18:11:55 +0800 Implement ibus_prop_list_update_property. M src/ibusproperty.c M src/ibusproperty.h commit 2fd4b2e2a4c53fb51e3c9b2a2909e1425bcd3252 Author: Huang Peng Date: 2009-03-04 17:27:12 +0800 Save and restore status of InputContext in focus_in & out. M bus/inputcontext.c commit 9f58762089f0a4b5ec887cd972b4762e7e46455b Author: Huang Peng Date: 2009-03-02 13:29:32 +0800 Limit numeber of hotkey. M setup/keyboardshortcut.py commit 9c00f8f1d762db1cd61dd1a758e587df6c7dde96 Author: Huang Peng Date: 2009-03-02 13:13:09 +0800 Refine coding style. M bus/main.c commit e1c8775b084f3c5080e185a94d0e41f185526eba Author: Huang Peng Date: 2009-03-02 13:05:22 +0800 Fix some compile problems with Sun C compiler. M bus/Makefile.am M bus/main.c M client/x11/main.c M configure.ac M src/ibushotkey.c M src/ibusmessage.c M src/ibuspendingcall.c M util/IMdkit/i18nX.c commit cd4d9b6ebfa4a66ba6bd89c5b7d2b34eb25864af Author: Huang Peng Date: 2009-02-28 21:42:11 +0800 Assert input of ibus_text_new_* M src/ibustext.c commit 3ff6035410d535ec17e5049be43c09dcd229e7b9 Author: Huang Peng Date: 2009-02-28 19:15:49 +0800 Sort the languages in input methods combobox. M setup/enginecombobox.py commit c28cb8a517b8edb835b5d4b37c914ce6b93e39bd Author: Huang Peng Date: 2009-02-28 19:08:12 +0800 Clear preedit when input context is disabled. M client/gtk2/ibusimcontext.c commit 0b8d0067b475aade2bf5f8de7db5dd47d8a59b5e Author: Huang Peng Date: 2009-02-28 18:32:59 +0800 Fix make distcheck failed. M Makefile.am M data/Makefile.am M ibus/Makefile.am commit a5087b245906efd4f63800a6f5e701f84c218d6e Author: Huang Peng Date: 2009-02-28 18:27:36 +0800 Fix compile warnings. M bus/server.c commit 0eea8dfe33c68589406f71d411875b862ddfb377 Author: Huang Peng Date: 2009-02-27 16:55:26 +0800 Load default input method engine in right moment. M bus/dbusimpl.c M bus/ibusimpl.c commit be022f73729a0405d1bdba7fb3ef2549ff418977 Author: Peng Huang Date: 2009-02-27 13:46:06 +0800 Close all fds before restart M bus/ibusimpl.c commit 23c1bfcf064909af2075ebc02fc0772fb07a5a1f Author: Huang Peng Date: 2009-02-27 09:37:49 +0800 Add data/Makefile.am. A data/Makefile.am commit 8db276818d12776ba0cd7819972fa5ce30005164 Author: Huang Peng Date: 2009-02-27 09:07:18 +0800 Move icons to data/icons. Install schemas. M Makefile.am M configure.ac A data/ibus.schemas A data/icons/Makefile.am A data/icons/engine-default.svg A data/icons/ibus-help.png A data/icons/ibus-keyboard.svg A data/icons/ibus-locale.svg A data/icons/ibus-setup.svg A data/icons/ibus-zh.svg A data/icons/ibus.svg D icons/Makefile.am D icons/engine-default.svg D icons/ibus-help.png D icons/ibus-keyboard.svg D icons/ibus-locale.svg D icons/ibus-setup.svg D icons/ibus-zh.svg D icons/ibus.svg D setup/ibus.schemas commit fc9e5a5b087f68dc1239ad7629a1575fb83510ac Author: Huang Peng Date: 2009-02-27 08:11:05 +0800 Add lookup_table_oritation schema. M setup/ibus.schemas commit dbf277afecb71c3117f4c4280a30c11b7febddba Author: Huang Peng Date: 2009-02-27 07:58:56 +0800 Fix indent of ibus.schemas. M setup/ibus.schemas commit e899ad130ee90887c5d3b3e59417d18c5d5c041c Author: Huang Peng Date: 2009-02-27 07:56:23 +0800 Fix a typo in ibus.schemas. M setup/ibus.schemas commit 7bfdbbc429dbbb02ef7b38d0381ef578e6252509 Author: Peng Huang Date: 2009-02-27 07:51:06 +0800 Add ibus.schemas for gconf A setup/ibus.schemas commit 6e92cdd6c64954f5d21e9c73f444b0ca3ecdd9ec Author: Peng Huang Date: 2009-02-27 07:01:02 +0800 Change some methods of matchrule M bus/dbusimpl.c M bus/matchrule.c M bus/matchrule.h commit 7e8d1bfad188854ad45550a2c2467b5caf83923c Author: Huang Peng Date: 2009-02-27 06:29:26 +0800 Check dbus-python in configure.ac. M configure.ac commit f3eb21d578df711c707a333714d7e05a50d7e39c Author: Huang Peng Date: 2009-02-25 18:32:49 +0800 Check ucs4 and unichar when create IBusText object. M src/ibustext.c commit 1afc03e795559a06be1ed117fa2e8c52db016b66 Author: Huang Peng Date: 2009-02-25 14:37:09 +0800 Change title of API docs. M docs/reference/ibus/ibus-docs.sgml commit 9620c9eecd4b435ec1f3434a43e4d06807275f82 Author: Huang Peng Date: 2009-02-25 11:24:50 +0800 Update po files. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po commit e21e45aee092fa6681aafeea9c30013977a88deb Author: Peng Huang Date: 2009-02-25 11:11:24 +0800 Give out more information when server listens failed. M bus/server.c M src/ibusserver.c commit 957b778d361fa270e37bc403c2640698f4718e29 Author: Peng Huang Date: 2009-02-25 11:03:31 +0800 Check current uid during startup. M bus/main.c commit 9ec145ef02562f9f42618e86c751141d860d3db6 Author: Peng Huang Date: 2009-02-25 10:30:03 +0800 Refine coding style. M src/ibusserver.c commit d9d401145a59e095753e86d05c55bd57e3735596 Author: Huang Peng Date: 2009-02-24 17:04:27 +0800 Replace priority in EngineDesc with rank. M bus/ibusimpl.c M src/ibusenginedesc.c M src/ibusenginedesc.h commit 8df6310b6eaf26d31daf6d4fdf4d4c41265e64ec Author: Huang Peng Date: 2009-02-24 16:50:13 +0800 Fix typo. M src/ibusenginedesc.c commit add104e86d0c4c53d5eea3f5b4dcc9db95b0f604 Author: Huang Peng Date: 2009-02-24 16:38:47 +0800 Sort the default preload engines by priority. M bus/ibusimpl.c commit 388debd8ad1fdaefd2ad42c872f9d7c5577fb73c Author: Huang Peng Date: 2009-02-24 16:38:22 +0800 Add priority in IBusEngineDesc. M src/ibusenginedesc.c M src/ibusenginedesc.h commit db492c157773af0a932ca1fe6b9a6b8b977e6194 Author: Huang Peng Date: 2009-02-24 16:28:22 +0800 Enable default engines by locale name. M bus/ibusimpl.c M bus/registry.c M bus/registry.h commit 0ea4adadcba4a81bfca597d6aa587d461c3c6644 Author: Huang Peng Date: 2009-02-24 08:27:55 +0800 Fix crash when parse component. M src/ibuscomponent.c commit f0409715607bd13f9c0819e59fe19f3ae8864bc4 Author: Huang Peng Date: 2009-02-24 08:21:56 +0800 Update ibus.desktop. M bus/ibus.desktop commit 9265deb7c084c5e37b8402de8d38c0e7b0671e2b Author: Huang Peng Date: 2009-02-24 08:13:18 +0800 implement next_engine & prev_engine hotkeys. M bus/ibusimpl.c M bus/inputcontext.c M bus/inputcontext.h commit cc16419cf27d12f2be12774d71399fd82cf497e3 Author: Peng Huang Date: 2009-02-23 19:08:47 +0800 Hide "Auto start ibus on login" checkbox. M setup/setup.glade commit 1e554a00e8bbdc363246b1fbb7261810bce1b819 Author: Peng Huang Date: 2009-02-23 18:49:28 +0800 Do not install ibus.sh. M Makefile.am commit 035272400f729b04e7be439974d6cc1b9eb4a005 Author: Peng Huang Date: 2009-02-23 18:45:31 +0800 Install ibus.desktop in $(sysconfdir/xdg/autostart M bus/Makefile.am M bus/ibus.desktop commit 7ba4f03df637ff1df2b441c5f754917b334130f7 Author: Peng Huang Date: 2009-02-23 16:36:20 +0800 Install ibus.sh to /etc/X11/xinitrc.d. M Makefile.am A ibus.sh commit 72c1294372247736f566ed35cee45710d738a5fd Author: Peng Huang Date: 2009-02-23 15:17:58 +0800 Use "Input Methods" replace "Engines" in setup ui. M setup/setup.glade commit 1e9afd4067805cb1f2bbdfd64f1b0d93e6e39692 Author: Peng Huang Date: 2009-02-23 15:09:11 +0800 Use "No input method" replace "Disable" in im menu. M ui/gtk/panel.py commit f86438bf0ee2f83f4744226e4d640503ff985b12 Author: Peng Huang Date: 2009-02-23 15:05:50 +0800 Add Disable menu item on Input Menu. Use it to disable InputContext. M bus/inputcontext.c M ibus/inputcontext.py M ibus/interface/iinputcontext.py M ui/gtk/panel.py commit 4c180f55b8e485aa0ac1bc1af2aa0d1b99886470 Author: Peng Huang Date: 2009-02-23 14:37:19 +0800 Update tooltip of status icon. M po/zh_CN.po M ui/gtk/panel.py commit 65672c00388ba8c3e98a39e700d097c9c7472172 Author: Peng Huang Date: 2009-02-23 14:23:47 +0800 Change default valut of panel/auto_hide to True. M setup/main.py commit 72effa14e025424caad3e94c4b76408c803f27be Author: Peng Huang Date: 2009-02-23 14:19:57 +0800 Auto hide panel by default. M ui/gtk/panel.py commit 7720f5b1cb5f32776938dd79424d5c443c1bd7fd Author: Peng Huang Date: 2009-02-23 14:17:21 +0800 ./configure will be failed when miss gconf-2.0 M configure.ac commit 77085349e1145913b0e162c9676b5852fa7878a0 Author: Peng Huang Date: 2009-02-23 11:30:00 +0800 Only export symbols start with ibus_ M src/Makefile.am commit d7d49a217a5d2b11487a09d38c12fb34b487827d Author: Peng Huang Date: 2009-02-23 11:18:36 +0800 Remove unused dependence pygobject M configure.ac commit af0e05bbd5590fcb8b5255ab30ca0b109ba31f09 Author: Huang Peng Date: 2009-02-18 17:50:16 +0800 Show IM language & name in engine list. M setup/enginetreeview.py commit 1e13b3091c7b474c8b51c46eae83074002c0c0cf Author: Huang Peng Date: 2009-02-18 17:26:19 +0800 Show default icon on language bar for engine without icon. M ui/gtk/panel.py commit fb135922afab3b86365a251ea708cb4108f93835 Author: Huang Peng Date: 2009-02-18 16:37:19 +0800 Call ibus_object_destroy in bus_input_context_unset_engine. M bus/inputcontext.c commit 3e72c5d339c5ca998bf06f0ebc91466dd90c16e6 Author: Huang Peng Date: 2009-02-18 16:21:26 +0800 Fix BusEngineProxy leak. M bus/ibusimpl.c commit b680ae1c4bcd1ed2ce72ee8e0bfcae4d929be64d Author: Huang Peng Date: 2009-02-18 12:54:16 +0800 Remove unused code in ibusconfig.c M src/ibusconfig.c commit b88b8cecf5c0bbfacad2d0ca24c5af2b4b6a1915 Author: Huang Peng Date: 2009-02-18 11:25:13 +0800 Change the title fo setup dialog. M setup/setup.glade commit 7e2c540cf96674b14db24ab8763654a915a590a1 Author: Huang Peng Date: 2009-02-18 11:16:08 +0800 Hide about tab in setup dialog. M setup/setup.glade commit 4899394c4fe37bf17551c8b153f9bd9d8a08cfaf Author: Huang Peng Date: 2009-02-18 11:14:22 +0800 Adjust setup UI. M setup/setup.glade commit 02600a546271422a3c679f3344073412755f60c4 Author: Huang Peng Date: 2009-02-18 10:53:08 +0800 Change title of ibus-setup dialog. M setup/setup.glade commit 07b85f13393332b60d785a2f41c3222e0f4b25b7 Author: Huang Peng Date: 2009-02-17 17:52:16 +0800 Update po files. M po/fr.po M po/ja.po M po/pa.po commit bef0025c90f721937bcd98d354974f0082026ed6 Author: Huang Peng Date: 2009-02-17 17:47:47 +0800 Add ibus-docs.sgml. M docs/reference/ibus/.gitignore M docs/reference/ibus/Makefile.am A docs/reference/ibus/ibus-docs.sgml commit d509f1529f316165e239ac49caaaa05c08d6853c Author: Huang Peng Date: 2009-02-17 16:06:22 +0800 Update zh_CN.po. M po/zh_CN.po commit be16cc6eb48ea98e1104abf77f2adb85e5976493 Author: Huang Peng Date: 2009-02-17 16:05:30 +0800 Add setup/enginecombobox.py. M po/POTFILES.in commit b5596bae0e81ccdd023999fbc15e7976ad88abbe Author: Huang Peng Date: 2009-02-17 13:19:47 +0800 Use engine-default.svg for IM without icon M ui/gtk/icon.py M ui/gtk/panel.py commit 65188367b7ae20b0c7a79d8c3dc9649e76ea433c Author: Huang Peng Date: 2009-02-17 12:55:12 +0800 Show 'Select an input method' in Engine select ComboBox. M setup/enginecombobox.py commit 2a608292745a8caedbb1b19e019346e27c535725 Author: Huang Peng Date: 2009-02-17 12:45:30 +0800 Use right icon for engine without icon. M setup/enginecombobox.py M setup/enginetreeview.py commit d19d55944eed84a32a874b6e9b080f9bddb67a5b Author: Huang Peng Date: 2009-02-17 09:51:24 +0800 Use DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE in introspect. M bus/inputcontext.c commit 180f762a1b0a6a4caedec37e126376008e46da19 Author: Huang Peng Date: 2009-02-16 14:18:01 +0800 Fix typo. M src/ibusengine.c M src/ibusmarshalers.list commit fcf4af4736529e4a65f3213cd1f1157b7c258811 Author: Peng Huang Date: 2009-02-17 09:37:35 +0800 Use NULL to replace 0 as the last argument of g_object_new. M src/ibusattribute.c M src/ibusfactory.c M src/ibushotkey.c M src/ibusproperty.c M src/ibusserializable.c M src/ibustext.c commit 50453e4380288f343af04e02bf9e50ea438f198c Author: Huang Peng Date: 2009-02-16 13:55:12 +0800 Disable inputcontext when the engine is destroyed. M bus/inputcontext.c commit 57d3b559648c3674a64a8031d30456c69cb29eae Author: Huang Peng Date: 2009-02-16 13:26:55 +0800 Use guint to replace gint for state argument of property_activate method. M src/ibusengine.c M src/ibusengine.h commit 0228a5cf757e59fda62e32cfd91282b74d258605 Author: Huang Peng Date: 2009-02-16 13:22:01 +0800 Use ibus_message_new_error_printf correctly in ibusengine.c M src/ibusengine.c commit be4490a1893be27c65c35285776644902f466310 Author: Huang Peng Date: 2009-02-16 12:47:48 +0800 Create PROPERTY_* signals correctly and refine coding style. M src/ibusengine.c commit aa46b3e3a1956074ce4ddbb22dae1af25f3f094e Author: Huang Peng Date: 2009-02-16 10:36:03 +0800 Fix compile warnings. M client/x11/main.c commit a8869d09f5764d1bf2d37ef6c4d90caa1dc35c11 Author: Huang Peng Date: 2009-02-16 10:35:37 +0800 Do not call ibus_connection_flush in ibus_bus_exit to avoid crash. M src/ibusbus.c commit f77a0cb12e8349e097d7869528f57c29d05d02d9 Author: Huang Peng Date: 2009-02-15 16:31:26 +0800 Add --copy arguments on gtkdocize command. M autogen.sh commit 227f950b2fae0ff5c37d773cb41f864a15138967 Author: Huang Peng Date: 2009-02-15 16:28:26 +0800 Move ldconfig from main to libs rpm. M ibus.spec.in commit 6b7c922f315c7817a6c64533f8b8eed7946eaa3d Author: Huang Peng Date: 2009-02-15 16:11:30 +0800 Refine coding style. M bus/ibusimpl.c M bus/main.c M src/ibusbus.c commit c4d1ac55757c91abb56682a4c349abe2711d0cea Author: Huang Peng Date: 2009-02-15 15:59:50 +0800 Adjust the languagebar extend policy. M ui/gtk/languagebar.py commit 27600c499fdf8a57ffa4e27f436099ad4eaa89f0 Author: Huang Peng Date: 2009-02-15 15:51:16 +0800 Update rpm spec to move libibus.so to ibu-libs.rpm. M ibus.spec.in commit 2cc05f88271b213d98b6fada10283f1a2fe39caa Author: Huang Peng Date: 2009-02-15 15:40:54 +0800 Make language transparent when inactivate. M ui/gtk/languagebar.py M ui/gtk/panel.py commit 05f1fc037cd2113da03315fb863352f6cdfceee6 Author: Huang Peng Date: 2009-02-15 15:09:53 +0800 Make language bar left extend when language is close to right edge of screen. M ui/gtk/languagebar.py commit 06c4f228a3176b88947523bf635d49e0fee9b978 Author: Huang Peng Date: 2009-02-15 14:51:41 +0800 Not call FocusIn & FocusOut methods of engines, if input context is disabled. M bus/inputcontext.c commit be18567eac632c9fd6ef6ff14576d43b02f67d17 Author: Huang Peng Date: 2009-02-15 14:41:23 +0800 Remove gnome-python2-gconf from requires in spec. M ibus.spec.in commit 5eb52e011238028cb81e7c71e39b4d506c34e96e Author: Huang Peng Date: 2009-02-15 14:27:37 +0800 Fix a typo, and create the engine after create the input context. M bus/engineproxy.c M bus/ibusimpl.c commit fc855ccfe89d59d2d5a1dc401ef6b1074a6a74c6 Author: Huang Peng Date: 2009-02-15 14:27:03 +0800 Add SetCapabilities on org.freedesktop.IBus.Engine interface. M ibus/engine.py M ibus/interface/iengine.py commit 3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d Author: Huang Peng Date: 2009-02-15 14:25:38 +0800 Implement several methods of IBusLookupTable. M src/ibuslookuptable.c M src/ibuslookuptable.h commit fa8ead03037eb3cd5a522db1452a847fcd32ac57 Author: Huang Peng Date: 2009-02-14 20:24:45 +0800 Refine code. M bus/inputcontext.c commit 47c8a11d3a781478dc0f3d3f0e1d565ec63dd429 Author: Huang Peng Date: 2009-02-14 19:45:24 +0800 Use --xim replace -x. M xinput-ibus commit 916f4a43c33d922a39e98f082214f04c36604806 Author: Huang Peng Date: 2009-02-14 19:44:32 +0800 Add G_MOSULE_EXPORT on some functions. M client/gtk2/ibusim.c commit a871e41e512c4a977d9b6504e0f166ed08c0f216 Author: Huang Peng Date: 2009-02-14 19:41:56 +0800 Add API: ibus_lookup_table_{page,cursor}_{down,up}. M src/ibuslookuptable.c M src/ibuslookuptable.h commit 0e4911f38f34f5580748f6cb4b5fd584d712ef8f Author: Huang Peng Date: 2009-02-14 09:22:00 +0800 Fix typo. M configure.ac commit ef5485bd1e53fb2fbce13827928f7eecb2ea75ef Author: Peng Huang Date: 2009-02-13 14:10:57 +0800 Flush connection to make sure IBus.Exit has been sent before process exiting. M src/ibusbus.c commit 748b6b1f6c181a72daadbf137f1c29d77b499f2a Author: Huang Peng Date: 2009-02-13 09:37:34 +0800 set cursor location in bus_input_context_set_engine. M bus/inputcontext.c commit 21ae0e4f8af46aa6beec24da4b8e0278d4acc1a1 Author: Huang Peng Date: 2009-02-12 13:24:42 +0800 Update .gitignore files. M gconf/.gitignore M po/.gitignore M src/.gitignore M ui/gtk/.gitignore commit 0bc9cf6403282a4c10e9331e67be92072cf5c5c2 Author: Peng Huang Date: 2009-02-12 13:25:01 +0800 Fix restart problem M bus/ibusimpl.c commit 5ae50478381f53431a04e662a78d9e9db91a540e Author: Peng Huang Date: 2009-02-12 13:15:03 +0800 Try to make all child processes finished before ibus-daemon exits. M bus/ibusimpl.c M bus/main.c commit dcd4ceb33c2865ef3636565c68d97ee05ea6b1e3 Author: Peng Huang Date: 2009-02-12 11:26:04 +0800 Use label.text instead of lable to fix problem. M ui/gtk/menu.py M ui/gtk/panel.py M ui/gtk/toolitem.py commit ff57aab1e19c7f89ebb6b924165f5c6ced2a2201 Author: Peng Huang Date: 2009-02-12 10:58:50 +0800 Disconnect engine handlers before context destruction. M bus/inputcontext.c commit 24e64aa743b4be78bfffab01b69a4ee1e65918cc Author: Peng Huang Date: 2009-02-12 09:50:44 +0800 Set cursor location for engine after create a new engine. M bus/inputcontext.c commit 0250e8b54cf320535d218ecbc799c70dba757250 Author: Peng Huang Date: 2009-02-11 17:33:38 +0800 Add --replace option for ibus-daemon command. M bus/main.c commit 52289db46af40821eb9092ce02a3c82f02170e74 Author: Peng Huang Date: 2009-02-11 17:33:12 +0800 Fix a typo (Change Kill to Exit). M src/ibusbus.c commit 34b2d2f3508866ad53579e4d65af27776187ec69 Author: Peng Huang Date: 2009-02-11 14:31:44 +0800 Update po files. M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po commit 923217b4ed5aeca6950d0d56b0baa88efb13eac0 Author: Peng Huang Date: 2009-02-11 14:23:43 +0800 Make languagebar extend to left. M ui/gtk/handle.py M ui/gtk/languagebar.py commit e24356351f817c873273d11a2efbdc4e47189fff Author: Peng Huang Date: 2009-02-11 09:05:23 +0800 Rename iBus to IBus. M client/gtk2/ibusim.c M debian/control M po/fr.po M po/ja.po M po/pa.po M po/zh_CN.po M setup/setup.glade M ui/gtk/panel.py commit 46dee933ac3c2b140a6d65056a5ed5876302cd25 Author: Peng Huang Date: 2009-02-10 18:02:13 +0800 Fix crash problems. M bus/inputcontext.c M src/ibusconnection.c M src/ibusmessage.c commit 1e931b56967fd7f589fab3c8081b3bdf13c49f1a Author: Peng Huang Date: 2009-02-10 17:30:27 +0800 Fix compile warnings. M bus/engineproxy.c M bus/inputcontext.c M client/gtk2/ibusimcontext.c M client/x11/main.c M src/ibushotkey.c commit b12ce003bc273f678b5249399e515ff78af1a582 Author: Peng Huang Date: 2009-02-10 16:55:38 +0800 Fix problem on x86_64 platform. M bus/engineproxy.c M bus/panelproxy.c M src/ibusbus.c commit 637b346b1697e2d1285a6a727b2ec8455cf3e0f5 Author: Peng Huang Date: 2009-02-10 16:53:00 +0800 Fix crash on x86_64 platform. M bus/factoryproxy.c M src/ibusengine.c commit 4fdeceb51956a114a684c7a9b75db4db459c5ee4 Author: Huang Peng Date: 2009-02-10 11:24:51 +0800 Fix problem with desktop files. M bus/Makefile.am A bus/ibus.desktop M configure.ac M setup/Makefile.am A setup/ibus-setup.desktop D setup/ibus-setup.desktop.in commit 566270731276e9028350dd90b6982c865490f243 Author: Huang Peng Date: 2009-02-10 10:17:01 +0800 Do not use glib main loop in ibus_input_context_process_key function. M src/ibusconnection.c M src/ibusconnection.h M src/ibusinputcontext.c commit 30bff4867177ec439cb210a016e2dd416ebab963 Author: Huang Peng Date: 2009-02-09 10:28:19 +0800 Add round lookup table support. M ibus/lookuptable.py M src/ibuslookuptable.c M src/ibuslookuptable.h M src/test-lookuptable.c commit c9dab029a3f84fe529c0c90dcf8571f1c0c16d85 Author: Huang Peng Date: 2009-02-06 17:23:57 +0800 Change rescan to re-scan M bus/main.c commit 2b30fe871a569b8d33d9fa2e97307f9ef6224c0d Author: Huang Peng Date: 2009-02-06 17:22:33 +0800 Implement --rescan option for ibus-daemon. M bus/main.c M bus/registry.c commit 7818373100d18f04dc049a466f9f30bb32965176 Author: Huang Peng Date: 2009-02-06 14:54:00 +0800 Add restart menu item in system menu. M bus/dbusimpl.c M bus/dbusimpl.h M bus/ibusimpl.c M bus/main.c M bus/matchrule.c M bus/matchrule.h M bus/registry.c M bus/registry.h M bus/server.c M bus/server.h M client/x11/main.c M ibus/bus.py M ibus/interface/iibus.py M src/ibusbus.c M src/ibusbus.h M src/ibusobject.h M ui/gtk/panel.py M xinput-ibus commit 5014bc1a8e8544ec087b631b55fc4d6907051c13 Author: Huang Peng Date: 2009-02-06 10:11:28 +0800 Add French translation provided by Julroy67. M AUTHORS M po/LINGUAS A po/fr.po commit 142d69b5ff54f203bc29a3e439061a3d4726c120 Author: Huang Peng Date: 2009-02-06 09:32:50 +0800 Fix issue http://code.google.com/p/ibus/issues/detail?id=241. M configure.ac M gconf/Makefile.am D gconf/gconf.xml.in A gconf/gconf.xml.in.in M ui/gtk/Makefile.am D ui/gtk/gtkpanel.xml.in A ui/gtk/gtkpanel.xml.in.in commit 0bcd2dd9d08f2ac57121c283a63180f92a735338 Author: Huang Peng Date: 2009-02-06 08:10:19 +0800 Run ibus-daemon instead of ibus. M setup/main.py commit 33aa241841500c0b59204d905e05d55fb273486c Merge: aaa9a8c a07a51f Author: Huang Peng Date: 2009-02-05 11:03:39 +0800 Merge branch 'master' into c_impl Conflicts: po/ja.po po/pa.po po/zh_CN.po commit aaa9a8cea3a23bca6444221192ffc52ccbff3cb8 Author: Huang Peng Date: 2009-02-05 10:48:58 +0800 Add gconf/config.h A gconf/config.h commit aedad1ea0a7fef604aa27f4b58433fd8f2ece29e Author: Huang Peng Date: 2009-02-05 10:39:56 +0800 re-implement ibus in c language. M .gitignore M Makefile.am M autogen.sh A bindings/Makefile.am A bindings/python/Makefile.am A bindings/python/common.h A bindings/python/gendefs.sh A bindings/python/ibus-types.defs A bindings/python/ibus-virtual-methods.defs A bindings/python/ibus.defs A bindings/python/ibus.override A bindings/python/ibusmodule.c A bus/.gitignore A bus/Makefile.am A bus/connection.c A bus/connection.h A bus/dbusimpl.c A bus/dbusimpl.h A bus/engineproxy.c A bus/engineproxy.h A bus/factoryproxy.c A bus/factoryproxy.h A bus/ibusimpl.c A bus/ibusimpl.h A bus/inputcontext.c A bus/inputcontext.h A bus/main.c A bus/matchrule.c A bus/matchrule.h A bus/panelproxy.c A bus/panelproxy.h A bus/registry.c A bus/registry.h A bus/server.c A bus/server.h A bus/test-matchrule.c A bus/test-registry.c M client/Makefile.am M client/gtk2/Makefile.am M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c A client/x11/.gitignore M client/x11/Makefile.am M client/x11/main.c M configure.ac D daemon/.gitignore D daemon/Makefile.am D daemon/_dbus.py D daemon/bus.py D daemon/config.py D daemon/connection.py D daemon/contextmanager.py D daemon/engine.py D daemon/enginefactory.py D daemon/factorymanager.py D daemon/ibus-daemon.in D daemon/ibusdaemon.py D daemon/inputcontext.py D daemon/lookuptable.py D daemon/notifications.py D daemon/panel.py D daemon/register.py A docs/Makefile.am A docs/reference/Makefile.am A docs/reference/ibus/.gitignore A docs/reference/ibus/Makefile.am A docs/reference/ibus/ibus.types A gconf/.gitignore M gconf/Makefile.am A gconf/config.c D gconf/config.py A gconf/gconf.xml.in D gconf/ibus-gconf.in A gconf/main.c D gconf/main.py A ibus-1.0.pc.in M ibus.spec.in A ibus/.gitignore M ibus/Makefile.am M ibus/__init__.py A ibus/_gtk.py M ibus/attribute.py M ibus/bus.py M ibus/common.py A ibus/component.py M ibus/config.py M ibus/engine.py A ibus/enginedesc.py M ibus/factory.py D ibus/gtk.py A ibus/inputcontext.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py A ibus/interface/iinputcontext.py M ibus/interface/inotifications.py M ibus/interface/ipanel.py M ibus/lookuptable.py M ibus/notifications.py M ibus/object.py A ibus/observedpath.py M ibus/panel.py M ibus/property.py A ibus/serializable.py A ibus/text.py D launcher/Makefile.am D launcher/ibus.desktop.in D launcher/ibus.in D lib/Makefile.am D lib/gtk2/Makefile.am D lib/gtk2/ibusattribute.c D lib/gtk2/ibusattribute.h D lib/gtk2/ibusimclient.c D lib/gtk2/ibusimclient.h D lib/gtk2/ibusmarshalers.list M po/.gitignore M po/POTFILES.in M po/ja.po M po/pa.po M po/zh_CN.po M setup/.gitignore M setup/Makefile.am A setup/enginecombobox.py A setup/enginetreeview.py A setup/icon.py M setup/keyboardshortcut.py M setup/main.py M setup/setup.glade A src/.gitignore A src/Makefile.am A src/ibus.h A src/ibusattribute.c A src/ibusattribute.h A src/ibusbus.c A src/ibusbus.h A src/ibuscomponent.c A src/ibuscomponent.h A src/ibusconfig.c A src/ibusconfig.h A src/ibusconfigprivate.h A src/ibusconfigservice.c A src/ibusconfigservice.h A src/ibusconnection.c A src/ibusconnection.h A src/ibusdebug.h A src/ibusengine.c A src/ibusengine.h A src/ibusenginedesc.c A src/ibusenginedesc.h A src/ibusenumtypes.c A src/ibusenumtypes.c.template A src/ibusenumtypes.h A src/ibusenumtypes.h.template A src/ibuserror.c A src/ibuserror.h A src/ibusfactory.c A src/ibusfactory.h A src/ibushotkey.c A src/ibushotkey.h A src/ibusinputcontext.c A src/ibusinputcontext.h A src/ibusinternal.c A src/ibusinternal.h A src/ibuskeynames.c A src/ibuskeysyms-update.pl A src/ibuskeysyms.h A src/ibuslookuptable.c A src/ibuslookuptable.h A src/ibusmarshalers.list A src/ibusmessage.c A src/ibusmessage.h A src/ibusobject.c A src/ibusobject.h A src/ibusobservedpath.c A src/ibusobservedpath.h A src/ibuspendingcall.c A src/ibuspendingcall.h A src/ibusproperty.c A src/ibusproperty.h A src/ibusproxy.c A src/ibusproxy.h A src/ibusserializable.c A src/ibusserializable.h A src/ibusserver.c A src/ibusserver.h A src/ibusservice.c A src/ibusservice.h A src/ibusshare.c A src/ibusshare.h A src/ibustext.c A src/ibustext.h A src/ibustypes.h A src/ibusxml.c A src/ibusxml.h A src/keyname-table.h A src/test-attribute.c A src/test-bus.c A src/test-engine.c A src/test-keynames.c A src/test-lookuptable.c A src/test-proxy.c A src/test-server.c A src/test-text.c M ui/gtk/.gitignore M ui/gtk/Makefile.am M ui/gtk/candidatepanel.py A ui/gtk/gtkpanel.xml.in M ui/gtk/icon.py M ui/gtk/languagebar.py M ui/gtk/main.py M ui/gtk/menu.py M ui/gtk/notifications.py M ui/gtk/panel.py M ui/gtk/propitem.py M ui/gtk/toolitem.py M util/Makefile.am D util/gconf/Makefile.am D util/gconf/gconf-arg-types.py D util/gconf/gconf-fixes.c D util/gconf/gconf-fixes.h D util/gconf/gconf-types.c D util/gconf/gconf-types.h D util/gconf/gconf.defs D util/gconf/gconf.override D util/gconf/gconfmodule.c D util/gconf/wscript M xinput-ibus commit a07a51ff63d323a7b742e30ad5368371023b4265 Author: Huang Peng Date: 2009-02-03 16:10:06 +0800 Update po files. M po/ja.po M po/pa.po M po/zh_CN.po commit 41ad46305a88637dd99f00a2d2a3f455505d357b Author: Huang Peng Date: 2009-02-03 15:07:30 +0800 Set default next_engine hot key to empty. M ibus/common.py commit f4f4c847df58ec69f1564be082f37ee980c23896 Author: Huang Peng Date: 2009-02-03 11:08:10 +0800 Fix crash in x86_64 platform. M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h commit 08470bed58fc80d186f4641817cb1dad1847fc8c Author: Huang Peng Date: 2008-11-23 20:59:14 +0800 Fix problem introduced by last commit. M ui/gtk/panel.py commit 45726ffaf0e79e9d9421cb184be412df0997b319 Author: Huang Peng Date: 2008-11-23 13:50:58 +0800 Handle SIGCHLD in ibus-ui-gtk to fix issue 191. M ui/gtk/panel.py commit 28dc3faad2df6dd3eb6b9f7539e3f118ef94fe42 Author: LI Daobing Date: 2008-11-04 19:32:09 +0800 fix typo in Makefile.am M ibus/Makefile.am commit ee9926f9f3da539c4b29ef81bc1e0b4dd7e551f0 Author: Huang Peng Date: 2008-11-01 13:34:21 +0800 Request glib2 >= 2.16 M configure.ac commit dd5d87e261ef846ebf8a311910d9de3b347277ac Author: Huang Peng Date: 2008-10-25 13:22:24 +0800 Change email address for pa.po file. M AUTHORS commit 6cc8017cffa65234c7016fcfb797e307cadbfd4d Author: Huang Peng Date: 2008-10-25 10:04:47 +0800 Add Punjabi (pa.po) Translation by A S Brar M AUTHORS M po/LINGUAS A po/pa.po commit 42740b6eb84e1c8013d762c05c1ff8e5248db44e Author: Huang Peng Date: 2008-10-23 14:15:24 +0800 Update po files. M po/ja.po M po/zh_CN.po commit 45922c236364606be6d91dba30e8a54886648759 Author: Huang Peng Date: 2008-10-21 15:32:02 +0800 Get unique_name in ibus.Bus.__init__ M ibus/bus.py commit 7f88a36c28d60f3dbe231dd76d2e0c04ca740e89 Author: Huang Peng Date: 2008-10-20 13:43:25 +0800 Use UInt32 for property. M ibus/property.py commit e3b4a0aa8e0074de826702df3b014dd27a4c2ec5 Author: Huang Peng Date: 2008-10-19 09:50:05 +0800 Do not expend icons. M setup/main.py commit 9c72c9235e37bad755174b6eeed0cf96a42d9b94 Author: Huang Peng Date: 2008-10-16 10:15:18 +0800 Fix coding style. M util/IMdkit/Xi18n.h M util/IMdkit/i18nX.c commit feb1d8f1ca5befeb66e57af86366920f0f538426 Merge: 998cdda 3439d61 Author: Huang Peng Date: 2008-10-16 09:59:56 +0800 Merge branch 'master' into fix_xim_bug commit 3439d61d0403f18b3ede55678f7ed70a9864a3a0 Author: Huang Peng Date: 2008-10-16 09:59:28 +0800 Use LOG replace g_debug M client/x11/main.c commit 998cdda74071af6027ae5b0f2a094150343c489a Author: Huang Peng Date: 2008-10-15 22:20:47 +0800 Do not discard unread data from XGetWindowProperty M util/IMdkit/Xi18n.h M util/IMdkit/i18nUtil.c M util/IMdkit/i18nX.c commit b3960020e4053ea003ef46cd98e195247cefda67 Author: Huang Peng Date: 2008-10-15 22:19:57 +0800 Revert "Do not discard unread data from XGetWindowProperty" This reverts commit 6ad5307d585930c79feaf5d8aaf791277df067c9. M util/IMdkit/Xi18n.h M util/IMdkit/i18nUtil.c M util/IMdkit/i18nX.c commit 6ad5307d585930c79feaf5d8aaf791277df067c9 Author: Huang Peng Date: 2008-10-15 22:17:53 +0800 Do not discard unread data from XGetWindowProperty M util/IMdkit/Xi18n.h M util/IMdkit/i18nUtil.c M util/IMdkit/i18nX.c commit c56d1b3bf2a2bf9eb6de4bbb985c6ba58c166a04 Author: Huang Peng Date: 2008-10-15 07:56:03 +0800 Fix keyboard shortcut setup problems M daemon/bus.py M setup/main.py commit 5a2f8e1d9d0f14651d9dbd711b77e5f36756fde4 Author: Huang Peng Date: 2008-10-12 09:30:20 +0800 Convert IBusAttribute for au to (uuuu) M client/x11/Makefile.am M ibus/attribute.py M ibus/interface/iengine.py commit f0ef83c293511c947033e803345892ac8c4ca56e Author: Huang Peng Date: 2008-10-12 09:28:51 +0800 Convert IBusAttribute to (uuuu) M lib/gtk2/ibusattribute.c M lib/gtk2/ibusattribute.h M lib/gtk2/ibusimclient.c commit 2b6cf32ad9f44a6c0b49b76687b78b30a138c707 Author: Huang Peng Date: 2008-10-09 11:42:11 +0800 Update translations. M po/ja.po M po/zh_CN.po commit a6e244cb8897de2059b938d56396415f4e8ada42 Author: Huang Peng Date: 2008-10-09 11:26:07 +0800 Modify setup ui to be consonant with GNOME HIG. M setup/setup.glade commit 6d9c8c192da47c66090694540644b626ccfb9ced Author: Huang Peng Date: 2008-10-09 09:02:33 +0800 Add ICON for im-chooser. M xinput-ibus commit 76ae87c4634e7f8594fd663e6c05b369fda4948b Author: Huang Peng Date: 2008-10-07 18:48:00 +0800 Fix problem when org.freedesktop.Notifications does not exist. M ui/gtk/notifications.py commit 796614baeb0002f77522b196e974e68f37b16646 Author: Huang Peng Date: 2008-10-07 18:42:04 +0800 Fix a typo. M daemon/config.py commit a62abdb0bfe51e7cd09328682d2091ac37eb4987 Author: Huang Peng Date: 2008-10-07 18:32:09 +0800 Add Requries: notification-daemon in ibus.spec.in M ibus.spec.in commit a643a4369cdc80699f20c90c1cb059aab1551bcc Author: Huang Peng Date: 2008-10-07 13:28:07 +0800 wip. M daemon/bus.py commit 22e958627cc8216b77ce19ebebf6087d254f12a5 Author: Huang Peng Date: 2008-10-07 12:59:46 +0800 Change summary in ibus.spec M ibus.spec.in commit aeff3850e2e75bd2cdba7f18efbb964935782c81 Author: Huang Peng Date: 2008-10-07 12:27:08 +0800 Refine spec file for fedora. M ibus.spec.in commit cd5dc96daa4cd80f1985a74a9641d82848081e10 Author: Huang Peng Date: 2008-10-07 11:12:22 +0800 Refine .desktop files. M launcher/ibus.desktop.in M setup/ibus-setup.desktop.in commit 0bb06d38664d0045e7294e4091f385fbcad723c9 Author: Huang Peng Date: 2008-10-06 18:15:42 +0800 Remove unused variable. M gconf/main.py commit 01754e6aa58a834f6ee4f443d45d1b4e45380de4 Author: Huang Peng Date: 2008-10-06 18:14:31 +0800 Refine messages. M daemon/bus.py M po/ja.po M po/zh_CN.po commit 0132624bd496ab37c96bf371eb828d258ca678f1 Author: Huang Peng Date: 2008-10-06 17:45:33 +0800 Add daemon/notifications.py A daemon/notifications.py commit aa445d730491d08cb29c39f02d97f0d2c4e8b91a Author: Huang Peng Date: 2008-10-06 16:17:57 +0800 Fix make rpm error. M ibus.spec.in commit 1d677534e8efa847464325766684c6378cdb073b Author: Huang Peng Date: 2008-10-06 16:13:50 +0800 Complete Noifications module. M daemon/bus.py M daemon/panel.py M ibus/interface/ipanel.py M ibus/panel.py M po/ja.po M po/zh_CN.po M ui/gtk/panel.py commit 7ab63e10f58b5c9c902e9f49250339a3ccc30ebf Author: Huang Peng Date: 2008-10-06 16:04:22 +0800 WIP M gconf/config.py M ibus/notifications.py M ui/gtk/notifications.py commit d64996654cc58db9d33896e265a73e097fc2701b Author: Huang Peng Date: 2008-10-06 15:53:17 +0800 WIP. M daemon/bus.py commit fd4df98ed4985767d95f2d7cdef9d89fad87894d Author: Huang Peng Date: 2008-10-06 15:24:59 +0800 WIP M daemon/Makefile.am M daemon/bus.py M daemon/config.py M daemon/panel.py commit 59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815 Author: Huang Peng Date: 2008-10-06 15:00:01 +0800 WIP. M ui/gtk/main.py M ui/gtk/notifications.py M ui/gtk/panel.py commit 61c603838a15b01011093090065ed33116cdda13 Author: Huang Peng Date: 2008-10-06 14:47:06 +0800 WIP. M ui/gtk/notifications.py commit d4bb8eb1c6c36e43a5a9504717aeb64832c66538 Author: Huang Peng Date: 2008-10-06 14:29:37 +0800 Add notifications M ibus/__init__.py M ui/gtk/Makefile.am A ui/gtk/notifications.py D ui/gtk/notify.py commit 6fcaef161510134118d935f0240e4d719ba43a7a Author: Huang Peng Date: 2008-10-06 14:14:21 +0800 Add notifications.py M ibus/Makefile.am M ibus/common.py A ibus/notifications.py commit 6a06d45e1d3956670ca9006ddfa380c176c1146f Author: Huang Peng Date: 2008-10-06 14:04:28 +0800 Refine coding style. M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/ipanel.py commit a715f71bc4171298f8e57d1b9b3f8eb42ade1938 Author: Huang Peng Date: 2008-10-06 13:59:52 +0800 Add INotifications interface. M ibus/interface/Makefile.am A ibus/interface/inotifications.py commit bb1339b4e2a4dd5af95bc594b4d35b83fdcbbd5f Author: Huang Peng Date: 2008-10-06 11:23:17 +0800 Fix a typo. M ui/gtk/Makefile.am commit f754f7dca2dbf6fcb3cd1bc8e313c5539e8ce50c Author: Huang Peng Date: 2008-10-06 10:39:43 +0800 Change COPYING from LGPL 2.0 to LGPL 2.1 M COPYING commit 8a6e14d84fe318a7a2efd66d453c2b99a6299d5b Author: Huang Peng Date: 2008-10-06 10:24:21 +0800 ellipsize engine name in ibus-setup. M setup/main.py commit c3d16cbe31c681001eb18191dc69368342b96b3b Author: Huang Peng Date: 2008-10-06 07:41:26 +0800 Change panel path in POFILES.in. M po/POTFILES.in M po/ja.po M po/zh_CN.po commit 50d772447ab3589ff02c7e10486d11d3572c0efe Author: Huang Peng Date: 2008-10-05 22:28:22 +0800 Update .gitignore M ui/gtk/.gitignore commit cf8d326d0839501e0ee9eb180cddb5ca670edd85 Author: Huang Peng Date: 2008-10-05 22:24:21 +0800 Add notify in ui/gtk/Makefile.am M ui/gtk/Makefile.am commit 8a4eb40abff0441c015f15fa864967e106868f52 Author: Huang Peng Date: 2008-10-05 22:23:42 +0800 Move notify from daemon to ui/gtk M daemon/Makefile.am D daemon/notify.py A ui/gtk/notify.py commit 3d36b0eb76eafcda76082baecf34a48d6cbb0319 Author: Huang Peng Date: 2008-10-05 22:16:30 +0800 Move panel into ui folder, and rename panel to gtk. M Makefile.am M configure.ac M launcher/ibus.in D panel/.gitignore D panel/Makefile.am D panel/candidatepanel.py D panel/handle.py D panel/ibus-panel.in D panel/icon.py D panel/languagebar.py D panel/main.py D panel/menu.py D panel/panel.py D panel/propitem.py D panel/toolitem.py A ui/Makefile.am A ui/gtk/.gitignore A ui/gtk/Makefile.am A ui/gtk/candidatepanel.py A ui/gtk/handle.py A ui/gtk/ibus-ui-gtk.in A ui/gtk/icon.py A ui/gtk/languagebar.py A ui/gtk/main.py A ui/gtk/menu.py A ui/gtk/panel.py A ui/gtk/propitem.py A ui/gtk/toolitem.py commit 249722e4aa36837b6ff5fd1436387bc66b482228 Author: Huang Peng Date: 2008-10-05 17:34:05 +0800 Specify qt4 make flags when generate Makefile from .pro file. M client/qt4/Makefile.am commit adc508ea4bf5c14c7f20591b4a93b5fbb18904ea Author: Huang Peng Date: 2008-10-05 17:24:31 +0800 Handle XIM_GET_IC_VALUES event. M client/x11/main.c commit 87f481a427702e932026fe86487679e4381d4c63 Author: Huang Peng Date: 2008-10-05 17:10:16 +0800 Fix XIM freezing problem. M client/x11/main.c commit 9691862da2d96d009e39435dc5fc88225a92569f Author: Huang Peng Date: 2008-10-05 15:35:13 +0800 Remove debug output for japan_groups. M lib/gtk2/ibusimclient.c commit 601e1c4a77145144ca62d7565d834add2bdb287d Author: LI Daobing Date: 2008-10-04 22:04:05 +0800 fix desktop file format This desktop entry lists a category that is not one of the registered Main or Additional Categories in the FreeDesktop specification. Refer to http://standards.freedesktop.org/menu-spec/1.0/apa.html for details. M launcher/ibus.desktop.in M setup/ibus-setup.desktop.in commit 4b413844a94df44174147a50becfeaf1c8d537ca Author: LI Daobing Date: 2008-10-04 21:58:42 +0800 fix typo in README M README commit ec98987a0e306bdad4ffe17e74b7d87f31ea5f7f Author: Huang Peng Date: 2008-10-04 10:29:48 +0800 Fix `make distcheck` errors. M po/POTFILES.in M po/ja.po M po/zh_CN.po commit 96bc3c966179e1f816681bb6a1d02133d040e2cd Author: Huang Peng Date: 2008-10-04 10:20:04 +0800 Refine coding style. M ibus/bus.py commit 397ff9ca92a2eaf8469b757243813849804f9290 Author: Huang Peng Date: 2008-10-04 08:51:39 +0800 WIP. M daemon/_dbus.py M daemon/config.py M gconf/config.py M ibus/bus.py M ibus/common.py M ibus/config.py commit d362fe98b9b428e21324a32e922529c8f9ac3837 Author: Huang Peng Date: 2008-10-04 07:51:38 +0800 Fix problem in ibus-setup M setup/main.py commit ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2 Author: Huang Peng Date: 2008-10-03 23:58:31 +0800 WIP. M ibus/bus.py M launcher/ibus.in commit 0d2c788dfdd7a00f1ca2310a846357f485aa2432 Author: Huang Peng Date: 2008-10-03 23:50:55 +0800 WIP. M ibus/bus.py M ibus/common.py M launcher/ibus.in commit 6515cb122eea13c16d5f936a346acbc1369b2d64 Author: Huang Peng Date: 2008-10-03 20:19:03 +0800 WIP. M daemon/Makefile.am M daemon/bus.py M daemon/config.py M daemon/connection.py D daemon/defaultconfig.py M daemon/ibusdaemon.py M gconf/config.py M gconf/main.py M ibus/bus.py M ibus/interface/iibus.py commit 09a7df4511f12e447d1f43ad485b375a3e5b26c6 Author: Huang Peng Date: 2008-10-03 19:16:56 +0800 Fix a typo. M ibus/config.py commit 1fa35a56275196483ff939aa1b6f3042780d8ead Author: Huang Peng Date: 2008-10-03 19:15:36 +0800 Add config.py M ibus/__init__.py A ibus/config.py D ibus/config.py.in commit 386c0bf61c1ce647e3792af88ee1adab8393aedd Author: Huang Peng Date: 2008-10-03 19:12:15 +0800 Rename config.py.in to _config.py.in M configure.ac M ibus/Makefile.am M ibus/__init__.py A ibus/_config.py.in commit ecb3f104ef07e1d08b1562396a1d57cb89945d4f Merge: 368ff21 221f2c6 Author: Huang Peng Date: 2008-10-03 17:53:41 +0800 Merge branch 'master' into modify_config_interface commit 221f2c6bdba92669b98cee65616d8f3837ff1a2c Author: Huang Peng Date: 2008-10-03 17:52:09 +0800 Return 0 when XIM_GET_IC_VALUES is received. M client/x11/main.c commit 368ff2110216b6f968631bfa671aa1ef7de7b7b9 Author: Huang Peng Date: 2008-10-03 17:28:00 +0800 WIP. M daemon/bus.py M gconf/config.py M ibus/interface/iibus.py commit b940644dbeaec464c0dfb25948f67162fc2a2f45 Author: Huang Peng Date: 2008-10-03 17:07:29 +0800 Change interface for config. M daemon/bus.py M daemon/config.py M daemon/ibusdaemon.py M gconf/config.py M ibus/bus.py M ibus/interface/iconfig.py M panel/panel.py M setup/main.py commit 141bb4e5635d4302598fd1b4204a332a2d780d6a Author: Huang Peng Date: 2008-10-03 12:34:12 +0800 Return 0 if ibus does not handle xim event. M client/x11/main.c commit 43471e1c3ffcc592f760d54ec35c99903032fbc4 Author: Huang Peng Date: 2008-10-03 12:21:43 +0800 Remove _is_attr. M client/x11/main.c commit bc9dbaa52ac8e4de2651eb2dd1658d731dd487f5 Author: Huang Peng Date: 2008-10-03 12:18:33 +0800 Refine debug output. M client/x11/main.c commit 7ff16d509e2e077ac2e26de146dbc4a7e34748a6 Author: Huang Peng Date: 2008-10-03 10:30:08 +0800 Fix problem in ibus_attr_list_copy. M lib/gtk2/ibusattribute.c commit 927200df0bb7f559110dd624d2e52412220447d8 Author: Huang Peng Date: 2008-10-03 00:08:18 +0800 Refine coding style. M lib/gtk2/ibusattribute.c commit 6f23b8b88dc103021f301a0e889739081547cf94 Author: Huang Peng Date: 2008-10-03 00:06:11 +0800 Fix typo. M lib/gtk2/ibusimclient.c commit f0591a6909d68572422eb518ee13ad5a216c788d Author: Huang Peng Date: 2008-10-03 00:04:00 +0800 Use ibus_attribute_new to create IBusAttribute M lib/gtk2/ibusimclient.c commit c1d8fdc166365afe79cf3652f156b42315440e32 Author: Huang Peng Date: 2008-10-02 20:15:13 +0800 Fix problems in ibus-x11. M client/x11/main.c commit 624fcc1ac58ba932ea4d3418c4c79bdf991c4a18 Author: Huang Peng Date: 2008-10-02 20:15:01 +0800 Fix problem in gtk im module. M client/gtk2/ibusimcontext.c commit 4d9df1bea69f7d943565fbb4bb290fa08eeca821 Author: Huang Peng Date: 2008-10-02 20:08:51 +0800 Remove debug output. M lib/gtk2/ibusattribute.c commit d74ac7f45da5d97966d1953ccd700001c5f66d3d Author: Huang Peng Date: 2008-10-02 19:59:01 +0800 Put languagebar in right bottom of root window. M panel/languagebar.py commit 7a3a662e068029be7759d35166711702ba5290ac Author: Huang Peng Date: 2008-10-02 19:46:40 +0800 Use IBusAttribute in ibus-x11. M client/x11/main.c commit 1e40616f330b25266aa4794c27136fabab7e23eb Author: Huang Peng Date: 2008-10-02 19:26:23 +0800 Use IBusAttribut replace PangoAttribute. M client/gtk2/ibusimcontext.c M lib/gtk2/ibusattribute.c M lib/gtk2/ibusimclient.c commit 8647538dd30ee392d9ac093b088019abcd0a656f Author: Huang Peng Date: 2008-10-02 19:00:55 +0800 Implement IBusAttribute & IBusAttrList. M lib/gtk2/Makefile.am A lib/gtk2/ibusattribute.c M lib/gtk2/ibusattribute.h commit 0394896c4eaed931eaba4c444cb3a3c58a23271a Author: Huang Peng Date: 2008-10-01 14:07:03 +0800 Free preedit_string & preedit_attrs. M client/x11/main.c commit f33d3aac4c3d6dfea5775238128278443ce2d678 Author: Huang Peng Date: 2008-10-01 12:43:50 +0800 Support input style. M client/x11/main.c commit 21bacd40b5f6c45e137b6b3e7d6b00d8fbe96634 Author: Huang Peng Date: 2008-10-01 12:39:52 +0800 WIP. M client/x11/main.c commit 295919568bad10b35c9013df19f9550efa06469f Author: Huang Peng Date: 2008-10-01 11:58:34 +0800 WIP. M client/x11/main.c commit 8bd15c58cc3cb2e3b547f1ab1b415c529f5fc794 Author: Huang Peng Date: 2008-09-30 18:23:50 +0800 Remove commentted code. M ibus/bus.py M ibus/interface/iibus.py commit 52e1f3d8a448ebf25b75bef2c1e51b9f69b5cf31 Author: Huang Peng Date: 2008-09-30 08:26:02 +0800 Update ibus.sepc.in. M ibus.spec.in commit 143c3a4a3f523c503f46b62a6fa7a5711de4b462 Author: Huang Peng Date: 2008-09-30 08:14:14 +0800 Update po files. M po/ja.po M po/zh_CN.po commit 08c01a29e7096a1e9b6c553d5eaca995af48a26b Author: Huang Peng Date: 2008-09-30 08:13:55 +0800 Fix make dist error. M util/gconf/Makefile.am commit bd27a75a0bf7120b1bdc280fda0bed9e8abdce75 Author: Huang Peng Date: 2008-09-28 15:39:46 +0800 Remove unused import M daemon/config.py M daemon/factorymanager.py M daemon/panel.py commit 351224c9ef40beca8c72a4c79e68d2bde17ab727 Author: Huang Peng Date: 2008-09-28 12:57:58 +0800 Comment register_panel method. M ibus/bus.py commit 8787bfa04f567c14afd34dea1efb8394824b42ae Author: Huang Peng Date: 2008-09-28 12:56:17 +0800 Comment RegisterPanel method. M ibus/interface/iibus.py commit 0a19866bcc57beb1d15bfe996b7c58fd054abdbc Author: Huang Peng Date: 2008-09-28 10:56:11 +0800 Change Panel interface. M daemon/_dbus.py M daemon/bus.py M ibus/panel.py M panel/main.py M panel/panel.py commit 7e28ed0209cc811b7443e15304174a730f75f8d5 Author: Huang Peng Date: 2008-09-27 19:00:53 +0800 WIP. M daemon/_dbus.py M ibus/bus.py M ibus/panel.py commit f5d073b53bff179858a0175b9e4948efad138696 Author: Huang Peng Date: 2008-09-27 17:48:05 +0800 Refine error message. M daemon/_dbus.py commit c9d39cd617e3b766e3d0750a110d3753958a417f Author: Huang Peng Date: 2008-09-27 15:23:12 +0800 Support MatchRule M daemon/_dbus.py commit 0b0ded27bda2a2c9ffdff6395018341d193d0f42 Author: Huang Peng Date: 2008-09-27 14:06:01 +0800 Add message routing feature for ibus. M daemon/_dbus.py M daemon/connection.py commit 4b20a204d7ce986f2ef407374320c8a3617ce582 Merge: 593ad43 7f04c70 Author: Huang Peng Date: 2008-09-27 11:40:03 +0800 Merge branch 'master' into implement_dbus commit 7f04c7006bbe8d1526e2a32886947abbf02f1256 Author: Huang Peng Date: 2008-09-27 11:39:34 +0800 Change internal gconf install location. M gconf/config.py M util/gconf/Makefile.am commit 593ad4302ffb76aa148dd64da8df490c710b88c5 Author: Huang Peng Date: 2008-09-27 11:38:58 +0800 Change dbus message handle order. M daemon/connection.py commit 76840784c9ccb4c5e6cabc37d67ae3d1acbfdab9 Merge: 8414a12 9b48126 Author: Huang Peng Date: 2008-09-27 10:57:13 +0800 Merge branch 'master' into implement_dbus commit 9b481260aaa102070f0377050914d2e4d0031bbc Author: Huang Peng Date: 2008-09-27 10:24:02 +0800 stop_emission dbus-signal when signal be handled. M daemon/config.py M daemon/connection.py M daemon/enginefactory.py M daemon/panel.py commit c44fd10f2fdf5018238e52f3e932883c403b3eea Author: Huang Peng Date: 2008-09-25 17:14:29 +0800 Fix problem when works with imsettings. M client/x11/main.c commit 8414a1287dfcf1d0179fb09911a99657588bd4e4 Author: Huang Peng Date: 2008-09-25 17:09:02 +0800 Fix problem in org.freedesktop.DBus.GetNameOwner() M daemon/_dbus.py commit 2408a45e9b58da644df9a893df1b4b9ca5d8b957 Merge: d59183c 659e44f Author: Huang Peng Date: 2008-09-25 16:04:03 +0800 Merge branch 'master' into implement_dbus commit 659e44fb534ee96487d8f22598ece1a0ff1066b2 Author: Huang Peng Date: 2008-09-25 16:03:22 +0800 Update po files. M po/ja.po M po/zh_CN.po commit d59183cbe87fe4eb5d9d014efc254a8163b97fb3 Merge: 7e77e8d 9b8c9a8 Author: Huang Peng Date: 2008-09-25 13:48:50 +0800 Merge branch 'master' into implement_dbus commit 9b8c9a850f271f22eb70c3ae19b202753f6c919b Author: Huang Peng Date: 2008-09-25 13:46:37 +0800 Fix problem in non-UTF8 locale. M ibus/lang.py M panel/main.py M setup/main.py commit 791de25117257159a981d3220e492f17ff808186 Author: Huang Peng Date: 2008-09-25 10:53:16 +0800 Use gettext.dgettext replace locale.dgettext M ibus/lang.py commit 7e77e8d4528f7516a50fbf5b41576d06f84d526e Merge: b2c95f2 70ba17b Author: Huang Peng Date: 2008-09-24 18:51:16 +0800 Merge branch 'master' into implement_dbus commit 70ba17bd9056014ce62948ba25a5e6579e724b7d Author: Huang Peng Date: 2008-09-24 18:49:18 +0800 Renove unused import M daemon/engine.py commit b2c95f23a30d636c162fab27566d5e0c0aa11519 Author: Huang Peng Date: 2008-09-24 18:29:18 +0800 Fix some problems. M daemon/_dbus.py commit 500d101d8e7016a3a81685304f7524ac884848e4 Author: Huang Peng Date: 2008-09-24 17:58:59 +0800 Fix problem in test task in Makefile.am M daemon/Makefile.am commit 743c41803aa27d5a9f2dee257f9831fe7239ab59 Merge: f011322 025371d Author: Huang Peng Date: 2008-09-24 17:51:02 +0800 Merge branch 'master' into implement_dbus commit 025371daba5b8e51c78eff8da15bebab3c7a2e03 Author: Huang Peng Date: 2008-09-24 17:50:20 +0800 Remove commetted line M debian/rules commit ff35f467c8ad3c71cae7ca351a0c31bf05f5d244 Author: Huang Peng Date: 2008-09-24 17:49:37 +0800 Remove --with-gtk-im-module-dir in debian build script. M debian/rules commit f62802b72d8244e33babe2d5ac660979f534d653 Author: Huang Peng Date: 2008-09-24 17:44:28 +0800 Install gtk im module in ${libdir}/gtk-2.0/${gtk_binary_version}/immodules. M configure.ac M ibus.spec.in commit f011322081b6e3e932f954fc1aab3f44441a01bb Author: Huang Peng Date: 2008-09-24 17:26:38 +0800 wip. M daemon/_dbus.py M daemon/connection.py commit 5a13c1a773c9205172e21fb2834d31681edc09dc Author: Huang Peng Date: 2008-09-24 13:13:08 +0800 Remove pynotify. M daemon/bus.py commit 16bda71dacd1c084393ad98e88e060e20708291c Author: Huang Peng Date: 2008-09-24 13:03:14 +0800 Refine coding style. M daemon/_dbus.py commit a4e7629627be3793e58c458de1f300c3425d4bf9 Author: Huang Peng Date: 2008-09-23 14:40:48 +0800 Add notify.py M daemon/Makefile.am M daemon/bus.py A daemon/notify.py commit bc4d2db0ea4c00d2f5a5547de01603a1e13eec90 Author: Huang Peng Date: 2008-09-23 11:29:40 +0800 Fix problem when context focus out. M daemon/bus.py commit ffcba4bfdc940e94efafa464201892a69c3cbddf Author: Huang Peng Date: 2008-09-23 11:25:16 +0800 Retrun 0 if can not find ic. M client/x11/main.c commit a69071d7991b7de8f7dc29940fe55430d99a430f Author: Huang Peng Date: 2008-09-22 13:21:24 +0800 Fix warning when load setup.glade M setup/setup.glade commit 1d8ef89e2382392333327e1136f5eab1f917f497 Author: Huang Peng Date: 2008-09-21 19:16:37 +0800 Remove _focus_ic. M client/x11/main.c commit 899c7c56c7e37e78c907a85199a353354efc4d10 Author: Huang Peng Date: 2008-09-21 17:32:14 +0800 Implementing DBus. M daemon/_dbus.py M daemon/bus.py M daemon/ibusdaemon.py commit ae0f70a239508b5be11a73dfe8747531a840836e Author: Huang Peng Date: 2008-09-21 16:42:12 +0800 split DBus object from ibusdaemon.py M daemon/Makefile.am A daemon/_dbus.py M daemon/ibusdaemon.py commit 53b7c849475d589d31500953ef4544945c824add Author: Huang Peng Date: 2008-09-21 13:27:13 +0800 Implement org.freedesktop.DBus methods. M daemon/ibusdaemon.py M doc/specification commit 6789a1f6f8bb59037206f46cbeed1a5bc552b1ea Author: Huang Peng Date: 2008-09-20 11:14:36 +0800 set_capabilities when frontend establishs ibus connection. M client/gtk2/ibusimcontext.c M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h commit 54c52e2f73805029cecf34c5af5e577ba5845ab8 Author: Huang Peng Date: 2008-09-20 11:02:17 +0800 Define CAPS. M daemon/inputcontext.py commit bac2b876fe4d18448b0491babb0d5ed3bdf56102 Author: Huang Peng Date: 2008-09-20 09:37:56 +0800 Add new IBUS_CAP_FOCUS capability for input context. M client/gtk2/ibusimcontext.c M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp M client/x11/main.c M daemon/bus.py M daemon/inputcontext.py M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit 92a40e0b50c24a97d1da46c1de41e4409f7508cb Author: Huang Peng Date: 2008-09-20 09:06:53 +0800 Set focus if ic without focus. M client/x11/main.c commit b2353c87b6eb4008c50988d253f2677c1443a95d Author: Huang Peng Date: 2008-09-19 09:57:33 +0800 Create symbol links for qt3. A client/qt3/ibus-client.cpp A client/qt3/ibus-client.h A client/qt3/ibus-input-context.cpp A client/qt3/ibus-input-context.h A client/qt3/im-ibus-qt.cpp commit 730db205f55cb34d620fca839673a5a98f6494c1 Author: Huang Peng Date: 2008-09-19 08:42:28 +0800 Output warn message if iso-codes can not be found. M configure.ac commit 5bc961ecd47c0fdde5dba8a782d3c38cd571ef4c Author: Huang Peng Date: 2008-09-18 19:58:59 +0800 Add --disable-iso-codes-check in spec file. M ibus.spec.in commit 0eb21f88906efd292b4ed892698f9c17c265ae8e Author: Huang Peng Date: 2008-09-18 19:57:59 +0800 Refine error message in configure. M configure.ac commit 67813eb809537db4ef862822f691f9da5eb976f8 Author: Huang Peng Date: 2008-09-18 19:48:44 +0800 Check iso-codes in configure. M configure.ac commit 5e233e2d3efc5f961cad1c57071363c8f990eecc Author: Huang Peng Date: 2008-09-18 19:16:11 +0800 Get language names from iso-codes. M ibus.spec.in M ibus/lang.py M panel/panel.py M po/ja.po M po/zh_CN.po M setup/main.py commit b43b31301d336ee16f6a0b178879f8759136f6ed Author: Huang Peng Date: 2008-09-18 07:21:19 +0800 Make size of StatusIcon fixed. M panel/panel.py commit bd19dac2aa62ae94f8f03088abf9b361c1c24c82 Author: Huang Peng Date: 2008-09-17 21:59:21 +0800 Fix a problem in configure.ac. M configure.ac commit 3fe32053f9d17ca1bdc3c7c3c6c46c63e5eefe4d Author: Huang Peng Date: 2008-09-17 21:43:56 +0800 Do install pygconf files without --enable-pygconf M util/gconf/Makefile.am commit 79423852b295eef874c23c63162523db1c36da40 Author: Huang Peng Date: 2008-09-17 21:28:16 +0800 Add DISTCHECK_CONFIGURE_FLAGS M Makefile.am commit 869cecf8429101df1bcfd026db5f1ee3feb56673 Author: Huang Peng Date: 2008-09-17 21:00:42 +0800 Add --enable-pygconf option. M configure.ac M util/gconf/Makefile.am commit ef96e9fec0699a8107c3f0e91956dd2738ebe46a Author: Huang Peng Date: 2008-09-17 20:24:27 +0800 Include gconf python binding from gnome-python2. M client/x11/gdk-private.c M configure.ac M util/Makefile.am A util/gconf/Makefile.am A util/gconf/gconf-arg-types.py A util/gconf/gconf-fixes.c A util/gconf/gconf-fixes.h A util/gconf/gconf-types.c A util/gconf/gconf-types.h A util/gconf/gconf.defs A util/gconf/gconf.override A util/gconf/gconfmodule.c A util/gconf/wscript commit 99f3479b93f98a65e88f394c50f861a1bfb31693 Author: Huang Peng Date: 2008-09-17 19:21:22 +0800 Refine coding style. M client/qt4/im-ibus-qt.cpp commit cd515c85466049b8871737e5ad97fbe7c21a69bd Author: Huang Peng Date: 2008-09-17 19:17:38 +0800 Refine coding style. M client/qt4/ibus-input-context.cpp commit 947225c69112e37f945b6eae5360b95f98675930 Author: Huang Peng Date: 2008-09-17 19:15:14 +0800 Refine coding style. M client/qt4/ibus-client.cpp M client/qt4/ibus-input-context.cpp commit a738027852be62ca871e2065428d6ab8052703a0 Author: Huang Peng Date: 2008-09-17 18:54:22 +0800 Refine code. M client/qt4/ibus-client.cpp commit 1ca5958dd3afa1241eb88cc93873d1d5ddbd8824 Author: Huang Peng Date: 2008-09-17 10:42:59 +0800 Use g_fprintf M client/gtk2/ibusim.c commit 7988b3a775c382f6a94c6c1b01192451649ccd76 Author: Huang Peng Date: 2008-09-17 10:41:39 +0800 Use g_strcmp0 replace strcmp M client/gtk2/ibusim.c commit 323b91ee7fc07a788bc17a58c6fd44dd3a9f6f95 Author: Huang Peng Date: 2008-09-17 10:41:31 +0800 Refine coding style. M client/gtk2/ibusimcontext.c commit 60de77374517c3a717d9ed01d6283aebdae23d17 Author: Huang Peng Date: 2008-09-17 09:01:33 +0800 Move IBUS_FORWARD_MASH from .c to .h. M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit c82dca7c51c11c7eaf73a89a08581b7e823bd682 Author: Huang Peng Date: 2008-09-17 08:59:58 +0800 Add forward mask. M lib/gtk2/ibusimclient.c commit 4cd3b0419cd99394fad4c445153970321b0d8c6d Author: Huang Peng Date: 2008-09-17 08:53:41 +0800 Refine coding style. M lib/gtk2/ibusimclient.c commit 24d8be5ecf2a89ef0523c7002ef2e82c133778f2 Author: Huang Peng Date: 2008-09-16 17:28:14 +0800 Use g_slice_new to replace g_new for better performance. M client/x11/main.c M lib/gtk2/ibusimclient.c commit e528c0fd57d7afd37c6e5d27c535689bd56fd8b2 Author: Huang Peng Date: 2008-09-16 16:52:15 +0800 Don't use send_event field in GdkEventKey. And fixed some compile warnings. M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M client/x11/gdk-private.c M client/x11/main.c M lib/gtk2/ibusimclient.c commit 2440d29dc75cf21a0a21fe7f2ad36a345941d917 Author: Huang Peng Date: 2008-09-16 16:21:48 +0800 Fix mem leak. M client/x11/gdk-private.c commit d07849ff3ef4cfd8ee59eb7a01bdcb6173e788f0 Author: Huang Peng Date: 2008-09-16 12:34:27 +0800 Call setFocusWidget to replace focusOut M client/qt4/ibus-input-context.cpp commit d0dde689e9462a2ae5708c4e881c4b4ec29643ac Author: Huang Peng Date: 2008-09-16 09:51:04 +0800 FocusOut widget when widgetDestroyed. M client/qt4/ibus-input-context.cpp commit 33906829dbed822ce1d9c02caaf1e547f59b5d53 Author: Huang Peng Date: 2008-09-16 09:44:00 +0800 Remove slot setFocus. M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h commit b995b397b904844e737e4bd0af84743e6a6ba381 Author: Huang Peng Date: 2008-09-15 18:01:04 +0800 Update po files. M po/ja.po M po/zh_CN.po commit 9077c76e0c531f119fb5c98d57c368e7179df479 Author: Huang Peng Date: 2008-09-15 16:34:08 +0800 Free map return by XGetKeyboardMapping. M client/qt4/ibus-client.cpp commit c241fb6e7d9035db1b89135ddb0f2dfd2eed95db Author: Huang Peng Date: 2008-09-15 16:31:35 +0800 Hack japan [yen bar] key for qt immodule. M client/qt4/Makefile.am M client/qt4/ibus-client.cpp M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp M client/qt4/ibus.pro commit 2508a1dd29e6ce8696efac8b74f4fd4517a4d96d Author: Huang Peng Date: 2008-09-15 15:30:37 +0800 Use guint for japen groups mask. M lib/gtk2/ibusimclient.c commit ec0e311ae0311e4959acca4ff1dc823ceab642e7 Author: Huang Peng Date: 2008-09-15 15:25:14 +0800 Use default cursor location. M client/gtk2/ibusimcontext.c commit 38c50d3093978570c9b53284cd8cb56b12a3360d Author: Huang Peng Date: 2008-09-15 11:09:01 +0800 Does not process key event if context does not have focus. M client/gtk2/ibusimcontext.c commit f5c66bd6ac878f3b00c5117eb0e696b351439ee4 Author: Huang Peng Date: 2008-09-15 10:53:49 +0800 Workaround for increase search for treeview. M client/gtk2/ibusimcontext.c commit 8d5a013a8a1f66f5071d2ebbfce78ed433fb2872 Author: Huang Peng Date: 2008-09-15 03:24:20 +0800 Fix problem when kill some engines. M daemon/bus.py commit 0cdd8d3d49c0806b2fd8e625475f9f2c416d3ee4 Author: Huang Peng Date: 2008-09-14 23:14:34 +0800 Use g_signal_emit to replace g_signal_emit_by_name for better performance. M client/gtk2/ibusimcontext.c commit 10a973c3450a736ed739d71e70bc4d4a93c475c2 Author: Huang Peng Date: 2008-09-14 22:39:23 +0800 Forward event directly. M client/gtk2/ibusimcontext.c commit da8819e7b93a080fc82de3d4d011f8c8389a9655 Author: Huang Peng Date: 2008-09-14 22:31:45 +0800 Use G_SIGNAL_TYPE_STATIC_SCOPE mask to avoid copying data for better performance. M lib/gtk2/ibusimclient.c commit d8cfebe8dc401c588c0bf3d6fc66f711ac2049d5 Author: Huang Peng Date: 2008-09-14 15:56:49 +0800 Update compile option for USE_DBUS_SESSION_BUS. M lib/gtk2/ibusimclient.c commit 2798e96ae5c31f0328c31b7640097b1e36f08e22 Merge: ad00c89 1aecce0 Author: Huang Peng Date: 2008-09-12 09:59:16 +0800 Merge branch 'ubuntu' commit ad00c89cd9c4f975b2124e857fdbe24214cfd8cd Author: Huang Peng Date: 2008-09-12 08:42:37 +0800 Fix problem when start a program with usermode-helper. M client/qt4/ibus-client.cpp M lib/gtk2/ibusimclient.c commit bd9b695b5c81130f04f7315fcbef8a56a3c8291e Author: Huang Peng Date: 2008-09-12 08:09:49 +0800 Add debug code to output environ. M client/gtk2/ibusim.c commit 1aecce03340cdf1292c0d0ee50f5d665f4a0f5df Author: Huang Peng Date: 2008-09-11 18:47:23 +0800 Import debian packaging files by ä¸€å¶ . A debian/README.Debian A debian/changelog A debian/compat A debian/control A debian/copyright A debian/cron.d.ex A debian/dirs A debian/docs A debian/emacsen-install.ex A debian/emacsen-remove.ex A debian/emacsen-startup.ex A debian/ibus-default.ex A debian/ibus.doc-base.EX A debian/im-switch/ibus A debian/init.d.ex A debian/init.d.lsb.ex A debian/manpage.1.ex A debian/manpage.sgml.ex A debian/manpage.xml.ex A debian/menu.ex A debian/postinst A debian/postinst.ex A debian/postrm.ex A debian/preinst.ex A debian/prerm A debian/prerm.ex A debian/rules A debian/watch.ex commit e76fbfa8b7f5dbafb532e361feec25b7ca6150e7 Author: Huang Peng Date: 2008-09-10 18:22:27 +0800 Fix problem when locale is 'C' M daemon/register.py commit 70bb0ed90060130cad4512201e3a16517531a3d8 Author: Huang Peng Date: 2008-09-10 10:11:25 +0800 Add --force opt. M autogen.sh commit 2be1293b9da7f52910969e4a7de04f1fa6b14f6b Author: Huang Peng Date: 2008-09-09 15:37:06 +0800 Add -Wl,--no-undefined in CFLAGS. M autogen.sh commit e3d960312eb0b3e272eb3194c43a1d1b94f6fb07 Author: Huang Peng Date: 2008-09-08 22:37:59 +0800 WIP. M test/test_client.py commit 3c0955994e98a8c0bf06d4f7e4ee06587fff1234 Author: Huang Peng Date: 2008-09-08 21:10:03 +0800 Display message in state pad. M test/test_client.py commit 1c8ccb2cb582a71a4892b81820aff95402e8f02d Author: Huang Peng Date: 2008-09-08 21:06:07 +0800 Update demo code with curses. M test/test_client.py commit 78bc232a82e8a9f4e175c2503c133961b1efd66e Author: Huang Peng Date: 2008-09-08 21:05:44 +0800 Fix some typos. M daemon/inputcontext.py M ibus/bus.py commit b29d6d19386286d13ff207ea05ef0d44260882a7 Author: Huang Peng Date: 2008-09-08 15:02:05 +0800 Fix porblems when focus_in and focus_out. M panel/languagebar.py commit fb038069124a1a3ad892cbd86696f963e92ad384 Author: Huang Peng Date: 2008-09-08 14:57:46 +0800 Save languagebar position. M panel/languagebar.py commit 265a40f29c791a3345a8a2cae8b4174c465199e5 Author: Huang Peng Date: 2008-09-08 09:25:04 +0800 handle aus string related signals. M test/test_client.py commit c019af0f2d155ed2edaf600732218057cabc441e Author: Huang Peng Date: 2008-09-08 09:21:41 +0800 Add test_client.py. A test/test_client.py commit 2874498ce5c5f59fd87e25eeff174c47047d9482 Author: Huang Peng Date: 2008-09-08 09:16:14 +0800 Work on client signals. M daemon/inputcontext.py M ibus/bus.py commit 0e5753be1b726908911a3cfea65fe14c64c00898 Author: Huang Peng Date: 2008-09-07 22:56:29 +0800 Implement signals. M ibus/bus.py commit acdcbf3bcb6d4630367ee15a706effeac6d1e397 Author: Huang Peng Date: 2008-09-07 22:39:50 +0800 Define signals for im clients. M ibus/bus.py commit db47f81d0a04a079047a29e4a05a118bcbd1af0f Author: Huang Peng Date: 2008-09-07 19:30:25 +0800 Add two capabilities for fbterm. M daemon/inputcontext.py commit 9efb21471f2ff947d085cbbea4584b15bcb1be51 Author: Huang Peng Date: 2008-09-06 17:55:31 +0800 Update ibus.svg. M icons/ibus.svg commit 9616f9713f9590a20df14b23155c477f560ed50a Author: Huang Peng Date: 2008-09-06 13:27:52 +0800 Convert Text to Path in ibus.svg. M icons/ibus.svg commit f11370650438e486c425da5a4c7be08160ff81ab Author: Huang Peng Date: 2008-09-06 11:30:31 +0800 Fix a typo. M lib/gtk2/ibusimclient.c commit 9900f05e538e71a0c37b0cfc5eae0c1585ec6486 Author: Huang Peng Date: 2008-09-06 11:23:14 +0800 Include gdk/gdk.h M client/x11/main.c commit 3377100d05cd3f483b202c8e0ce5540e7c679ee4 Author: Huang Peng Date: 2008-09-06 11:21:34 +0800 Include gdk/gdk.h M lib/gtk2/ibusimclient.c commit 133bbf36741ab640cf0984d590671519b5914981 Author: Huang Peng Date: 2008-09-06 10:45:52 +0800 Fix sudo problem. M client/qt4/ibus-client.cpp M lib/gtk2/ibusimclient.c commit d96f994a9dbfee936f3a065b8611ec6d043f7be8 Author: Huang Peng Date: 2008-09-06 10:29:59 +0800 Fix bugs if system does not have XKB. M lib/gtk2/ibusimclient.c commit 206b91fe7614dd3a1a40567f4b54c80a7cb327ed Author: Huang Peng Date: 2008-09-06 10:12:58 +0800 Rename function and remove unused code. M lib/gtk2/ibusimclient.c commit dec9b8052f3384ee2a01a82a38d947a57e8e22c9 Author: Huang Peng Date: 2008-09-06 10:04:23 +0800 Hack Japan [yen bar] & [backslash underbar] keys. M client/x11/gdk-private.c M configure.ac M lib/gtk2/Makefile.am M lib/gtk2/ibusimclient.c commit ab07888604b9e7993ba05eace36e49e495c7e74d Author: Huang Peng Date: 2008-09-03 22:56:28 +0800 Use g_dgettext when glib2 >= 2.18.0 M client/gtk2/ibusimcontext.c commit 89fb436bf12a6525f4b7a87464a27acc7479bba7 Author: Huang Peng Date: 2008-09-03 20:51:53 +0800 Fix problem in nautilus. M client/gtk2/ibusimcontext.c commit b7f8c1b9ad312450f73bbb64eee46eb8f0c63d77 Author: Huang Peng Date: 2008-09-02 21:16:04 +0800 Remove IBusClient::slotFileChanged. M client/qt4/ibus-client.h commit 0e1a1f5316d102c65af1dc02440ba1bb7985c32f Author: Huang Peng Date: 2008-09-02 21:10:29 +0800 Add x11 in CONFIG. To let qt im module built with x11 libraries. M client/qt4/ibus.pro commit 21092ef6492e6a3186891bd4661ded0178b315d5 Author: Huang Peng Date: 2008-09-02 08:08:58 +0800 Fix email_hook and url_hook problem. M panel/panel.py commit 17eeeb8dd2ba385b1a9e67beb386abc83852a7c1 Author: Huang Peng Date: 2008-08-31 22:38:05 +0800 Modify categories of *.desktop M launcher/ibus.desktop.in M setup/ibus-setup.desktop.in commit 676c1b9653c9333d0e5354f9eb4b9de703da970d Author: Huang Peng Date: 2008-08-31 13:26:16 +0800 Use ibus gtk im module for ja, ko, zh. M client/gtk2/ibusim.c commit 5b198f92c2c409b3c972ed605d7d425d3eac4eed Author: Huang Peng Date: 2008-08-31 11:45:31 +0800 Remove empty lines. M ibus/keysyms.py commit aeb7032c694cae6fd8e86a236e95e938ce0f0ac4 Author: Huang Peng Date: 2008-08-31 11:22:49 +0800 Use name_to_keycode to convert name to keyval. M daemon/bus.py M setup/keyboardshortcut.py commit fd0e130388b93cf6c8729d88d5642060c3ec1c15 Author: Huang Peng Date: 2008-08-31 10:36:27 +0800 Fix candidates window position problem. M panel/candidatepanel.py commit 5211d6ecc020e33a213c4d11cac1a7d2cd130a8b Author: Huang Peng Date: 2008-08-31 10:19:28 +0800 Fix a typo. M ibus/lookuptable.py commit 1f9addc9fe67d1e41bb35395de78ac98d8b9e553 Author: Huang Peng Date: 2008-08-31 10:11:55 +0800 Refine coding style. M ibus/lookuptable.py commit 440ff6e5aca11074575a6f19b8c846225f2798e6 Author: Huang Peng Date: 2008-08-31 09:33:08 +0800 Update README. M README commit 3137dc3e04e61162b520f473a8e70034b2f4f395 Author: Huang Peng Date: 2008-08-30 23:14:54 +0800 Add ibus/config.py.in. A ibus/config.py.in commit 5ee51286a53a7c4d79d28f6280e90778535595bd Author: Huang Peng Date: 2008-08-30 23:13:44 +0800 Set hooks for about dialog. M panel/panel.py commit 05cb5b1b3bed10be70016b47bb0817a2c25be9a4 Author: Huang Peng Date: 2008-08-30 22:01:27 +0800 Update Translation. M panel/panel.py M po/ja.po M po/zh_CN.po commit 2fdde080559a8b39fe2d92359ed2e125abb516d3 Author: Huang Peng Date: 2008-08-30 21:52:06 +0800 Add about dialog in ibus menu. M client/gtk2/ibusimcontext.c M configure.ac M ibus/Makefile.am M ibus/__init__.py M panel/panel.py M po/ja.po M po/zh_CN.po M setup/setup.glade commit ff15b28272e8930f512a9f098b6c9970e4ae12e4 Author: Huang Peng Date: 2008-08-30 19:21:06 +0800 Save default input engine and restore it when start ibus. M daemon/bus.py M daemon/factorymanager.py M daemon/ibusdaemon.py commit dc0cf118d0ec4733ce9b12244a2e40f271195278 Author: Huang Peng Date: 2008-08-30 18:15:23 +0800 Update default factory when press Ctrl + Shift. M daemon/bus.py commit 9f986d3f219a0e492a6c8a06673190de9c005603 Author: Huang Peng Date: 2008-08-30 16:24:38 +0800 Set default_factory when user choice a engine in im menu. M daemon/bus.py M daemon/factorymanager.py commit 248018e9a73da7c088bf80d16b9fbc32e35f51ab Author: Huang Peng Date: 2008-08-30 16:09:51 +0800 Remove unused code. M setup/main.py commit c8f995a05d1366096f0d1c95d6bae6ee18c1d83b Author: Huang Peng Date: 2008-08-30 16:07:27 +0800 Remoce unused code. M daemon/bus.py commit 9f4887f8fad3b40887a99aafcf741731bc2dabef Author: Huang Peng Date: 2008-08-30 10:00:17 +0800 Fix a typo. M lib/gtk2/ibusimclient.c commit 7e095605e42a5a614fcfb1c0d34bebcb40222ec6 Author: Huang Peng Date: 2008-08-30 08:53:46 +0800 Fix segfault when connection is broken. M lib/gtk2/ibusimclient.c commit 7eac7f7367a926c24461a6185d70b744c764aaa2 Author: Huang Peng Date: 2008-08-30 07:51:11 +0800 Translate im menu. M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h M panel/panel.py commit 825d1bfb60879f3b4c728d485df18d133c24ce58 Author: Huang Peng Date: 2008-08-29 21:15:13 +0800 reset panel when switch engine. M daemon/bus.py commit 7759c0be236eba32bab76f5352ef3733a99ca347 Author: Huang Peng Date: 2008-08-29 20:36:28 +0800 Translate "Keyboard shortcuts" M setup/keyboardshortcut.py commit 162e8b5cac46c2c10d167437c4b4774f8f9e581b Author: Huang Peng Date: 2008-08-29 20:33:32 +0800 Translate "Switch engine". M launcher/ibus.in M panel/languagebar.py M po/ja.po M po/zh_CN.po commit 96fe474472fee96070763602c44c711d90dcab5f Author: Huang Peng Date: 2008-08-29 07:21:40 +0800 Update ja.po by UTUMI Hirosi . M po/ja.po commit 04e253668b792455afe722fc8ed849f663976e35 Author: Huang Peng Date: 2008-08-28 19:02:04 +0800 Change defaul keyboard shortcuts M daemon/bus.py M ibus/common.py M po/ja.po M po/zh_CN.po M setup/main.py commit 4a2a57d638f497c8d1366faceb800cf4117aeb77 Author: Huang Peng Date: 2008-08-27 18:45:50 +0800 Auto hide language bar when disable input method. M panel/languagebar.py M panel/panel.py commit 63c08d5a33e830edfe056ef22a0e802ea61e4ed3 Author: Huang Peng Date: 2008-08-27 18:02:57 +0800 Use 0 for timestamp of XEvent. M client/x11/main.c commit 079027556e845b04343432ccf9fcf092527c986f Author: Huang Peng Date: 2008-08-27 17:46:48 +0800 Update translation problems. M po/ja.po M po/zh_CN.po M setup/main.py commit 64a8ed4ca32aaf70c9289fd2a91ff485936f2ea1 Author: Huang Peng Date: 2008-08-27 17:27:56 +0800 Chang the order of LINGUAS. M po/LINGUAS commit 5be35d26b5931a6aba2bb450cf0d100485d854ce Author: Huang Peng Date: 2008-08-27 17:26:32 +0800 Replace Divehi with Dhivehi M ibus/lang.py commit f8f5fda5d8a80617db1907df0dabe2f1b07391bf Author: Huang Peng Date: 2008-08-27 17:25:51 +0800 Replace Divehi with Dhivehi. M po/ja.po M po/zh_CN.po commit 4957c09a85fb06b24a64f146977b860122431bb1 Author: Huang Peng Date: 2008-08-27 17:22:14 +0800 Update AUTHORS. M AUTHORS commit 51feae5b105db1ad8b9f5036482166bbf22f7938 Author: Huang Peng Date: 2008-08-27 17:19:09 +0800 Add ja.po by UTUMI Hirosi . M po/LINGUAS A po/ja.po commit 34e648b843985c58b52251c72a7622175134a2f7 Author: Huang Peng Date: 2008-08-27 17:16:53 +0800 Make gettext work for message. M setup/main.py commit a5fba23b3d7c51db9c6d735104fbd3459253f7fd Author: Huang Peng Date: 2008-08-27 17:09:11 +0800 Fix selection problem in gedit. M client/gtk2/ibusimcontext.c commit e86a77c238e631be9b91f836937bafbbdc714128 Author: Huang Peng Date: 2008-08-27 12:57:39 +0800 Request reload_engines. M setup/main.py commit a6cba87494079c5d6f3b1006ddd8eafb0fa23d9e Author: Huang Peng Date: 2008-08-27 12:57:22 +0800 Remove unused check. M configure.ac commit 767c03c78771ee4e7464c2c5f481a317d7da336f Author: Huang Peng Date: 2008-08-27 12:08:20 +0800 Do not print backtrace. M daemon/ibusdaemon.py commit f9022457cbfe1f8d4341fbab45eafa74fea78c2a Author: Huang Peng Date: 2008-08-25 22:57:24 +0800 Update the context_name of im info. M client/gtk2/ibusim.c commit 3ecd768dd15a5cc3db4e2b0bd8b0d2a7b1c26c4b Author: Huang Peng Date: 2008-08-25 22:41:01 +0800 Update headers. M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit 883c83211bee60ed07ad5cec63a2f7df40e89cec Author: Huang Peng Date: 2008-08-25 22:40:52 +0800 Replase "The Input Bus" with iBus M client/gtk2/ibusim.c commit 75fbad459b3bcab30820ac065d412c52412abd4f Author: Huang Peng Date: 2008-08-25 14:37:30 +0800 Fix problem in KDE. M client/qt4/ibus-client.cpp commit 7e5848808ce6540325a80bef699f791501bc91d4 Author: Huang Peng Date: 2008-08-25 11:27:55 +0800 Update po files. M po/zh_CN.po commit 4036e16e79183d314f77e565e2727f6627aaedf2 Author: Huang Peng Date: 2008-08-25 11:26:09 +0800 Makedirs if ~/.config/autostart is not exist. M setup/main.py commit d1c1ea222a0dcfd966ccb6fa51f348f80e2e1a6f Author: Huang Peng Date: 2008-08-25 10:32:01 +0800 Fix problem in config_set_value M gconf/config.py commit 03470e3a7d7c5c610ce9e6c6ddc1607d33fe3280 Author: Huang Peng Date: 2008-08-25 09:28:39 +0800 Fix problem when font_name contains unicode chars. M gconf/config.py commit f25b1350150f0b2db51115362bbb4d3da3a8ef08 Author: Huang Peng Date: 2008-08-25 08:34:01 +0800 Fix problem when font_name has unicode char. M panel/panel.py M setup/main.py commit caf982d0574f27b66d1e8bc8362ee9b94c79611f Author: Huang Peng Date: 2008-08-25 06:22:39 +0800 Fix a typo. M ibus/factory.py commit e71343d96e959eba99f880144610e3e8919c32f7 Author: Huang Peng Date: 2008-08-24 16:27:06 +0800 WIP. M setup/setup.glade commit dbf0ed9245e21a057b918d01a74d60bcece3e85d Author: Huang Peng Date: 2008-08-24 16:24:16 +0800 Change the UI. M setup/setup.glade commit f08468fa7bbabd000d8308c2f32525764bb424cd Author: Huang Peng Date: 2008-08-24 11:46:05 +0800 Translate some msg. M panel/panel.py M po/zh_CN.po commit 905076b0976d2cb2aa8daac7f3d6de58f31f86b7 Author: Huang Peng Date: 2008-08-24 10:12:12 +0800 Refine code. M panel/panel.py commit b16711ce6ea5e94a0e001ea8446b469a42046dc5 Author: Huang Peng Date: 2008-08-24 10:07:58 +0800 Support auto hide M panel/languagebar.py M panel/panel.py commit 99261ce1e497fbd6dc20a3b61a30bb3b60bcc3eb Author: Huang Peng Date: 2008-08-24 10:00:42 +0800 Support custom font. M panel/candidatepanel.py M panel/panel.py commit b512009d51575fa189ef46eaf21b36ea951d492a Author: Huang Peng Date: 2008-08-24 08:54:42 +0800 Add custom_font and auto_hide configure items. M setup/main.py M setup/setup.glade commit ce853e02294d8d432187c2e989e165fe043e1818 Author: Huang Peng Date: 2008-08-23 09:08:50 +0800 Create engine folder in install-data-hook. M Makefile.am M ibus.spec.in commit 0bc1bab541e702d9ce438bd487260275ff8a5e53 Author: Huang Peng Date: 2008-08-23 08:29:59 +0800 Require Qt >= 4.4.0 M configure.ac commit 938981abbe11994677fc646d7146ac1d9a9413f3 Author: Huang Peng Date: 2008-08-22 16:42:36 +0800 Refine Makefile.am M client/gtk2/Makefile.am M client/x11/Makefile.am M po/zh_CN.po commit 0ac5c124f8cea65f5cde563c44190e8e84063421 Author: Huang Peng Date: 2008-08-22 16:31:16 +0800 Add header. M util/IMdkit/Makefile.am commit eab834d3bfc704c4e2f80200914c32696177b120 Author: Huang Peng Date: 2008-08-22 12:01:56 +0800 internationalize engine's name M daemon/register.py M ibus/interface/iibus.py M po/zh_CN.po M setup/main.py M setup/setup.glade commit 8bb2ae1cd7a80d7d9a9fbeb9317ca302b202e10a Author: Huang Peng Date: 2008-08-22 10:56:11 +0800 Fix gettext problem M setup/keyboardshortcut.py commit 3d68f2129245cb03b485836ad94c30c5ba5afb2b Author: Huang Peng Date: 2008-08-22 10:55:16 +0800 Update translation. M po/POTFILES.in M po/zh_CN.po M setup/main.py commit 9554d5fe1775c74b13c2027557795e7723593778 Author: Huang Peng Date: 2008-08-22 10:46:44 +0800 Translate some msg. M po/zh_CN.po commit c4a1a72e576f268382a355ccd66b9d717aaf555f Author: Huang Peng Date: 2008-08-22 10:41:44 +0800 Fix problem when restart ibus-daemon. M client/qt4/ibus-client.cpp M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp commit 659f9387df90ebb90a9d832f8d4d86aac28573a6 Author: Huang Peng Date: 2008-08-22 10:11:01 +0800 Use QString::isEmpty() replace QString::isNull() to avoiding some problems. M client/qt4/ibus-client.cpp commit ec7331b6388817ff79860bbbac799c3fd4f97f2f Author: Huang Peng Date: 2008-08-21 18:19:11 +0800 Ignore NumLock mask. M daemon/bus.py commit c77adbb5dea1bfd4fe275c9789623a0360677c9e Author: Huang Peng Date: 2008-08-21 13:49:34 +0800 Add configure items for keyboard shortcuts. M daemon/bus.py M ibus/modifier.py M setup/keyboardshortcut.py M setup/setup.glade commit 766f22120dfeaa883ef0c3346898d9a7a690dd11 Author: Huang Peng Date: 2008-08-21 11:40:05 +0800 WIP. M client/gtk2/ibusimcontext.c M daemon/bus.py M lib/gtk2/ibusimclient.c M setup/main.py commit 6a605c9f5fa77ab32dc74fd91afd4c46d8d92c2e Author: Huang Peng Date: 2008-08-21 11:17:06 +0800 Check CreateInputContext's return value. M client/qt4/ibus-client.cpp commit ad31ce022214af66889f0700e617f1d2f99c2c5c Author: Huang Peng Date: 2008-08-21 11:14:36 +0800 Test CreateInputContext's return value. M client/x11/main.c commit 9dc63065ea6b6365eccbb9ba180af4cf4f0a0d7c Author: Huang Peng Date: 2008-08-21 11:13:04 +0800 Fix segfault when starting ibus. M client/gtk2/ibusimcontext.c commit e6f53ea154b1f155b9c448f96d8374f665ee2c87 Author: Huang Peng Date: 2008-08-21 08:59:12 +0800 Add keyboardshortcut.py in Makefile.am M setup/Makefile.am commit 3e6fc7dde3feda5c11d67b15be3c765e15f1ea2d Author: Huang Peng Date: 2008-08-21 08:18:48 +0800 WIP. M setup/keyboardshortcut.py M setup/main.py M setup/setup.glade commit feef446a21ea0e701de13d301dbe64877a91e79c Author: Huang Peng Date: 2008-08-21 07:19:36 +0800 WIP. M setup/main.py M setup/setup.glade commit cc9d726edeb71d3b002bc5a08277680516bf7191 Author: Huang Peng Date: 2008-08-20 23:34:40 +0800 WIP. M setup/setup.glade commit 61d73891928050c071966c896de2967d5d2341ef Author: Huang Peng Date: 2008-08-20 20:23:15 +0800 Fix problem when delete a keyboard shortcut. M setup/keyboardshortcut.py commit ff2602cfc356474d23e4aadde00ea71e482d4731 Author: Huang Peng Date: 2008-08-20 15:08:18 +0800 Add add_shortcut method M setup/keyboardshortcut.py commit 1ea2187d6c06f5a277149d9a6e53aa3f9c83ba2d Author: Huang Peng Date: 2008-08-20 14:57:31 +0800 WIP. M setup/keyboardshortcut.py commit f72d9cbdc9a3a73ca39858503fcb862fdaf01661 Author: Huang Peng Date: 2008-08-20 11:14:58 +0800 Add border for the shortcut view. M setup/keyboardshortcut.py commit 3a6a1951171016cb888817d2c8c03d6e2347a694 Author: Huang Peng Date: 2008-08-20 11:04:31 +0800 WIP. A setup/keyboardshortcut.py commit 26097461cb2428f7c594c11fd12123705bbbbc39 Author: Huang Peng Date: 2008-08-19 22:05:49 +0800 Add code to work around bug http://code.google.com/p/ibus/issues/detail?id=25. M client/gtk2/ibusimcontext.c M client/x11/main.c M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit 628a3d8eea5bb38beae3022cf594212e803f0d22 Author: Huang Peng Date: 2008-08-19 13:56:28 +0800 Add get_labels for lookuptable M ibus/lookuptable.py commit 8c6fae5ec47bb0684c88e891e66ea070b1d0af58 Author: Huang Peng Date: 2008-08-19 12:58:06 +0800 Refine code of attribue.py M ibus/attribute.py M ibus/gtk.py commit 7ce436b2e33f078c3a0628aa5c06e824b81ce302 Author: Huang Peng Date: 2008-08-19 11:07:22 +0800 Fix Ctrl + Shift problem. M daemon/bus.py commit 4d34dbaff9e0163ce9c1005dac11797e5ca6b7ca Author: Huang Peng Date: 2008-08-19 09:23:37 +0800 Refine code. M ibus/property.py commit 539913da27823ee2884b60db92ae87a94d654069 Author: Huang Peng Date: 2008-08-19 09:21:05 +0800 Translate str to unicode. M ibus/property.py commit ec51a56f8e2e788f303e687186ffe402729081d9 Author: Huang Peng Date: 2008-08-19 09:08:38 +0800 Fix a typo. M panel/toolitem.py commit 399e48ae1a550a3cf3977ee62adc8a46d07c6d02 Author: Huang Peng Date: 2008-08-19 09:05:29 +0800 Refine code. M panel/menu.py commit 865fc381d2210ed095bb156acdba1a6dc0fc6709 Author: Huang Peng Date: 2008-08-19 08:54:37 +0800 Refine code. M panel/languagebar.py M panel/propitem.py M panel/toolitem.py commit d451a893a8e330253d8d71983874d9b5887d9064 Author: Huang Peng Date: 2008-08-19 08:44:23 +0800 Refine code. M ibus/property.py commit d3cf780b44c7a2d7d32b8173f1edc2a5fe527ece Author: Huang Peng Date: 2008-08-18 14:24:42 +0800 Disable some debug output. M client/qt4/ibus-input-context.cpp commit db0290859be1708a2d78636820eb52f2c3bfbe67 Author: Huang Peng Date: 2008-08-18 10:12:27 +0800 Fix cursor pos problem M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h commit f1390a784766ccfc5903d54e9ae03553dac5273f Author: Huang Peng Date: 2008-08-18 10:01:36 +0800 Fix some problems. M client/qt4/ibus-client.cpp M client/qt4/ibus-client.h M client/qt4/ibus-input-context.cpp M client/qt4/ibus-input-context.h commit 8b5edb3da30ec604d1de12ea7e2bff47c4b2f6b1 Author: Huang Peng Date: 2008-08-18 09:15:52 +0800 Fix focus problem in qt im module. M client/qt4/ibus-input-context.cpp commit 4d2fd6e6455a5b9d06e7af71d8778b6c08adbcca Author: Huang Peng Date: 2008-08-18 09:00:27 +0800 Refine code. M lib/gtk2/ibusimclient.c commit 470f774fe3b1123070e791d5a4e241bbaeb83af3 Author: Huang Peng Date: 2008-08-18 08:45:52 +0800 Refine code. M lib/gtk2/ibusimclient.c commit 57719972b69573b3fc2836c6c42d000900625c50 Author: Huang Peng Date: 2008-08-17 23:38:45 +0800 Add Separator in sys menu. M panel/panel.py commit f5ee0db1fe8add2f787efc9f208738436097fcfc Author: Huang Peng Date: 2008-08-17 22:33:30 +0800 Panel supports changing orientation of candidates window. M panel/panel.py commit c6412523c4921b238dff38493cb84ebe1c76f0ba Author: Huang Peng Date: 2008-08-17 22:23:59 +0800 Watch config changed. M setup/main.py commit 7b47c05b0b9cae55eb818a765dcd3aaee57d16e8 Author: Huang Peng Date: 2008-08-17 22:15:56 +0800 Add lookup table orientation configure item. M setup/Makefile.am M setup/ibus-setup.in M setup/main.py M setup/setup.glade commit 95a6289bcd2c2e7ddba727d82da0fe992208c487 Author: Huang Peng Date: 2008-08-17 20:38:36 +0800 Add register_reload_engines method. M daemon/bus.py M daemon/register.py M ibus/bus.py M ibus/interface/iibus.py commit 17782215f92846ae69a0782cf9a3ffeb246f97d7 Author: Huang Peng Date: 2008-08-17 13:20:43 +0800 Add ibusattribute.h. A lib/gtk2/ibusattribute.h commit 45592707639a54c731f1310398467d9d7664d739 Author: Huang Peng Date: 2008-08-17 12:00:24 +0800 Check event.window when forward events. M client/gtk2/ibusimcontext.c commit d4dc319c0ce2b2e79563a23e3e12ffdeb024e2d7 Author: Huang Peng Date: 2008-08-17 11:54:55 +0800 Fix some compile warnings. Update time of forward key events. M client/gtk2/ibusimcontext.c commit e9c171c4c01b985ec931333cfdb4fffa0a4ecc89 Author: Huang Peng Date: 2008-08-17 11:45:54 +0800 Refine code. M lib/gtk2/ibusimclient.c commit 6827f1360b83d70fc0834d5129fc171e6085ba31 Author: Huang Peng Date: 2008-08-17 11:44:18 +0800 Use BOXED for PangoAttrList. M lib/gtk2/ibusimclient.c M lib/gtk2/ibusmarshalers.list commit 43d427e7cbbebcb0ff95dd6945602a670fdc9757 Author: Huang Peng Date: 2008-08-17 11:40:30 +0800 Fix segment fault when start or close ibus daemon. M client/gtk2/ibusimcontext.c M client/gtk2/ibusimcontext.h commit ce45fdc0def7c877e26136e8630601679d347529 Author: Huang Peng Date: 2008-08-17 11:17:10 +0800 Change parent of IBusIMClient. M lib/gtk2/Makefile.am M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit 41de863a20f4bb9795818c29284b32c9c0f5b474 Author: Huang Peng Date: 2008-08-16 21:07:17 +0800 set cursor location when forward key. M client/x11/main.c commit fc4485f5d6bcaa150279420ee53ba4dda0b00707 Author: Huang Peng Date: 2008-08-16 20:34:23 +0800 WIP. M client/x11/main.c M lib/gtk2/ibusimclient.c commit 5c5f5077439017b3e4d795fedc34e51053ba6d89 Author: Huang Peng Date: 2008-08-16 19:09:42 +0800 Fix wrong cursor position. M client/x11/main.c commit b9af24711bc445854fdde8aaecf78ed2cb93c802 Author: Huang Peng Date: 2008-08-16 18:15:10 +0800 Fix some typos in Makefile.am M client/gtk2/Makefile.am M ibus.spec.in commit 889e2190c68a4e2a4a8dce9f654d36d9ec06f138 Author: Huang Peng Date: 2008-08-16 17:52:07 +0800 Fix bug when do not install ibus in /usr M daemon/ibus-daemon.in M daemon/register.py D gconf/ibus-gconf commit 16d674dd9f2561328ab7e1a5a42d32c12d11ec5f Author: Huang Peng Date: 2008-08-16 17:35:51 +0800 Fix make distcheck error. M client/gtk2/Makefile.am commit e3b577660fbd74f7170c92e0f4f741f40b294d05 Author: Huang Peng Date: 2008-08-16 17:31:41 +0800 WIP. M client/x11/main.c M lib/gtk2/ibusimclient.c M lib/gtk2/ibusmarshalers.list commit 66a206b56a573e0059254261d37d64204f57c6cf Author: Huang Peng Date: 2008-08-16 15:48:23 +0800 Fix mem leak, when finalize a ibus im context. M client/gtk2/ibusimcontext.c commit dd63a1fc039d3751bd864a8af0a4e3128a91fb4f Author: Huang Peng Date: 2008-08-16 15:46:21 +0800 ibus-x11 can work now. M Makefile.am D client/x11/IMdkit/FrameMgr.c D client/x11/IMdkit/FrameMgr.h D client/x11/IMdkit/IMConn.c D client/x11/IMdkit/IMMethod.c D client/x11/IMdkit/IMValues.c D client/x11/IMdkit/IMdkit.h D client/x11/IMdkit/Makefile.am D client/x11/IMdkit/Xi18n.h D client/x11/IMdkit/Xi18nX.h D client/x11/IMdkit/XimFunc.h D client/x11/IMdkit/XimProto.h D client/x11/IMdkit/Xtrans.h D client/x11/IMdkit/i18nAttr.c D client/x11/IMdkit/i18nClbk.c D client/x11/IMdkit/i18nIMProto.c D client/x11/IMdkit/i18nIc.c D client/x11/IMdkit/i18nMethod.c D client/x11/IMdkit/i18nPtHdr.c D client/x11/IMdkit/i18nUtil.c D client/x11/IMdkit/i18nX.c M client/x11/Makefile.am M client/x11/main.c M configure.ac A util/IMdkit/FrameMgr.c A util/IMdkit/FrameMgr.h A util/IMdkit/IMConn.c A util/IMdkit/IMMethod.c A util/IMdkit/IMValues.c A util/IMdkit/IMdkit.h A util/IMdkit/Makefile.am A util/IMdkit/Xi18n.h A util/IMdkit/Xi18nX.h A util/IMdkit/XimFunc.h A util/IMdkit/XimProto.h A util/IMdkit/Xtrans.h A util/IMdkit/i18nAttr.c A util/IMdkit/i18nClbk.c A util/IMdkit/i18nIMProto.c A util/IMdkit/i18nIc.c A util/IMdkit/i18nMethod.c A util/IMdkit/i18nPtHdr.c A util/IMdkit/i18nUtil.c A util/IMdkit/i18nX.c A util/Makefile.am commit 4f6dd0f14758d8002cb32751c5e2aeb23ed3062f Author: Huang Peng Date: 2008-08-16 14:58:21 +0800 WIP. M client/gtk2/Makefile.am commit 312499e2448ba96313ec90246c0cbe6d2b9a8c4c Author: Huang Peng Date: 2008-08-16 14:54:28 +0800 gtk im module can work now. M client/gtk2/ibusimcontext.c commit 81c8e05c3e4dd888d1db2f4c696fe11e6246cd64 Author: Huang Peng Date: 2008-08-16 14:43:15 +0800 WIP. M client/gtk2/Makefile.am M client/gtk2/ibusimcontext.c commit eea4913d52c8f4fc1ebf3173688305380e32d836 Author: Huang Peng Date: 2008-08-16 14:13:19 +0800 WIP. M client/gtk2/ibusim.c M client/gtk2/ibusimcontext.c M lib/gtk2/ibusimclient.c M lib/gtk2/ibusimclient.h commit 5f630039085256b53f9935d4d5a94de56c0deec8 Author: Huang Peng Date: 2008-08-16 13:41:26 +0800 Remove engine dir. M configure.ac commit 7cf0c05d10bfb465765e439cca299b8eca8d6bcb Author: Huang Peng Date: 2008-08-16 13:41:07 +0800 WIP. M Makefile.am M lib/gtk2/ibusimclient.c commit ad42625677ac6ed3b43598fe71dfe92232f11fed Author: Huang Peng Date: 2008-08-16 13:40:58 +0800 Remove engine folder.. D engine/Makefile.am commit 44dce73dae56c19e6f21caa4bb022dba0996ff9e Author: Huang Peng Date: 2008-08-16 13:03:05 +0800 WIP. M lib/gtk2/Makefile.am commit 51176a19e373c178174a6a6360ed9db3e81fba1b Author: Huang Peng Date: 2008-08-16 12:53:58 +0800 WIP. M client/gtk2/Makefile.am D client/gtk2/ibusimclient.c D client/gtk2/ibusimclient.h D client/gtk2/ibusmarshalers.list commit 931f116d5fee25f22a48cf50b13323f3bd89180b Author: Huang Peng Date: 2008-08-16 12:51:47 +0800 WIP. M Makefile.am A client/Makefile.am A client/gtk2/Makefile.am A client/gtk2/ibusim.c A client/gtk2/ibusimclient.c A client/gtk2/ibusimclient.h A client/gtk2/ibusimcontext.c A client/gtk2/ibusimcontext.h A client/gtk2/ibusmarshalers.list A client/qt4/.gitignore A client/qt4/Makefile.am A client/qt4/ibus-client.cpp A client/qt4/ibus-client.h A client/qt4/ibus-input-context.cpp A client/qt4/ibus-input-context.h A client/qt4/ibus.pro A client/qt4/im-ibus-qt.cpp A client/x11/IMdkit/FrameMgr.c A client/x11/IMdkit/FrameMgr.h A client/x11/IMdkit/IMConn.c A client/x11/IMdkit/IMMethod.c A client/x11/IMdkit/IMValues.c A client/x11/IMdkit/IMdkit.h A client/x11/IMdkit/Makefile.am A client/x11/IMdkit/Xi18n.h A client/x11/IMdkit/Xi18nX.h A client/x11/IMdkit/XimFunc.h A client/x11/IMdkit/XimProto.h A client/x11/IMdkit/Xtrans.h A client/x11/IMdkit/i18nAttr.c A client/x11/IMdkit/i18nClbk.c A client/x11/IMdkit/i18nIMProto.c A client/x11/IMdkit/i18nIc.c A client/x11/IMdkit/i18nMethod.c A client/x11/IMdkit/i18nPtHdr.c A client/x11/IMdkit/i18nUtil.c A client/x11/IMdkit/i18nX.c A client/x11/Makefile.am A client/x11/gdk-private.c A client/x11/gdk-private.h A client/x11/main.c M configure.ac D gtk2/Makefile.am D gtk2/ibusim.c D gtk2/ibusimclient.c D gtk2/ibusimclient.h D gtk2/ibusimcontext.c D gtk2/ibusimcontext.h D gtk2/ibusmarshalers.list A lib/Makefile.am A lib/gtk2/Makefile.am A lib/gtk2/ibusimclient.c A lib/gtk2/ibusimclient.h A lib/gtk2/ibusmarshalers.list D qt4/.gitignore D qt4/Makefile.am D qt4/ibus-client.cpp D qt4/ibus-client.h D qt4/ibus-input-context.cpp D qt4/ibus-input-context.h D qt4/ibus.pro D qt4/im-ibus-qt.cpp D x11/IMdkit/FrameMgr.c D x11/IMdkit/FrameMgr.h D x11/IMdkit/IMConn.c D x11/IMdkit/IMMethod.c D x11/IMdkit/IMValues.c D x11/IMdkit/IMdkit.h D x11/IMdkit/Makefile.am D x11/IMdkit/Xi18n.h D x11/IMdkit/Xi18nX.h D x11/IMdkit/XimFunc.h D x11/IMdkit/XimProto.h D x11/IMdkit/Xtrans.h D x11/IMdkit/i18nAttr.c D x11/IMdkit/i18nClbk.c D x11/IMdkit/i18nIMProto.c D x11/IMdkit/i18nIc.c D x11/IMdkit/i18nMethod.c D x11/IMdkit/i18nPtHdr.c D x11/IMdkit/i18nUtil.c D x11/IMdkit/i18nX.c D x11/Makefile.am D x11/gdk-private.c D x11/gdk-private.h D x11/main.c commit 6a820938ed75a8c87ba223e248cba0d552bcb8b1 Author: Huang Peng Date: 2008-08-16 12:28:16 +0800 WIP. M gtk2/ibusim.c M gtk2/ibusimclient.c M gtk2/ibusimclient.h M gtk2/ibusmarshalers.list commit ada53aa8f62f7e3bb8f635add2bccff0c4ce17f4 Author: Huang Peng Date: 2008-08-16 11:12:13 +0800 WIP. M gtk2/Makefile.am M gtk2/ibusimclient.c M gtk2/ibusimclient.h A gtk2/ibusmarshalers.list M x11/main.c commit fd4699471ad0ab77b7eac8dff83f9c8fb11d9fed Author: Huang Peng Date: 2008-08-15 09:44:23 +0800 Set XErrorHandler. M gtk2/ibusimcontext.c M x11/main.c commit 242ea90f5c49b83e2b7333bacba8dea37c5af7d0 Author: Huang Peng Date: 2008-08-14 22:53:39 +0800 Fix X error with rxvt. M x11/main.c commit 2b49eee7367483a3530d6a4b321f65d33f6d1801 Author: Huang Peng Date: 2008-08-14 21:47:20 +0800 Default will show cursor in lookup table M ibus/lookuptable.py commit 4fed7048a96fa0980c85c3fe216b457b79bb1a48 Author: Huang Peng Date: 2008-08-14 21:33:58 +0800 Fix problem when lookup_table without show cursor. M panel/candidatepanel.py M panel/languagebar.py M panel/toolitem.py commit b5adf2c75dc7033590596bbc7c1c0adf35810b32 Author: Huang Peng Date: 2008-08-14 21:33:08 +0800 Add CFLAGS & CXXFLAGS. M autogen.sh commit 16bd435bfc26799784aa62a7d94816d371b28e33 Author: Huang Peng Date: 2008-08-14 21:31:54 +0800 Fix segfault when use ibus with urxvt. M x11/main.c commit d0c61308117651a6c55ff5c1475d5c352a1244b1 Author: Huang Peng Date: 2008-08-14 07:39:41 +0800 Fix compile warning. M x11/main.c commit b8f1b34019318db89e21361896e704f22273ca85 Author: Huang Peng Date: 2008-08-14 07:37:32 +0800 Fix compile warning. M autogen.sh M gtk2/ibusimclient.c M gtk2/ibusimcontext.c commit 68039d1e60dfe2c3a66fddba94157b72c61fde5a Author: Huang Peng Date: 2008-08-14 07:25:16 +0800 Fix compile warning. M x11/IMdkit/i18nAttr.c commit 5bc672a6c0c5ea120af9c36729f107c950c969e2 Author: Huang Peng Date: 2008-08-14 07:20:52 +0800 Fix compile warning. M gtk2/ibusimclient.c M gtk2/ibusimcontext.c commit b234b2be1580dac4e9cb9783ea01365c36557c52 Author: Huang Peng Date: 2008-08-14 07:11:50 +0800 Use g_new0 replace g_malloc0 M x11/main.c commit b4a425733ba6e4882283f2e6fcc618348536bd67 Author: Huang Peng Date: 2008-08-14 07:09:27 +0800 Change header of main.c M x11/main.c commit ba6433adcd67e075df3fa435ae9596ee676d62af Author: Huang Peng Date: 2008-08-14 07:07:48 +0800 Change header of gdk-private.{c,h} M x11/gdk-private.c M x11/gdk-private.h commit 7f9193b9655be9eb9cec927285eea9dac954c083 Author: Huang Peng Date: 2008-08-14 07:06:42 +0800 Change header for gdk-private.{c,h} M x11/gdk-private.c M x11/gdk-private.h commit eb9731484bc370552f9c5701023a424a4b5841fe Author: Huang Peng Date: 2008-08-13 22:42:40 +0800 Translate all texts. M po/zh_CN.po M setup/main.py commit 553775b68973f3ce7449d700a34932306d3a0f15 Author: Huang Peng Date: 2008-08-13 22:37:33 +0800 Add *.po file in spec. M ibus.spec.in commit 767258ca50b3d5c854db5003ada1fd7b5d8dd13b Author: Huang Peng Date: 2008-08-13 22:35:42 +0800 Translate all msg. M po/zh_CN.po commit 7074df9900c035927b1b955ed677b8652f0a445c Author: Huang Peng Date: 2008-08-13 22:32:32 +0800 Add zh_CN.po A po/LINGUAS A po/zh_CN.po commit ff6087669a7a17dcff1f997138b1c9aa28d4de5b Author: Huang Peng Date: 2008-08-13 22:06:08 +0800 i18n WIP. M po/POTFILES.in commit 12911afd7cd03e7eaf660e5e4911bef181d7035e Author: Huang Peng Date: 2008-08-13 16:12:16 +0800 Fix wrong path in ibus.in M launcher/ibus.in commit ce831f93fe3fb94aac7251511d484bead784364d Author: Huang Peng Date: 2008-08-13 16:09:09 +0800 Install programs in @bindir@ M daemon/Makefile.am M gconf/Makefile.am M ibus.spec.in M panel/Makefile.am M x11/Makefile.am commit a5f1cd6816b4179f8e236b6b8cc9aca374bfe76c Author: Huang Peng Date: 2008-08-13 15:42:26 +0800 Fix problem in archlinux. M configure.ac M launcher/ibus.in commit 1b0b4528869fe3b1a46e49a38385226dba228491 Author: Huang Peng Date: 2008-08-13 15:15:09 +0800 Use libexecdir M setup/ibus-setup.in M setup/main.py commit 9e2c9217c60ca9c58b5071ec8a0da1a4abfef2d5 Author: Huang Peng Date: 2008-08-13 11:04:32 +0800 Refine launcher code. M ibus/common.py M launcher/ibus.in commit cb0293353d50fc3c9bd38f06f9a052cd6405924f Author: Huang Peng Date: 2008-08-13 10:26:12 +0800 Use g_atexit replace atexit. M x11/main.c commit 180fd76c6ec30aa7b67d13237aaea4ca0fb7960d Author: Huang Peng Date: 2008-08-13 10:13:33 +0800 Refine ibus launcer code. M launcher/ibus.in commit e9e8eae8b3aa14110680da08fa79ba71547bc2c3 Author: Huang Peng Date: 2008-08-12 15:14:58 +0800 Add Requires gnome-python2-gconf in spec file. M ibus.spec.in commit a47f242de14f0599c3129ba76522853231202758 Author: Huang Peng Date: 2008-08-12 14:46:22 +0800 Change ibus_micro_version to 1. M configure.ac commit fd9924aaa1263c1f60e4a82903c6a8e1159e0c9b Author: Huang Peng Date: 2008-08-12 14:13:44 +0800 Do support move candidate window. M panel/candidatepanel.py commit f864ac2b98ad6b51ed1ed0f1d0b4505968e56983 Author: Huang Peng Date: 2008-08-12 14:12:00 +0800 Rename StringList to CandidateList. M ibus/lookuptable.py commit be9a339ffd21f2d333d1174e6d4171941064edbc Author: Huang Peng Date: 2008-08-12 14:10:16 +0800 Add __getslice__ method for StringList. M ibus/lookuptable.py commit 28aa9fed6a3893af6aaa3d75aa7f9150a5fa8fa5 Author: Huang Peng Date: 2008-08-11 21:03:45 +0800 Hide preedit when disable input method. M daemon/inputcontext.py commit 22bc732fe637b2a94fc6494ec3ec9fb7ad158d4b Author: Huang Peng Date: 2008-08-11 17:49:55 +0800 Fix a problem when press Ctrl-Shift M daemon/factorymanager.py commit 9862c178ee34df60fde6e8c7865de2aa2f8affb6 Author: Huang Peng Date: 2008-08-11 17:44:43 +0800 Change candidates' attributes. M ibus/attribute.py M panel/candidatepanel.py commit 721a884b76c2958f3e144e1e2e9799f11e50e5a3 Author: Huang Peng Date: 2008-08-11 17:06:54 +0800 Use Viewport in candidate window. M panel/candidatepanel.py commit 9abe8be7da1d7a43871bfb2854088442d7023e13 Author: Huang Peng Date: 2008-08-11 09:08:21 +0800 Add hotkey in README. M README commit 0f93a53484ae632df1c70005c03397710c791137 Author: Huang Peng Date: 2008-08-11 01:15:22 +0800 opt lookup_table transport performance. M ibus/engine.py M ibus/lookuptable.py commit ddb16588289a33eac2c52d48ac1ffd25bab04fa0 Author: Huang Peng Date: 2008-08-11 00:35:28 +0800 Fix problem when unfocused context calls set_cursor_position. M daemon/bus.py commit 80a1b629e9380b4ea24be437bad6ff0a0e5518c0 Author: Huang Peng Date: 2008-08-10 18:17:03 +0800 Remove docs. D doc/interfaces M doc/specification commit 47e653067ba8f9146586df549ed7ce0ba590e552 Author: Huang Peng Date: 2008-08-10 18:14:14 +0800 Fix problem when restart ibus daemon. M daemon/bus.py commit 26259dbd71e104ce70a28bc6cbe603b2c50806e0 Author: Huang Peng Date: 2008-08-10 18:08:59 +0800 Focus in when reconnect to ibus. M gtk2/ibusimcontext.c commit 8c3015afa0d86007c37ad64f1da71d8b7c62167d Author: Huang Peng Date: 2008-08-10 17:55:14 +0800 Add C-Shift for next factory. M daemon/bus.py commit 34eb3a7d807a30e66a10006cc6e3071632d012f4 Author: Huang Peng Date: 2008-08-10 13:56:06 +0800 WIP. M icons/ibus.svg commit dfb1168993f6717e8b328ac5e3da103b09a0b2bb Author: Huang Peng Date: 2008-08-10 13:42:49 +0800 WIP. M x11/main.c commit 4990988646b89535286a3fed3dc3a6840845d027 Author: Huang Peng Date: 2008-08-10 13:32:52 +0800 Use old engine-default.svg M icons/engine-default.svg commit c6a545fd69f9ffac1b731344878d9fdb9f118584 Author: Huang Peng Date: 2008-08-10 13:26:07 +0800 Modify icon. M icons/ibus.svg commit cd3e61c3fcf08aecfdaf78c8e1bb43931c8c07a6 Author: Huang Peng Date: 2008-08-10 13:23:34 +0800 Use ibus icon replace engine-default. M panel/languagebar.py M panel/panel.py commit e23221cea1e9fb568f8b6dcec18fc570419a09c8 Author: Huang Peng Date: 2008-08-10 13:03:55 +0800 Use ibus.svg as ibus-setup.svg. T icons/ibus-setup.svg commit 59238ae457f850ed2feecdb94ad9d7af9146be2b Author: Huang Peng Date: 2008-08-10 09:04:16 +0800 Change color of icons. M icons/engine-default.svg commit 0f634129e935f4320bad58bf5e84f98761d9f327 Author: Huang Peng Date: 2008-08-09 23:12:06 +0800 Resume cursor_position if context has focus when reconnect to ibus. M gtk2/ibusimcontext.c M gtk2/ibusimcontext.h commit a436714004455529d6cbe00bf64c2f911e2a490c Author: Huang Peng Date: 2008-08-09 22:57:04 +0800 Refine code and fix some compile warnings. M gtk2/ibusim.c M gtk2/ibusimclient.c commit 57421462edc62256018c4ba00be26a7b531bb44f Author: Huang Peng Date: 2008-08-09 22:27:44 +0800 Remove debug output. M panel/panel.py commit 9532e04a817cd2e42be910d6273a22d51bfa04d5 Author: Huang Peng Date: 2008-08-09 20:42:32 +0800 Chang color of icons. M icons/engine-default.svg commit f167995d016658aed1e6cd08615c3820bd59a35e Author: Huang Peng Date: 2008-08-09 19:19:06 +0800 Change icons. M icons/engine-default.svg M icons/ibus.svg commit 04b81eae7c7de532b80ed68fb6e43f2554c56ce5 Author: Huang Peng Date: 2008-08-09 17:09:50 +0800 Refine code. M x11/main.c commit 8cebcc82b2b20a35da332db29f7ea70f2d5be6dc Author: Huang Peng Date: 2008-08-09 11:33:41 +0800 Fix cursor position problem M gtk2/ibusimcontext.c commit a422f497ceae8930405c51221aa6146899c67b8a Author: Huang Peng Date: 2008-08-09 08:30:10 +0800 Refine coding style. M configure.ac M launcher/ibus.in commit c9c0d1f87e5c28b42d9b5c2422057d88d6083f37 Author: Huang Peng Date: 2008-08-08 17:20:15 +0800 Modify for packaging review. M ibus.spec.in commit 007c8c1a495a44b2791663485c486da45f322779 Author: Huang Peng Date: 2008-08-08 17:15:15 +0800 Remove unused dependences. M configure.ac M ibus.spec.in commit ea852dbea85043bf36faeb2c0c43a5e6413c25a8 Author: Huang Peng Date: 2008-08-08 15:12:22 +0800 Use LGPLv2. M COPYING commit 3cb4c5c7813d5cb5dc593c9e1db5f8a285cb3649 Author: Huang Peng Date: 2008-08-08 12:03:35 +0800 Refine doc. M README commit 2116f41641d605e05bd0ff4ac1f69cfce14ee319 Author: Huang Peng Date: 2008-08-08 12:01:47 +0800 Refine doc for rpm review. M README M ibus.spec.in commit 6aef6260e00c70dd3f56f6c4af186b70929e3048 Author: Huang Peng Date: 2008-08-08 10:50:50 +0800 Use atexit to kill daemon M x11/main.c commit 0d5249970d95047e329bb44c371b488463fd167f Author: Huang Peng Date: 2008-08-08 08:02:10 +0800 Fix refresh problem. M panel/Makefile.am M panel/candidatepanel.py M panel/panel.py commit f64adc44249c776fbece34d3e5c50b47eebc3ddd Author: Huang Peng Date: 2008-08-07 18:02:08 +0800 Sleep for every. M xinput-ibus commit 707cd300159b6ccfde2162d6e64e259a7b134a9f Author: Huang Peng Date: 2008-08-07 15:46:24 +0800 Remove python_sitearch. M ibus.spec.in commit d79633dc99cd8d94fc9655f38d27193c97d99b26 Author: Huang Peng Date: 2008-08-07 14:53:12 +0800 Handler X IO Error. M launcher/ibus.in M x11/main.c commit 131fbdd6c108f0931ae9a655690202ec150af81f Author: Huang Peng Date: 2008-08-07 14:15:11 +0800 Use sleep as fake xim server. M xinput-ibus commit c40012c674f7d3a5fb9c519f0be63fa6427d9c77 Author: Huang Peng Date: 2008-08-07 13:29:32 +0800 Use cat as a fake XIM server. M xinput-ibus commit 20376165d63220dbea7f8d3d1bee6f5a0e9ec61c Author: Huang Peng Date: 2008-08-07 13:00:10 +0800 Fix rpmlint errors. M ibus.spec.in commit 9bb9a4691dca85f57ce8a7eb8e229238c4f0adb5 Author: Huang Peng Date: 2008-08-07 10:52:10 +0800 Kill daemon when ibus-x11 exit. M gtk2/ibusimclient.c M gtk2/ibusimclient.h M launcher/ibus.in M x11/main.c commit 50060320ffb1a03c08e1f88690c3670c51c7ec66 Author: Huang Peng Date: 2008-08-07 10:27:51 +0800 Check exist ibus, before start a new ibus. M launcher/ibus.in commit 825081a3d719d9816e323325fabb33b0f0f36598 Author: Huang Peng Date: 2008-08-07 10:15:05 +0800 Implement auto start ibus. M setup/main.py M setup/setup.glade commit c93bd8b15a6368ac4aadb17e527f63c9e724f3c4 Author: Huang Peng Date: 2008-08-07 09:33:21 +0800 Fix typos. M panel/panel.py commit 69c9064465e0e7f0f1a52f73cdc4358dbeabfec8 Author: Huang Peng Date: 2008-08-07 09:22:51 +0800 Add IBUS_PREFIX env in start scripts. M daemon/ibus-daemon.in M gconf/ibus-gconf M gconf/ibus-gconf.in M setup/ibus-setup.in commit 5d1c2f9487462405ddb5a70cfc113c39e06a5da5 Author: Huang Peng Date: 2008-08-07 09:19:54 +0800 Add preferences item in sys menu, and implement handler function. M panel/ibus-panel.in M panel/panel.py commit 8895d15e6a26a37b31bc6e8451b6fe8351efdcc9 Author: Huang Peng Date: 2008-08-07 09:01:01 +0800 Edit ibus desktop items. M launcher/ibus.desktop.in M setup/ibus-setup.desktop.in commit afe55e0c6245ed0e17f1ed62b489fb94dff7543c Author: Huang Peng Date: 2008-08-07 07:25:10 +0800 Add sys menu for panel. M panel/panel.py commit f5ebcc85fdc233796fc181a63795045a7a8867d5 Author: Huang Peng Date: 2008-08-06 23:55:24 +0800 Kill: do reply before kill self. M daemon/bus.py commit beea0f5f37ed291184ef83d710e378ded8b3d8f9 Author: Huang Peng Date: 2008-08-06 23:53:53 +0800 Change Kill to async method. M ibus/interface/iibus.py commit afe9f55197bc506ba3ba4bee5198cc3914d751e7 Author: Huang Peng Date: 2008-08-06 23:52:47 +0800 Close ibus-xim when connection be closed. M x11/main.c commit e9e84025b433278c35ca151d6ab9fa16ae148183 Author: Huang Peng Date: 2008-08-06 23:45:47 +0800 Add connected & disconnected signal. M gtk2/ibusimclient.c M gtk2/ibusimclient.h commit a9db37d1fa7347475d0a85c18e62e65292c2379e Author: Huang Peng Date: 2008-08-06 23:22:09 +0800 Implement kill in ibus-daemon. M daemon/bus.py commit e580d117d8f8b20b081ed4dad1065fa8be7c5b5f Author: Huang Peng Date: 2008-08-06 23:18:52 +0800 Add kill method. M ibus/bus.py commit 7753b354edde682500595dbf8766751a97ce225d Author: Huang Peng Date: 2008-08-06 23:18:18 +0800 Rename IIBus.Destroy to IIBus.Kill. M ibus/interface/iibus.py commit 49f95590fbaf72045c76846d8de08e13b488ce90 Author: Huang Peng Date: 2008-08-06 23:16:54 +0800 Add Destroy method for IBus. M ibus/interface/iibus.py commit 910d645f07033860e9d52806b9667d915b93c2f6 Author: Huang Peng Date: 2008-08-06 23:13:35 +0800 Refine messages. M setup/main.py commit 9dcfd4267e36c30d85a815e72f0c950146f30d0a Author: Huang Peng Date: 2008-08-06 23:10:52 +0800 Add information dialog. M setup/main.py commit 1a8fcb322556d258ee3323d062ebd467dce9ff97 Author: Huang Peng Date: 2008-08-06 23:03:14 +0800 Add start ibus code. M setup/main.py M setup/setup.glade commit 91fe33f5bea02a6b6fa68c37e88cc8cfd55997cc Author: Huang Peng Date: 2008-08-06 22:34:27 +0800 Do not start ibus in xinitrc. M xinput-ibus commit bb9aab042d50a17f142120a0c00a7201f443924c Author: Huang Peng Date: 2008-08-06 22:32:04 +0800 Fix problem when start ibus with a window manager. M configure.ac M icons/Makefile.am M launcher/Makefile.am A launcher/ibus.desktop.in M launcher/ibus.in M panel/handle.py M panel/languagebar.py commit aa9ad606487ac6730837f95c2c7e215329ac649d Author: Huang Peng Date: 2008-08-06 21:58:22 +0800 Use gtk_main to replace g_main_loop. M x11/main.c commit 42d39a995de0cb14e566753fad273d38a3094c51 Author: Huang Peng Date: 2008-08-06 19:06:39 +0800 Change XIM. M xinput-ibus commit 26a9f1aa0cc1c74304bce2a3e35055e5933666b5 Author: Huang Peng Date: 2008-08-06 13:59:55 +0800 Scale icon size. M setup/main.py commit 2fad828d8e377597da641f71bd58108c0360d8e5 Author: Huang Peng Date: 2008-08-06 13:45:36 +0800 Support path as icon. M setup/main.py commit 80bad58466cf570fb53438eb3da853912df5ad82 Author: Huang Peng Date: 2008-08-06 13:02:43 +0800 Fix make dist error. M configure.ac commit 441b1524f9fbebaa2b01968289333a39de4faa89 Author: Huang Peng Date: 2008-08-06 13:02:30 +0800 Add pixmaps. M ibus.spec.in commit bc8142802793feabab406c39891bdfeaf3963d5c Author: Huang Peng Date: 2008-08-06 10:14:47 +0800 Edit README. M README commit 519697b564d2daeaf2d9c2a241cf64b3c66f26e0 Author: Huang Peng Date: 2008-08-06 10:13:07 +0800 Fix configure bug of check qt. M configure.ac M gconf/ibus-gconf commit 1c41efd75961c60a9da0a27991ff0333d29965c2 Author: Huang Peng Date: 2008-08-06 08:13:02 +0800 Show warning message in MessageDialog when can not connect to ibus-daemon. M setup/main.py commit 9a475c6a8d89a1ebe3ee5b6a01a19f1d4b4332c7 Author: Huang Peng Date: 2008-08-06 07:13:20 +0800 Exit when can not connect to ibus-daemon. M setup/main.py commit eef1e0fc612342fabae4ff8a815863e3b942569a Author: Huang Peng Date: 2008-08-06 06:55:34 +0800 Refine code of creating ibus address string. M gtk2/ibusimclient.c M qt4/ibus-client.cpp M qt4/ibus-client.h commit 1843f0adcf792b7eae7a11ac6787d8dfd51df72b Author: Huang Peng Date: 2008-08-05 20:47:10 +0800 Remove AC_SUBST(IBUS_BUILD_QT4) M configure.ac commit 17e95380ba43e90fc69eea24916226ff677de38a Author: Huang Peng Date: 2008-08-05 20:44:13 +0800 Add --disable-qt4-immodule to configure. M configure.ac M gconf/ibus-gconf M gtk2/Makefile.am M qt4/Makefile.am commit 19d25b587099e06c7294ae62add8b5081bae2522 Author: Huang Peng Date: 2008-08-05 19:07:03 +0800 Use checking QtDBus & QtCore to replace checking Qt. M configure.ac commit 4c9599380234ea684316ce368feff4227ce712b6 Author: Huang Peng Date: 2008-08-05 19:06:23 +0800 Check reply message. M qt4/ibus-client.cpp commit 79d89c498a426eca51dbb021c72c3a75aca9b0ef Author: Huang Peng Date: 2008-08-05 18:28:14 +0800 Set the icon for setup dialog. M setup/setup.glade commit 4ca407b92cc7c1b350b61accbc6924c8b8e79ce4 Author: Huang Peng Date: 2008-08-05 18:18:41 +0800 Add ibus-setup.svg. M icons/Makefile.am A icons/ibus-setup.svg commit 2c436563f43482bc4ce62eee45acd8b84f8a19bd Author: Huang Peng Date: 2008-08-05 15:05:11 +0800 Use {show,hide}_all. M panel/panel.py commit b856a258e4d5b9c3d3e7ccf1a0e08ef8dd7d92a6 Author: Huang Peng Date: 2008-08-05 13:51:39 +0800 catch exception throw from os.getlogin(). M ibus/common.py commit fff9bf7070374ffb83181fd1590154a4a8090f10 Author: Huang Peng Date: 2008-08-05 12:45:41 +0800 Get usernmae form getlogin, $LOGNAME, $USER, $LNAME and $USERNAME. M ibus/common.py commit 342e7786b0855a9ed8b8b07862761c0456cd952a Author: Huang Peng Date: 2008-08-04 21:15:51 +0800 focus_out the input context when input context is destroyed. M daemon/bus.py M setup/setup.glade commit 66d293363d06253f7d34040219e316dc3c5816d5 Author: Huang Peng Date: 2008-08-04 21:04:48 +0800 get username from getlogin(), $LOGNAME, $USER, $LNAME, $USERNAME. M gtk2/ibusimclient.c M qt4/ibus-client.cpp commit b5bd6f1aad49da1bd16b14c60bc2e037713e322a Author: Huang Peng Date: 2008-08-04 11:31:08 +0800 Refine the Makefile.am. M x11/Makefile.am commit bba038e56f54721cb7438c282697d54af5f4640e Author: Huang Peng Date: 2008-08-04 11:23:02 +0800 Add dependancies of ibus-x11. M x11/Makefile.am commit 6ef8d2e67ad4ee0086a0edf15a4d417ede9a3607 Author: Huang Peng Date: 2008-08-04 10:45:33 +0800 Fix ibus.spec problem. M ibus.spec.in M icons/Makefile.am commit 8d79e6f788d17cb77a77ba46d71b0e0b80b68ea8 Author: Huang Peng Date: 2008-08-04 10:44:29 +0800 Fix build problem. M gtk2/Makefile.am commit 3720675bc9a6c8790b0e64a0b330d9550f24d41c Author: Huang Peng Date: 2008-08-04 09:15:47 +0800 Use getlogin to get login user name. M gtk2/ibusimclient.c M qt4/ibus-client.cpp commit 5632447a202ef3a83e5b96d11cbbc653fafac99b Author: Huang Peng Date: 2008-08-04 09:07:09 +0800 Use os.getlogin to get login user name. M ibus/common.py commit 86a5955a6f2c3b36ede74c67332a6100d8e81593 Author: Huang Peng Date: 2008-08-03 20:06:48 +0800 Fix xim protocol bug. M x11/IMdkit/i18nIMProto.c commit b3bbfb23e37d4500df2b544ae5646abc400e1648 Author: Huang Peng Date: 2008-08-02 16:28:52 +0800 Fix build error. M gtk2/Makefile.am commit 65ebed064c3c5ed83b9d4cd3feee0273a7a0fe20 Author: Huang Peng Date: 2008-08-01 23:00:36 +0800 Fix bug when set an empty list. M gconf/config.py commit db891751d98c86b2ca8a996b4b8d2a9dafc840cd Author: Huang Peng Date: 2008-08-01 22:54:13 +0800 Add config_set_list method. M ibus/bus.py M setup/main.py commit a1ad647148a673f9e84f9d8ef2078eb3eb04e145 Author: Huang Peng Date: 2008-08-01 22:37:19 +0800 Fix bug when unset a config key. M gconf/config.py commit bc962489b97edc1a84c04728ccc3f43391c28542 Author: Huang Peng Date: 2008-08-01 22:08:02 +0800 FIx a typo. M setup/main.py commit c398123436beabd26f891df230261acfe6a250bf Author: Huang Peng Date: 2008-08-01 22:06:57 +0800 Refine coding style. M setup/main.py commit e4daf0310d30de9bb6d90e0d91f3117dcbc856b1 Author: Huang Peng Date: 2008-08-01 22:06:22 +0800 Change some const values' name. M setup/main.py commit 2e3000526080563a6988b1cb820f4d312eeb0f17 Author: Huang Peng Date: 2008-08-01 22:02:30 +0800 Save preload engines. M setup/main.py commit befb997c85c4dea40d05f90a90822fc3595d1269 Author: Huang Peng Date: 2008-08-01 19:05:04 +0800 Add preload column in setup dailog. M setup/main.py commit 3217d7d3b4dba90f47784729a4306ef6463a2edc Author: Huang Peng Date: 2008-07-31 20:14:11 +0800 Fix typos. M gconf/config.py commit 6f2354d049e7c39223700cd1d0e511e135f0ba77 Author: Huang Peng Date: 2008-07-31 20:12:06 +0800 Fix config bug. M daemon/bus.py M daemon/connection.py commit dda9227c7c81260395a8eeecce054bd211da2118 Author: Huang Peng Date: 2008-07-31 20:01:07 +0800 Rename get_conn to get_dbusconn. M ibus/bus.py M ibus/engine.py M ibus/factory.py M ibus/panel.py commit 74b3f65af54cd383f3d7a64afedb99ccf6a1453f Author: Huang Peng Date: 2008-07-31 16:12:01 +0800 Add Config{Add,Remove}Watch methods. M daemon/bus.py M daemon/panel.py M gconf/config.py M ibus/bus.py M ibus/interface/iibus.py commit 708442bf3056513db933fdf37dd8b0f475bca83e Author: Huang Peng Date: 2008-07-31 13:02:08 +0800 Rename IBus to Bus. M gconf/main.py M ibus/bus.py M ibus/engine.py M ibus/factory.py M ibus/panel.py M panel/main.py M panel/panel.py commit 67bb63aa51963b487037de820c32e3986832a309 Author: Huang Peng Date: 2008-07-31 12:09:04 +0800 Make ibus inherit from ibus.Object. M gconf/config.py M gconf/main.py M ibus/bus.py M ibus/engine.py M ibus/factory.py M ibus/panel.py M panel/main.py commit 211e3f2a79e99b105ea06280c14b8a5ca9380782 Author: Huang Peng Date: 2008-07-30 19:12:02 +0800 focus in the engine, after enable the engine. M daemon/inputcontext.py commit 23a468d8b07c995b3b29ed98d1999da7a8ac6554 Author: Huang Peng Date: 2008-07-30 17:26:22 +0800 Remove some debug print. M gconf/config.py commit ed955da75b4c52f735a4555d8366b0f7bb3fb2aa Author: Huang Peng Date: 2008-07-30 17:26:09 +0800 Rename preload_engines to general/preload_engines. M daemon/ibusdaemon.py commit 94e0692d566e21ce5a59ca94725b4c9d2f87800f Author: Huang Peng Date: 2008-07-30 17:12:04 +0800 Fix error when get_value from a unexist key. M gconf/config.py commit 3d02c0e3cc32030ec93177ee6a8c39ade3554c31 Author: Huang Peng Date: 2008-07-30 17:11:19 +0800 Rename auto_enable_engine to preload_engines. M daemon/ibusdaemon.py commit d2f199adc1a56b7d078ab8ca6eb1a013a305b892 Author: Huang Peng Date: 2008-07-30 17:05:26 +0800 Implement Server.connection_removed M daemon/ibusdaemon.py commit 4e2adddf79bbfcfc42720c0a52c6a6a741fb1ebe Author: Huang Peng Date: 2008-07-30 15:57:03 +0800 Test bool at first. M gconf/config.py commit 950a0a8bd7b088cd50f8c60434c562044778d6fc Author: Huang Peng Date: 2008-07-30 15:12:24 +0800 WIP. M daemon/ibusdaemon.py commit dfde1ca606366e3df40ad6cf3b258db44071ca0e Author: Huang Peng Date: 2008-07-30 15:11:27 +0800 WIP. M daemon/bus.py M daemon/ibusdaemon.py commit 9a7b369ee6b87e122ade4b6af06ed0ae8609756d Author: Huang Peng Date: 2008-07-30 15:06:58 +0800 Test unicode in to_gconf_value. M gconf/config.py commit 06a6c3a8bf671e013296a044b625a558fa6bfd09 Author: Huang Peng Date: 2008-07-30 15:04:17 +0800 Fix typos. M daemon/config.py M daemon/ibusdaemon.py commit cc7f9b0590321b9aa8fefd2f3d10b703da8e5d03 Author: Huang Peng Date: 2008-07-30 14:43:08 +0800 Fix problem if pass None as reply_handler or error_handler to config_set_value. M daemon/config.py commit 12afe7c562211c255cccf29091fe4ac3d7d7f0c5 Author: Huang Peng Date: 2008-07-30 13:16:44 +0800 Fix a typo. M gconf/config.py commit d77ada2151191b819d01cbb1a3736ba13c2ad3cb Author: Huang Peng Date: 2008-07-30 13:14:48 +0800 Fix a typo. M ibus/bus.py commit ee5a1a54e1cd29ee87587abf9fdd150d21d200ab Author: Huang Peng Date: 2008-07-30 13:10:59 +0800 Fix a typo. M daemon/bus.py commit 6c22fecaf26a1298dc57fa62394d455c704ec70a Author: Huang Peng Date: 2008-07-30 12:09:50 +0800 Add ConfigReload signal. M daemon/bus.py M ibus/interface/iibus.py commit 7eb2ceebfd6c7b9521996cf58cd6b7c1ce139aaa Author: Huang Peng Date: 2008-07-30 12:04:50 +0800 Refactory bus.py. M daemon/bus.py M daemon/ibusdaemon.py commit 13a4d66dbf0f29cff78c9633123b483041c527be Author: Huang Peng Date: 2008-07-30 12:04:33 +0800 Don't launch ibus-gconf. M launcher/ibus.in commit 1e09758b224ec0ff1b98f08429a52fe92d703105 Author: Huang Peng Date: 2008-07-30 11:37:27 +0800 Make gconf as DefaultConfig. M daemon/Makefile.am M daemon/bus.py M daemon/config.py M gconf/config.py commit 1cc99dd2714e92d93a0fde0042d108f0b432b33a Author: Huang Peng Date: 2008-07-30 11:07:13 +0800 Fix problem in config.Destroy. M gconf/config.py commit 57881cd0347f38cd6923cf5c96450c7e3bbd87fe Author: Huang Peng Date: 2008-07-30 11:01:50 +0800 Add defaultconfig.py A daemon/defaultconfig.py commit c6c4a2151e3418d2f448138ad9e06d54dfc9bb02 Author: Huang Peng Date: 2008-07-30 10:37:25 +0800 Remove {get,set}{string,int,bool} M gconf/config.py M ibus/bus.py M ibus/interface/iconfig.py M ibus/interface/iibus.py commit 11b9b08a25f3a6e16173e813315cdd68c36c1cb7 Author: Huang Peng Date: 2008-07-30 10:27:49 +0800 Remove {get,set}_{string,bool,int} methods. M daemon/bus.py M daemon/config.py commit 89e9effbf085a19581e2aaf8a4d2da6bbf2187ef Author: Huang Peng Date: 2008-07-30 09:24:19 +0800 Add {Get,Set}value interfaces. M ibus/bus.py commit 655f07ae5274ccbc4894651a2557f2ae06274bc6 Author: Huang Peng Date: 2008-07-30 09:22:01 +0800 Refine coding style. M ibus/interface/iibus.py commit 070435e6d826b87dbcf8c7f6b3833a03f21ea575 Author: Huang Peng Date: 2008-07-30 09:21:17 +0800 Add {Get,Set}Value methods. M daemon/bus.py M daemon/config.py commit e7f1fdccdd9a7df42eb2edc15efb1c1b2508cc3e Author: Huang Peng Date: 2008-07-30 09:13:34 +0800 Refine coding style. M ibus/interface/iconfig.py commit cc152299d39d52727dcb2977c1438876e9ec6b45 Author: Huang Peng Date: 2008-07-30 09:12:16 +0800 Add {Get, Set}Value. M ibus/interface/iconfig.py commit 5bc357fad0c96e3d8d6356525230b3e869746efa Author: Huang Peng Date: 2008-07-29 20:56:41 +0800 WIP. M setup/main.py M setup/setup.glade commit 616216fefd6e208141e95564698e3716b275ca05 Author: Huang Peng Date: 2008-07-29 19:23:27 +0800 Raise Exception when receive unsupport type. M gconf/config.py commit 03758f5cab74f7e1bba3383c48eb30616aa555da Author: Huang Peng Date: 2008-07-29 19:19:31 +0800 Support all type value of gconf. M gconf/config.py commit 13968a0afff59950f288fb45c453bb80a70720d1 Author: Huang Peng Date: 2008-07-29 12:50:17 +0800 Make Config supports async and sync call M daemon/config.py commit f9efa76f89029b43fc8f2498a4fb69679d9bfc4f Author: Huang Peng Date: 2008-07-28 14:59:17 +0800 Add Destroy for config. M gconf/config.py M gconf/main.py M ibus/interface/iconfig.py commit 0514cc8f4599954fa2ef0cd88e8cf6737ca9ea56 Author: Huang Peng Date: 2008-07-28 14:53:46 +0800 Remove gtk. M gconf/main.py commit e5e9f635f396f243d59afd153b131fbf6e7a69dc Author: Huang Peng Date: 2008-07-28 14:29:05 +0800 Use IBus replace Connection. M panel/main.py M panel/panel.py commit 7ee9eed921aed351408c480cab42aea50dee1aa2 Author: Huang Peng Date: 2008-07-28 14:28:16 +0800 Use IBus replace Connection. M ibus/bus.py M ibus/engine.py M ibus/factory.py commit 26a689fab7847801790ec9cfe621f237f75c0f3c Author: Huang Peng Date: 2008-07-28 14:02:39 +0800 Wrap methods of ibus. M ibus/bus.py commit 3663f94338e1fe1a4daf55a6bffbc9e427c42463 Author: Huang Peng Date: 2008-07-28 13:44:09 +0800 Rename connection to bus M ibus/Makefile.am M ibus/__init__.py A ibus/bus.py D ibus/connection.py commit be431e9dbd8846d9620eb12e540eb1d772768337 Author: Huang Peng Date: 2008-07-28 13:37:08 +0800 Fix a typo. M daemon/bus.py commit 400cf58d6af004333172c8a9699438f1c7201b5f Author: Huang Peng Date: 2008-07-28 11:45:16 +0800 Add header. M gconf/config.py commit 4ae2941be4132110f30473c938ef04a25b4adaf1 Author: Huang Peng Date: 2008-07-28 11:44:09 +0800 Refine coding style. Refine structure. M gconf/config.py M gconf/main.py commit f2c7968945fc7adcef23cafc1916f37766fc8b09 Author: Huang Peng Date: 2008-07-28 11:38:15 +0800 Change config path. M gconf/main.py commit 9ff51991372df5700b8d4e706cd33a3e92c3b0d5 Author: Huang Peng Date: 2008-07-28 11:37:17 +0800 Refine coding style. M gconf/main.py commit 0dc44f16c8cc65e9beaec20230e0bcbec5758bb8 Author: Huang Peng Date: 2008-07-28 11:36:07 +0800 Remove dbus related code. M gconf/main.py commit 854ebc3e032ca21e3fd55d5398949a478116fcde Author: Huang Peng Date: 2008-07-28 11:32:11 +0800 Remove dbus related code. M panel/main.py commit ec621c984200ebbd157e3a6cd9e910138a3cf669 Author: Huang Peng Date: 2008-07-28 11:31:51 +0800 Set dbus mainloop. M ibus/connection.py commit ebcd8084a5328de997bf98e06c600283d374339b Author: Huang Peng Date: 2008-07-25 16:57:35 +0800 Add register method for EngineFactoryBase class. M ibus/factory.py commit a7d461484d8876c04db27a7b6469b35d37ce6f50 Author: Huang Peng Date: 2008-07-25 15:02:01 +0800 Refine coding style. M daemon/config.py M daemon/connection.py M daemon/engine.py M daemon/factorymanager.py M daemon/ibusdaemon.py M daemon/panel.py M daemon/register.py commit 2cc8ae3671a46a2f7b58ed16e09ccb1d92c560ea Author: Huang Peng Date: 2008-07-25 14:51:33 +0800 Refine coding style. M daemon/bus.py M daemon/inputcontext.py commit d2ad570e65e6178e4d9ff75f2a8522ff36c9ef99 Author: Huang Peng Date: 2008-07-25 14:50:03 +0800 Fix a typo. M ibus/engine.py commit ebeca2a8f74e78c55cad36dd0ac820abb0202b42 Author: Huang Peng Date: 2008-07-24 13:44:31 +0800 Support filename as icon for menu. M panel/menu.py M panel/panel.py commit 9b009e1a08bc76274f47ce4d64d0c186b63061d9 Author: Huang Peng Date: 2008-07-24 13:34:10 +0800 Support file as icon for StatusIcon. M panel/panel.py commit 975ea39af250fee96d8dbe2991ecaef094484ab7 Author: Huang Peng Date: 2008-07-23 16:43:06 +0800 Remove preedit related functions. M x11/main.c commit 8aeddd1ae12262fcb3be4e41dd2c763890844970 Author: Huang Peng Date: 2008-07-23 16:36:31 +0800 Refine coding style. M x11/main.c commit 7fdd7ed8c2e38070603da034cd9019aad1e01faa Author: Huang Peng Date: 2008-07-23 16:08:42 +0800 Start ibus-x11 in ibus script. M launcher/ibus.in commit 35db4e965c5f795ef7dea405a07ed4e0f77f53cf Author: Huang Peng Date: 2008-07-23 16:08:19 +0800 Remove some output. M x11/main.c commit 8cf5d261c1f545ca84ea2f1118510a05e02172b1 Author: Huang Peng Date: 2008-07-23 15:12:48 +0800 Support set_use_preedit M daemon/bus.py M daemon/inputcontext.py M gtk2/ibusimclient.c M gtk2/ibusimclient.h M gtk2/ibusimcontext.c M ibus/interface/iibus.py commit 4004fd1f9d97d5bef6fa3d8650d1873ad28242b0 Author: Huang Peng Date: 2008-07-23 14:57:23 +0800 Add preedit code. M daemon/inputcontext.py M ibus/panel.py M x11/main.c commit 4aff5583f058796a8bc233e6d391a82f2a0dbfe0 Author: Huang Peng Date: 2008-07-23 14:54:52 +0800 Fix typo. M panel/panel.py commit 450003e4be40a802c95adeb7d616d577664c74bf Author: Huang Peng Date: 2008-07-23 14:25:56 +0800 Forward key event. M x11/Makefile.am M x11/main.c commit 2751028842c63c346d87b608b14ce99f5f7ac266 Author: Huang Peng Date: 2008-07-23 14:14:39 +0800 Remove python xim sources. D x11/IMdkit.i D x11/test.py commit cb388f451b8d4f9bd9e4133e73c0c98aed325692 Author: Huang Peng Date: 2008-07-23 14:13:37 +0800 Implement ibus xim agent. M Makefile.am M configure.ac M daemon/Makefile.am M x11/Makefile.am A x11/gdk-private.c A x11/gdk-private.h A x11/main.c commit 90f1e606a70588a425bc7ff9ec6169aae847b6ec Author: Huang Peng Date: 2008-07-23 14:12:55 +0800 Modify type_register functions. M gtk2/ibusimclient.c M gtk2/ibusimcontext.c commit 34dda8e8dba47ca0fdff0ff0504893d8abefbc6e Author: Huang Peng Date: 2008-07-23 13:42:05 +0800 Build libibus-gtk.la. M gtk2/Makefile.am commit 380c5cd1ee10431de9b4ff8b572d25776cb0a176 Author: Huang Peng Date: 2008-07-23 09:25:55 +0800 Set default icon. M panel/toolitem.py commit 5f23560b18b7c1a28949dec7f56ef165bbd17552 Author: Huang Peng Date: 2008-07-22 23:15:01 +0800 Rename image.py to icon.py. Use set_icon_widget to replace set_icon_name. M panel/Makefile.am A panel/icon.py D panel/image.py M panel/toolitem.py commit e0eca135a0e541e2097075c548fadf01d4fbd8c0 Author: Huang Peng Date: 2008-07-22 12:51:04 +0800 Add ATTR_UNDERLINE_*. M ibus/attribute.py commit c97e02d2acf1297072b3bc33ab25d23eae205803 Author: Huang Peng Date: 2008-07-22 11:54:38 +0800 Remove useless import. M panel/languagebar.py commit 8c410eb52de12e9ea4dd9e9e934fff726b6d2fd3 Author: Huang Peng Date: 2008-07-22 11:54:16 +0800 Refine coding style. M panel/toolitem.py commit ce961a7daa53442c2e2f2adf5956c2a45362a6c4 Author: Huang Peng Date: 2008-07-22 10:23:40 +0800 Init cursor area. M gtk2/ibusimcontext.c commit de91ed4103c78fa19998ddcab27619fb2e33de97 Author: Huang Peng Date: 2008-07-22 09:53:08 +0800 Remove &. M gtk2/ibusimclient.c M gtk2/ibusimcontext.c M panel/Makefile.am commit 6173092852804f560b839c508fe811bf9f2938e2 Author: Huang Peng Date: 2008-07-21 09:30:32 +0800 Set cursro_location when focus_in. M gtk2/ibusimcontext.c commit 15ab82f103d051a853adafb0a0cfe49ab663e527 Author: Huang Peng Date: 2008-07-21 09:26:06 +0800 Keep candidate window in screen. M panel/candidatepanel.py M panel/panel.py commit 804a3b32cb2df4a3f2aa0a0357cb29b98e09fa63 Author: Huang Peng Date: 2008-07-20 12:55:10 +0800 WIP. M qt4/ibus-client.cpp M qt4/ibus-client.h M qt4/ibus-input-context.cpp M qt4/ibus-input-context.h commit 780d259ef70abc42395cd796315344fa535979c2 Author: Huang Peng Date: 2008-07-20 12:42:57 +0800 WIP. M daemon/inputcontext.py M gtk2/ibusimclient.c M gtk2/ibusimcontext.c M gtk2/ibusimcontext.h commit 991e01f1500ef0b4c5cd4cb38144bbb51b8478d7 Author: Huang Peng Date: 2008-07-20 12:42:28 +0800 WIP. M panel/candidatepanel.py M panel/panel.py commit 67f88397717ee114b0ebe751aa140b442b9fd859 Author: Huang Peng Date: 2008-07-20 12:04:59 +0800 WIP. M daemon/inputcontext.py M ibus/panel.py M panel/candidatepanel.py M panel/panel.py commit fb84b51ed59f87393788f9d900e4a6c160f06379 Author: Huang Peng Date: 2008-07-20 11:44:38 +0800 WIP. M daemon/bus.py M daemon/inputcontext.py commit e06cde77fd4fc60073405e9e752261a92518b18e Author: Huang Peng Date: 2008-07-20 11:24:26 +0800 Fix typos. M ibus/engine.py M ibus/interface/iengine.py commit 2b3142d0a30d3324c2de29dd0ba8d09cca1c1b57 Author: Huang Peng Date: 2008-07-20 11:21:51 +0800 Add interfaces. M daemon/bus.py M daemon/engine.py M daemon/panel.py commit 492c222924bac40f218015d07bcad037f6168341 Author: Huang Peng Date: 2008-07-20 11:02:29 +0800 Add some interface. M ibus/engine.py M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibus/panel.py commit 3aafb8f024f73d32284304948d548964d6021082 Author: Huang Peng Date: 2008-07-20 10:34:29 +0800 Remove PanelProxy class. M panel/panel.py commit 77b410766411ebbc98566462f63efc6cddde6681 Author: Huang Peng Date: 2008-07-20 10:33:18 +0800 Add PanelBase class. M ibus/__init__.py M ibus/panel.py M panel/candidatepanel.py M panel/panel.py commit 77429921c052a624cf092652ed7233a4873a182e Author: Huang Peng Date: 2008-07-20 10:27:39 +0800 Refine coding style. M ibus/interface/ipanel.py commit e3e2d7de9cfccf74f9dd4fe212e9969f9a97a49f Author: Huang Peng Date: 2008-07-20 09:29:19 +0800 Refine coding style. M panel/main.py M panel/panel.py commit a5c552594fec65a234e8da5ea2bfbcf8fd9e1819 Author: Huang Peng Date: 2008-07-20 09:23:15 +0800 Refine coding style. M panel/handle.py commit da338c8ebf41ceecd21dcc7e96aa68868ecc422c Author: Huang Peng Date: 2008-07-20 09:21:06 +0800 Refine coding style M panel/image.py commit 316b2feb16705b6c24ffd706713b8e4777efa219 Author: Huang Peng Date: 2008-07-20 09:20:09 +0800 Refine coding style. M panel/languagebar.py commit 547ac28e3b9cf3a34126a626814faf18d86cd507 Author: Huang Peng Date: 2008-07-20 09:16:59 +0800 Change backgroud color of focus candidates. Refine coding style. M panel/candidatepanel.py commit fa835c5f3c1b4a7674d62a5eea7f2c86ff8b619e Author: Huang Peng Date: 2008-07-18 16:25:30 +0800 Refine coding style. M ibus/lookuptable.py commit ffc1b7f91f265d52efa4b4bd971075cde4350459 Author: Huang Peng Date: 2008-07-18 11:18:37 +0800 Accept None Attrs. M ibus/engine.py commit 06a117ae199284429820fa49d1a9fd7a3e3bf42f Author: Huang Peng Date: 2008-07-18 10:01:11 +0800 Fix typos. M daemon/inputcontext.py M ibus/engine.py commit 1ba0a79b174a66da5da594f672078fd063cbf676 Author: Huang Peng Date: 2008-07-18 09:55:21 +0800 Fix a typo. M ibus/engine.py commit 5280df255b7ecbd22a2c3b89bc172e2125272ce8 Author: Huang Peng Date: 2008-07-18 09:53:25 +0800 Fix some errors. M ibus/engine.py M ibus/factory.py M ibus/object.py commit 729551728c88a7d403b1fbe8b759e1f03d1a1ac5 Author: Huang Peng Date: 2008-07-18 09:23:43 +0800 Replase SetEnable with Enable & Disable. M daemon/engine.py commit 2a15c5efb3d63fc52f5976f3228e4a91aa66b352 Author: Huang Peng Date: 2008-07-18 09:22:26 +0800 Remove type_register for EngineBase and EngineFactoryBase. M ibus/engine.py M ibus/factory.py commit ab2954ae676dffec3428f4b7e915472e9ee39d00 Author: Huang Peng Date: 2008-07-18 09:20:55 +0800 Add EngineFactory class. M ibus/Makefile.am M ibus/__init__.py A ibus/factory.py commit ace0f62168e5a53ea08ed35ed6d89597155c3ff9 Author: Huang Peng Date: 2008-07-18 09:05:16 +0800 Add EngineBase class. M ibus/Makefile.am A ibus/engine.py M ibus/interface/iengine.py commit 375101f77e4e6b4bb614440b429c078de8b975e9 Author: Huang Peng Date: 2008-07-18 07:15:00 +0800 Fix a typo. M ibus/utility.py commit a06d9be885258697cf578e6b1d85cdb13f8eac45 Author: Huang Peng Date: 2008-07-17 07:54:25 +0800 Add utility.py. M ibus/Makefile.am M ibus/__init__.py A ibus/utility.py commit d2b2c06d75ba08b4705e5973586fde0b3d64beb5 Author: Huang Peng Date: 2008-07-17 07:48:02 +0800 Add ascii.py. M ibus/Makefile.am A ibus/ascii.py commit 159194306ed250f54b4c5b189def3908acbbf8c1 Author: Huang Peng Date: 2008-07-16 18:36:24 +0800 do not output message without ibus. M gtk2/ibusimclient.c commit 4f671c27e7710ebdf57bd0000c28c1f7419eaa95 Author: Huang Peng Date: 2008-07-16 18:28:55 +0800 clean code. M gtk2/ibusim.c M gtk2/ibusimclient.c commit 3ab14d2ab01cecb552a87d8f700eada58feb61ac Author: Huang Peng Date: 2008-07-16 17:01:05 +0800 Fix error when restart ibus. M gtk2/ibusimclient.c M gtk2/ibusimcontext.c commit a1f880ae4c346d154a7777462db8208556c60309 Author: Huang Peng Date: 2008-07-16 16:53:51 +0800 Separate ic. M gtk2/ibusim.c M gtk2/ibusimclient.c M gtk2/ibusimclient.h M gtk2/ibusimcontext.c M gtk2/ibusimcontext.h commit 193650d3868a927884f6573fee07d39d859e528c Author: Huang Peng Date: 2008-07-16 08:12:52 +0800 Adjust methods for new dbus-python API. M daemon/bus.py M daemon/ibusdaemon.py commit 60d6bf1163b0745af65dc9e33901fe0b6ce3159c Author: Huang Peng Date: 2008-07-15 16:57:18 +0800 Replace tab with spaces in python source code. M daemon/bus.py M daemon/config.py M daemon/connection.py M daemon/contextmanager.py M daemon/engine.py M daemon/enginefactory.py M daemon/factorymanager.py M daemon/ibusdaemon.py M daemon/inputcontext.py M daemon/lookuptable.py M daemon/panel.py M daemon/register.py M gconf/config.py M gconf/main.py M ibus/__init__.py M ibus/application.py M ibus/attribute.py M ibus/common.py M ibus/connection.py M ibus/exception.py M ibus/gtk.py M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/ipanel.py M ibus/keysyms.py M ibus/lang.py M ibus/lookuptable.py M ibus/modifier.py M ibus/object.py M ibus/panel.py M ibus/property.py M panel/candidatepanel.py M panel/handle.py M panel/image.py M panel/languagebar.py M panel/main.py M panel/menu.py M panel/panel.py M panel/propitem.py M panel/toolitem.py M setup/main.py M x11/test.py commit 7155f30d2e075bbb8c23b17e3926da6301babaa0 Author: Huang Peng Date: 2008-07-15 16:37:07 +0800 Refine coding style. M setup/main.py commit b92c71a7d004766256333870525a00faea87b722 Author: Huang Peng Date: 2008-07-15 16:35:28 +0800 Extend tab to spaces. M setup/main.py commit 29e1458ef0f5b35b6ea6a37989972b4011427046 Author: Huang Peng Date: 2008-07-15 15:31:12 +0800 Add ibus-setup.desktop.in. M configure.ac M icons/Makefile.am A icons/ibus.svg M setup/Makefile.am A setup/ibus-setup.desktop.in commit c512bc6f2841fc66b4dfec7c09cf837c2e240a9d Author: Huang Peng Date: 2008-07-15 14:10:11 +0800 Refine coding style. M launcher/ibus.in commit 615ff80fb8d863c489c73147b02dd2bcc07864a0 Author: Huang Peng Date: 2008-07-15 13:22:54 +0800 focus in engine, when create a new engine for a input context. M daemon/bus.py commit 28113e00a1dc26b29b2c09a2d70c03e22d99bcc6 Author: Huang Peng Date: 2008-07-15 13:04:52 +0800 Fix typo. M ibus/connection.py M ibus/property.py commit 1f755d9d31b145fe93e793e8cf7a269e4cdb71e5 Author: Huang Peng Date: 2008-07-15 13:03:21 +0800 Refine coding style of perperty.py M ibus/property.py commit 1ee87eeb90d1e81a9dfe89c25d98cde5a8cba462 Author: Huang Peng Date: 2008-07-15 13:00:53 +0800 Refine coding style of panel.py M ibus/panel.py commit 1fafc43ab9ee1166a3561e9d0f908fe5613b5f5f Author: Huang Peng Date: 2008-07-15 13:00:33 +0800 Refine coding style of object.py M ibus/object.py commit 627ea998108bd446009e2d61567fbc701c61bc0b Author: Huang Peng Date: 2008-07-15 12:59:48 +0800 Refine coding style of modifier.py M ibus/modifier.py commit ba194c2de0e98e1d1a2da82c8f4d79a68f51bf6b Author: Huang Peng Date: 2008-07-15 12:58:30 +0800 Refine coding style of lookuptable.py M ibus/lookuptable.py commit f8f7b4e9e16c2466cd35b0943bf2a78ff3473a0e Author: Huang Peng Date: 2008-07-15 12:56:05 +0800 Refine coding style of lang.py M ibus/lang.py commit 168fe67515c172bbe67e42d69701c283b0c4b74e Author: Huang Peng Date: 2008-07-15 12:55:27 +0800 Refine coding style of exception.py M ibus/exception.py commit e4d9614ee21f946f16c90d017da865f1817a389b Author: Huang Peng Date: 2008-07-15 12:54:39 +0800 Refine coding style of gtk.py M ibus/gtk.py commit 3acfcd1e1aa5129e4c8981269edced2eeaafbb02 Author: Huang Peng Date: 2008-07-15 11:50:45 +0800 Refine coding style of common.py M ibus/common.py commit 35b29c814444526280f9a301c1310546c9e72217 Author: Huang Peng Date: 2008-07-15 11:50:21 +0800 Refine coding style of connection.py M ibus/connection.py commit 22d750f4b1f99e1fa291b7b113702e2467c47e41 Author: Huang Peng Date: 2008-07-15 11:46:51 +0800 Create DBus object for new connection. M daemon/ibusdaemon.py commit 79ed2426c242a5d1d5d15fde43b5d5ad262db1d6 Author: Huang Peng Date: 2008-07-15 11:41:01 +0800 Refine coding style of register.py M daemon/register.py commit 3f12e83421859aeb408810758d873d8577956b5d Author: Huang Peng Date: 2008-07-15 11:38:40 +0800 Refine coding style of panel.py M daemon/panel.py commit def0b9a207053c5f206797a6b04d55b44c18ab54 Author: Huang Peng Date: 2008-07-15 11:37:13 +0800 Refine coding style of lookuptable.py M daemon/lookuptable.py commit 86834bb4e912c2021de561412d0077bcb5ee7239 Author: Huang Peng Date: 2008-07-15 11:36:07 +0800 Refine coding style of inputcontext.py M daemon/inputcontext.py commit 7bf8b4112a5d180d30dcb998012ea58b48392be2 Author: Huang Peng Date: 2008-07-15 11:34:11 +0800 Refine coding style of ibusdaemon.py M daemon/factorymanager.py M daemon/ibusdaemon.py commit 45da4ba549e312680838bf67e27eb79ff6f09a08 Author: Huang Peng Date: 2008-07-15 11:30:50 +0800 Refine coding style of factorymanager.py M daemon/factorymanager.py commit fd7ac7a6d95cb3e26c2ffac653c40c75bc02814d Author: Huang Peng Date: 2008-07-15 11:29:49 +0800 Refine coding style of engine.py M daemon/engine.py commit f92cd418e57c2a75936acdb11eaa9d26b3037c56 Author: Huang Peng Date: 2008-07-15 11:27:53 +0800 Refine coding style of enginefactory.py M daemon/enginefactory.py commit 0379f83eab1863249f0633383376ec2a8cdbedd6 Author: Huang Peng Date: 2008-07-15 11:19:15 +0800 Refine coding style of contextmanager.py M daemon/contextmanager.py commit a40b567469921f109fd2a0628e212fb82e4bc4a2 Author: Huang Peng Date: 2008-07-15 11:17:59 +0800 Refine coding style of connection.py M daemon/connection.py commit 16e68adb9dfd8f67f80fa3e8f0e94742741a1b77 Author: Huang Peng Date: 2008-07-15 11:14:56 +0800 Refine coding stype of config.py M daemon/config.py commit 007ad5cf9f3680259c9d3c9c4198f0836469c565 Author: Huang Peng Date: 2008-07-15 11:12:20 +0800 Remve unused module weakref. M daemon/bus.py commit b1461aa128c60284c39d4c413308c6c4bc93d85c Author: Huang Peng Date: 2008-07-15 11:11:07 +0800 Refine coding style. M daemon/bus.py commit d614cd6153fcb9905efe0aad5c1d6909a2167a81 Author: Huang Peng Date: 2008-07-15 11:01:36 +0800 Port ibus to new dbus server api. M daemon/bus.py M daemon/connection.py M daemon/ibusdaemon.py commit 70bde6191d3485c544fba8619921c85ae1d4791f Author: Huang Peng Date: 2008-07-15 10:23:41 +0800 Add Makefile.am A setup/Makefile.am commit 63275489401fc52aab444967a52ed8134ca9cea7 Author: Huang Peng Date: 2008-07-10 18:31:04 +0800 Enable engine when set a new factory. M daemon/bus.py commit ea489e313260d8c66075c8dcb5a73450d58aa682 Author: Huang Peng Date: 2008-07-10 18:10:28 +0800 Fix a problem in UpdateProperty M daemon/config.py M panel/menu.py M panel/toolitem.py commit e5d5a690e8c846ce8f6ff3bd110b9cb210cf8881 Author: Huang Peng Date: 2008-07-10 17:45:11 +0800 use spaw replace fork. M launcher/ibus.in commit 643ea31cccee823c7e9e1021fca142b3825f9d8f Author: Huang Peng Date: 2008-07-10 17:26:13 +0800 Adjust UI. M setup/main.py commit 8a87df7500767f3e6a01b0b00b402a6de228411c Author: Huang Peng Date: 2008-07-10 17:26:00 +0800 Handle SIGCHLD. M daemon/register.py commit 21abc04361b5f420ac1ca4d76f9c7a8511cc845a Author: Huang Peng Date: 2008-07-10 16:59:31 +0800 WIP. M setup/main.py M setup/setup.glade commit 22087645ee691c82b7fa1e9750efcf02a0624076 Author: Huang Peng Date: 2008-07-10 15:34:03 +0800 WIP. setup ui M Makefile.am M configure.ac M daemon/Makefile.am M daemon/bus.py M daemon/register.py M ibus.spec.in M ibus/Makefile.am M ibus/__init__.py M ibus/connection.py M ibus/interface/iibus.py A ibus/lang.py M panel/Makefile.am D panel/lang.py M panel/main.py M panel/panel.py A setup/.gitignore A setup/ibus-setup.in A setup/main.py A setup/setup.glade commit 10596931b2900101b3b81743f3af204b9765a1b6 Author: Huang Peng Date: 2008-07-10 12:13:44 +0800 Add connection.py M ibus/Makefile.am M ibus/__init__.py A ibus/connection.py commit 6418dec86abb9b2213bb30accd9c2045cd07bc79 Author: Huang Peng Date: 2008-07-09 22:44:22 +0800 Add register.py. A daemon/register.py commit ba66910dd4308e49c9fc75d14326fc0f1da9309f Author: Huang Peng Date: 2008-07-08 18:08:13 +0800 Add some BuildRequires in ibus.spec.in M ibus.spec.in commit 2b00952f26f2915cc2ff07d0140d51c492a6fda2 Author: Huang Peng Date: 2008-07-08 17:24:31 +0800 Add ibus launcher program. M Makefile.am M configure.ac M ibus.spec.in A launcher/Makefile.am A launcher/ibus.in M xinput-ibus commit 5175a113e99a86085d754ebc44e68bb8167d0df9 Author: Huang Peng Date: 2008-07-08 09:58:23 +0800 Make labels as same size in candidates window. M panel/candidatepanel.py commit cd34aa1c1667d4c41cd9af280d168b9abe00e64a Author: Huang Peng Date: 2008-07-08 08:30:12 +0800 Add gconf in ibus.sepc.in. M ibus.spec.in commit aed67f949bc3e3501c5b78d0027dbc7fa51def51 Author: Huang Peng Date: 2008-07-08 08:25:55 +0800 Add config.py. A daemon/config.py commit 98f48d016bac316bf219114595d99954d2da4a6f Author: Huang Peng Date: 2008-07-07 08:06:36 +0800 Remove useless python source files in Makefile.am. M gconf/Makefile.am commit 8a51627f9d3c9449b989c2b9352edb08a57ee7f4 Author: Huang Peng Date: 2008-07-06 20:53:28 +0800 Fix a typo. M gconf/main.py commit cfffe17c7d23944ca3c788cb4c65fd354cc6d201 Author: Huang Peng Date: 2008-07-05 18:24:12 +0800 WIP. config. M gconf/main.py commit ad49e0ef819d4a7ccc71e5a831230319be4dae4a Author: Huang Peng Date: 2008-07-05 18:23:54 +0800 WIP. config. M daemon/bus.py M daemon/connection.py commit c15cf8786dfdd7789897e2294bf345bc33833e34 Author: Huang Peng Date: 2008-07-05 10:02:01 +0800 Include config.py in Makefile.am M daemon/Makefile.am commit f4348f4d6fffb101f5176174698aa0dd1617eebc Author: Huang Peng Date: 2008-07-05 09:18:11 +0800 WIP. config. M Makefile.am M configure.ac M ibus/interface/__init__.py M ibus/interface/iconfig.py M ibus/interface/iibus.py commit 2266e16f4fed8dde3b8c0414731937eefc631ef8 Author: Huang Peng Date: 2008-07-05 09:17:58 +0800 Add gconf module. A gconf/Makefile.am A gconf/config.py A gconf/ibus-gconf A gconf/ibus-gconf.in A gconf/main.py commit 7cc23bb2ce8ca9b4c8c4f39c135ae774c33e6425 Author: Huang Peng Date: 2008-07-04 21:46:15 +0800 WIP. add config. M daemon/bus.py commit 95ead02b889d151b21edfe91492168bb820005de Author: Huang Peng Date: 2008-07-04 11:09:07 +0800 Add exec in shell script. M daemon/ibus-daemon.in M panel/ibus-panel.in commit 1dbd39908d7467e1c11129fa1cd9640a0d8056a0 Author: Huang Peng Date: 2008-07-04 11:08:52 +0800 Disable x11. M Makefile.am M configure.ac commit c736942c60ae64f5837df7d5f71a572a2b895cef Author: Huang Peng Date: 2008-07-04 11:08:27 +0800 Fix issue if display is not end with .x M ibus/common.py commit ab8751691075f72608767392826840c54b50c514 Author: Huang Peng Date: 2008-07-04 10:17:33 +0800 WIP x11. M Makefile.am M configure.ac A x11/IMdkit.i A x11/Makefile.am A x11/test.py commit 0d21f10b5c33a499071c2b61bc8e80800f4ad4b5 Author: Huang Peng Date: 2008-07-03 19:12:19 +0800 Import IMdkit. A x11/IMdkit/FrameMgr.c A x11/IMdkit/FrameMgr.h A x11/IMdkit/IMConn.c A x11/IMdkit/IMMethod.c A x11/IMdkit/IMValues.c A x11/IMdkit/IMdkit.h A x11/IMdkit/Makefile.am A x11/IMdkit/Xi18n.h A x11/IMdkit/Xi18nX.h A x11/IMdkit/XimFunc.h A x11/IMdkit/XimProto.h A x11/IMdkit/Xtrans.h A x11/IMdkit/i18nAttr.c A x11/IMdkit/i18nClbk.c A x11/IMdkit/i18nIMProto.c A x11/IMdkit/i18nIc.c A x11/IMdkit/i18nMethod.c A x11/IMdkit/i18nPtHdr.c A x11/IMdkit/i18nUtil.c A x11/IMdkit/i18nX.c commit 5555f96654ea8bf71d09f4e5a32e7b4772c5b400 Author: Huang Peng Date: 2008-07-03 18:44:22 +0800 Remove noreplace mask. M ibus.spec.in commit 65a9ccd12e5b3cd903f248c36b1a685802163910 Author: Huang Peng Date: 2008-07-03 18:33:24 +0800 Add xinput-ibus. M ibus.spec.in A xinput-ibus commit 8a151897a5b36bc9e133e49416865951c6e6df43 Author: Huang Peng Date: 2008-07-02 22:41:09 +0800 Fix an issue. M panel/panel.py commit 1d27b805d226ab2a806f748519039a1a46093bdb Author: Huang Peng Date: 2008-07-02 19:29:17 +0800 Add N_ around lang name. M panel/lang.py commit 3440d89e8cea73838b75b08e0d78a83e5556ecb4 Author: Huang Peng Date: 2008-07-02 19:27:39 +0800 Group input methods and translate lang to readable text. M panel/lang.py M panel/panel.py commit 6e1dba85c39034562529142e333c8236ac229519 Author: Huang Peng Date: 2008-07-02 18:12:13 +0800 Add Destroy method of IEngineFactory interface. M ibus/interface/ienginefactory.py commit bbb8dff42d4e22809c7a2eeb15dff1e016b4a602 Author: Huang Peng Date: 2008-07-01 23:28:55 +0800 Fix problem when page size == 10. M panel/candidatepanel.py commit e8339cbb37356712dacc60310e335b29560675aa Author: Huang Peng Date: 2008-07-01 23:28:35 +0800 Add __len__ method for LookupTable. M ibus/lookuptable.py commit b94fe41ae0e8210b4e99170353f0fae90a3995d2 Author: Huang Peng Date: 2008-07-01 23:14:30 +0800 Fix language bar size issue. M panel/languagebar.py commit 1863cf894c96a917840876449e5c852609f27691 Author: Huang Peng Date: 2008-07-01 20:16:40 +0800 Set Toolbar's style to 'icons only'. M panel/languagebar.py commit cd5e23be561e80618d36d9b631c22d5af11695f7 Author: Huang Peng Date: 2008-07-01 19:45:36 +0800 Remove debug output. M daemon/bus.py commit 1f5a6e9df918ada15624d3edbbd1cf9fe92947f7 Author: Huang Peng Date: 2008-07-01 19:41:23 +0800 Fix crash in x86_64 arch. M daemon/bus.py M gtk2/ibusimclient.c commit c580f1e64f97658c03aeef09df726bb3298db6b4 Author: Huang Peng Date: 2008-07-01 17:26:52 +0800 Fix rpm error in on x86_64 arch. M ibus.spec.in commit f77f28aa82dd1dbff06a44f4e4a1466b3ca7675f Author: Huang Peng Date: 2008-06-30 22:22:28 +0800 Add keycode & name convert function. M ibus/keysyms.py commit 91a8a4b8e3359601ca29067a105c142a6e871826 Author: Huang Peng Date: 2008-06-30 22:22:04 +0800 Fix a typo. M ibus/interface/iconfig.py commit 462564eb711a203282ac8d18bd6d1e96c775e84d Author: Huang Peng Date: 2008-06-30 08:57:20 +0800 Remove engines. M configure.ac M engine/Makefile.am D engine/anthy/.gitignore D engine/anthy/Makefile.am D engine/anthy/anthy.i D engine/anthy/engine.py D engine/anthy/factory.py D engine/anthy/ibus-engine-anthy.in D engine/anthy/main.py D engine/anthy/tables.py D engine/anthy/test.py D engine/enchant/.gitignore D engine/enchant/Makefile.am D engine/enchant/engine.py D engine/enchant/factory.py D engine/enchant/ibus-engine-enchant.in D engine/enchant/main.py M ibus.spec.in M icons/Makefile.am D icons/ibus-anthy.png commit be0db1b2879211e0f7825f8f5e78b3f7606282e6 Author: Huang Peng Date: 2008-06-29 21:01:22 +0800 Return empty if factory is "". M panel/panel.py commit d5c579a88728ee460d4a3659e4c1b5116ce332c3 Author: Huang Peng Date: 2008-06-29 19:02:32 +0800 Fix output argment in anthy.i. M engine/anthy/Makefile.am M engine/anthy/anthy.i M engine/anthy/engine.py commit fd61091e46909c9d43f76bba4344d978b8b59881 Author: Huang Peng Date: 2008-06-29 16:20:23 +0800 Update Headers. M Makefile.am M m4/Makefile.am commit ed6e1911da0b08df1c32e5259eee0de5c7d252c3 Author: Huang Peng Date: 2008-06-28 09:05:21 +0800 Add motheds of IConfig interface. M ibus/interface/iconfig.py commit 26c4f00c471df6cb35c1f5daaf95afbacc924616 Author: Huang Peng Date: 2008-06-27 22:00:39 +0800 Add config interface. M ibus/common.py M ibus/interface/Makefile.am A ibus/interface/iconfig.py commit 4461bafa4ce442cc79ee73d74cb0ed7bd93614e4 Author: Huang Peng Date: 2008-06-27 21:43:32 +0800 WIP. M daemon/bus.py M daemon/panel.py M engine/anthy/engine.py M ibus/interface/iengine.py M ibus/interface/iibus.py M ibus/property.py M panel/Makefile.am M panel/languagebar.py M panel/menu.py M panel/panel.py A panel/propitem.py M panel/toolitem.py commit f0089093bf2a012094956aa6f66c3f3cb8442ab2 Author: Huang Peng Date: 2008-06-27 15:09:38 +0800 WIP. M panel/languagebar.py M panel/panel.py M panel/toolitem.py commit daecff5078ffdda3f89aacf79d228cc498cdefb8 Author: Huang Peng Date: 2008-06-27 15:09:09 +0800 Add WideLatin Input Mode. M engine/anthy/engine.py commit dad14cfdd17e838decc31bf16d03a2e68ca66552 Author: Huang Peng Date: 2008-06-27 15:07:09 +0800 Set engine before set enable. M daemon/bus.py commit 1a2802e5cbb87f71cb0d3c01df1c8a02aac52c13 Author: Huang Peng Date: 2008-06-25 20:31:09 +0800 Does not popup IME menu if does not have focus context. M panel/panel.py commit 2c39917c980fcc5afd4fb493124183530ce00a52 Author: Huang Peng Date: 2008-06-25 20:28:20 +0800 Add focus_in & focus_out methods of languagebar M panel/languagebar.py M panel/panel.py commit 748dc32d6536fcc764e2f2ae71472ee119d13952 Author: Huang Peng Date: 2008-06-25 20:25:06 +0800 Add ibus.spec in .gitignore. M .gitignore commit 5aa529e3e975f4c5f1fc2968b8aa748475d72de4 Author: Huang Peng Date: 2008-06-25 20:24:31 +0800 WIP. M daemon/bus.py M daemon/engine.py M daemon/inputcontext.py M daemon/panel.py M ibus/interface/iibus.py M ibus/interface/ipanel.py M panel/languagebar.py M panel/panel.py commit ddf5afabb2489de425c9a51f08c79e4ba0f57ada Author: Huang Peng Date: 2008-06-25 15:53:40 +0800 WIP. M configure.ac commit 743b92036463d241b1684d6371d70b90a785fdca Author: Huang Peng Date: 2008-06-25 15:53:28 +0800 Remove rpms when make clean. M Makefile.am commit 7f512b1a5043d9eef95cba91d05003f9d2afe954 Author: Huang Peng Date: 2008-06-25 10:51:52 +0800 Refine coding style. M gtk2/ibusimclient.c commit 350e2a097b56e197c8382bf6215b785692ca8dde Author: Huang Peng Date: 2008-06-25 10:42:42 +0800 Refine coding style. M daemon/enginefactory.py commit 1c3371e3c3e6fc6d1697aac8899ed733d37ab71e Author: Huang Peng Date: 2008-06-25 10:41:59 +0800 Rename folder ibusdaemon to daemon. M Makefile.am M configure.ac A daemon/.gitignore A daemon/Makefile.am A daemon/bus.py A daemon/connection.py A daemon/contextmanager.py A daemon/engine.py A daemon/enginefactory.py A daemon/factorymanager.py A daemon/ibus-daemon.in A daemon/ibusdaemon.py A daemon/inputcontext.py A daemon/lookuptable.py A daemon/panel.py M ibus.spec.in D ibusdaemon/.gitignore D ibusdaemon/Makefile.am D ibusdaemon/bus.py D ibusdaemon/connection.py D ibusdaemon/contextmanager.py D ibusdaemon/engine.py D ibusdaemon/enginefactory.py D ibusdaemon/factorymanager.py D ibusdaemon/ibus-daemon.in D ibusdaemon/ibusdaemon.py D ibusdaemon/inputcontext.py D ibusdaemon/lookuptable.py D ibusdaemon/panel.py commit 3a89b79bb898eb1c6a5fc52c3e16ff6cd4bcde87 Author: Huang Peng Date: 2008-06-25 01:30:44 +0800 Define mod_path in spec file. M ibus.spec.in commit 8182da43cba2464f159be169b7db452e79cd5aac Author: Huang Peng Date: 2008-06-25 01:27:46 +0800 Run update-gtk-immodules `uname -i` in rpm post script. M ibus.spec.in commit b54f0964dad543609f8562a575179a712652ccb0 Author: Huang Peng Date: 2008-06-25 01:12:28 +0800 Add rpm build scripts. M Makefile.am M configure.ac A ibus.spec.in commit 24f671458272d15043f590d3b053b4da342d95e6 Author: Huang Peng Date: 2008-06-24 21:22:38 +0800 Refine coding style. M gtk2/Makefile.am commit 4e8f4cfbe00a92b8fb8c1634599faa4167100cd1 Author: Huang Peng Date: 2008-06-24 21:11:30 +0800 Remove useless code. M ibus/gtk.py commit d53909ddd273744dc990ee97d32bd1a37bfe9822 Author: Huang Peng Date: 2008-06-24 21:10:36 +0800 Set default value of InputMode. M engine/anthy/engine.py commit d423d92baf556315b43705c2094a27f9ff35e593 Author: Huang Peng Date: 2008-06-24 17:08:11 +0800 Remove m17n/Makefile.am D engine/m17n/Makefile.am commit 1f13effe2af355ac0845be53c23cb1171efc5d5a Author: Huang Peng Date: 2008-06-24 17:06:59 +0800 Refine coding style M Makefile.am M engine/m17n/Makefile.am M gtk2/Makefile.am commit d64a28ddc80141f411918b81eabdc3be306d6e77 Author: Huang Peng Date: 2008-06-24 17:04:04 +0800 Refine coding style. M gtk2/Makefile.am commit 17dadd61a27e02b31f3906c1f3542e5e93c32e94 Author: Huang Peng Date: 2008-06-24 16:41:44 +0800 Add PropertyShow & PropertyHide methods. M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/engine.py M ibusdaemon/inputcontext.py M ibusdaemon/panel.py commit 796828b62ea3e3004e48775691096f0ba7cd1ee5 Author: Huang Peng Date: 2008-06-24 15:03:48 +0800 Rm anthy_wrap.* when make clean. M engine/anthy/Makefile.am commit e7b785688258e1ef2fff582e7c84509afd8bd9ed Author: Huang Peng Date: 2008-06-24 14:31:29 +0800 Add task all to test task's dependence M gtk2/Makefile.am commit 812f1bbeb460bb74d1335c10e286325eae532ca5 Author: Huang Peng Date: 2008-06-24 14:30:56 +0800 Add test task in Makefile.am M qt4/Makefile.am commit 600eb61816314b59cf0889b09cf0b0651830dddb Author: Huang Peng Date: 2008-06-24 14:26:02 +0800 Add test task in Makefile.am M gtk2/Makefile.am commit d2b75d0fcc145ec1b699e592584922ee0aaf12d4 Author: Huang Peng Date: 2008-06-24 14:25:47 +0800 Add tooltip M engine/anthy/engine.py commit 68245ce2365d4d0d359d7baa2392754d3c1fe90d Author: Huang Peng Date: 2008-06-24 14:25:30 +0800 Rename _tip to _tooltip M ibus/property.py commit ddec84165853148bea190ccdff1466970bd68f9f Author: Huang Peng Date: 2008-06-24 14:21:03 +0800 WIP panel. M ibus/property.py M panel/languagebar.py M panel/menu.py M panel/toolitem.py commit 5963367438651a3ad2bf9420b05fea9ecc331324 Author: Huang Peng Date: 2008-06-24 13:27:35 +0800 WIP panel. M panel/languagebar.py M panel/panel.py M panel/toolitem.py commit 2c21d0c0f3b56ac7a831c71ff5958d74fad04576 Author: Huang Peng Date: 2008-06-24 10:33:03 +0800 Add test property. M engine/anthy/engine.py commit e78200efea42e564d5aefef76627450a7988024f Author: Huang Peng Date: 2008-06-24 10:32:48 +0800 WIP property. M panel/languagebar.py M panel/menu.py M panel/toolitem.py commit 15770e7875d9ab79d950f0e1828f9e9e3ff8e16b Author: Huang Peng Date: 2008-06-24 08:39:20 +0800 Add toolitem.py M panel/Makefile.am M panel/languagebar.py A panel/toolitem.py commit 2b6ed52cd97a1e66a6b68f5ebebc490fdcf5b946 Author: Huang Peng Date: 2008-06-23 20:14:32 +0800 Add menu.py M panel/Makefile.am M panel/languagebar.py A panel/menu.py M panel/panel.py commit 57877ac31e28b94cacb5c4b45974bed1b1381f7b Author: Huang Peng Date: 2008-06-23 19:59:04 +0800 Position the popup menu. M panel/languagebar.py M panel/panel.py commit 29a69894d260214d57b93d4ea534a6ec23807297 Author: Huang Peng Date: 2008-06-23 19:47:47 +0800 Does not exit when catch except reply. M ibus/common.py commit 39480c25c45771e4fcd2b2ffc662abae2a461386 Author: Huang Peng Date: 2008-06-23 18:30:12 +0800 WIP property. M engine/anthy/engine.py M ibusdaemon/bus.py M ibusdaemon/engine.py M ibusdaemon/inputcontext.py M ibusdaemon/panel.py M panel/languagebar.py M panel/panel.py commit c380db468f4e1f6276e19604e38b9db137d7a40f Author: Huang Peng Date: 2008-06-23 18:29:48 +0800 Add prop_state arg in PropertyActivate. And add PROP_TYPE_MENU M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibus/property.py commit 19f10da3a3a680269f51554a3a5b98ef2a7e3c7e Author: Huang Peng Date: 2008-06-23 12:20:18 +0800 Add some debug code. M qt4/ibus-input-context.cpp commit e2da599389bef2878ae83b4b1a318926fe97edf9 Author: Huang Peng Date: 2008-06-22 21:59:56 +0800 Add __all__ in ibus source files to limit the exported objects. M ibus/attribute.py M ibus/common.py M ibus/exception.py M ibus/gtk.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/ipanel.py M ibus/lookuptable.py M ibus/object.py M ibus/panel.py M ibus/property.py commit ac95983afa62e6960bdf674bbe9d393e67a6fded Author: Huang Peng Date: 2008-06-22 17:01:44 +0800 Add license headers. M engine/anthy/ibus-engine-anthy.in M engine/enchant/ibus-engine-enchant.in M ibusdaemon/ibus-daemon.in M panel/ibus-panel.in commit 4379f12111d279675de8d050ad1da99fa8f401aa Author: Huang Peng Date: 2008-06-20 17:44:31 +0800 remove themes. D panel/themes/default/Arrows/arrow-down.png D panel/themes/default/Arrows/arrow-insens.png D panel/themes/default/Arrows/arrow-left.png D panel/themes/default/Arrows/arrow-right.png D panel/themes/default/Arrows/arrow-up.png D panel/themes/default/Buttons/button-insensitive.png D panel/themes/default/Buttons/button-normal.png D panel/themes/default/Buttons/button-prelight.png D panel/themes/default/Check-Radio/check1.png D panel/themes/default/Check-Radio/check2.png D panel/themes/default/Check-Radio/check3.png D panel/themes/default/Check-Radio/check4.png D panel/themes/default/Check-Radio/check5.png D panel/themes/default/Check-Radio/check6.png D panel/themes/default/Check-Radio/option1.png D panel/themes/default/Check-Radio/option2.png D panel/themes/default/Check-Radio/option3.png D panel/themes/default/Check-Radio/option4.png D panel/themes/default/Check-Radio/option5.png D panel/themes/default/Check-Radio/option6.png D panel/themes/default/Frame-Gap/frame-gap-end.png D panel/themes/default/Frame-Gap/frame-gap-start.png D panel/themes/default/Frame-Gap/frame.png D panel/themes/default/Handles/handle-h.png D panel/themes/default/Handles/handle-v.png D panel/themes/default/Lines/line-h.png D panel/themes/default/Lines/line-v.png D panel/themes/default/ListHeaders/list_header-insens.png D panel/themes/default/ListHeaders/list_header-prelight.png D panel/themes/default/ListHeaders/list_header-pressed.png D panel/themes/default/ListHeaders/list_header.png D panel/themes/default/Menu-Menubar/menu.png D panel/themes/default/Menu-Menubar/menubar-item-active.png D panel/themes/default/Menu-Menubar/menubar-item.png D panel/themes/default/Menu-Menubar/menubar.png D panel/themes/default/Others/null.png D panel/themes/default/Others/ruler.png D panel/themes/default/Panel/panel-bg.png D panel/themes/default/ProgressBar/progressbar-horiz.png D panel/themes/default/ProgressBar/trough-progressbar-horiz.png D panel/themes/default/Range/slider-horiz-prelight.png D panel/themes/default/Range/slider-horiz.png D panel/themes/default/Range/slider-vert-prelight.png D panel/themes/default/Range/slider-vert.png D panel/themes/default/Range/trough-horizontal.png D panel/themes/default/Range/trough-vertical.png D panel/themes/default/Scrollbars/scroll-thumb-horiz-pre.png D panel/themes/default/Scrollbars/scroll-thumb-horiz.png D panel/themes/default/Scrollbars/scroll-thumb-vert-pre.png D panel/themes/default/Scrollbars/scroll-thumb-vert.png D panel/themes/default/Scrollbars/slider-horiz-pre.png D panel/themes/default/Scrollbars/slider-horiz.png D panel/themes/default/Scrollbars/slider-vert-pre.png D panel/themes/default/Scrollbars/slider-vert.png D panel/themes/default/Scrollbars/stepper-down-prelight.png D panel/themes/default/Scrollbars/stepper-down.png D panel/themes/default/Scrollbars/stepper-left-prelight.png D panel/themes/default/Scrollbars/stepper-left.png D panel/themes/default/Scrollbars/stepper-right-prelight.png D panel/themes/default/Scrollbars/stepper-right.png D panel/themes/default/Scrollbars/stepper-up-prelight.png D panel/themes/default/Scrollbars/stepper-up.png D panel/themes/default/Scrollbars/trough-scrollbar-horiz.png D panel/themes/default/Scrollbars/trough-scrollbar-vert.png D panel/themes/default/Shadows/shadow-in.png D panel/themes/default/Shadows/shadow-out.png D panel/themes/default/Shadows/text-.png D panel/themes/default/Shadows/text-entry.png D panel/themes/default/Spin/spin-down-disable.png D panel/themes/default/Spin/spin-down-prelight.png D panel/themes/default/Spin/spin-down.png D panel/themes/default/Spin/spin-up-disable.png D panel/themes/default/Spin/spin-up-prelight.png D panel/themes/default/Spin/spin-up.png D panel/themes/default/Tabs/gap-bottom-left.png D panel/themes/default/Tabs/gap-bottom-right.png D panel/themes/default/Tabs/gap-left-bottom.png D panel/themes/default/Tabs/gap-left-top.png D panel/themes/default/Tabs/gap-right-bottom.png D panel/themes/default/Tabs/gap-right-top.png D panel/themes/default/Tabs/gap-top-current.png D panel/themes/default/Tabs/gap-top-left.png D panel/themes/default/Tabs/gap-top-right.png D panel/themes/default/Tabs/notebook.png D panel/themes/default/Tabs/tab-bottom-active.png D panel/themes/default/Tabs/tab-bottom.png D panel/themes/default/Tabs/tab-left-active.png D panel/themes/default/Tabs/tab-left.png D panel/themes/default/Tabs/tab-right-active.png D panel/themes/default/Tabs/tab-right.png D panel/themes/default/Tabs/tab-top-active.png D panel/themes/default/Tabs/tab-top.png D panel/themes/default/Toolbar/toolbar.png D panel/themes/default/gtkrc D panel/themes/default/panel.rc D panel/themes/icons/gnome-dev-keyboard.svg D panel/themes/icons/keyboard.svg commit b934c65c3be8e2800ffe6a39b7d7dc380bb665fa Author: Huang Peng Date: 2008-06-20 14:13:29 +0800 Add argument --daemonize M engine/anthy/ibus-engine-anthy.in M engine/anthy/main.py M engine/enchant/ibus-engine-enchant.in M engine/enchant/main.py commit 9379f9100cf1bff08c0c997212e0b400ac8a970a Author: Huang Peng Date: 2008-06-20 14:12:25 +0800 Fix a typo. M engine/enchant/Makefile.am commit dc88529bb57ac78a3d22e8a7d85478d32cbafd69 Author: Huang Peng Date: 2008-06-20 13:31:29 +0800 Add arguments for panel. M panel/ibus-panel.in M panel/main.py commit 0dad9dcb3357223527537a952d4b0e59644cb852 Author: Huang Peng Date: 2008-06-20 13:28:39 +0800 Fix a typo. M ibusdaemon/ibusdaemon.py commit b40deb0d335c55469dcf3a2113fb683cdbc12742 Author: Huang Peng Date: 2008-06-20 13:20:06 +0800 Fix a typo. M ibusdaemon/lookuptable.py commit d7bf6871f3174c40787cc9963b40e1029bb0d292 Author: Huang Peng Date: 2008-06-20 13:19:01 +0800 Add argument -d -h. M ibusdaemon/ibus-daemon.in M ibusdaemon/ibusdaemon.py commit b38bdde765e29e76c542b3ed61442d5b7761045e Author: Huang Peng Date: 2008-06-19 22:49:36 +0800 Rename qt to qt4 M Makefile.am M configure.ac D qt/.gitignore D qt/Makefile.am D qt/ibus-client.cpp D qt/ibus-client.h D qt/ibus-input-context.cpp D qt/ibus-input-context.h D qt/ibus.pro D qt/im-ibus-qt.cpp A qt4/.gitignore A qt4/Makefile.am A qt4/ibus-client.cpp A qt4/ibus-client.h A qt4/ibus-input-context.cpp A qt4/ibus-input-context.h A qt4/ibus.pro A qt4/im-ibus-qt.cpp commit 819860b4b071d07820ac311ff155029e48efbbc7 Author: Huang Peng Date: 2008-06-19 22:45:08 +0800 Add ibus-*.tar.* in .gitignore. M .gitignore commit 18dca249278f17fda46926efdb2ab398ed42792e Author: Huang Peng Date: 2008-06-19 22:43:36 +0800 Add ibus-engine-anthy in engine/anthy/.gitignore. M engine/anthy/.gitignore commit 2802bffb5a073016f885af8c206eff142f6e2a80 Author: Huang Peng Date: 2008-06-19 22:42:42 +0800 Add generated script files in .gitignore. A engine/enchant/.gitignore A ibusdaemon/.gitignore A panel/.gitignore commit cb4157a5ef5756d215e7315a691a80bb8f54a1d5 Author: Huang Peng Date: 2008-06-19 22:40:19 +0800 Install launch scripts in libexec dir. M engine/anthy/Makefile.am M engine/enchant/Makefile.am M ibusdaemon/Makefile.am M panel/Makefile.am commit bc5a5356e27aaf10139dc68ebe61fcf46a451b9a Author: Huang Peng Date: 2008-06-19 22:29:43 +0800 Add lunch shell scripts. M configure.ac M engine/anthy/Makefile.am A engine/anthy/ibus-engine-anthy.in M engine/enchant/Makefile.am A engine/enchant/ibus-engine-enchant.in M ibusdaemon/Makefile.am A ibusdaemon/ibus-daemon.in M panel/Makefile.am A panel/ibus-panel.in commit 7c9c51f4f51b7ccd0f60f8c4fa72fb89d938943f Author: Huang Peng Date: 2008-06-19 22:09:44 +0800 Set icon search path. M panel/languagebar.py M panel/panel.py commit 40ff040364f2cbee2ce1741cb3f2d4fa75e955f0 Author: Huang Peng Date: 2008-06-19 21:11:19 +0800 Add python-config.py in dist tarball. M Makefile.am commit bd1f6c4638661aadbadd5efbd9e5fa20d14b8ec9 Author: Huang Peng Date: 2008-06-19 18:38:44 +0800 Dist with autogen.sh. M Makefile.am commit dd4d6a195e6da2adb51c7ea6ff771d070ee3d896 Author: Huang Peng Date: 2008-06-19 18:37:35 +0800 Add opt --enable-maintainer-mode in autogen.sh. M autogen.sh commit fb2326cb8804e92e26588cb4f4d4703fe890841e Author: Huang Peng Date: 2008-06-19 18:33:43 +0800 Add CLEANFILES = *.pyc in Makefile.am. M engine/anthy/Makefile.am M engine/enchant/Makefile.am M ibus/Makefile.am M ibus/interface/Makefile.am M ibusdaemon/Makefile.am M panel/Makefile.am commit 036965377041ad9ba1df0755449108af0f07280b Author: Huang Peng Date: 2008-06-19 18:30:26 +0800 Add header for sources. M Makefile.am M configure.ac M engine/Makefile.am M engine/anthy/Makefile.am M engine/anthy/anthy.i M engine/anthy/engine.py M engine/anthy/factory.py M engine/anthy/main.py M engine/anthy/tables.py M engine/enchant/Makefile.am M engine/enchant/engine.py M engine/enchant/factory.py M engine/enchant/main.py M gtk2/Makefile.am M ibus/Makefile.am M ibus/__init__.py M ibus/application.py M ibus/attribute.py M ibus/common.py M ibus/exception.py M ibus/gtk.py M ibus/interface/Makefile.am M ibus/interface/__init__.py M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibus/interface/ipanel.py M ibus/keysyms.py M ibus/lookuptable.py M ibus/modifier.py M ibus/object.py M ibus/panel.py M ibus/property.py M ibusdaemon/Makefile.am M ibusdaemon/bus.py M ibusdaemon/connection.py M ibusdaemon/contextmanager.py M ibusdaemon/engine.py M ibusdaemon/enginefactory.py M ibusdaemon/factorymanager.py M ibusdaemon/ibusdaemon.py M ibusdaemon/inputcontext.py M ibusdaemon/lookuptable.py M ibusdaemon/panel.py M icons/Makefile.am M panel/Makefile.am M panel/candidatepanel.py M panel/handle.py M panel/image.py M panel/lang.py M panel/languagebar.py M panel/main.py M panel/panel.py M qt/Makefile.am M qt/ibus-client.cpp M qt/ibus-client.h M qt/ibus-input-context.cpp M qt/ibus-input-context.h M qt/ibus.pro M qt/im-ibus-qt.cpp commit fdbbcd9fe7af509a17eea1fcd3d78a5a013c6971 Author: Huang Peng Date: 2008-06-19 15:48:09 +0800 Rename gik to ibus. M gtk2/Makefile.am D gtk2/gikim.c D gtk2/gikimclient.c D gtk2/gikimclient.h D gtk2/gikimcontext.c D gtk2/gikimcontext.h A gtk2/ibusim.c A gtk2/ibusimclient.c A gtk2/ibusimclient.h A gtk2/ibusimcontext.c A gtk2/ibusimcontext.h commit afb1e11faa1a0a93cc8b0d2a52dffb1ee4c8af57 Author: Huang Peng Date: 2008-06-19 14:11:15 +0800 Refactory {install, remove}_engine_handlers methods. M ibusdaemon/inputcontext.py commit e9e130ecfd8702687d0043b52b79a15ffbf9d987 Author: Huang Peng Date: 2008-06-19 08:40:50 +0800 Only set cursor location when the location being changed. M qt/ibus-input-context.cpp M qt/ibus-input-context.h commit d60595118882bd7e1f6246a74d463dae6ae89725 Author: Huang Peng Date: 2008-06-19 08:38:11 +0800 call update after commitString. M qt/ibus-input-context.cpp commit 22da0011ec7afa66c9ed83d23273842668476076 Author: Huang Peng Date: 2008-06-19 08:36:35 +0800 call update method after sendEvent. M qt/ibus-input-context.cpp M qt/ibus-input-context.h commit 5a821997586865384e47611ffd9dad070629bf53 Author: Huang Peng Date: 2008-06-18 18:38:05 +0800 Add test task in Makefile.ams. M engine/anthy/Makefile.am M engine/enchant/Makefile.am M ibusdaemon/Makefile.am M panel/Makefile.am commit ab6ad5f76f826fa07f82bde964541fe80a9b562a Author: Huang Peng Date: 2008-06-18 18:37:53 +0800 Check prog env. M configure.ac commit c159c5a0846a6a77ec624213da2b0551bedcda1b Author: Huang Peng Date: 2008-06-18 17:41:41 +0800 Add {install, remove}_focused_context_handlers methods. M ibusdaemon/bus.py commit b79cab04739d6896f62e8257a0155b9c2a1193ce Author: Huang Peng Date: 2008-06-18 17:40:51 +0800 Only send destroy signal one time. M ibus/object.py commit 69150f225cd8de1886b82e103dd196677706cfeb Author: Huang Peng Date: 2008-06-18 17:39:58 +0800 Remove gtk-doc. M autogen.sh M configure.ac commit 173f54b593b4a683298624f803cd65b134ef3196 Author: Huang Peng Date: 2008-06-18 14:17:37 +0800 make configure failed if swig does not exist. M configure.ac commit 253db3e406c4d6d3eead03f0decf08299ff906b9 Author: Huang Peng Date: 2008-06-18 12:31:33 +0800 Make languagebar sticks with workarea borders. M panel/handle.py commit 6f4ba2dca549d03f87915b267a27a4ec228d72aa Author: Huang Peng Date: 2008-06-18 12:04:27 +0800 Set languagebar's position M panel/languagebar.py commit 15284824d4e598b933faed15d729a460ce11fba3 Author: Huang Peng Date: 2008-06-18 11:40:38 +0800 qt im module wip. M qt/ibus-input-context.cpp M qt/ibus-input-context.h commit 6ce07c96045f595dc7f1dd9d2c01307df67136fa Author: Huang Peng Date: 2008-06-18 10:30:49 +0800 Destroy InputContext when connection lost. M ibusdaemon/inputcontext.py commit 2e838808127c563d4baedcd20a939f826351a7f2 Author: Huang Peng Date: 2008-06-18 10:30:28 +0800 Fix cursor position problem. M qt/ibus-input-context.cpp commit a213f10ebae03a8b6e32891c2a18525302763d82 Author: Huang Peng Date: 2008-06-18 09:23:27 +0800 Fix anthy engine make distcheck errors. M engine/anthy/Makefile.am commit 104780dae25ca04a9bac7ea821797d5943c49429 Author: Huang Peng Date: 2008-06-17 23:41:24 +0800 Add Makefile.am for icons. M Makefile.am M configure.ac M engine/anthy/Makefile.am M engine/enchant/Makefile.am M ibusdaemon/Makefile.am A icons/Makefile.am M icons/ibus-help.png M panel/Makefile.am commit 3c7d7469cc16f9c93a7a1d569a6191685d24da30 Author: Huang Peng Date: 2008-06-17 19:00:20 +0800 Update .gitignore. M .gitignore commit 82fcafad447d3dae0b4e18c13e34af761d6984e6 Author: Huang Peng Date: 2008-06-17 18:59:41 +0800 Update .gitignore files. M .gitignore A engine/anthy/.gitignore A qt/.gitignore commit 36f67d071148e4e162f4c5dec04e2d192b959090 Author: Huang Peng Date: 2008-06-17 18:22:49 +0800 Fix make distcheck problems. M qt/Makefile.am commit 7d4541f8e6c2ff14262e2cc9d9e019591d0c9475 Author: Huang Peng Date: 2008-06-17 18:15:48 +0800 Fix make install & uninstall M qt/Makefile.am commit 13be881c74e9f3a76be57c7827b99c889ddd4bef Author: Huang Peng Date: 2008-06-17 18:11:01 +0800 Add Makefile.am for qt. M Makefile.am M configure.ac M engine/anthy/Makefile.am A qt/Makefile.am commit 558775dbaf9ddf72e3bee5234780c71119e82589 Author: Huang Peng Date: 2008-06-17 17:10:36 +0800 Check swig in configure. M configure.ac M engine/anthy/Makefile.am commit 57522e42d54375596542c98de0bd3be344d744fa Author: Huang Peng Date: 2008-06-17 16:46:55 +0800 WIP. M configure.ac D engine/anthy/Makefile M engine/anthy/Makefile.am D engine/enchant/Makefile A python-config.py commit eb28cd1b6d495e61b757991657da0804f097760c Author: Huang Peng Date: 2008-06-17 16:26:29 +0800 Add Makefile.am M Makefile.am M configure.ac A engine/Makefile.am M engine/anthy/Makefile M engine/anthy/Makefile.am M engine/enchant/Makefile A engine/enchant/Makefile.am A engine/m17n/Makefile.am commit 43b3212a6f553bf147365336adc9ade244994e59 Author: Huang Peng Date: 2008-06-17 16:19:45 +0800 Remove Makefile, add Makefile.am in panel. D panel/Makefile A panel/Makefile.am commit 60db8bfaf381049e43082d17fed3db627040cb3e Author: Huang Peng Date: 2008-06-17 16:17:32 +0800 Remove Makefile, add Makefile.am D ibusdaemon/Makefile A ibusdaemon/Makefile.am commit 6d76df52a0a56acb9ee6376ac2b01c0bd48dd353 Author: Huang Peng Date: 2008-06-17 16:04:45 +0800 Remove test tasks in Makefile.am. M ibus/Makefile.am commit 0205c3c3a2e30f33e2f862a89c4a9fdd18c323af Author: Huang Peng Date: 2008-06-17 16:01:00 +0800 Remove Makefile in ibus. D ibus/Makefile M ibus/Makefile.am commit a3c38529d9fe6e0bbad0d4da8df38fadbd1b29d3 Author: Huang Peng Date: 2008-06-17 16:00:14 +0800 Add Makefile.am in ibus M Makefile.am M configure.ac A ibus/Makefile.am A ibus/interface/Makefile.am commit 90f8e91d834398baa506079e2f51c0bc328bb7c9 Author: Huang Peng Date: 2008-06-17 15:36:11 +0800 Move modifier masks from keysyms to modifier. Remove debug output. M engine/enchant/engine.py M ibusdaemon/bus.py M ibusdaemon/ibusdaemon.py commit 8b050bc561113774f4a7292f805937379e510dab Author: Huang Peng Date: 2008-06-17 15:31:10 +0800 Move modifer masks from keysyms to modifier M ibus/keysyms.py A ibus/modifier.py commit 7c64ff857ad3a4a5d75a7fbd6585b9d0c62399df Author: Huang Peng Date: 2008-06-17 15:25:10 +0800 Modify the project file to support 'make install'. M qt/ibus.pro M qt/im-ibus-qt.cpp commit 299fbcf8810eaac00b6bf29560100edea8638c8a Author: Huang Peng Date: 2008-06-17 15:08:24 +0800 Reset panel when focused_context be destroyed M ibusdaemon/bus.py M ibusdaemon/contextmanager.py M ibusdaemon/inputcontext.py commit c3840b20c247dc6596a6905839c48ec0ca306aab Author: Huang Peng Date: 2008-06-17 14:23:38 +0800 qt im module wip. M ibus/interface/iibus.py M ibusdaemon/bus.py M qt/ibus-client.cpp M qt/ibus-client.h M qt/ibus-input-context.cpp M qt/ibus-input-context.h commit bae64c7dda7f82f98a61e2e6fb11ffde1a76a040 Author: Huang Peng Date: 2008-06-16 21:30:01 +0800 qt im module WIP. M qt/ibus-client.cpp commit 52f013d698240f6ee9b7267dfc5945a1443b107e Author: Huang Peng Date: 2008-06-16 20:28:44 +0800 qt module WIP. M ibusdaemon/contextmanager.py M ibusdaemon/ibusdaemon.py M qt/ibus-client.cpp M qt/ibus-client.h M qt/ibus-input-context.cpp M qt/ibus-input-context.h commit a84a555a4955fb3ade7de1228b715dae14dcaa74 Author: Huang Peng Date: 2008-06-15 22:29:43 +0800 WIP qt immodule. M qt/ibus-client.cpp M qt/ibus-client.h M qt/ibus-input-context.cpp M qt/ibus-input-context.h M qt/im-ibus-qt.cpp commit 4cef3e4d8d4742f2497bb9db7ea2ed7131105624 Author: Huang Peng Date: 2008-06-15 13:35:17 +0800 qt immdouel WIP. M qt/ibus-input-context.cpp M qt/ibus-input-context.h M qt/im-ibus-qt.cpp commit cc1ab071e8df14999203855a7072880010672e65 Author: Huang Peng Date: 2008-06-14 15:04:54 +0800 Qt immoduel WIP. M qt/ibus-input-context.cpp M qt/ibus-input-context.h M qt/im-ibus-qt.cpp commit 9a08cdb39f707192e64525931f33b51917fcaf95 Author: Huang Peng Date: 2008-06-14 14:47:56 +0800 Add qt im module. A qt/ibus-client.cpp A qt/ibus-client.h A qt/ibus-input-context.cpp A qt/ibus-input-context.h A qt/ibus.pro M qt/im-ibus-qt.cpp commit c8d37e33e4f4598f434dd3d04fdfb990bda36a22 Author: Huang Peng Date: 2008-06-14 13:58:33 +0800 Add im-ibus-qt.cpp. A qt/im-ibus-qt.cpp commit a9123f28b410713b91a605f059a0c08a14315563 Author: Huang Peng Date: 2008-06-14 13:49:20 +0800 Add DBus object. M ibusdaemon/bus.py M ibusdaemon/ibusdaemon.py commit 1549532ea1b838c2ef3be63005aa699ced883cfb Author: Huang Peng Date: 2008-06-14 09:48:40 +0800 Make one connection can create many inputcontext. M gtk2/gikimclient.c M ibus/interface/iibus.py M ibusdaemon/bus.py D ibusdaemon/client.py D ibusdaemon/clientmanager.py A ibusdaemon/contextmanager.py A ibusdaemon/inputcontext.py M panel/panel.py commit d60756e7cd6bfb3b3db892114ba9c77b66d07f8b Author: Huang Peng Date: 2008-06-14 00:30:55 +0800 Modify im menu position function. M panel/panel.py commit 7753e6ded2fa21b10418cf5efdf7bc53499335cb Author: Huang Peng Date: 2008-06-14 00:26:27 +0800 Modify position function of im menu. M panel/panel.py commit ad600ae81ce32bde12ce6d08ed415abdbeaa4e87 Author: Huang Peng Date: 2008-06-14 00:17:14 +0800 WIP. M engine/anthy/main.py M engine/enchant/main.py M ibus/common.py commit 5448bc0e1bb7eb94f2df67832d38fccd6307c8ad Author: Huang Peng Date: 2008-06-14 00:04:42 +0800 Make all remote methods async. M ibusdaemon/engine.py M ibusdaemon/panel.py commit d71e1f65fb0b64613e8700b517611d449e4fb173 Author: Huang Peng Date: 2008-06-13 23:57:45 +0800 make panel's methods async. M ibusdaemon/panel.py commit 1cff797c23c984789baac0dc65196af3c8bf4697 Author: Huang Peng Date: 2008-06-13 23:57:22 +0800 Reset panel when factory is changed. M ibusdaemon/bus.py commit 7577caffd66046824597af77ff2c9c3bf71bf51e Author: Huang Peng Date: 2008-06-13 23:46:56 +0800 Add im menu in languagebar. M panel/languagebar.py M panel/panel.py commit ecf8d4bc816e77a0d3805c66e0129dfc5ebee3d6 Author: Huang Peng Date: 2008-06-13 20:53:44 +0800 Add zh_CN. M panel/lang.py commit 904ef3e0b3e2b2310f6be6a77dc48297d7837f70 Author: Huang Peng Date: 2008-06-13 20:38:30 +0800 Fix a problem when changing the orientation M panel/candidatepanel.py commit 65a7cb50001076766533fd99184831f5192fff54 Author: Huang Peng Date: 2008-06-13 20:34:47 +0800 Remove CandidateWindow. M panel/candidatepanel.py D panel/candidatewindow.py M panel/languagebar.py M panel/panel.py commit c38278a1e72a24022a03fe12335908e2f39b25df Author: Huang Peng Date: 2008-06-13 20:34:19 +0800 Remove unused methods. M panel/candidatewindow.py commit 374d2fe3af161428e6a1881f0adb8fcc39fc2235 Author: Huang Peng Date: 2008-06-13 20:16:44 +0800 Rename demo to enchant. M engine/enchant/factory.py commit 47220bdb6953f755794a6ec581c40d46e1971027 Author: Huang Peng Date: 2008-06-13 20:14:56 +0800 Remove LanguageBarWindow. M panel/languagebar.py M panel/panel.py commit b999d701d28c2709b9a28168a674c947a13d1062 Author: Huang Peng Date: 2008-06-13 09:35:21 +0800 Rename demo engine to enchant. D engine/demo/Makefile D engine/demo/engine.py D engine/demo/factory.py D engine/demo/main.py A engine/enchant/Makefile A engine/enchant/engine.py A engine/enchant/factory.py A engine/enchant/main.py commit 50acf73936343cc32fc20c97dcfb3193faf5bc37 Author: Huang Peng Date: 2008-06-13 08:19:06 +0800 Add icons. A icons/ibus-anthy.png A icons/ibus-help.png A icons/ibus-locale.svg A icons/ibus-zh.svg commit 42dddc6caae6015611dfd0bd1b2b860c6bf9872b Author: Huang Peng Date: 2008-06-13 08:12:58 +0800 Update lookup table when change orientation of candidate panel. M panel/candidatepanel.py commit 77737f7599eed37cd1a7753f686ba0e3d0d84f65 Author: Huang Peng Date: 2008-06-12 19:44:41 +0800 Add StatusIcon and engine menu. M engine/anthy/factory.py M ibus/gtk.py M ibus/interface/iibus.py M ibusdaemon/bus.py M ibusdaemon/factorymanager.py A panel/lang.py M panel/main.py M panel/panel.py commit c12e5619750194d267105aa062867bd990e2f5d8 Author: Huang Peng Date: 2008-06-12 15:11:12 +0800 Commit string if use press common key in convert mode. M engine/anthy/engine.py M ibus/gtk.py commit acea89868ab61dd6946121619b304c1258c81dd0 Author: Huang Peng Date: 2008-06-12 13:10:31 +0800 Use unicode string. M engine/demo/engine.py commit 09dc7d343658f80e5515ef9c523d4468de189fc6 Author: Huang Peng Date: 2008-06-12 10:58:03 +0800 Change preedit's background color. M engine/anthy/engine.py M ibus/interface/iengine.py commit 6d40b1e5f171368f030f00985db9e5c60aeb23f6 Author: Huang Peng Date: 2008-06-12 10:52:17 +0800 Change background color for convert mode. M engine/anthy/engine.py commit 9760293c5ddff4f7a18843fee7f7e852094d671a Author: Huang Peng Date: 2008-06-12 10:44:06 +0800 WIP. M gtk2/gikimclient.c commit fc2c64dcd3a31d620717a40d007a8a056ee01331 Author: Huang Peng Date: 2008-06-12 10:00:44 +0800 Convert offset in PangoAttrList M ibus/gtk.py M panel/candidatepanel.py commit ac3e3a1cf72611cba09fbccd2faf0c6d0cbf884a Author: Huang Peng Date: 2008-06-12 09:47:11 +0800 Convert bytes offset to characters offset. M engine/anthy/engine.py commit d1405d1ccb75f2733c0c641bda5c4c8700beafb6 Author: Huang Peng Date: 2008-06-12 09:46:40 +0800 Convert characters offset to bytes offset. M gtk2/gikimclient.c commit c48a5ae2627a78bf67f652d8c3fc4feafc259216 Author: Huang Peng Date: 2008-06-12 06:01:40 +0800 Handle Delete key. M engine/anthy/engine.py commit d4285d92f6b69fcd00bbb7603a029318831f4ca3 Author: Huang Peng Date: 2008-06-12 05:56:44 +0800 rm *.pyc in clean task. M engine/anthy/Makefile commit 7f34028935e5cea892121ca974e56c3237727096 Author: Huang Peng Date: 2008-06-12 05:55:31 +0800 Fix bug when pressing backspace M engine/anthy/engine.py commit 39fc5412500087774b658b2d7217254526e410b7 Author: Huang Peng Date: 2008-06-11 22:59:15 +0800 Add main.py for anthy engine. A engine/anthy/main.py commit 9c1e6130739313152d3c921067d0ffffa3ac673d Author: Huang Peng Date: 2008-06-11 22:44:03 +0800 Clean preedit when engine is lost M ibusdaemon/client.py commit 4b166dc64c28a89246d9ec3c87b1a41e7e6220a3 Author: Huang Peng Date: 2008-06-11 22:18:26 +0800 WIP anthy engine. M engine/anthy/engine.py M ibus/lookuptable.py commit 924e244fff3a48eea3aa742bfbe0885c62f93d71 Author: Huang Peng Date: 2008-06-11 18:01:32 +0800 WIP anthy engine. M engine/anthy/Makefile A engine/anthy/engine.py A engine/anthy/factory.py A engine/anthy/tables.py commit e5cdfb21fde5c4f7028ec5ceb6ed44aac769feb3 Author: Huang Peng Date: 2008-06-11 18:00:52 +0800 WIP. M ibusdaemon/client.py M ibusdaemon/engine.py commit 58bb35853d8a5ba128c827afb307b2ead467f6c8 Author: Huang Peng Date: 2008-06-11 14:57:22 +0800 Add anthy engine A engine/anthy/Makefile A engine/anthy/Makefile.am A engine/anthy/anthy.i A engine/anthy/test.py commit b4ae75975083abb847a654edb0d48d888056d0e5 Author: Huang Peng Date: 2008-06-11 10:59:56 +0800 WIP property. M engine/demo/engine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/panel.py M panel/candidatepanel.py M panel/languagebar.py commit 324a1a8c565e01f1e09ca0e3cf8dff2e0b61765f Author: Huang Peng Date: 2008-06-10 23:41:26 +0800 WIP property. M engine/demo/engine.py M ibusdaemon/bus.py M ibusdaemon/client.py M panel/languagebar.py M panel/panel.py commit b2a99e8c5315e8bf8954e1094fc5a5930789da4f Author: Huang Peng Date: 2008-06-10 23:24:23 +0800 Import property in __init__.py M ibus/__init__.py commit 74466037d16c274cd0b39c3aa6c838c7d23af7e6 Author: Huang Peng Date: 2008-06-10 22:21:14 +0800 Add __iter__ method for PropList object. M ibus/property.py commit 0265d139308e0232f7c08ad43b5a09e5f3c83ba1 Author: Huang Peng Date: 2008-06-10 20:21:09 +0800 Property WIP. M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/languagebar.py M panel/panel.py commit 90915751f000327f43fd2a5c1d1556e16efb1a74 Author: Huang Peng Date: 2008-06-10 15:58:01 +0800 Add is_same mothod. M ibus/property.py commit 28ccfb07466686d723e97ad227a57c5b591f4f85 Author: Huang Peng Date: 2008-06-10 14:53:34 +0800 Fix typo. M panel/panel.py commit a98b627b68de2b1c1c8d57ca1f5c91cbc720ab2a Author: Huang Peng Date: 2008-06-10 13:48:34 +0800 Does not commit space when user uses 1~5 to select candidate. M engine/demo/engine.py commit f55614858ef52f3a7f0c06fe9192b311f998eeb5 Author: Huang Peng Date: 2008-06-10 13:43:34 +0800 Fix some mistakes of register-properties & update-property. M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py commit 91722b9e1c4a01d4f961934e6916c5f5766b9a41 Author: Huang Peng Date: 2008-06-10 13:36:56 +0800 Modified engine & panel interfaces. M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/panel.py commit cd8f5c99c0fd48a5c7c498b5378c1985184dd91f Author: Huang Peng Date: 2008-06-10 11:07:56 +0800 Handle escape key. M engine/demo/engine.py commit de3aeeb1b0aa5ad91fb2802059034d5a7b737eca Author: Huang Peng Date: 2008-06-10 11:05:43 +0800 Fix a bug of lookuptable.page_down M ibus/lookuptable.py commit e29878b94ee711e8f3c6d0489140cdf858b1826f Author: Huang Peng Date: 2008-06-06 12:38:56 +0800 Use host and X display id in ibus address. M gtk2/gikimclient.c M ibus/common.py commit d8b3fa89cc3452595fc1fcc2014398be1f7999b6 Author: Huang Peng Date: 2008-06-06 11:32:12 +0800 Add dbusconn in GetFactoryInfo method. M ibus/interface/iibus.py commit e719c375cd808204761843ce493dd1ae37562c03 Author: Huang Peng Date: 2008-06-06 11:27:30 +0800 Fix build error in Solaris. M gtk2/gikimclient.c commit f9e7b06008c6c6d5fe5bd03c7e6b0d9d6c4a1e54 Author: Huang Peng Date: 2008-06-05 22:01:10 +0800 Add UpdateProperties in panel. M ibus/interface/iengine.py M ibus/interface/ienginefactory.py M ibus/interface/iibus.py M ibusdaemon/bus.py M panel/panel.py commit 2475acd6decd8c6866029ebd7761778a3563b04b Author: Huang Peng Date: 2008-06-05 15:31:38 +0800 Modify some interface. M ibusdaemon/bus.py M ibusdaemon/lookuptable.py commit e5ca9c4a0a1e1ef45c6cd52984b87412c3f41764 Author: Huang Peng Date: 2008-06-05 15:29:22 +0800 Add property. M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/languagebar.py commit ff7292352b7d4b1609f077c3650d94a3c83051fc Author: Huang Peng Date: 2008-06-04 18:06:32 +0800 Add property.py. A ibus/property.py commit 7509893db5888b62da22bfa27e17653cdb9dc052 Author: Huang Peng Date: 2008-06-04 11:35:45 +0800 Fix bugs when moving languagebar. M panel/handle.py commit e6a8e9fb9d429497862d3a89ed433c4aabffe182 Author: Huang Peng Date: 2008-06-04 08:55:08 +0800 Fix problem when a new panel replacing the old one. M ibusdaemon/bus.py commit 3d2f237c3e410888635c5402b0ca4c6c6223dd83 Author: Huang Peng Date: 2008-06-03 22:13:22 +0800 quit mainloop, when the Panel object be destroyed. M panel/panel.py commit 267a9135667e88f1e775a8078420a949dacc1a7b Author: Huang Peng Date: 2008-06-03 22:07:43 +0800 Try to use custom icons. M panel/languagebar.py M panel/panel.py commit a3d2228e48f324eaed1bb1fece6fd0c6bd5c6763 Author: Huang Peng Date: 2008-06-03 13:49:31 +0800 Rename keyboard icon. A icons/ibus-keyboard.svg D icons/keyboard.svg commit 7da7fb8cce0ec32f54da58b1cc3b64d69faef617 Author: Huang Peng Date: 2008-06-03 13:48:32 +0800 Fix segfault when delete an im client object. M gtk2/gikimclient.c commit 5020e3a144975b89c03cd83972ec181bf4df45f2 Author: Huang Peng Date: 2008-06-03 13:19:16 +0800 Add keyboard icon. A icons/keyboard.svg commit f57ae92a8452b03f759ed3a3d7e7c5def6354366 Author: Huang Peng Date: 2008-06-03 12:59:15 +0800 Add an icon for default engine. A icons/engine-default.svg commit 983e5ff3c2f740308647380cd3174a43e54d1acd Author: Huang Peng Date: 2008-06-03 12:50:18 +0800 Specify the idle's priority. M engine/demo/engine.py commit a53f178a7d120342e7c500f8e2ae30298cad957a Author: Huang Peng Date: 2008-06-03 12:44:50 +0800 Add invalidate method. M engine/demo/engine.py commit f40165d862431b8490ee5daea8ca070274a3b76c Author: Huang Peng Date: 2008-06-02 19:20:26 +0800 Set im client to disable when lost ibus connection. M gtk2/gikimclient.c commit 9823c20eb65c7eb0d9a38398a0a4a3ab9a845b66 Author: Huang Peng Date: 2008-06-02 19:17:29 +0800 Check inotify in configure, and make code works without inotify. M configure.ac M gtk2/gikimclient.c commit f604a9438485277e3832086db2afd9bb2819dfa0 Author: Huang Peng Date: 2008-06-02 10:35:03 +0800 Replace DEPRECATED dbus_message_iter_get_array_len. M gtk2/gikimclient.c commit ddfcc89ecfb00aa0286dc8114fa1c531668444ad Author: Huang Peng Date: 2008-06-02 08:55:40 +0800 Clean preedit when connection is disconnected, and emit preedit-changed signal. M gtk2/gikimclient.c commit 32f14ccbdcdc32fa8c096be4a24d7a875b3cf96b Author: Huang Peng Date: 2008-06-02 08:50:59 +0800 Add dummy methods for DummyPanel M ibusdaemon/panel.py commit 56c9a736712924c6ac5f58f627b082646f9964fd Author: Huang Peng Date: 2008-06-02 00:14:19 +0800 Create /tmp/ibus-$HOME before create listen server. M ibusdaemon/ibusdaemon.py commit 6c51b70fe97fc27c2531dba42ab06e8cba8f9cd3 Author: Huang Peng Date: 2008-06-02 00:09:41 +0800 Fix a bug when a client focus out. M ibusdaemon/bus.py commit 0a8823e129767605b09a74c19db4b307167fe3bc Author: Huang Peng Date: 2008-06-02 00:04:52 +0800 Set mix size of state label. M panel/candidatepanel.py commit fcc2b1668e1e558e61beab7e0059efdac58344c2 Author: Huang Peng Date: 2008-06-02 00:02:16 +0800 Use inotify to create ibus connection. M gtk2/gikimclient.c M gtk2/gikimcontext.c M ibus/common.py commit e911456cf2c1f4e17c5ccf909e4fb80e4fccb780 Author: Huang Peng Date: 2008-05-30 17:55:14 +0800 Modifid IPanel and IEngine interfaces. M engine/demo/engine.py M gtk2/gikimclient.c M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/candidatepanel.py M panel/candidatewindow.py M panel/languagebar.py M panel/panel.py commit aaff3dcec05b80a53e274c05fae04632e93cbde8 Author: Huang Peng Date: 2008-05-30 13:39:49 +0800 Add {cursor, page}-{up, down} support for panel. M engine/demo/engine.py M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/candidatepanel.py M panel/candidatewindow.py M panel/panel.py commit dc19d9166b4263da9fb2915a5763173e11f909ee Author: Huang Peng Date: 2008-05-30 11:07:41 +0800 Remove underline attribute of aux string. Process symbols as commit key. M engine/demo/engine.py commit 15a2da35dc7da7e649f96d8d5276f5a02a2c29d5 Author: Huang Peng Date: 2008-05-30 11:06:19 +0800 Fix crash when recieve an empty dbus array. Remove spaces. M gtk2/gikimclient.c commit e8328f343e0617e224966b7a274e1d0bdc4f3be6 Author: Huang Peng Date: 2008-05-29 21:35:20 +0800 Update .gitignore. M .gitignore commit 300087621c17048752816b5de4bb52a6132a5355 Author: Huang Peng Date: 2008-05-29 21:29:18 +0800 Add .gitignore in po folder A po/.gitignore commit 134bab40bff7d9e5e1c6e59b27e40398bbcb8156 Author: Huang Peng Date: 2008-05-29 21:26:14 +0800 Update .gitignore Remove tabs. M .gitignore M panel/languagebar.py commit aec48ebe3b0431fe39e3f59dc92b8e66eaddb318 Author: Huang Peng Date: 2008-05-29 21:21:03 +0800 Add languagebar.py A panel/languagebar.py commit 0c249dc5ccad40182e2bc6fa54cc9101a3ee4c30 Author: Huang Peng Date: 2008-05-29 21:20:39 +0800 Add two lack files. A ibus/interface/ienginefactory.py A ibus/panel.py commit af1638a9d44f234f0d39ec2b1140c670b968c3d1 Author: Huang Peng Date: 2008-05-29 21:09:39 +0800 ibus almost works. M engine/demo/engine.py M ibus/attribute.py M ibus/gtk.py M ibus/keysyms.py M ibus/lookuptable.py M ibusdaemon/bus.py M panel/candidatepanel.py M panel/panel.py commit 9d1864aea72f05e39703bb414d318265494135c7 Author: Huang Peng Date: 2008-05-29 17:22:46 +0800 WIP. M engine/demo/engine.py M gtk2/gikimclient.c M ibus/attribute.py M ibus/gtk.py M ibus/interface/iengine.py M ibus/interface/ipanel.py M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/panel.py M panel/Makefile M panel/candidatepanel.py M panel/candidatewindow.py M panel/main.py M panel/panel.py commit 44c293eb46964b9878a23165ce093b00f3a33d64 Author: Huang Peng Date: 2008-05-29 11:56:57 +0800 split interface.py to several source files. D ibus/interface.py A ibus/interface/__init__.py A ibus/interface/iengine.py A ibus/interface/iibus.py A ibus/interface/ipanel.py commit d92da3d2a855ca4927363401f53214d445ad6da3 Author: Huang Peng Date: 2008-05-29 11:08:46 +0800 WIP. M ibusdaemon/bus.py M ibusdaemon/client.py M ibusdaemon/engine.py M ibusdaemon/enginefactory.py M ibusdaemon/panel.py M panel/candidatewindow.py commit 221a099a790009fc5930b287ec943f2b90af916a Author: Huang Peng Date: 2008-05-29 11:04:25 +0800 Remove locale panel. M engine/demo/engine.py commit 9c36a867314fcbf41b1cf998c260922d7c96cfc0 Author: Huang Peng Date: 2008-05-28 17:59:16 +0800 Remove tabs. M engine/demo/engine.py commit 80b4de2fc0535a94d51d2c5f0192b950c9e8979b Author: Huang Peng Date: 2008-05-28 17:57:17 +0800 Refactory Panel interface. M ibus/interface.py commit 53c6e1f1d0939b4c585301427920e0cf1dd9e341 Author: Huang Peng Date: 2008-05-28 16:14:04 +0800 Remove tabs. M panel/main.py commit 37615f1c45902eb5e0509cb22e38dec5877a05c2 Author: Huang Peng Date: 2008-05-28 16:13:28 +0800 Rename CandidatesArea to CandidateArea. M panel/candidatepanel.py commit 26bb4e59b7bb9b2670689e695f9050526d731a16 Author: Huang Peng Date: 2008-05-28 14:42:10 +0800 WIP M panel/candidatewindow.py commit a1a4425f1634287d3c81693d96a1bf0944992ede Author: Huang Peng Date: 2008-05-28 14:41:48 +0800 Add CandidatesArea class. M panel/candidatepanel.py commit 206643ccc4adeb22538e29a9a9c57e14af82c7e6 Author: Huang Peng Date: 2008-05-28 11:10:32 +0800 Add .gitignore in m4. A m4/.gitignore commit 4a74903fcc1639153e662d2353087754b4c6ce70 Author: Huang Peng Date: 2008-05-28 11:05:54 +0800 Add .gitignore. A .gitignore commit 58565069d099ce922b5bbf0809276bafc125662c Author: Huang Peng Date: 2008-05-28 11:02:14 +0800 Add AttributeUnderline Remove AttributeDecoration M ibus/attribute.py commit 6e4c093eb2ab9e302587b51b0daa1d3d87b78702 Author: Huang Peng Date: 2008-05-28 11:01:40 +0800 Remove AttributeDecoration Add AttributeUnderline A ibus/gtk.py commit 3fe2020754aa3a2256c3df52d84dbd0654d2e212 Author: Huang Peng Date: 2008-05-28 11:01:01 +0800 Add test-candidate rename test-engine to test-panel M panel/Makefile commit 1eb62dcfccb4e4296fbde5ad3f809c68dca6d8a7 Author: Huang Peng Date: 2008-05-28 11:00:25 +0800 Split CandidatePanel from candidatewindow.py. A panel/candidatepanel.py M panel/candidatewindow.py commit 5a331e972f472d61b335bb2fd9148d9d71eaf197 Author: Huang Peng Date: 2008-05-28 09:30:52 +0800 WIP. A ibusdaemon/lookuptable.py A panel/handle.py A panel/image.py A panel/themes/icons/gnome-dev-keyboard.svg A panel/themes/icons/keyboard.svg commit ca8b2bc823155ee97236670699b2222eef5f2d29 Author: Huang Peng Date: 2008-05-27 22:46:40 +0800 WIP. M ibus/interface.py M ibusdaemon/client.py M ibusdaemon/engine.py commit 12d99cbc6cd09215245ccd0d6ba5eeb600b571e8 Author: Huang Peng Date: 2008-05-27 22:45:51 +0800 Fix a bug in get_candidates_in_current_page. M ibus/lookuptable.py commit 17598bcad02e559b57d0c25f4cbb572a830e357a Author: Huang Peng Date: 2008-05-27 22:44:29 +0800 Add tips in candidatewindow.py. M panel/candidatewindow.py commit 86992b281d6945feb443e5c1d0e3c9af8bd1ce58 Author: Huang Peng Date: 2008-05-27 22:21:30 +0800 WIP. M panel/main.py M panel/panel.py commit 5ebe14a6a207c1afe327a0acadf219873aadb15e Author: Huang Peng Date: 2008-05-27 22:21:15 +0800 Modify default theme. M panel/themes/default/Toolbar/toolbar.png M panel/themes/default/gtkrc M panel/themes/default/panel.rc commit a314e5d281382815f30eae8db8dd8b1e365d5c76 Author: Huang Peng Date: 2008-05-27 22:21:03 +0800 Add candidatewindow.py A panel/candidatewindow.py commit 00447b4dac6095281bb18cada5452ed9d54e8677 Author: Huang Peng Date: 2008-05-23 16:04:21 +0800 Add a default theme. A panel/themes/default/Arrows/arrow-down.png A panel/themes/default/Arrows/arrow-insens.png A panel/themes/default/Arrows/arrow-left.png A panel/themes/default/Arrows/arrow-right.png A panel/themes/default/Arrows/arrow-up.png A panel/themes/default/Buttons/button-insensitive.png A panel/themes/default/Buttons/button-normal.png A panel/themes/default/Buttons/button-prelight.png A panel/themes/default/Check-Radio/check1.png A panel/themes/default/Check-Radio/check2.png A panel/themes/default/Check-Radio/check3.png A panel/themes/default/Check-Radio/check4.png A panel/themes/default/Check-Radio/check5.png A panel/themes/default/Check-Radio/check6.png A panel/themes/default/Check-Radio/option1.png A panel/themes/default/Check-Radio/option2.png A panel/themes/default/Check-Radio/option3.png A panel/themes/default/Check-Radio/option4.png A panel/themes/default/Check-Radio/option5.png A panel/themes/default/Check-Radio/option6.png A panel/themes/default/Frame-Gap/frame-gap-end.png A panel/themes/default/Frame-Gap/frame-gap-start.png A panel/themes/default/Frame-Gap/frame.png A panel/themes/default/Handles/handle-h.png A panel/themes/default/Handles/handle-v.png A panel/themes/default/Lines/line-h.png A panel/themes/default/Lines/line-v.png A panel/themes/default/ListHeaders/list_header-insens.png A panel/themes/default/ListHeaders/list_header-prelight.png A panel/themes/default/ListHeaders/list_header-pressed.png A panel/themes/default/ListHeaders/list_header.png A panel/themes/default/Menu-Menubar/menu.png A panel/themes/default/Menu-Menubar/menubar-item-active.png A panel/themes/default/Menu-Menubar/menubar-item.png A panel/themes/default/Menu-Menubar/menubar.png A panel/themes/default/Others/null.png A panel/themes/default/Others/ruler.png A panel/themes/default/Panel/panel-bg.png A panel/themes/default/ProgressBar/progressbar-horiz.png A panel/themes/default/ProgressBar/trough-progressbar-horiz.png A panel/themes/default/Range/slider-horiz-prelight.png A panel/themes/default/Range/slider-horiz.png A panel/themes/default/Range/slider-vert-prelight.png A panel/themes/default/Range/slider-vert.png A panel/themes/default/Range/trough-horizontal.png A panel/themes/default/Range/trough-vertical.png A panel/themes/default/Scrollbars/scroll-thumb-horiz-pre.png A panel/themes/default/Scrollbars/scroll-thumb-horiz.png A panel/themes/default/Scrollbars/scroll-thumb-vert-pre.png A panel/themes/default/Scrollbars/scroll-thumb-vert.png A panel/themes/default/Scrollbars/slider-horiz-pre.png A panel/themes/default/Scrollbars/slider-horiz.png A panel/themes/default/Scrollbars/slider-vert-pre.png A panel/themes/default/Scrollbars/slider-vert.png A panel/themes/default/Scrollbars/stepper-down-prelight.png A panel/themes/default/Scrollbars/stepper-down.png A panel/themes/default/Scrollbars/stepper-left-prelight.png A panel/themes/default/Scrollbars/stepper-left.png A panel/themes/default/Scrollbars/stepper-right-prelight.png A panel/themes/default/Scrollbars/stepper-right.png A panel/themes/default/Scrollbars/stepper-up-prelight.png A panel/themes/default/Scrollbars/stepper-up.png A panel/themes/default/Scrollbars/trough-scrollbar-horiz.png A panel/themes/default/Scrollbars/trough-scrollbar-vert.png A panel/themes/default/Shadows/shadow-in.png A panel/themes/default/Shadows/shadow-out.png A panel/themes/default/Shadows/text-.png A panel/themes/default/Shadows/text-entry.png A panel/themes/default/Spin/spin-down-disable.png A panel/themes/default/Spin/spin-down-prelight.png A panel/themes/default/Spin/spin-down.png A panel/themes/default/Spin/spin-up-disable.png A panel/themes/default/Spin/spin-up-prelight.png A panel/themes/default/Spin/spin-up.png A panel/themes/default/Tabs/gap-bottom-left.png A panel/themes/default/Tabs/gap-bottom-right.png A panel/themes/default/Tabs/gap-left-bottom.png A panel/themes/default/Tabs/gap-left-top.png A panel/themes/default/Tabs/gap-right-bottom.png A panel/themes/default/Tabs/gap-right-top.png A panel/themes/default/Tabs/gap-top-current.png A panel/themes/default/Tabs/gap-top-left.png A panel/themes/default/Tabs/gap-top-right.png A panel/themes/default/Tabs/notebook.png A panel/themes/default/Tabs/tab-bottom-active.png A panel/themes/default/Tabs/tab-bottom.png A panel/themes/default/Tabs/tab-left-active.png A panel/themes/default/Tabs/tab-left.png A panel/themes/default/Tabs/tab-right-active.png A panel/themes/default/Tabs/tab-right.png A panel/themes/default/Tabs/tab-top-active.png A panel/themes/default/Tabs/tab-top.png A panel/themes/default/Toolbar/toolbar.png A panel/themes/default/gtkrc A panel/themes/default/panel.rc commit 28db4525339ffdbcdd3d0e0d9822714995e6211d Author: Huang Peng Date: 2008-05-21 15:58:47 +0800 WIP. M ibus/interface.py M ibusdaemon/bus.py M ibusdaemon/engine.py M ibusdaemon/factorymanager.py M ibusdaemon/panel.py commit 9f06b8c51d47cd37ae925c164b07dcb96fb19edc Author: Huang Peng Date: 2008-05-20 15:57:00 +0800 Add panel. A panel/Makefile A panel/main.py A panel/panel.py commit 5b59a973b7fdb3ab125d08910abdcf405583a210 Author: Huang Peng Date: 2008-05-20 10:52:03 +0800 Add application.py A ibus/application.py commit f3bbca058655c155758519064b16372e6589d2e6 Author: Huang Peng Date: 2008-05-19 22:14:16 +0800 WIP. M gtk2/Makefile.am M ibus/__init__.py M ibus/attribute.py M ibus/interface.py M ibus/lookuptable.py M ibusdaemon/bus.py M ibusdaemon/engine.py M ibusdaemon/panel.py commit 82b3002e5860094118c43ecb390a2bf9497fe1fc Author: Huang Peng Date: 2008-05-19 22:13:51 +0800 Add panel.py. A ibusdaemon/panel.py commit ef38e2326c802cc9a25d0873b31869aad1bfe498 Author: Huang Peng Date: 2008-05-19 21:52:49 +0800 Remove lookuptable.py D engine/demo/lookuptable.py commit 87805e2558089e68cd198987123355f1da9f3ca9 Author: Huang Peng Date: 2008-05-19 18:19:39 +0800 Add lookuptabel.py and add {to,from}_dbus_value to Attribute and AttrList classes. M ibus/attribute.py M ibus/interface.py A ibus/lookuptable.py commit 39d382372f1461f18e207a0f4d81c5613e4d293b Author: Huang Peng Date: 2008-05-19 10:44:00 +0800 Move EngineFactory from engine.py to a new file. M ibusdaemon/engine.py A ibusdaemon/enginefactory.py commit 164a20434e452091585646a9042d371785c300f7 Author: Huang Peng Date: 2008-05-19 10:27:49 +0800 Remove driver.py D ibus/driver.py commit 1b731d1cae251cf6841e906fd35779053d79a06f Author: Huang Peng Date: 2008-05-19 10:19:22 +0800 Remove x property from bus.py and ibusdaemon.py M ibusdaemon/bus.py M ibusdaemon/ibusdaemon.py commit dc8a0dd5a153b86458cc0d46bc0c07996c635c91 Author: Huang Peng Date: 2008-05-19 09:57:47 +0800 Remove -x property from driver.py. M ibus/driver.py commit 2a863969bc557ba3847062558b349f7976ae42fc Author: Huang Peng Date: 2008-05-18 23:00:43 +0800 WIP. M engine/demo/Makefile D engine/demo/eng_demo.py A engine/demo/engine.py A engine/demo/factory.py A engine/demo/lookuptable.py A engine/demo/main.py M ibus/common.py M ibus/interface.py commit 3c627611dc49468d1d2ff9485c98a71666c78226 Author: Huang Peng Date: 2008-05-15 11:19:26 +0800 transplate x, y, if client window is not NULL. M gtk2/gikimcontext.c commit c2c0a2f04d5b48f6d9325a96f4644b098ff36565 Author: Huang Peng Date: 2008-05-15 11:06:07 +0800 Fix a typo. M gtk2/gikimclient.c commit f69e6240f54a3c5d5a23dafb88e71c46f7cec948 Author: Huang Peng Date: 2008-05-13 11:28:23 +0800 Move demo engine to engine/demo. Add Makefile in ibusdaemon. A engine/demo/Makefile A engine/demo/eng_demo.py D ibus/eng_demo.py A ibusdaemon/Makefile commit 14a08bc34acab200f891c880b3f3f31751d5800f Author: Huang Peng Date: 2008-05-13 10:51:18 +0800 Split ibusdaemon from ibus. M ibus/__init__.py D ibus/bus.py D ibus/client.py D ibus/clientmanager.py D ibus/connection.py D ibus/engine.py D ibus/factorymanager.py D ibus/ibusdaemon.py D ibus/server.py A ibusdaemon/bus.py A ibusdaemon/client.py A ibusdaemon/clientmanager.py A ibusdaemon/connection.py A ibusdaemon/engine.py A ibusdaemon/factorymanager.py A ibusdaemon/ibusdaemon.py commit 4d313651ea8de6a554ae1f5009687e66803b99c4 Author: Huang Peng Date: 2008-05-13 10:24:10 +0800 Revert to "Add clean task in Makefile." D src/ibus/__init__.py D src/ibus/common.py D src/ibus/exception.py D src/ibus/keysyms.py D src/ibus/object.py commit 93734d0f06c7ed2db406155bf229517a8cb766b1 Author: Huang Peng Date: 2008-05-13 10:19:29 +0800 Revert "Add clean task in Makefile." This reverts commit 6bfa30ff14c5e91df9574a11637e99124e39f926. Conflicts: A src/ibus/__init__.py A src/ibus/common.py A src/ibus/exception.py A src/ibus/keysyms.py A src/ibus/object.py commit 6bfa30ff14c5e91df9574a11637e99124e39f926 Author: Huang Peng Date: 2008-05-13 10:06:51 +0800 Add clean task in Makefile. M ibus/Makefile commit c25a24ae2e40a39db61fcd6f80d76469daa49a28 Author: Huang Peng Date: 2008-05-12 15:18:48 +0800 import ibus A AUTHORS A COPYING A ChangeLog A Makefile.am A NEWS A README A autogen.sh A configure.ac A doc/interfaces A doc/specification A gtk2/Makefile.am A gtk2/gikim.c A gtk2/gikimclient.c A gtk2/gikimclient.h A gtk2/gikimcontext.c A gtk2/gikimcontext.h A ibus/Makefile A ibus/__init__.py A ibus/attribute.py A ibus/bus.py A ibus/client.py A ibus/clientmanager.py A ibus/common.py A ibus/connection.py A ibus/driver.py A ibus/eng_demo.py A ibus/engine.py A ibus/exception.py A ibus/factorymanager.py A ibus/ibusdaemon.py A ibus/interface.py A ibus/keysyms.py A ibus/object.py A ibus/server.py A m4/Makefile.am A m4/as-version.m4 A po/Makevars A po/POTFILES.in ibus-1.5.11/install-sh0000755000000000000000000003452312551654253011453 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/client/0000755000000000000000000000000012551654531010775 500000000000000ibus-1.5.11/client/gtk3/0000755000000000000000000000000012551654531011645 500000000000000ibus-1.5.11/client/gtk3/ibusimcontext.h0000644000000000000000000000621012551654123014627 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et ts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_IM_CONTEXT_H_ #define __IBUS_IM_CONTEXT_H_ #include /* * Type macros. */ #define IBUS_TYPE_IM_CONTEXT \ (ibus_im_context_get_type ()) #define IBUS_IM_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_IM_CONTEXT, IBusIMContext)) #define IBUS_IM_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_IM_CONTEXT, IBusIMContextClass)) #define IBUS_IS_IM_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_IM_CONTEXT)) #define IBUS_IS_IM_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_IM_CONTEXT)) #define IBUS_IM_CONTEXT_GET_CLASS(obj) \ (G_TYPE_CHECK_GET_CLASS ((obj), IBUS_TYPE_IM_CONTEXT, IBusIMContextClass)) G_BEGIN_DECLS typedef struct _IBusIMContext IBusIMContext; typedef struct _IBusIMContextClass IBusIMContextClass; typedef struct _IBusIMContextPrivate IBusIMContextPrivate; GType ibus_im_context_get_type (void); IBusIMContext *ibus_im_context_new (void); void ibus_im_context_register_type (GTypeModule *type_module); void ibus_im_context_shutdown (void); const gchar *ibus_im_context_get_ic (IBusIMContext *context); void ibus_im_context_set_ic (IBusIMContext *context, const gchar *ic); void ibus_im_context_enable (IBusIMContext *context); void ibus_im_context_disable (IBusIMContext *context); void ibus_im_context_commit_string (IBusIMContext *context, const gchar *string); void ibus_im_context_update_preedit (IBusIMContext *context, const gchar *string, PangoAttrList *attrs, gint cursor_pos, gboolean visible); void ibus_im_context_show_preedit (IBusIMContext *context); void ibus_im_context_hide_preedit (IBusIMContext *context); G_END_DECLS #endif ibus-1.5.11/client/gtk3/ibusimcontext.c0000644000000000000000000016400612551654123014632 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "ibusimcontext.h" #if !GTK_CHECK_VERSION (2, 91, 0) # define DEPRECATED_GDK_KEYSYMS 1 #endif #ifdef DEBUG # define IDEBUG g_debug #else # define IDEBUG(a...) #endif #define MAX_QUEUED_EVENTS 20 struct _IBusIMContext { GtkIMContext parent; /* instance members */ GtkIMContext *slave; GdkWindow *client_window; IBusInputContext *ibuscontext; /* preedit status */ gchar *preedit_string; PangoAttrList *preedit_attrs; gint preedit_cursor_pos; gboolean preedit_visible; GdkRectangle cursor_area; gboolean has_focus; guint32 time; gint caps; /* cancellable */ GCancellable *cancellable; GQueue *events_queue; }; struct _IBusIMContextClass { GtkIMContextClass parent; /* class members */ }; static guint _signal_commit_id = 0; static guint _signal_preedit_changed_id = 0; static guint _signal_preedit_start_id = 0; static guint _signal_preedit_end_id = 0; static guint _signal_delete_surrounding_id = 0; static guint _signal_retrieve_surrounding_id = 0; static const gchar *_no_snooper_apps = NO_SNOOPER_APPS; static gboolean _use_key_snooper = ENABLE_SNOOPER; static guint _key_snooper_id = 0; static gboolean _use_sync_mode = FALSE; static GtkIMContext *_focus_im_context = NULL; static IBusInputContext *_fake_context = NULL; static GdkWindow *_input_window = NULL; static GtkWidget *_input_widget = NULL; /* functions prototype */ static void ibus_im_context_class_init (IBusIMContextClass *class); static void ibus_im_context_class_fini (IBusIMContextClass *class); static void ibus_im_context_init (GObject *obj); static void ibus_im_context_notify (GObject *obj, GParamSpec *pspec); static void ibus_im_context_finalize (GObject *obj); static void ibus_im_context_reset (GtkIMContext *context); static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, GdkEventKey *key); static void ibus_im_context_focus_in (GtkIMContext *context); static void ibus_im_context_focus_out (GtkIMContext *context); static void ibus_im_context_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos); static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client); static void ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area); static void ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit); static void ibus_im_context_set_surrounding (GtkIMContext *slave, const gchar *text, gint len, gint cursor_index); /* static methods*/ static void _create_input_context (IBusIMContext *context); static gboolean _set_cursor_location_internal (IBusIMContext *context); static void _bus_connected_cb (IBusBus *bus, IBusIMContext *context); /* callback functions for slave context */ static void _slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *context); static void _slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *context); static void _slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *context); static void _slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *context); static gboolean _slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *context); static gboolean _slave_delete_surrounding_cb (GtkIMContext *slave, gint offset_from_cursor, guint nchars, IBusIMContext *context); static void _request_surrounding_text (IBusIMContext *context); static void _create_fake_input_context (void); static void _set_content_type (IBusIMContext *context); static GType _ibus_type_im_context = 0; static GtkIMContextClass *parent_class = NULL; static IBusBus *_bus = NULL; static guint _daemon_name_watch_id = 0; static gboolean _daemon_is_running = FALSE; void ibus_im_context_register_type (GTypeModule *type_module) { IDEBUG ("%s", __FUNCTION__); static const GTypeInfo ibus_im_context_info = { sizeof (IBusIMContextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_im_context_class_init, (GClassFinalizeFunc) ibus_im_context_class_fini, NULL, /* class data */ sizeof (IBusIMContext), 0, (GInstanceInitFunc) ibus_im_context_init, }; if (!_ibus_type_im_context) { if (type_module) { _ibus_type_im_context = g_type_module_register_type (type_module, GTK_TYPE_IM_CONTEXT, "IBusIMContext", &ibus_im_context_info, (GTypeFlags)0); } else { _ibus_type_im_context = g_type_register_static (GTK_TYPE_IM_CONTEXT, "IBusIMContext", &ibus_im_context_info, (GTypeFlags)0); } } } GType ibus_im_context_get_type (void) { IDEBUG ("%s", __FUNCTION__); if (_ibus_type_im_context == 0) { ibus_im_context_register_type (NULL); } g_assert (_ibus_type_im_context != 0); return _ibus_type_im_context; } IBusIMContext * ibus_im_context_new (void) { IDEBUG ("%s", __FUNCTION__); GObject *obj = g_object_new (IBUS_TYPE_IM_CONTEXT, NULL); return IBUS_IM_CONTEXT (obj); } static gboolean _focus_in_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { if (_focus_im_context == NULL && _fake_context != NULL) { ibus_input_context_focus_in (_fake_context); } return FALSE; } static gboolean _focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { if (_focus_im_context == NULL && _fake_context != NULL) { ibus_input_context_focus_out (_fake_context); } return FALSE; } static void _process_key_event_done (GObject *object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = (IBusInputContext *)object; GdkEventKey *event = (GdkEventKey *) user_data; GError *error = NULL; gboolean retval = ibus_input_context_process_key_event_async_finish ( context, res, &error); if (error != NULL) { g_warning ("Process Key Event failed: %s.", error->message); g_error_free (error); } if (retval == FALSE) { event->state |= IBUS_IGNORED_MASK; gdk_event_put ((GdkEvent *)event); } gdk_event_free ((GdkEvent *)event); } static gboolean _process_key_event (IBusInputContext *context, GdkEventKey *event) { guint state = event->state; gboolean retval = FALSE; if (event->type == GDK_KEY_RELEASE) { state |= IBUS_RELEASE_MASK; } if (_use_sync_mode) { retval = ibus_input_context_process_key_event (context, event->keyval, event->hardware_keycode - 8, state); } else { ibus_input_context_process_key_event_async (context, event->keyval, event->hardware_keycode - 8, state, -1, NULL, _process_key_event_done, gdk_event_copy ((GdkEvent *) event)); retval = TRUE; } if (retval) { event->state |= IBUS_HANDLED_MASK; } else { event->state |= IBUS_IGNORED_MASK; } return retval; } /* emit "retrieve-surrounding" glib signal of GtkIMContext, if * context->caps has IBUS_CAP_SURROUNDING_TEXT and the current IBus * engine needs surrounding-text. */ static void _request_surrounding_text (IBusIMContext *context) { if (context && (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 && context->ibuscontext != NULL && ibus_input_context_needs_surrounding_text (context->ibuscontext)) { gboolean return_value; IDEBUG ("requesting surrounding text"); g_signal_emit (context, _signal_retrieve_surrounding_id, 0, &return_value); if (!return_value) { context->caps &= ~IBUS_CAP_SURROUNDING_TEXT; ibus_input_context_set_capabilities (context->ibuscontext, context->caps); } } } static void _set_content_type (IBusIMContext *context) { #if GTK_CHECK_VERSION (3, 6, 0) if (context->ibuscontext != NULL) { GtkInputPurpose purpose; GtkInputHints hints; g_object_get (G_OBJECT (context), "input-purpose", &purpose, "input-hints", &hints, NULL); ibus_input_context_set_content_type (context->ibuscontext, purpose, hints); } #endif } static gint _key_snooper_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { IDEBUG ("%s", __FUNCTION__); gboolean retval = FALSE; IBusIMContext *ibusimcontext = NULL; IBusInputContext *ibuscontext = NULL; if (!_use_key_snooper) return FALSE; if (_focus_im_context != NULL && ((IBusIMContext *) _focus_im_context)->has_focus == TRUE) { ibusimcontext = (IBusIMContext *) _focus_im_context; /* has IC with focus */ ibuscontext = ibusimcontext->ibuscontext; } else { /* If no IC has focus, and fake IC has been created, then pass key events to fake IC. */ ibuscontext = _fake_context; } if (ibuscontext == NULL) return FALSE; if (G_UNLIKELY (event->state & IBUS_HANDLED_MASK)) return TRUE; if (G_UNLIKELY (event->state & IBUS_IGNORED_MASK)) return FALSE; do { if (_fake_context != ibuscontext) break; /* window has input focus is not changed */ if (_input_window == event->window) break; if (_input_window != NULL) { g_object_remove_weak_pointer ((GObject *) _input_window, (gpointer *) &_input_window); } if (event->window != NULL) { g_object_add_weak_pointer ((GObject *) event->window, (gpointer *) &_input_window); } _input_window = event->window; /* Trace widget has input focus, and listen focus events of it. * It is workaround for Alt+Shift+Tab shortcut key issue(crosbug.com/8855). * gtk_get_event_widget returns the widget that is associated with the * GdkWindow of the GdkEvent. * */ GtkWidget *widget = gtk_get_event_widget ((GdkEvent *)event); /* g_assert (_input_widget != widget). */ if (_input_widget == widget) break; if (_input_widget != NULL) { g_signal_handlers_disconnect_by_func (_input_widget, (GCallback) _focus_in_cb, NULL); g_signal_handlers_disconnect_by_func (_input_widget, (GCallback) _focus_out_cb, NULL); g_object_remove_weak_pointer ((GObject *) _input_widget, (gpointer *) &_input_widget); } if (widget != NULL) { g_signal_connect (widget, "focus-in-event", (GCallback) _focus_in_cb, NULL); g_signal_connect (widget, "focus-out-event", (GCallback) _focus_out_cb, NULL); g_object_add_weak_pointer ((GObject *) widget, (gpointer *) &_input_widget); } _input_widget = widget; } while (0); if (ibusimcontext != NULL) { /* "retrieve-surrounding" signal sometimes calls unref by * gtk_im_multicontext_get_slave() because priv->context_id is not * the latest than global_context_id in GtkIMMulticontext. * Since _focus_im_context is gotten by the focus_in event, * it would be good to call ref here. */ g_object_ref (ibusimcontext); _request_surrounding_text (ibusimcontext); ibusimcontext->time = event->time; } retval = _process_key_event (ibuscontext, event); if (ibusimcontext != NULL) { /* unref ibusimcontext could call ibus_im_context_finalize here * because "retrieve-surrounding" signal could call unref. */ g_object_unref (ibusimcontext); } return retval; } static gboolean _get_boolean_env(const gchar *name, gboolean defval) { const gchar *value = g_getenv (name); if (value == NULL) return defval; if (g_strcmp0 (value, "") == 0 || g_strcmp0 (value, "0") == 0 || g_strcmp0 (value, "false") == 0 || g_strcmp0 (value, "False") == 0 || g_strcmp0 (value, "FALSE") == 0) return FALSE; return TRUE; } static void daemon_name_appeared (GDBusConnection *connection, const gchar *name, const gchar *owner, gpointer data) { /* If ibus-daemon is running and run ssh -X localhost, * daemon_name_appeared() is called but ibus_get_address() == NULL * because the hostname and display number are different between * ibus-daemon and clients. So IBusBus would not be connected and * ibusimcontext->ibuscontext == NULL and ibusimcontext->events_queue * could go beyond MAX_QUEUED_EVENTS . */ _daemon_is_running = (ibus_get_address () != NULL); } static void daemon_name_vanished (GDBusConnection *connection, const gchar *name, gpointer data) { _daemon_is_running = FALSE; } static void ibus_im_context_class_init (IBusIMContextClass *class) { IDEBUG ("%s", __FUNCTION__); GtkIMContextClass *im_context_class = GTK_IM_CONTEXT_CLASS (class); GObjectClass *gobject_class = G_OBJECT_CLASS (class); parent_class = (GtkIMContextClass *) g_type_class_peek_parent (class); im_context_class->reset = ibus_im_context_reset; im_context_class->focus_in = ibus_im_context_focus_in; im_context_class->focus_out = ibus_im_context_focus_out; im_context_class->filter_keypress = ibus_im_context_filter_keypress; im_context_class->get_preedit_string = ibus_im_context_get_preedit_string; im_context_class->set_client_window = ibus_im_context_set_client_window; im_context_class->set_cursor_location = ibus_im_context_set_cursor_location; im_context_class->set_use_preedit = ibus_im_context_set_use_preedit; im_context_class->set_surrounding = ibus_im_context_set_surrounding; gobject_class->notify = ibus_im_context_notify; gobject_class->finalize = ibus_im_context_finalize; _signal_commit_id = g_signal_lookup ("commit", G_TYPE_FROM_CLASS (class)); g_assert (_signal_commit_id != 0); _signal_preedit_changed_id = g_signal_lookup ("preedit-changed", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_changed_id != 0); _signal_preedit_start_id = g_signal_lookup ("preedit-start", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_start_id != 0); _signal_preedit_end_id = g_signal_lookup ("preedit-end", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_end_id != 0); _signal_delete_surrounding_id = g_signal_lookup ("delete-surrounding", G_TYPE_FROM_CLASS (class)); g_assert (_signal_delete_surrounding_id != 0); _signal_retrieve_surrounding_id = g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (class)); g_assert (_signal_retrieve_surrounding_id != 0); _use_key_snooper = !_get_boolean_env ("IBUS_DISABLE_SNOOPER", !(ENABLE_SNOOPER)); _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ const gchar * prgname = g_get_prgname (); if (g_getenv ("IBUS_NO_SNOOPER_APPS")) { _no_snooper_apps = g_getenv ("IBUS_NO_SNOOPER_APPS"); } gchar **p; gchar ** apps = g_strsplit (_no_snooper_apps, ",", 0); for (p = apps; *p != NULL; p++) { if (g_regex_match_simple (*p, prgname, 0, 0)) { _use_key_snooper = FALSE; break; } } g_strfreev (apps); } /* init bus object */ if (_bus == NULL) { const gchar *dname = gdk_display_get_name (gdk_display_get_default ()); /* ibus-daemon uses DISPLAY variable. */ if (g_strcmp0 (dname, "Wayland") == 0) dname = g_getenv ("DISPLAY"); ibus_set_display (dname); _bus = ibus_bus_new_async (); /* init the global fake context */ if (ibus_bus_is_connected (_bus)) { _create_fake_input_context (); } g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), NULL); } /* always install snooper */ if (_key_snooper_id == 0) { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" _key_snooper_id = gtk_key_snooper_install (_key_snooper_cb, NULL); #pragma GCC diagnostic pop } _daemon_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_IBUS, G_BUS_NAME_WATCHER_FLAGS_NONE, daemon_name_appeared, daemon_name_vanished, NULL, NULL); } static void ibus_im_context_class_fini (IBusIMContextClass *class) { if (_key_snooper_id != 0) { IDEBUG ("snooper is terminated."); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" gtk_key_snooper_remove (_key_snooper_id); #pragma GCC diagnostic pop _key_snooper_id = 0; } g_bus_unwatch_name (_daemon_name_watch_id); } /* Copied from gtk+2.0-2.20.1/modules/input/imcedilla.c to fix crosbug.com/11421. * Overwrite the original Gtk+'s compose table in gtk+-2.x.y/gtk/gtkimcontextsimple.c. */ /* The difference between this and the default input method is the handling * of C+acute - this method produces C WITH CEDILLA rather than C WITH ACUTE. * For languages that use CCedilla and not acute, this is the preferred mapping, * and is particularly important for pt_BR, where the us-intl keyboard is * used extensively. */ static guint16 cedilla_compose_seqs[] = { #ifdef DEPRECATED_GDK_KEYSYMS GDK_dead_acute, GDK_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_dead_acute, GDK_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_apostrophe, GDK_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_apostrophe, GDK_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_C, GDK_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_c, GDK_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ #else GDK_KEY_dead_acute, GDK_KEY_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_dead_acute, GDK_KEY_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_C, GDK_KEY_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ #endif }; static void ibus_im_context_init (GObject *obj) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj); ibusimcontext->client_window = NULL; // Init preedit status ibusimcontext->preedit_string = NULL; ibusimcontext->preedit_attrs = NULL; ibusimcontext->preedit_cursor_pos = 0; ibusimcontext->preedit_visible = FALSE; // Init cursor area ibusimcontext->cursor_area.x = -1; ibusimcontext->cursor_area.y = -1; ibusimcontext->cursor_area.width = 0; ibusimcontext->cursor_area.height = 0; ibusimcontext->ibuscontext = NULL; ibusimcontext->has_focus = FALSE; ibusimcontext->time = GDK_CURRENT_TIME; #ifdef ENABLE_SURROUNDING ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT; #else ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS; #endif ibusimcontext->events_queue = g_queue_new (); // Create slave im context ibusimcontext->slave = gtk_im_context_simple_new (); gtk_im_context_simple_add_table (GTK_IM_CONTEXT_SIMPLE (ibusimcontext->slave), cedilla_compose_seqs, 4, G_N_ELEMENTS (cedilla_compose_seqs) / (4 + 2)); g_signal_connect (ibusimcontext->slave, "commit", G_CALLBACK (_slave_commit_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-start", G_CALLBACK (_slave_preedit_start_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-end", G_CALLBACK (_slave_preedit_end_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-changed", G_CALLBACK (_slave_preedit_changed_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "retrieve-surrounding", G_CALLBACK (_slave_retrieve_surrounding_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "delete-surrounding", G_CALLBACK (_slave_delete_surrounding_cb), ibusimcontext); if (ibus_bus_is_connected (_bus)) { _create_input_context (ibusimcontext); } g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), obj); } static void ibus_im_context_notify (GObject *obj, GParamSpec *pspec) { IDEBUG ("%s", __FUNCTION__); if (g_strcmp0 (pspec->name, "input-purpose") == 0 || g_strcmp0 (pspec->name, "input-hints") == 0) { _set_content_type (IBUS_IM_CONTEXT (obj)); } } static void ibus_im_context_finalize (GObject *obj) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj); g_signal_handlers_disconnect_by_func (_bus, G_CALLBACK (_bus_connected_cb), obj); if (ibusimcontext->cancellable != NULL) { /* Cancel any ongoing create input context request */ g_cancellable_cancel (ibusimcontext->cancellable); g_object_unref (ibusimcontext->cancellable); ibusimcontext->cancellable = NULL; } if (ibusimcontext->ibuscontext) { ibus_proxy_destroy ((IBusProxy *)ibusimcontext->ibuscontext); } ibus_im_context_set_client_window ((GtkIMContext *)ibusimcontext, NULL); if (ibusimcontext->slave) { g_object_unref (ibusimcontext->slave); ibusimcontext->slave = NULL; } // release preedit if (ibusimcontext->preedit_string) { g_free (ibusimcontext->preedit_string); } if (ibusimcontext->preedit_attrs) { pango_attr_list_unref (ibusimcontext->preedit_attrs); } g_queue_free_full (ibusimcontext->events_queue, (GDestroyNotify)gdk_event_free); G_OBJECT_CLASS(parent_class)->finalize (obj); } static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, GdkEventKey *event) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (!_daemon_is_running) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); /* If context does not have focus, ibus will process key event in * sync mode. It is a workaround for increase search in treeview. */ if (!ibusimcontext->has_focus) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); if (event->state & IBUS_HANDLED_MASK) return TRUE; if (event->state & IBUS_IGNORED_MASK) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); /* XXX it is a workaround for some applications do not set client * window. */ if (ibusimcontext->client_window == NULL && event->window != NULL) gtk_im_context_set_client_window ((GtkIMContext *)ibusimcontext, event->window); _request_surrounding_text (ibusimcontext); ibusimcontext->time = event->time; if (ibusimcontext->ibuscontext) { if (_process_key_event (ibusimcontext->ibuscontext, event)) return TRUE; else return gtk_im_context_filter_keypress (ibusimcontext->slave, event); } /* At this point we _should_ be waiting for the IBus context to be * created or the connection to IBus to be established. If that's * the case we queue events to be processed when the IBus context * is ready. */ g_return_val_if_fail (ibusimcontext->cancellable != NULL || ibus_bus_is_connected (_bus) == FALSE, FALSE); g_queue_push_tail (ibusimcontext->events_queue, gdk_event_copy ((GdkEvent *)event)); if (g_queue_get_length (ibusimcontext->events_queue) > MAX_QUEUED_EVENTS) { g_warning ("Events queue growing too big, will start to drop."); gdk_event_free ((GdkEvent *) g_queue_pop_head (ibusimcontext->events_queue)); } return TRUE; } static void ibus_im_context_focus_in (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = (IBusIMContext *) context; if (ibusimcontext->has_focus) return; /* don't set focus on password entry */ if (ibusimcontext->client_window != NULL) { GtkWidget *widget; gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); if (GTK_IS_ENTRY (widget) && !gtk_entry_get_visibility (GTK_ENTRY (widget))) { return; } } /* Do not call gtk_im_context_focus_out() here. * google-chrome's notification popup window (Pushbullet) * takes the focus and the popup window disappears. * So other applications lose the focus because * ibusimcontext->has_focus is FALSE if * gtk_im_context_focus_out() is called here when * _focus_im_context != context. */ if (_focus_im_context == NULL) { /* focus out fake context */ if (_fake_context != NULL) { ibus_input_context_focus_out (_fake_context); } } ibusimcontext->has_focus = TRUE; if (ibusimcontext->ibuscontext) { _set_content_type (ibusimcontext); ibus_input_context_focus_in (ibusimcontext->ibuscontext); } gtk_im_context_focus_in (ibusimcontext->slave); /* set_cursor_location_internal() will get origin from X server, * it blocks UI. So delay it to idle callback. */ gdk_threads_add_idle_full (G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) _set_cursor_location_internal, g_object_ref (ibusimcontext), (GDestroyNotify) g_object_unref); /* retrieve the initial surrounding-text (regardless of whether * the current IBus engine needs surrounding-text) */ _request_surrounding_text (ibusimcontext); g_object_add_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = context; } static void ibus_im_context_focus_out (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = (IBusIMContext *) context; if (ibusimcontext->has_focus == FALSE) { return; } g_object_remove_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = NULL; ibusimcontext->has_focus = FALSE; if (ibusimcontext->ibuscontext) { ibus_input_context_focus_out (ibusimcontext->ibuscontext); } gtk_im_context_focus_out (ibusimcontext->slave); /* focus in the fake ic */ if (_fake_context != NULL) { ibus_input_context_focus_in (_fake_context); } } static void ibus_im_context_reset (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->ibuscontext) { ibus_input_context_reset (ibusimcontext->ibuscontext); } gtk_im_context_reset (ibusimcontext->slave); } static void ibus_im_context_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->preedit_visible) { if (str) { *str = g_strdup (ibusimcontext->preedit_string ? ibusimcontext->preedit_string: ""); } if (attrs) { *attrs = ibusimcontext->preedit_attrs ? pango_attr_list_ref (ibusimcontext->preedit_attrs): pango_attr_list_new (); } if (cursor_pos) { *cursor_pos = ibusimcontext->preedit_cursor_pos; } } else { if (str) { *str = g_strdup (""); } if (attrs) { *attrs = pango_attr_list_new (); } if (cursor_pos) { *cursor_pos = 0; } } IDEBUG ("str=%s", *str); } static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->client_window) { g_object_unref (ibusimcontext->client_window); ibusimcontext->client_window = NULL; } if (client != NULL) ibusimcontext->client_window = g_object_ref (client); if (ibusimcontext->slave) gtk_im_context_set_client_window (ibusimcontext->slave, client); } static gboolean _set_cursor_location_internal (IBusIMContext *ibusimcontext) { GdkRectangle area; if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) { return FALSE; } area = ibusimcontext->cursor_area; if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { #if GTK_CHECK_VERSION (2, 91, 0) area.x = 0; area.y += gdk_window_get_height (ibusimcontext->client_window); #else gint w, h; gdk_drawable_get_size (ibusimcontext->client_window, &w, &h); area.y += h; area.x = 0; #endif } gdk_window_get_root_coords (ibusimcontext->client_window, area.x, area.y, &area.x, &area.y); ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext, area.x, area.y, area.width, area.height); return FALSE; } static void ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->cursor_area.x == area->x && ibusimcontext->cursor_area.y == area->y && ibusimcontext->cursor_area.width == area->width && ibusimcontext->cursor_area.height == area->height) { return; } ibusimcontext->cursor_area = *area; _set_cursor_location_internal (ibusimcontext); gtk_im_context_set_cursor_location (ibusimcontext->slave, area); } static void ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (use_preedit) { ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT; } else { ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT; } if(ibusimcontext->ibuscontext) { ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps); } gtk_im_context_set_use_preedit (ibusimcontext->slave, use_preedit); } static guint get_selection_anchor_point (IBusIMContext *ibusimcontext, guint cursor_pos, guint surrounding_text_len) { GtkWidget *widget; if (ibusimcontext->client_window == NULL) { return cursor_pos; } gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); if (!GTK_IS_TEXT_VIEW (widget)){ return cursor_pos; } GtkTextView *text_view = GTK_TEXT_VIEW (widget); GtkTextBuffer *buffer = gtk_text_view_get_buffer (text_view); if (!gtk_text_buffer_get_has_selection (buffer)) { return cursor_pos; } GtkTextIter start_iter, end_iter, cursor_iter; if (!gtk_text_buffer_get_selection_bounds (buffer, &start_iter, &end_iter)) { return cursor_pos; } gtk_text_buffer_get_iter_at_mark (buffer, &cursor_iter, gtk_text_buffer_get_insert (buffer)); guint start_index = gtk_text_iter_get_offset (&start_iter); guint end_index = gtk_text_iter_get_offset (&end_iter); guint cursor_index = gtk_text_iter_get_offset (&cursor_iter); guint anchor; if (start_index == cursor_index) { anchor = end_index; } else if (end_index == cursor_index) { anchor = start_index; } else { return cursor_pos; } // Change absolute index to relative position. guint relative_origin = cursor_index - cursor_pos; if (anchor < relative_origin) { return cursor_pos; } anchor -= relative_origin; if (anchor > surrounding_text_len) { return cursor_pos; } return anchor; } static void ibus_im_context_set_surrounding (GtkIMContext *context, const gchar *text, gint len, gint cursor_index) { g_return_if_fail (context != NULL); g_return_if_fail (IBUS_IS_IM_CONTEXT (context)); g_return_if_fail (text != NULL); g_return_if_fail (strlen (text) >= len); g_return_if_fail (0 <= cursor_index && cursor_index <= len); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->ibuscontext) { IBusText *ibustext; guint cursor_pos; guint utf8_len; gchar *p; p = g_strndup (text, len); cursor_pos = g_utf8_strlen (p, cursor_index); utf8_len = g_utf8_strlen(p, len); ibustext = ibus_text_new_from_string (p); g_free (p); guint anchor_pos = get_selection_anchor_point (ibusimcontext, cursor_pos, utf8_len); ibus_input_context_set_surrounding_text (ibusimcontext->ibuscontext, ibustext, cursor_pos, anchor_pos); } gtk_im_context_set_surrounding (ibusimcontext->slave, text, len, cursor_index); } static void _bus_connected_cb (IBusBus *bus, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext) _create_input_context (ibusimcontext); else _create_fake_input_context (); } static void _ibus_context_commit_text_cb (IBusInputContext *ibuscontext, IBusText *text, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); _request_surrounding_text (ibusimcontext); } static gboolean _key_is_modifier (guint keyval) { /* See gdkkeys-x11.c:_gdk_keymap_key_is_modifier() for how this * really should be implemented */ switch (keyval) { #ifdef DEPRECATED_GDK_KEYSYMS case GDK_Shift_L: case GDK_Shift_R: case GDK_Control_L: case GDK_Control_R: case GDK_Caps_Lock: case GDK_Shift_Lock: case GDK_Meta_L: case GDK_Meta_R: case GDK_Alt_L: case GDK_Alt_R: case GDK_Super_L: case GDK_Super_R: case GDK_Hyper_L: case GDK_Hyper_R: case GDK_ISO_Lock: case GDK_ISO_Level2_Latch: case GDK_ISO_Level3_Shift: case GDK_ISO_Level3_Latch: case GDK_ISO_Level3_Lock: case GDK_ISO_Level5_Shift: case GDK_ISO_Level5_Latch: case GDK_ISO_Level5_Lock: case GDK_ISO_Group_Shift: case GDK_ISO_Group_Latch: case GDK_ISO_Group_Lock: return TRUE; #else case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: case GDK_KEY_Control_L: case GDK_KEY_Control_R: case GDK_KEY_Caps_Lock: case GDK_KEY_Shift_Lock: case GDK_KEY_Meta_L: case GDK_KEY_Meta_R: case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Super_L: case GDK_KEY_Super_R: case GDK_KEY_Hyper_L: case GDK_KEY_Hyper_R: case GDK_KEY_ISO_Lock: case GDK_KEY_ISO_Level2_Latch: case GDK_KEY_ISO_Level3_Shift: case GDK_KEY_ISO_Level3_Latch: case GDK_KEY_ISO_Level3_Lock: case GDK_KEY_ISO_Level5_Shift: case GDK_KEY_ISO_Level5_Latch: case GDK_KEY_ISO_Level5_Lock: case GDK_KEY_ISO_Group_Shift: case GDK_KEY_ISO_Group_Latch: case GDK_KEY_ISO_Group_Lock: return TRUE; #endif default: return FALSE; } } /* Copy from gdk */ static GdkEventKey * _create_gdk_event (IBusIMContext *ibusimcontext, guint keyval, guint keycode, guint state) { gunichar c = 0; gchar buf[8]; GdkEventKey *event = (GdkEventKey *)gdk_event_new ((state & IBUS_RELEASE_MASK) ? GDK_KEY_RELEASE : GDK_KEY_PRESS); if (ibusimcontext && ibusimcontext->client_window) event->window = g_object_ref (ibusimcontext->client_window); else if (_input_window) event->window = g_object_ref (_input_window); /* The time is copied the latest value from the previous * GdkKeyEvent in filter_keypress(). * * We understand the best way would be to pass the all time value * to IBus functions process_key_event() and IBus DBus functions * ProcessKeyEvent() in IM clients and IM engines so that the * _create_gdk_event() could get the correct time values. * However it would causes to change many functions and the time value * would not provide the useful meanings for each IBus engines but just * pass the original value to ForwardKeyEvent(). * We use the saved value at the moment. * * Another idea might be to have the time implementation in X servers * but some Xorg uses clock_gettime() and others use gettimeofday() * and the values would be different in each implementation and * locale/remote X server. So probably that idea would not work. */ if (ibusimcontext) { event->time = ibusimcontext->time; } else { event->time = GDK_CURRENT_TIME; } event->send_event = FALSE; event->state = state; event->keyval = keyval; event->string = NULL; event->length = 0; event->hardware_keycode = (keycode != 0) ? keycode + 8 : 0; event->group = 0; event->is_modifier = _key_is_modifier (keyval); #ifdef DEPRECATED_GDK_KEYSYMS if (keyval != GDK_VoidSymbol) #else if (keyval != GDK_KEY_VoidSymbol) #endif c = gdk_keyval_to_unicode (keyval); if (c) { gsize bytes_written; gint len; /* Apply the control key - Taken from Xlib */ if (event->state & GDK_CONTROL_MASK) { if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; else if (c == '2') { event->string = g_memdup ("\0\0", 2); event->length = 1; buf[0] = '\0'; goto out; } else if (c >= '3' && c <= '7') c -= ('3' - '\033'); else if (c == '8') c = '\177'; else if (c == '/') c = '_' & 0x1F; } len = g_unichar_to_utf8 (c, buf); buf[len] = '\0'; event->string = g_locale_from_utf8 (buf, len, NULL, &bytes_written, NULL); if (event->string) event->length = bytes_written; #ifdef DEPRECATED_GDK_KEYSYMS } else if (keyval == GDK_Escape) { #else } else if (keyval == GDK_KEY_Escape) { #endif event->length = 1; event->string = g_strdup ("\033"); } #ifdef DEPRECATED_GDK_KEYSYMS else if (keyval == GDK_Return || keyval == GDK_KP_Enter) { #else else if (keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter) { #endif event->length = 1; event->string = g_strdup ("\r"); } if (!event->string) { event->length = 0; event->string = g_strdup (""); } out: return event; } static void _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, guint keyval, guint keycode, guint state, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); GdkEventKey *event = _create_gdk_event (ibusimcontext, keyval, keycode, state); gdk_event_put ((GdkEvent *)event); gdk_event_free ((GdkEvent *)event); } static void _ibus_context_delete_surrounding_text_cb (IBusInputContext *ibuscontext, gint offset_from_cursor, guint nchars, IBusIMContext *ibusimcontext) { gboolean return_value; g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, offset_from_cursor, nchars, &return_value); } static void _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, IBusText *text, gint cursor_pos, gboolean visible, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); const gchar *str; gboolean flag; if (ibusimcontext->preedit_string) { g_free (ibusimcontext->preedit_string); } if (ibusimcontext->preedit_attrs) { pango_attr_list_unref (ibusimcontext->preedit_attrs); ibusimcontext->preedit_attrs = NULL; } str = text->text; ibusimcontext->preedit_string = g_strdup (str); if (text->attrs) { guint i; ibusimcontext->preedit_attrs = pango_attr_list_new (); for (i = 0; ; i++) { IBusAttribute *attr = ibus_attr_list_get (text->attrs, i); if (attr == NULL) { break; } PangoAttribute *pango_attr; switch (attr->type) { case IBUS_ATTR_TYPE_UNDERLINE: pango_attr = pango_attr_underline_new (attr->value); break; case IBUS_ATTR_TYPE_FOREGROUND: pango_attr = pango_attr_foreground_new ( ((attr->value & 0xff0000) >> 8) | 0xff, ((attr->value & 0x00ff00)) | 0xff, ((attr->value & 0x0000ff) << 8) | 0xff); break; case IBUS_ATTR_TYPE_BACKGROUND: pango_attr = pango_attr_background_new ( ((attr->value & 0xff0000) >> 8) | 0xff, ((attr->value & 0x00ff00)) | 0xff, ((attr->value & 0x0000ff) << 8) | 0xff); break; default: continue; } pango_attr->start_index = g_utf8_offset_to_pointer (str, attr->start_index) - str; pango_attr->end_index = g_utf8_offset_to_pointer (str, attr->end_index) - str; pango_attr_list_insert (ibusimcontext->preedit_attrs, pango_attr); } } ibusimcontext->preedit_cursor_pos = cursor_pos; flag = ibusimcontext->preedit_visible != visible; ibusimcontext->preedit_visible = visible; if (ibusimcontext->preedit_visible) { if (flag) { /* invisible => visible */ g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); } g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); } else { if (flag) { /* visible => invisible */ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } else { /* still invisible */ /* do nothing */ } } } static void _ibus_context_show_preedit_text_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext->preedit_visible == TRUE) return; ibusimcontext->preedit_visible = TRUE; g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); _request_surrounding_text (ibusimcontext); } static void _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext->preedit_visible == FALSE) return; ibusimcontext->preedit_visible = FALSE; g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static void _ibus_context_destroy_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_assert (ibusimcontext->ibuscontext == ibuscontext); g_object_unref (ibusimcontext->ibuscontext); ibusimcontext->ibuscontext = NULL; /* clear preedit */ ibusimcontext->preedit_visible = FALSE; ibusimcontext->preedit_cursor_pos = 0; g_free (ibusimcontext->preedit_string); ibusimcontext->preedit_string = NULL; g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static void _create_input_context_done (IBusBus *bus, GAsyncResult *res, IBusIMContext *ibusimcontext) { GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish ( _bus, res, &error); if (ibusimcontext->cancellable != NULL) { g_object_unref (ibusimcontext->cancellable); ibusimcontext->cancellable = NULL; } if (context == NULL) { g_warning ("Create input context failed: %s.", error->message); g_error_free (error); } else { ibusimcontext->ibuscontext = context; g_signal_connect (ibusimcontext->ibuscontext, "commit-text", G_CALLBACK (_ibus_context_commit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "forward-key-event", G_CALLBACK (_ibus_context_forward_key_event_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "delete-surrounding-text", G_CALLBACK (_ibus_context_delete_surrounding_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "update-preedit-text", G_CALLBACK (_ibus_context_update_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "show-preedit-text", G_CALLBACK (_ibus_context_show_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "hide-preedit-text", G_CALLBACK (_ibus_context_hide_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "destroy", G_CALLBACK (_ibus_context_destroy_cb), ibusimcontext); ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps); if (ibusimcontext->has_focus) { /* The time order is _create_input_context() -> * ibus_im_context_notify() -> ibus_im_context_focus_in() -> * _create_input_context_done() * so _set_content_type() is called at the beginning here * because ibusimcontext->ibuscontext == NULL before. */ _set_content_type (ibusimcontext); ibus_input_context_focus_in (ibusimcontext->ibuscontext); _set_cursor_location_internal (ibusimcontext); } if (!g_queue_is_empty (ibusimcontext->events_queue)) { GdkEventKey *event; while ((event = g_queue_pop_head (ibusimcontext->events_queue))) { _process_key_event (context, event); gdk_event_free ((GdkEvent *)event); } } } g_object_unref (ibusimcontext); } static void _create_input_context (IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_assert (ibusimcontext->ibuscontext == NULL); g_return_if_fail (ibusimcontext->cancellable == NULL); ibusimcontext->cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (_bus, "gtk-im", -1, ibusimcontext->cancellable, (GAsyncReadyCallback)_create_input_context_done, g_object_ref (ibusimcontext)); } /* Callback functions for slave context */ static void _slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *ibusimcontext) { g_signal_emit (ibusimcontext, _signal_commit_id, 0, string); } static void _slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); } static void _slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); } static void _slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static gboolean _slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { gboolean return_value; if (ibusimcontext->ibuscontext) { return FALSE; } g_signal_emit (ibusimcontext, _signal_retrieve_surrounding_id, 0, &return_value); return return_value; } static gboolean _slave_delete_surrounding_cb (GtkIMContext *slave, gint offset_from_cursor, guint nchars, IBusIMContext *ibusimcontext) { gboolean return_value; if (ibusimcontext->ibuscontext) { return FALSE; } g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, offset_from_cursor, nchars, &return_value); return return_value; } #ifdef OS_CHROMEOS static void _ibus_fake_context_destroy_cb (IBusInputContext *ibuscontext, gpointer user_data) { /* The fack IC may be destroyed when the connection is lost. * Should release it. */ g_assert (ibuscontext == _fake_context); g_object_unref (_fake_context); _fake_context = NULL; } static GCancellable *_fake_cancellable = NULL; static void _create_fake_input_context_done (IBusBus *bus, GAsyncResult *res, IBusIMContext *ibusimcontext) { GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish ( _bus, res, &error); if (_fake_cancellable != NULL) { g_object_unref (_fake_cancellable); _fake_cancellable = NULL; } if (context == NULL) { g_warning ("Create fake input context failed: %s.", error->message); g_error_free (error); return; } _fake_context = context; g_signal_connect (_fake_context, "forward-key-event", G_CALLBACK (_ibus_context_forward_key_event_cb), NULL); g_signal_connect (_fake_context, "destroy", G_CALLBACK (_ibus_fake_context_destroy_cb), NULL); guint32 caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT; ibus_input_context_set_capabilities (_fake_context, caps); /* focus in/out the fake context */ if (_focus_im_context == NULL) ibus_input_context_focus_in (_fake_context); else ibus_input_context_focus_out (_fake_context); } static void _create_fake_input_context (void) { g_return_if_fail (_fake_context == NULL); /* Global engine is always enabled in Chrome OS, * so create fake IC, and set focus if no other IC has focus. */ if (_fake_cancellable != NULL) { g_cancellable_cancel (_fake_cancellable); g_object_unref (_fake_cancellable); _fake_cancellable = NULL; } _fake_cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (_bus, "fake-gtk-im", -1, _fake_cancellable, (GAsyncReadyCallback)_create_fake_input_context_done, NULL); } #else static void _create_fake_input_context (void) { /* For Linux desktop, do not use fake IC. */ } #endif ibus-1.5.11/client/gtk3/ibusim.c0000644000000000000000000000427012551654123013221 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et ts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "ibusimcontext.h" #define IBUS_LOCALDIR "" static const GtkIMContextInfo ibus_im_info = { "ibus", "IBus (Intelligent Input Bus)", "ibus", IBUS_LOCALDIR, "ja:ko:zh:*" }; static const GtkIMContextInfo *info_list[] = { &ibus_im_info }; G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module) { return glib_check_version (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, 0); } G_MODULE_EXPORT void im_module_init (GTypeModule *type_module) { /* make module resident */ g_type_module_use (type_module); ibus_init (); ibus_im_context_register_type (type_module); } G_MODULE_EXPORT void im_module_exit (void) { } G_MODULE_EXPORT GtkIMContext * im_module_create (const gchar *context_id) { if (g_strcmp0 (context_id, "ibus") == 0) { IBusIMContext *context; context = ibus_im_context_new (); return (GtkIMContext *) context; } return NULL; } G_MODULE_EXPORT void im_module_list (const GtkIMContextInfo ***contexts, gint *n_contexts) { *contexts = info_list; *n_contexts = G_N_ELEMENTS (info_list); } ibus-1.5.11/client/gtk3/Makefile.in0000644000000000000000000006746512551654255013657 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = client/gtk3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(immoduledir)" LTLIBRARIES = $(immodule_LTLIBRARIES) am_im_ibus_la_OBJECTS = im_ibus_la-ibusim.lo \ im_ibus_la-ibusimcontext.lo im_ibus_la_OBJECTS = $(am_im_ibus_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = im_ibus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(im_ibus_la_CFLAGS) \ $(CFLAGS) $(im_ibus_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(im_ibus_la_SOURCES) DIST_SOURCES = $(im_ibus_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) immoduledir = @GTK3_IM_MODULEDIR@ immodule_LTLIBRARIES = im-ibus.la im_ibus_la_SOURCES = \ ibusim.c \ ibusimcontext.c \ ibusimcontext.h \ $(NULL) im_ibus_la_DEPENDENCIES = $(libibus) im_ibus_la_CFLAGS = \ @GTK3_CFLAGS@ \ @DBUS_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ $(NULL) im_ibus_la_LIBADD = \ @GTK3_LIBS@ \ @DBUS_LIBS@ \ $(libibus) \ $(NULL) im_ibus_la_LDFLAGS = \ -avoid-version \ -module \ $(NULL) EXTRA_DIST = \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client/gtk3/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu client/gtk3/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-immoduleLTLIBRARIES: $(immodule_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(immodule_LTLIBRARIES)'; test -n "$(immoduledir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(immoduledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(immoduledir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(immoduledir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(immoduledir)"; \ } uninstall-immoduleLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(immodule_LTLIBRARIES)'; test -n "$(immoduledir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(immoduledir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(immoduledir)/$$f"; \ done clean-immoduleLTLIBRARIES: -test -z "$(immodule_LTLIBRARIES)" || rm -f $(immodule_LTLIBRARIES) @list='$(immodule_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } im-ibus.la: $(im_ibus_la_OBJECTS) $(im_ibus_la_DEPENDENCIES) $(EXTRA_im_ibus_la_DEPENDENCIES) $(AM_V_CCLD)$(im_ibus_la_LINK) -rpath $(immoduledir) $(im_ibus_la_OBJECTS) $(im_ibus_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< im_ibus_la-ibusim.lo: ibusim.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -MT im_ibus_la-ibusim.lo -MD -MP -MF $(DEPDIR)/im_ibus_la-ibusim.Tpo -c -o im_ibus_la-ibusim.lo `test -f 'ibusim.c' || echo '$(srcdir)/'`ibusim.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/im_ibus_la-ibusim.Tpo $(DEPDIR)/im_ibus_la-ibusim.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusim.c' object='im_ibus_la-ibusim.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -c -o im_ibus_la-ibusim.lo `test -f 'ibusim.c' || echo '$(srcdir)/'`ibusim.c im_ibus_la-ibusimcontext.lo: ibusimcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -MT im_ibus_la-ibusimcontext.lo -MD -MP -MF $(DEPDIR)/im_ibus_la-ibusimcontext.Tpo -c -o im_ibus_la-ibusimcontext.lo `test -f 'ibusimcontext.c' || echo '$(srcdir)/'`ibusimcontext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/im_ibus_la-ibusimcontext.Tpo $(DEPDIR)/im_ibus_la-ibusimcontext.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimcontext.c' object='im_ibus_la-ibusimcontext.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -c -o im_ibus_la-ibusimcontext.lo `test -f 'ibusimcontext.c' || echo '$(srcdir)/'`ibusimcontext.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(immoduledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-immoduleLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-immoduleLTLIBRARIES install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-immoduleLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-immoduleLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-immoduleLTLIBRARIES install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-immoduleLTLIBRARIES .PRECIOUS: Makefile $(libibus): (cd $(top_builddir)/src; make ) test: all GTK_IM_MODULE=ibus gedit -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/client/gtk3/Makefile.am0000644000000000000000000000305012551654123013614 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) immoduledir = @GTK3_IM_MODULEDIR@ immodule_LTLIBRARIES = im-ibus.la im_ibus_la_SOURCES = \ ibusim.c \ ibusimcontext.c \ ibusimcontext.h \ $(NULL) im_ibus_la_DEPENDENCIES = $(libibus) im_ibus_la_CFLAGS = \ @GTK3_CFLAGS@ \ @DBUS_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ $(NULL) im_ibus_la_LIBADD = \ @GTK3_LIBS@ \ @DBUS_LIBS@ \ $(libibus) \ $(NULL) im_ibus_la_LDFLAGS = \ -avoid-version \ -module \ $(NULL) $(libibus): (cd $(top_builddir)/src; make ) EXTRA_DIST = \ $(NULL) test: all GTK_IM_MODULE=ibus gedit -include $(top_srcdir)/git.mk ibus-1.5.11/client/gtk2/0000755000000000000000000000000012551654530011643 500000000000000ibus-1.5.11/client/gtk2/ibusimcontext.h0000644000000000000000000000621012551654123014626 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et ts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_IM_CONTEXT_H_ #define __IBUS_IM_CONTEXT_H_ #include /* * Type macros. */ #define IBUS_TYPE_IM_CONTEXT \ (ibus_im_context_get_type ()) #define IBUS_IM_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_IM_CONTEXT, IBusIMContext)) #define IBUS_IM_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_IM_CONTEXT, IBusIMContextClass)) #define IBUS_IS_IM_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_IM_CONTEXT)) #define IBUS_IS_IM_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_IM_CONTEXT)) #define IBUS_IM_CONTEXT_GET_CLASS(obj) \ (G_TYPE_CHECK_GET_CLASS ((obj), IBUS_TYPE_IM_CONTEXT, IBusIMContextClass)) G_BEGIN_DECLS typedef struct _IBusIMContext IBusIMContext; typedef struct _IBusIMContextClass IBusIMContextClass; typedef struct _IBusIMContextPrivate IBusIMContextPrivate; GType ibus_im_context_get_type (void); IBusIMContext *ibus_im_context_new (void); void ibus_im_context_register_type (GTypeModule *type_module); void ibus_im_context_shutdown (void); const gchar *ibus_im_context_get_ic (IBusIMContext *context); void ibus_im_context_set_ic (IBusIMContext *context, const gchar *ic); void ibus_im_context_enable (IBusIMContext *context); void ibus_im_context_disable (IBusIMContext *context); void ibus_im_context_commit_string (IBusIMContext *context, const gchar *string); void ibus_im_context_update_preedit (IBusIMContext *context, const gchar *string, PangoAttrList *attrs, gint cursor_pos, gboolean visible); void ibus_im_context_show_preedit (IBusIMContext *context); void ibus_im_context_hide_preedit (IBusIMContext *context); G_END_DECLS #endif ibus-1.5.11/client/gtk2/ibusimcontext.c0000644000000000000000000016400612551654123014631 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "ibusimcontext.h" #if !GTK_CHECK_VERSION (2, 91, 0) # define DEPRECATED_GDK_KEYSYMS 1 #endif #ifdef DEBUG # define IDEBUG g_debug #else # define IDEBUG(a...) #endif #define MAX_QUEUED_EVENTS 20 struct _IBusIMContext { GtkIMContext parent; /* instance members */ GtkIMContext *slave; GdkWindow *client_window; IBusInputContext *ibuscontext; /* preedit status */ gchar *preedit_string; PangoAttrList *preedit_attrs; gint preedit_cursor_pos; gboolean preedit_visible; GdkRectangle cursor_area; gboolean has_focus; guint32 time; gint caps; /* cancellable */ GCancellable *cancellable; GQueue *events_queue; }; struct _IBusIMContextClass { GtkIMContextClass parent; /* class members */ }; static guint _signal_commit_id = 0; static guint _signal_preedit_changed_id = 0; static guint _signal_preedit_start_id = 0; static guint _signal_preedit_end_id = 0; static guint _signal_delete_surrounding_id = 0; static guint _signal_retrieve_surrounding_id = 0; static const gchar *_no_snooper_apps = NO_SNOOPER_APPS; static gboolean _use_key_snooper = ENABLE_SNOOPER; static guint _key_snooper_id = 0; static gboolean _use_sync_mode = FALSE; static GtkIMContext *_focus_im_context = NULL; static IBusInputContext *_fake_context = NULL; static GdkWindow *_input_window = NULL; static GtkWidget *_input_widget = NULL; /* functions prototype */ static void ibus_im_context_class_init (IBusIMContextClass *class); static void ibus_im_context_class_fini (IBusIMContextClass *class); static void ibus_im_context_init (GObject *obj); static void ibus_im_context_notify (GObject *obj, GParamSpec *pspec); static void ibus_im_context_finalize (GObject *obj); static void ibus_im_context_reset (GtkIMContext *context); static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, GdkEventKey *key); static void ibus_im_context_focus_in (GtkIMContext *context); static void ibus_im_context_focus_out (GtkIMContext *context); static void ibus_im_context_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos); static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client); static void ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area); static void ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit); static void ibus_im_context_set_surrounding (GtkIMContext *slave, const gchar *text, gint len, gint cursor_index); /* static methods*/ static void _create_input_context (IBusIMContext *context); static gboolean _set_cursor_location_internal (IBusIMContext *context); static void _bus_connected_cb (IBusBus *bus, IBusIMContext *context); /* callback functions for slave context */ static void _slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *context); static void _slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *context); static void _slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *context); static void _slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *context); static gboolean _slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *context); static gboolean _slave_delete_surrounding_cb (GtkIMContext *slave, gint offset_from_cursor, guint nchars, IBusIMContext *context); static void _request_surrounding_text (IBusIMContext *context); static void _create_fake_input_context (void); static void _set_content_type (IBusIMContext *context); static GType _ibus_type_im_context = 0; static GtkIMContextClass *parent_class = NULL; static IBusBus *_bus = NULL; static guint _daemon_name_watch_id = 0; static gboolean _daemon_is_running = FALSE; void ibus_im_context_register_type (GTypeModule *type_module) { IDEBUG ("%s", __FUNCTION__); static const GTypeInfo ibus_im_context_info = { sizeof (IBusIMContextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_im_context_class_init, (GClassFinalizeFunc) ibus_im_context_class_fini, NULL, /* class data */ sizeof (IBusIMContext), 0, (GInstanceInitFunc) ibus_im_context_init, }; if (!_ibus_type_im_context) { if (type_module) { _ibus_type_im_context = g_type_module_register_type (type_module, GTK_TYPE_IM_CONTEXT, "IBusIMContext", &ibus_im_context_info, (GTypeFlags)0); } else { _ibus_type_im_context = g_type_register_static (GTK_TYPE_IM_CONTEXT, "IBusIMContext", &ibus_im_context_info, (GTypeFlags)0); } } } GType ibus_im_context_get_type (void) { IDEBUG ("%s", __FUNCTION__); if (_ibus_type_im_context == 0) { ibus_im_context_register_type (NULL); } g_assert (_ibus_type_im_context != 0); return _ibus_type_im_context; } IBusIMContext * ibus_im_context_new (void) { IDEBUG ("%s", __FUNCTION__); GObject *obj = g_object_new (IBUS_TYPE_IM_CONTEXT, NULL); return IBUS_IM_CONTEXT (obj); } static gboolean _focus_in_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { if (_focus_im_context == NULL && _fake_context != NULL) { ibus_input_context_focus_in (_fake_context); } return FALSE; } static gboolean _focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { if (_focus_im_context == NULL && _fake_context != NULL) { ibus_input_context_focus_out (_fake_context); } return FALSE; } static void _process_key_event_done (GObject *object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = (IBusInputContext *)object; GdkEventKey *event = (GdkEventKey *) user_data; GError *error = NULL; gboolean retval = ibus_input_context_process_key_event_async_finish ( context, res, &error); if (error != NULL) { g_warning ("Process Key Event failed: %s.", error->message); g_error_free (error); } if (retval == FALSE) { event->state |= IBUS_IGNORED_MASK; gdk_event_put ((GdkEvent *)event); } gdk_event_free ((GdkEvent *)event); } static gboolean _process_key_event (IBusInputContext *context, GdkEventKey *event) { guint state = event->state; gboolean retval = FALSE; if (event->type == GDK_KEY_RELEASE) { state |= IBUS_RELEASE_MASK; } if (_use_sync_mode) { retval = ibus_input_context_process_key_event (context, event->keyval, event->hardware_keycode - 8, state); } else { ibus_input_context_process_key_event_async (context, event->keyval, event->hardware_keycode - 8, state, -1, NULL, _process_key_event_done, gdk_event_copy ((GdkEvent *) event)); retval = TRUE; } if (retval) { event->state |= IBUS_HANDLED_MASK; } else { event->state |= IBUS_IGNORED_MASK; } return retval; } /* emit "retrieve-surrounding" glib signal of GtkIMContext, if * context->caps has IBUS_CAP_SURROUNDING_TEXT and the current IBus * engine needs surrounding-text. */ static void _request_surrounding_text (IBusIMContext *context) { if (context && (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 && context->ibuscontext != NULL && ibus_input_context_needs_surrounding_text (context->ibuscontext)) { gboolean return_value; IDEBUG ("requesting surrounding text"); g_signal_emit (context, _signal_retrieve_surrounding_id, 0, &return_value); if (!return_value) { context->caps &= ~IBUS_CAP_SURROUNDING_TEXT; ibus_input_context_set_capabilities (context->ibuscontext, context->caps); } } } static void _set_content_type (IBusIMContext *context) { #if GTK_CHECK_VERSION (3, 6, 0) if (context->ibuscontext != NULL) { GtkInputPurpose purpose; GtkInputHints hints; g_object_get (G_OBJECT (context), "input-purpose", &purpose, "input-hints", &hints, NULL); ibus_input_context_set_content_type (context->ibuscontext, purpose, hints); } #endif } static gint _key_snooper_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { IDEBUG ("%s", __FUNCTION__); gboolean retval = FALSE; IBusIMContext *ibusimcontext = NULL; IBusInputContext *ibuscontext = NULL; if (!_use_key_snooper) return FALSE; if (_focus_im_context != NULL && ((IBusIMContext *) _focus_im_context)->has_focus == TRUE) { ibusimcontext = (IBusIMContext *) _focus_im_context; /* has IC with focus */ ibuscontext = ibusimcontext->ibuscontext; } else { /* If no IC has focus, and fake IC has been created, then pass key events to fake IC. */ ibuscontext = _fake_context; } if (ibuscontext == NULL) return FALSE; if (G_UNLIKELY (event->state & IBUS_HANDLED_MASK)) return TRUE; if (G_UNLIKELY (event->state & IBUS_IGNORED_MASK)) return FALSE; do { if (_fake_context != ibuscontext) break; /* window has input focus is not changed */ if (_input_window == event->window) break; if (_input_window != NULL) { g_object_remove_weak_pointer ((GObject *) _input_window, (gpointer *) &_input_window); } if (event->window != NULL) { g_object_add_weak_pointer ((GObject *) event->window, (gpointer *) &_input_window); } _input_window = event->window; /* Trace widget has input focus, and listen focus events of it. * It is workaround for Alt+Shift+Tab shortcut key issue(crosbug.com/8855). * gtk_get_event_widget returns the widget that is associated with the * GdkWindow of the GdkEvent. * */ GtkWidget *widget = gtk_get_event_widget ((GdkEvent *)event); /* g_assert (_input_widget != widget). */ if (_input_widget == widget) break; if (_input_widget != NULL) { g_signal_handlers_disconnect_by_func (_input_widget, (GCallback) _focus_in_cb, NULL); g_signal_handlers_disconnect_by_func (_input_widget, (GCallback) _focus_out_cb, NULL); g_object_remove_weak_pointer ((GObject *) _input_widget, (gpointer *) &_input_widget); } if (widget != NULL) { g_signal_connect (widget, "focus-in-event", (GCallback) _focus_in_cb, NULL); g_signal_connect (widget, "focus-out-event", (GCallback) _focus_out_cb, NULL); g_object_add_weak_pointer ((GObject *) widget, (gpointer *) &_input_widget); } _input_widget = widget; } while (0); if (ibusimcontext != NULL) { /* "retrieve-surrounding" signal sometimes calls unref by * gtk_im_multicontext_get_slave() because priv->context_id is not * the latest than global_context_id in GtkIMMulticontext. * Since _focus_im_context is gotten by the focus_in event, * it would be good to call ref here. */ g_object_ref (ibusimcontext); _request_surrounding_text (ibusimcontext); ibusimcontext->time = event->time; } retval = _process_key_event (ibuscontext, event); if (ibusimcontext != NULL) { /* unref ibusimcontext could call ibus_im_context_finalize here * because "retrieve-surrounding" signal could call unref. */ g_object_unref (ibusimcontext); } return retval; } static gboolean _get_boolean_env(const gchar *name, gboolean defval) { const gchar *value = g_getenv (name); if (value == NULL) return defval; if (g_strcmp0 (value, "") == 0 || g_strcmp0 (value, "0") == 0 || g_strcmp0 (value, "false") == 0 || g_strcmp0 (value, "False") == 0 || g_strcmp0 (value, "FALSE") == 0) return FALSE; return TRUE; } static void daemon_name_appeared (GDBusConnection *connection, const gchar *name, const gchar *owner, gpointer data) { /* If ibus-daemon is running and run ssh -X localhost, * daemon_name_appeared() is called but ibus_get_address() == NULL * because the hostname and display number are different between * ibus-daemon and clients. So IBusBus would not be connected and * ibusimcontext->ibuscontext == NULL and ibusimcontext->events_queue * could go beyond MAX_QUEUED_EVENTS . */ _daemon_is_running = (ibus_get_address () != NULL); } static void daemon_name_vanished (GDBusConnection *connection, const gchar *name, gpointer data) { _daemon_is_running = FALSE; } static void ibus_im_context_class_init (IBusIMContextClass *class) { IDEBUG ("%s", __FUNCTION__); GtkIMContextClass *im_context_class = GTK_IM_CONTEXT_CLASS (class); GObjectClass *gobject_class = G_OBJECT_CLASS (class); parent_class = (GtkIMContextClass *) g_type_class_peek_parent (class); im_context_class->reset = ibus_im_context_reset; im_context_class->focus_in = ibus_im_context_focus_in; im_context_class->focus_out = ibus_im_context_focus_out; im_context_class->filter_keypress = ibus_im_context_filter_keypress; im_context_class->get_preedit_string = ibus_im_context_get_preedit_string; im_context_class->set_client_window = ibus_im_context_set_client_window; im_context_class->set_cursor_location = ibus_im_context_set_cursor_location; im_context_class->set_use_preedit = ibus_im_context_set_use_preedit; im_context_class->set_surrounding = ibus_im_context_set_surrounding; gobject_class->notify = ibus_im_context_notify; gobject_class->finalize = ibus_im_context_finalize; _signal_commit_id = g_signal_lookup ("commit", G_TYPE_FROM_CLASS (class)); g_assert (_signal_commit_id != 0); _signal_preedit_changed_id = g_signal_lookup ("preedit-changed", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_changed_id != 0); _signal_preedit_start_id = g_signal_lookup ("preedit-start", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_start_id != 0); _signal_preedit_end_id = g_signal_lookup ("preedit-end", G_TYPE_FROM_CLASS (class)); g_assert (_signal_preedit_end_id != 0); _signal_delete_surrounding_id = g_signal_lookup ("delete-surrounding", G_TYPE_FROM_CLASS (class)); g_assert (_signal_delete_surrounding_id != 0); _signal_retrieve_surrounding_id = g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (class)); g_assert (_signal_retrieve_surrounding_id != 0); _use_key_snooper = !_get_boolean_env ("IBUS_DISABLE_SNOOPER", !(ENABLE_SNOOPER)); _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ const gchar * prgname = g_get_prgname (); if (g_getenv ("IBUS_NO_SNOOPER_APPS")) { _no_snooper_apps = g_getenv ("IBUS_NO_SNOOPER_APPS"); } gchar **p; gchar ** apps = g_strsplit (_no_snooper_apps, ",", 0); for (p = apps; *p != NULL; p++) { if (g_regex_match_simple (*p, prgname, 0, 0)) { _use_key_snooper = FALSE; break; } } g_strfreev (apps); } /* init bus object */ if (_bus == NULL) { const gchar *dname = gdk_display_get_name (gdk_display_get_default ()); /* ibus-daemon uses DISPLAY variable. */ if (g_strcmp0 (dname, "Wayland") == 0) dname = g_getenv ("DISPLAY"); ibus_set_display (dname); _bus = ibus_bus_new_async (); /* init the global fake context */ if (ibus_bus_is_connected (_bus)) { _create_fake_input_context (); } g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), NULL); } /* always install snooper */ if (_key_snooper_id == 0) { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" _key_snooper_id = gtk_key_snooper_install (_key_snooper_cb, NULL); #pragma GCC diagnostic pop } _daemon_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_IBUS, G_BUS_NAME_WATCHER_FLAGS_NONE, daemon_name_appeared, daemon_name_vanished, NULL, NULL); } static void ibus_im_context_class_fini (IBusIMContextClass *class) { if (_key_snooper_id != 0) { IDEBUG ("snooper is terminated."); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" gtk_key_snooper_remove (_key_snooper_id); #pragma GCC diagnostic pop _key_snooper_id = 0; } g_bus_unwatch_name (_daemon_name_watch_id); } /* Copied from gtk+2.0-2.20.1/modules/input/imcedilla.c to fix crosbug.com/11421. * Overwrite the original Gtk+'s compose table in gtk+-2.x.y/gtk/gtkimcontextsimple.c. */ /* The difference between this and the default input method is the handling * of C+acute - this method produces C WITH CEDILLA rather than C WITH ACUTE. * For languages that use CCedilla and not acute, this is the preferred mapping, * and is particularly important for pt_BR, where the us-intl keyboard is * used extensively. */ static guint16 cedilla_compose_seqs[] = { #ifdef DEPRECATED_GDK_KEYSYMS GDK_dead_acute, GDK_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_dead_acute, GDK_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_apostrophe, GDK_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_apostrophe, GDK_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_C, GDK_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_Multi_key, GDK_c, GDK_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ #else GDK_KEY_dead_acute, GDK_KEY_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_dead_acute, GDK_KEY_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_C, GDK_KEY_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ #endif }; static void ibus_im_context_init (GObject *obj) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj); ibusimcontext->client_window = NULL; // Init preedit status ibusimcontext->preedit_string = NULL; ibusimcontext->preedit_attrs = NULL; ibusimcontext->preedit_cursor_pos = 0; ibusimcontext->preedit_visible = FALSE; // Init cursor area ibusimcontext->cursor_area.x = -1; ibusimcontext->cursor_area.y = -1; ibusimcontext->cursor_area.width = 0; ibusimcontext->cursor_area.height = 0; ibusimcontext->ibuscontext = NULL; ibusimcontext->has_focus = FALSE; ibusimcontext->time = GDK_CURRENT_TIME; #ifdef ENABLE_SURROUNDING ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT; #else ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS; #endif ibusimcontext->events_queue = g_queue_new (); // Create slave im context ibusimcontext->slave = gtk_im_context_simple_new (); gtk_im_context_simple_add_table (GTK_IM_CONTEXT_SIMPLE (ibusimcontext->slave), cedilla_compose_seqs, 4, G_N_ELEMENTS (cedilla_compose_seqs) / (4 + 2)); g_signal_connect (ibusimcontext->slave, "commit", G_CALLBACK (_slave_commit_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-start", G_CALLBACK (_slave_preedit_start_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-end", G_CALLBACK (_slave_preedit_end_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "preedit-changed", G_CALLBACK (_slave_preedit_changed_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "retrieve-surrounding", G_CALLBACK (_slave_retrieve_surrounding_cb), ibusimcontext); g_signal_connect (ibusimcontext->slave, "delete-surrounding", G_CALLBACK (_slave_delete_surrounding_cb), ibusimcontext); if (ibus_bus_is_connected (_bus)) { _create_input_context (ibusimcontext); } g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), obj); } static void ibus_im_context_notify (GObject *obj, GParamSpec *pspec) { IDEBUG ("%s", __FUNCTION__); if (g_strcmp0 (pspec->name, "input-purpose") == 0 || g_strcmp0 (pspec->name, "input-hints") == 0) { _set_content_type (IBUS_IM_CONTEXT (obj)); } } static void ibus_im_context_finalize (GObject *obj) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj); g_signal_handlers_disconnect_by_func (_bus, G_CALLBACK (_bus_connected_cb), obj); if (ibusimcontext->cancellable != NULL) { /* Cancel any ongoing create input context request */ g_cancellable_cancel (ibusimcontext->cancellable); g_object_unref (ibusimcontext->cancellable); ibusimcontext->cancellable = NULL; } if (ibusimcontext->ibuscontext) { ibus_proxy_destroy ((IBusProxy *)ibusimcontext->ibuscontext); } ibus_im_context_set_client_window ((GtkIMContext *)ibusimcontext, NULL); if (ibusimcontext->slave) { g_object_unref (ibusimcontext->slave); ibusimcontext->slave = NULL; } // release preedit if (ibusimcontext->preedit_string) { g_free (ibusimcontext->preedit_string); } if (ibusimcontext->preedit_attrs) { pango_attr_list_unref (ibusimcontext->preedit_attrs); } g_queue_free_full (ibusimcontext->events_queue, (GDestroyNotify)gdk_event_free); G_OBJECT_CLASS(parent_class)->finalize (obj); } static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, GdkEventKey *event) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (!_daemon_is_running) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); /* If context does not have focus, ibus will process key event in * sync mode. It is a workaround for increase search in treeview. */ if (!ibusimcontext->has_focus) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); if (event->state & IBUS_HANDLED_MASK) return TRUE; if (event->state & IBUS_IGNORED_MASK) return gtk_im_context_filter_keypress (ibusimcontext->slave, event); /* XXX it is a workaround for some applications do not set client * window. */ if (ibusimcontext->client_window == NULL && event->window != NULL) gtk_im_context_set_client_window ((GtkIMContext *)ibusimcontext, event->window); _request_surrounding_text (ibusimcontext); ibusimcontext->time = event->time; if (ibusimcontext->ibuscontext) { if (_process_key_event (ibusimcontext->ibuscontext, event)) return TRUE; else return gtk_im_context_filter_keypress (ibusimcontext->slave, event); } /* At this point we _should_ be waiting for the IBus context to be * created or the connection to IBus to be established. If that's * the case we queue events to be processed when the IBus context * is ready. */ g_return_val_if_fail (ibusimcontext->cancellable != NULL || ibus_bus_is_connected (_bus) == FALSE, FALSE); g_queue_push_tail (ibusimcontext->events_queue, gdk_event_copy ((GdkEvent *)event)); if (g_queue_get_length (ibusimcontext->events_queue) > MAX_QUEUED_EVENTS) { g_warning ("Events queue growing too big, will start to drop."); gdk_event_free ((GdkEvent *) g_queue_pop_head (ibusimcontext->events_queue)); } return TRUE; } static void ibus_im_context_focus_in (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = (IBusIMContext *) context; if (ibusimcontext->has_focus) return; /* don't set focus on password entry */ if (ibusimcontext->client_window != NULL) { GtkWidget *widget; gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); if (GTK_IS_ENTRY (widget) && !gtk_entry_get_visibility (GTK_ENTRY (widget))) { return; } } /* Do not call gtk_im_context_focus_out() here. * google-chrome's notification popup window (Pushbullet) * takes the focus and the popup window disappears. * So other applications lose the focus because * ibusimcontext->has_focus is FALSE if * gtk_im_context_focus_out() is called here when * _focus_im_context != context. */ if (_focus_im_context == NULL) { /* focus out fake context */ if (_fake_context != NULL) { ibus_input_context_focus_out (_fake_context); } } ibusimcontext->has_focus = TRUE; if (ibusimcontext->ibuscontext) { _set_content_type (ibusimcontext); ibus_input_context_focus_in (ibusimcontext->ibuscontext); } gtk_im_context_focus_in (ibusimcontext->slave); /* set_cursor_location_internal() will get origin from X server, * it blocks UI. So delay it to idle callback. */ gdk_threads_add_idle_full (G_PRIORITY_DEFAULT_IDLE, (GSourceFunc) _set_cursor_location_internal, g_object_ref (ibusimcontext), (GDestroyNotify) g_object_unref); /* retrieve the initial surrounding-text (regardless of whether * the current IBus engine needs surrounding-text) */ _request_surrounding_text (ibusimcontext); g_object_add_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = context; } static void ibus_im_context_focus_out (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = (IBusIMContext *) context; if (ibusimcontext->has_focus == FALSE) { return; } g_object_remove_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = NULL; ibusimcontext->has_focus = FALSE; if (ibusimcontext->ibuscontext) { ibus_input_context_focus_out (ibusimcontext->ibuscontext); } gtk_im_context_focus_out (ibusimcontext->slave); /* focus in the fake ic */ if (_fake_context != NULL) { ibus_input_context_focus_in (_fake_context); } } static void ibus_im_context_reset (GtkIMContext *context) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->ibuscontext) { ibus_input_context_reset (ibusimcontext->ibuscontext); } gtk_im_context_reset (ibusimcontext->slave); } static void ibus_im_context_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->preedit_visible) { if (str) { *str = g_strdup (ibusimcontext->preedit_string ? ibusimcontext->preedit_string: ""); } if (attrs) { *attrs = ibusimcontext->preedit_attrs ? pango_attr_list_ref (ibusimcontext->preedit_attrs): pango_attr_list_new (); } if (cursor_pos) { *cursor_pos = ibusimcontext->preedit_cursor_pos; } } else { if (str) { *str = g_strdup (""); } if (attrs) { *attrs = pango_attr_list_new (); } if (cursor_pos) { *cursor_pos = 0; } } IDEBUG ("str=%s", *str); } static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->client_window) { g_object_unref (ibusimcontext->client_window); ibusimcontext->client_window = NULL; } if (client != NULL) ibusimcontext->client_window = g_object_ref (client); if (ibusimcontext->slave) gtk_im_context_set_client_window (ibusimcontext->slave, client); } static gboolean _set_cursor_location_internal (IBusIMContext *ibusimcontext) { GdkRectangle area; if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) { return FALSE; } area = ibusimcontext->cursor_area; if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { #if GTK_CHECK_VERSION (2, 91, 0) area.x = 0; area.y += gdk_window_get_height (ibusimcontext->client_window); #else gint w, h; gdk_drawable_get_size (ibusimcontext->client_window, &w, &h); area.y += h; area.x = 0; #endif } gdk_window_get_root_coords (ibusimcontext->client_window, area.x, area.y, &area.x, &area.y); ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext, area.x, area.y, area.width, area.height); return FALSE; } static void ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->cursor_area.x == area->x && ibusimcontext->cursor_area.y == area->y && ibusimcontext->cursor_area.width == area->width && ibusimcontext->cursor_area.height == area->height) { return; } ibusimcontext->cursor_area = *area; _set_cursor_location_internal (ibusimcontext); gtk_im_context_set_cursor_location (ibusimcontext->slave, area); } static void ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit) { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (use_preedit) { ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT; } else { ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT; } if(ibusimcontext->ibuscontext) { ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps); } gtk_im_context_set_use_preedit (ibusimcontext->slave, use_preedit); } static guint get_selection_anchor_point (IBusIMContext *ibusimcontext, guint cursor_pos, guint surrounding_text_len) { GtkWidget *widget; if (ibusimcontext->client_window == NULL) { return cursor_pos; } gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); if (!GTK_IS_TEXT_VIEW (widget)){ return cursor_pos; } GtkTextView *text_view = GTK_TEXT_VIEW (widget); GtkTextBuffer *buffer = gtk_text_view_get_buffer (text_view); if (!gtk_text_buffer_get_has_selection (buffer)) { return cursor_pos; } GtkTextIter start_iter, end_iter, cursor_iter; if (!gtk_text_buffer_get_selection_bounds (buffer, &start_iter, &end_iter)) { return cursor_pos; } gtk_text_buffer_get_iter_at_mark (buffer, &cursor_iter, gtk_text_buffer_get_insert (buffer)); guint start_index = gtk_text_iter_get_offset (&start_iter); guint end_index = gtk_text_iter_get_offset (&end_iter); guint cursor_index = gtk_text_iter_get_offset (&cursor_iter); guint anchor; if (start_index == cursor_index) { anchor = end_index; } else if (end_index == cursor_index) { anchor = start_index; } else { return cursor_pos; } // Change absolute index to relative position. guint relative_origin = cursor_index - cursor_pos; if (anchor < relative_origin) { return cursor_pos; } anchor -= relative_origin; if (anchor > surrounding_text_len) { return cursor_pos; } return anchor; } static void ibus_im_context_set_surrounding (GtkIMContext *context, const gchar *text, gint len, gint cursor_index) { g_return_if_fail (context != NULL); g_return_if_fail (IBUS_IS_IM_CONTEXT (context)); g_return_if_fail (text != NULL); g_return_if_fail (strlen (text) >= len); g_return_if_fail (0 <= cursor_index && cursor_index <= len); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->ibuscontext) { IBusText *ibustext; guint cursor_pos; guint utf8_len; gchar *p; p = g_strndup (text, len); cursor_pos = g_utf8_strlen (p, cursor_index); utf8_len = g_utf8_strlen(p, len); ibustext = ibus_text_new_from_string (p); g_free (p); guint anchor_pos = get_selection_anchor_point (ibusimcontext, cursor_pos, utf8_len); ibus_input_context_set_surrounding_text (ibusimcontext->ibuscontext, ibustext, cursor_pos, anchor_pos); } gtk_im_context_set_surrounding (ibusimcontext->slave, text, len, cursor_index); } static void _bus_connected_cb (IBusBus *bus, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext) _create_input_context (ibusimcontext); else _create_fake_input_context (); } static void _ibus_context_commit_text_cb (IBusInputContext *ibuscontext, IBusText *text, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); _request_surrounding_text (ibusimcontext); } static gboolean _key_is_modifier (guint keyval) { /* See gdkkeys-x11.c:_gdk_keymap_key_is_modifier() for how this * really should be implemented */ switch (keyval) { #ifdef DEPRECATED_GDK_KEYSYMS case GDK_Shift_L: case GDK_Shift_R: case GDK_Control_L: case GDK_Control_R: case GDK_Caps_Lock: case GDK_Shift_Lock: case GDK_Meta_L: case GDK_Meta_R: case GDK_Alt_L: case GDK_Alt_R: case GDK_Super_L: case GDK_Super_R: case GDK_Hyper_L: case GDK_Hyper_R: case GDK_ISO_Lock: case GDK_ISO_Level2_Latch: case GDK_ISO_Level3_Shift: case GDK_ISO_Level3_Latch: case GDK_ISO_Level3_Lock: case GDK_ISO_Level5_Shift: case GDK_ISO_Level5_Latch: case GDK_ISO_Level5_Lock: case GDK_ISO_Group_Shift: case GDK_ISO_Group_Latch: case GDK_ISO_Group_Lock: return TRUE; #else case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: case GDK_KEY_Control_L: case GDK_KEY_Control_R: case GDK_KEY_Caps_Lock: case GDK_KEY_Shift_Lock: case GDK_KEY_Meta_L: case GDK_KEY_Meta_R: case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Super_L: case GDK_KEY_Super_R: case GDK_KEY_Hyper_L: case GDK_KEY_Hyper_R: case GDK_KEY_ISO_Lock: case GDK_KEY_ISO_Level2_Latch: case GDK_KEY_ISO_Level3_Shift: case GDK_KEY_ISO_Level3_Latch: case GDK_KEY_ISO_Level3_Lock: case GDK_KEY_ISO_Level5_Shift: case GDK_KEY_ISO_Level5_Latch: case GDK_KEY_ISO_Level5_Lock: case GDK_KEY_ISO_Group_Shift: case GDK_KEY_ISO_Group_Latch: case GDK_KEY_ISO_Group_Lock: return TRUE; #endif default: return FALSE; } } /* Copy from gdk */ static GdkEventKey * _create_gdk_event (IBusIMContext *ibusimcontext, guint keyval, guint keycode, guint state) { gunichar c = 0; gchar buf[8]; GdkEventKey *event = (GdkEventKey *)gdk_event_new ((state & IBUS_RELEASE_MASK) ? GDK_KEY_RELEASE : GDK_KEY_PRESS); if (ibusimcontext && ibusimcontext->client_window) event->window = g_object_ref (ibusimcontext->client_window); else if (_input_window) event->window = g_object_ref (_input_window); /* The time is copied the latest value from the previous * GdkKeyEvent in filter_keypress(). * * We understand the best way would be to pass the all time value * to IBus functions process_key_event() and IBus DBus functions * ProcessKeyEvent() in IM clients and IM engines so that the * _create_gdk_event() could get the correct time values. * However it would causes to change many functions and the time value * would not provide the useful meanings for each IBus engines but just * pass the original value to ForwardKeyEvent(). * We use the saved value at the moment. * * Another idea might be to have the time implementation in X servers * but some Xorg uses clock_gettime() and others use gettimeofday() * and the values would be different in each implementation and * locale/remote X server. So probably that idea would not work. */ if (ibusimcontext) { event->time = ibusimcontext->time; } else { event->time = GDK_CURRENT_TIME; } event->send_event = FALSE; event->state = state; event->keyval = keyval; event->string = NULL; event->length = 0; event->hardware_keycode = (keycode != 0) ? keycode + 8 : 0; event->group = 0; event->is_modifier = _key_is_modifier (keyval); #ifdef DEPRECATED_GDK_KEYSYMS if (keyval != GDK_VoidSymbol) #else if (keyval != GDK_KEY_VoidSymbol) #endif c = gdk_keyval_to_unicode (keyval); if (c) { gsize bytes_written; gint len; /* Apply the control key - Taken from Xlib */ if (event->state & GDK_CONTROL_MASK) { if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; else if (c == '2') { event->string = g_memdup ("\0\0", 2); event->length = 1; buf[0] = '\0'; goto out; } else if (c >= '3' && c <= '7') c -= ('3' - '\033'); else if (c == '8') c = '\177'; else if (c == '/') c = '_' & 0x1F; } len = g_unichar_to_utf8 (c, buf); buf[len] = '\0'; event->string = g_locale_from_utf8 (buf, len, NULL, &bytes_written, NULL); if (event->string) event->length = bytes_written; #ifdef DEPRECATED_GDK_KEYSYMS } else if (keyval == GDK_Escape) { #else } else if (keyval == GDK_KEY_Escape) { #endif event->length = 1; event->string = g_strdup ("\033"); } #ifdef DEPRECATED_GDK_KEYSYMS else if (keyval == GDK_Return || keyval == GDK_KP_Enter) { #else else if (keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter) { #endif event->length = 1; event->string = g_strdup ("\r"); } if (!event->string) { event->length = 0; event->string = g_strdup (""); } out: return event; } static void _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, guint keyval, guint keycode, guint state, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); GdkEventKey *event = _create_gdk_event (ibusimcontext, keyval, keycode, state); gdk_event_put ((GdkEvent *)event); gdk_event_free ((GdkEvent *)event); } static void _ibus_context_delete_surrounding_text_cb (IBusInputContext *ibuscontext, gint offset_from_cursor, guint nchars, IBusIMContext *ibusimcontext) { gboolean return_value; g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, offset_from_cursor, nchars, &return_value); } static void _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, IBusText *text, gint cursor_pos, gboolean visible, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); const gchar *str; gboolean flag; if (ibusimcontext->preedit_string) { g_free (ibusimcontext->preedit_string); } if (ibusimcontext->preedit_attrs) { pango_attr_list_unref (ibusimcontext->preedit_attrs); ibusimcontext->preedit_attrs = NULL; } str = text->text; ibusimcontext->preedit_string = g_strdup (str); if (text->attrs) { guint i; ibusimcontext->preedit_attrs = pango_attr_list_new (); for (i = 0; ; i++) { IBusAttribute *attr = ibus_attr_list_get (text->attrs, i); if (attr == NULL) { break; } PangoAttribute *pango_attr; switch (attr->type) { case IBUS_ATTR_TYPE_UNDERLINE: pango_attr = pango_attr_underline_new (attr->value); break; case IBUS_ATTR_TYPE_FOREGROUND: pango_attr = pango_attr_foreground_new ( ((attr->value & 0xff0000) >> 8) | 0xff, ((attr->value & 0x00ff00)) | 0xff, ((attr->value & 0x0000ff) << 8) | 0xff); break; case IBUS_ATTR_TYPE_BACKGROUND: pango_attr = pango_attr_background_new ( ((attr->value & 0xff0000) >> 8) | 0xff, ((attr->value & 0x00ff00)) | 0xff, ((attr->value & 0x0000ff) << 8) | 0xff); break; default: continue; } pango_attr->start_index = g_utf8_offset_to_pointer (str, attr->start_index) - str; pango_attr->end_index = g_utf8_offset_to_pointer (str, attr->end_index) - str; pango_attr_list_insert (ibusimcontext->preedit_attrs, pango_attr); } } ibusimcontext->preedit_cursor_pos = cursor_pos; flag = ibusimcontext->preedit_visible != visible; ibusimcontext->preedit_visible = visible; if (ibusimcontext->preedit_visible) { if (flag) { /* invisible => visible */ g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); } g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); } else { if (flag) { /* visible => invisible */ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } else { /* still invisible */ /* do nothing */ } } } static void _ibus_context_show_preedit_text_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext->preedit_visible == TRUE) return; ibusimcontext->preedit_visible = TRUE; g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); _request_surrounding_text (ibusimcontext); } static void _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); if (ibusimcontext->preedit_visible == FALSE) return; ibusimcontext->preedit_visible = FALSE; g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static void _ibus_context_destroy_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_assert (ibusimcontext->ibuscontext == ibuscontext); g_object_unref (ibusimcontext->ibuscontext); ibusimcontext->ibuscontext = NULL; /* clear preedit */ ibusimcontext->preedit_visible = FALSE; ibusimcontext->preedit_cursor_pos = 0; g_free (ibusimcontext->preedit_string); ibusimcontext->preedit_string = NULL; g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static void _create_input_context_done (IBusBus *bus, GAsyncResult *res, IBusIMContext *ibusimcontext) { GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish ( _bus, res, &error); if (ibusimcontext->cancellable != NULL) { g_object_unref (ibusimcontext->cancellable); ibusimcontext->cancellable = NULL; } if (context == NULL) { g_warning ("Create input context failed: %s.", error->message); g_error_free (error); } else { ibusimcontext->ibuscontext = context; g_signal_connect (ibusimcontext->ibuscontext, "commit-text", G_CALLBACK (_ibus_context_commit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "forward-key-event", G_CALLBACK (_ibus_context_forward_key_event_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "delete-surrounding-text", G_CALLBACK (_ibus_context_delete_surrounding_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "update-preedit-text", G_CALLBACK (_ibus_context_update_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "show-preedit-text", G_CALLBACK (_ibus_context_show_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "hide-preedit-text", G_CALLBACK (_ibus_context_hide_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, "destroy", G_CALLBACK (_ibus_context_destroy_cb), ibusimcontext); ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps); if (ibusimcontext->has_focus) { /* The time order is _create_input_context() -> * ibus_im_context_notify() -> ibus_im_context_focus_in() -> * _create_input_context_done() * so _set_content_type() is called at the beginning here * because ibusimcontext->ibuscontext == NULL before. */ _set_content_type (ibusimcontext); ibus_input_context_focus_in (ibusimcontext->ibuscontext); _set_cursor_location_internal (ibusimcontext); } if (!g_queue_is_empty (ibusimcontext->events_queue)) { GdkEventKey *event; while ((event = g_queue_pop_head (ibusimcontext->events_queue))) { _process_key_event (context, event); gdk_event_free ((GdkEvent *)event); } } } g_object_unref (ibusimcontext); } static void _create_input_context (IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); g_assert (ibusimcontext->ibuscontext == NULL); g_return_if_fail (ibusimcontext->cancellable == NULL); ibusimcontext->cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (_bus, "gtk-im", -1, ibusimcontext->cancellable, (GAsyncReadyCallback)_create_input_context_done, g_object_ref (ibusimcontext)); } /* Callback functions for slave context */ static void _slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *ibusimcontext) { g_signal_emit (ibusimcontext, _signal_commit_id, 0, string); } static void _slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0); } static void _slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0); } static void _slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { if (ibusimcontext->ibuscontext) { return; } g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0); } static gboolean _slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *ibusimcontext) { gboolean return_value; if (ibusimcontext->ibuscontext) { return FALSE; } g_signal_emit (ibusimcontext, _signal_retrieve_surrounding_id, 0, &return_value); return return_value; } static gboolean _slave_delete_surrounding_cb (GtkIMContext *slave, gint offset_from_cursor, guint nchars, IBusIMContext *ibusimcontext) { gboolean return_value; if (ibusimcontext->ibuscontext) { return FALSE; } g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, offset_from_cursor, nchars, &return_value); return return_value; } #ifdef OS_CHROMEOS static void _ibus_fake_context_destroy_cb (IBusInputContext *ibuscontext, gpointer user_data) { /* The fack IC may be destroyed when the connection is lost. * Should release it. */ g_assert (ibuscontext == _fake_context); g_object_unref (_fake_context); _fake_context = NULL; } static GCancellable *_fake_cancellable = NULL; static void _create_fake_input_context_done (IBusBus *bus, GAsyncResult *res, IBusIMContext *ibusimcontext) { GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish ( _bus, res, &error); if (_fake_cancellable != NULL) { g_object_unref (_fake_cancellable); _fake_cancellable = NULL; } if (context == NULL) { g_warning ("Create fake input context failed: %s.", error->message); g_error_free (error); return; } _fake_context = context; g_signal_connect (_fake_context, "forward-key-event", G_CALLBACK (_ibus_context_forward_key_event_cb), NULL); g_signal_connect (_fake_context, "destroy", G_CALLBACK (_ibus_fake_context_destroy_cb), NULL); guint32 caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT; ibus_input_context_set_capabilities (_fake_context, caps); /* focus in/out the fake context */ if (_focus_im_context == NULL) ibus_input_context_focus_in (_fake_context); else ibus_input_context_focus_out (_fake_context); } static void _create_fake_input_context (void) { g_return_if_fail (_fake_context == NULL); /* Global engine is always enabled in Chrome OS, * so create fake IC, and set focus if no other IC has focus. */ if (_fake_cancellable != NULL) { g_cancellable_cancel (_fake_cancellable); g_object_unref (_fake_cancellable); _fake_cancellable = NULL; } _fake_cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (_bus, "fake-gtk-im", -1, _fake_cancellable, (GAsyncReadyCallback)_create_fake_input_context_done, NULL); } #else static void _create_fake_input_context (void) { /* For Linux desktop, do not use fake IC. */ } #endif ibus-1.5.11/client/gtk2/ibusim.c0000644000000000000000000000427012551654123013220 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et ts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "ibusimcontext.h" #define IBUS_LOCALDIR "" static const GtkIMContextInfo ibus_im_info = { "ibus", "IBus (Intelligent Input Bus)", "ibus", IBUS_LOCALDIR, "ja:ko:zh:*" }; static const GtkIMContextInfo *info_list[] = { &ibus_im_info }; G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module) { return glib_check_version (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, 0); } G_MODULE_EXPORT void im_module_init (GTypeModule *type_module) { /* make module resident */ g_type_module_use (type_module); ibus_init (); ibus_im_context_register_type (type_module); } G_MODULE_EXPORT void im_module_exit (void) { } G_MODULE_EXPORT GtkIMContext * im_module_create (const gchar *context_id) { if (g_strcmp0 (context_id, "ibus") == 0) { IBusIMContext *context; context = ibus_im_context_new (); return (GtkIMContext *) context; } return NULL; } G_MODULE_EXPORT void im_module_list (const GtkIMContextInfo ***contexts, gint *n_contexts) { *contexts = info_list; *n_contexts = G_N_ELEMENTS (info_list); } ibus-1.5.11/client/gtk2/Makefile.in0000644000000000000000000006746512551654255013656 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = client/gtk2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(immoduledir)" LTLIBRARIES = $(immodule_LTLIBRARIES) am_im_ibus_la_OBJECTS = im_ibus_la-ibusim.lo \ im_ibus_la-ibusimcontext.lo im_ibus_la_OBJECTS = $(am_im_ibus_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = im_ibus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(im_ibus_la_CFLAGS) \ $(CFLAGS) $(im_ibus_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(im_ibus_la_SOURCES) DIST_SOURCES = $(im_ibus_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) immoduledir = @GTK2_IM_MODULEDIR@ immodule_LTLIBRARIES = im-ibus.la im_ibus_la_SOURCES = \ ibusim.c \ ibusimcontext.c \ ibusimcontext.h \ $(NULL) im_ibus_la_DEPENDENCIES = $(libibus) im_ibus_la_CFLAGS = \ @GTK2_CFLAGS@ \ @DBUS_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ $(NULL) im_ibus_la_LIBADD = \ @GTK2_LIBS@ \ @DBUS_LIBS@ \ $(libibus) \ $(NULL) im_ibus_la_LDFLAGS = \ -avoid-version \ -module \ $(NULL) EXTRA_DIST = \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client/gtk2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu client/gtk2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-immoduleLTLIBRARIES: $(immodule_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(immodule_LTLIBRARIES)'; test -n "$(immoduledir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(immoduledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(immoduledir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(immoduledir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(immoduledir)"; \ } uninstall-immoduleLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(immodule_LTLIBRARIES)'; test -n "$(immoduledir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(immoduledir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(immoduledir)/$$f"; \ done clean-immoduleLTLIBRARIES: -test -z "$(immodule_LTLIBRARIES)" || rm -f $(immodule_LTLIBRARIES) @list='$(immodule_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } im-ibus.la: $(im_ibus_la_OBJECTS) $(im_ibus_la_DEPENDENCIES) $(EXTRA_im_ibus_la_DEPENDENCIES) $(AM_V_CCLD)$(im_ibus_la_LINK) -rpath $(immoduledir) $(im_ibus_la_OBJECTS) $(im_ibus_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< im_ibus_la-ibusim.lo: ibusim.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -MT im_ibus_la-ibusim.lo -MD -MP -MF $(DEPDIR)/im_ibus_la-ibusim.Tpo -c -o im_ibus_la-ibusim.lo `test -f 'ibusim.c' || echo '$(srcdir)/'`ibusim.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/im_ibus_la-ibusim.Tpo $(DEPDIR)/im_ibus_la-ibusim.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusim.c' object='im_ibus_la-ibusim.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -c -o im_ibus_la-ibusim.lo `test -f 'ibusim.c' || echo '$(srcdir)/'`ibusim.c im_ibus_la-ibusimcontext.lo: ibusimcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -MT im_ibus_la-ibusimcontext.lo -MD -MP -MF $(DEPDIR)/im_ibus_la-ibusimcontext.Tpo -c -o im_ibus_la-ibusimcontext.lo `test -f 'ibusimcontext.c' || echo '$(srcdir)/'`ibusimcontext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/im_ibus_la-ibusimcontext.Tpo $(DEPDIR)/im_ibus_la-ibusimcontext.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimcontext.c' object='im_ibus_la-ibusimcontext.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(im_ibus_la_CFLAGS) $(CFLAGS) -c -o im_ibus_la-ibusimcontext.lo `test -f 'ibusimcontext.c' || echo '$(srcdir)/'`ibusimcontext.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(immoduledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-immoduleLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-immoduleLTLIBRARIES install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-immoduleLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-immoduleLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-immoduleLTLIBRARIES install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-immoduleLTLIBRARIES .PRECIOUS: Makefile $(libibus): (cd $(top_builddir)/src; make ) test: all GTK_IM_MODULE=ibus gedit -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/client/gtk2/Makefile.am0000644000000000000000000000305012551654123013613 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) immoduledir = @GTK2_IM_MODULEDIR@ immodule_LTLIBRARIES = im-ibus.la im_ibus_la_SOURCES = \ ibusim.c \ ibusimcontext.c \ ibusimcontext.h \ $(NULL) im_ibus_la_DEPENDENCIES = $(libibus) im_ibus_la_CFLAGS = \ @GTK2_CFLAGS@ \ @DBUS_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ $(NULL) im_ibus_la_LIBADD = \ @GTK2_LIBS@ \ @DBUS_LIBS@ \ $(libibus) \ $(NULL) im_ibus_la_LDFLAGS = \ -avoid-version \ -module \ $(NULL) $(libibus): (cd $(top_builddir)/src; make ) EXTRA_DIST = \ $(NULL) test: all GTK_IM_MODULE=ibus gedit -include $(top_srcdir)/git.mk ibus-1.5.11/client/x11/0000755000000000000000000000000012551654531011406 500000000000000ibus-1.5.11/client/x11/main.c0000644000000000000000000010656212551654123012425 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus * Copyright (C) 2007-2015 Peng Huang * Copyright (C) 2007-2015 Red Hat, Inc. * * main.c: * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define LOG(level, fmt_args...) \ if (g_debug_level >= (level)) { \ g_debug (fmt_args); \ } #include #include "gdk-private.h" #include "locales.h" struct _X11ICONN { GList *clients; }; typedef struct _X11ICONN X11ICONN; typedef struct _X11IC X11IC; struct _X11IC { IBusInputContext *context; Window client_window; Window focus_window; gint32 input_style; X11ICONN *conn; gint icid; gint connect_id; gchar *lang; gboolean has_preedit_area; GdkRectangle preedit_area; gchar *preedit_string; IBusAttrList *preedit_attrs; gint preedit_cursor; gboolean preedit_visible; gboolean preedit_started; gint onspot_preedit_length; }; static void _xim_set_cursor_location (X11IC *x11ic); static void _context_commit_text_cb (IBusInputContext *context, IBusText *text, X11IC *x11ic); static void _context_forward_key_event_cb (IBusInputContext *context, guint keyval, guint keycode, guint state, X11IC *x11ic); static void _context_update_preedit_text_cb (IBusInputContext *context, IBusText *text, gint cursor_pos, gboolean visible, X11IC *x11ic); static void _context_show_preedit_text_cb (IBusInputContext *context, X11IC *x11ic); static void _context_hide_preedit_text_cb (IBusInputContext *context, X11IC *x11ic); static void _context_enabled_cb (IBusInputContext *context, X11IC *x11ic); static void _context_disabled_cb (IBusInputContext *context, X11IC *x11ic); static GHashTable *_x11_ic_table = NULL; static GHashTable *_connections = NULL; static XIMS _xims = NULL; static gchar *_server_name = NULL; static gchar *_locale = NULL; static gboolean _kill_daemon = FALSE; static gint g_debug_level = 0; static IBusBus *_bus = NULL; static gboolean _use_sync_mode = TRUE; static void _xim_preedit_start (XIMS xims, const X11IC *x11ic) { IMPreeditStateStruct ips; ips.major_code = 0; ips.minor_code = 0; ips.icid = x11ic->icid; ips.connect_id = x11ic->connect_id; IMPreeditStart (xims, (XPointer)&ips); } static void _xim_preedit_end (XIMS xims, const X11IC *x11ic) { IMPreeditStateStruct ips; ips.major_code = 0; ips.minor_code = 0; ips.icid = x11ic->icid; ips.connect_id = x11ic->connect_id; IMPreeditEnd (xims, (XPointer)&ips); } static void _xim_preedit_callback_start (XIMS xims, const X11IC *x11ic) { IMPreeditCBStruct pcb; pcb.major_code = XIM_PREEDIT_START; pcb.minor_code = 0; pcb.connect_id = x11ic->connect_id; pcb.icid = x11ic->icid; pcb.todo.return_value = 0; IMCallCallback (xims, (XPointer) & pcb); } static void _xim_preedit_callback_done (XIMS xims, const X11IC *x11ic) { IMPreeditCBStruct pcb; pcb.major_code = XIM_PREEDIT_DONE; pcb.minor_code = 0; pcb.connect_id = x11ic->connect_id; pcb.icid = x11ic->icid; pcb.todo.return_value = 0; IMCallCallback (xims, (XPointer) & pcb); } static void _xim_preedit_callback_draw (XIMS xims, X11IC *x11ic, const gchar *preedit_string, IBusAttrList *attr_list) { IMPreeditCBStruct pcb; XIMText text; XTextProperty tp; static XIMFeedback *feedback; static gint feedback_len = 0; guint j, i, len; if (preedit_string == NULL) return; len = g_utf8_strlen (preedit_string, -1); if (len + 1 > feedback_len) { feedback_len = (len + 1 + 63) & ~63; if (feedback) { feedback = g_renew (XIMFeedback, feedback, feedback_len); } else { feedback = g_new (XIMFeedback, feedback_len); } } for (i = 0; i < len; i++) { feedback[i] = 0; } if (attr_list != NULL) { for (i = 0;; i++) { XIMFeedback attr = 0; IBusAttribute *ibus_attr = ibus_attr_list_get (attr_list, i); if (ibus_attr == NULL) { break; } switch (ibus_attr->type) { case IBUS_ATTR_TYPE_UNDERLINE: if (ibus_attr->value == IBUS_ATTR_UNDERLINE_SINGLE) { attr = XIMUnderline; } break; case IBUS_ATTR_TYPE_BACKGROUND: { if (ibus_attr->value != 0xffffff) { attr = XIMReverse; } break; } default: continue; } for (j = ibus_attr->start_index; j < ibus_attr->end_index; j++) { feedback[j] |= attr; } } } for (i = 0; i < len; i++) { if (feedback[i] == 0) { feedback[i] = XIMUnderline; } } feedback[len] = 0; pcb.major_code = XIM_PREEDIT_DRAW; pcb.connect_id = x11ic->connect_id; pcb.icid = x11ic->icid; pcb.todo.draw.caret = len; pcb.todo.draw.chg_first = 0; pcb.todo.draw.chg_length = x11ic->onspot_preedit_length; pcb.todo.draw.text = &text; text.feedback = feedback; if (len > 0) { Xutf8TextListToTextProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), (char **)&preedit_string, 1, XCompoundTextStyle, &tp); text.encoding_is_wchar = 0; text.length = strlen ((char*)tp.value); text.string.multi_byte = (char*)tp.value; IMCallCallback (xims, (XPointer) & pcb); XFree (tp.value); } else { text.encoding_is_wchar = 0; text.length = 0; text.string.multi_byte = ""; IMCallCallback (xims, (XPointer) & pcb); len = 0; } x11ic->onspot_preedit_length = len; } static int _xim_store_ic_values (X11IC *x11ic, IMChangeICStruct *call_data) { XICAttribute *ic_attr = call_data->ic_attr; XICAttribute *pre_attr = call_data->preedit_attr; XICAttribute *sts_attr = call_data->status_attr; gint i; guint32 attrs = 1; g_return_val_if_fail (x11ic != NULL, 0); for (i = 0; i < (int)call_data->ic_attr_num; ++i, ++ic_attr) { if (g_strcmp0 (XNInputStyle, ic_attr->name) == 0) { x11ic->input_style = *(gint32 *) ic_attr->value; } else if (g_strcmp0 (XNClientWindow, ic_attr->name) == 0) { x11ic->client_window = (Window)(*(CARD32 *) call_data->ic_attr[i].value); } else if (g_strcmp0 (XNFocusWindow, ic_attr->name) == 0) { x11ic->focus_window = (Window)(*(CARD32 *) call_data->ic_attr[i].value); } else { LOG (1, "Unknown ic attribute: %s", ic_attr->name); } } for (i = 0; i < (int)call_data->preedit_attr_num; ++i, ++pre_attr) { if (g_strcmp0 (XNSpotLocation, pre_attr->name) == 0) { x11ic->has_preedit_area = TRUE; x11ic->preedit_area.x = ((XPoint *)pre_attr->value)->x; x11ic->preedit_area.y = ((XPoint *)pre_attr->value)->y; } else { LOG (1, "Unknown preedit attribute: %s", pre_attr->name); } } for (i=0; i< (int) call_data->status_attr_num; ++i, ++sts_attr) { LOG (1, "Unknown status attribute: %s", sts_attr->name); } return attrs; } static int xim_create_ic (XIMS xims, IMChangeICStruct *call_data) { static int base_icid = 1; X11IC *x11ic; call_data->icid = base_icid ++; LOG (1, "XIM_CREATE_IC ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = g_slice_new0 (X11IC); g_return_val_if_fail (x11ic != NULL, 0); x11ic->icid = call_data->icid; x11ic->connect_id = call_data->connect_id; x11ic->conn = (X11ICONN *)g_hash_table_lookup (_connections, GINT_TO_POINTER ((gint) call_data->connect_id)); if (x11ic->conn == NULL) { g_slice_free (X11IC, x11ic); g_return_val_if_reached (0); } _xim_store_ic_values (x11ic, call_data); x11ic->context = ibus_bus_create_input_context (_bus, "xim"); if (x11ic->context == NULL) { g_slice_free (X11IC, x11ic); g_return_val_if_reached (0); } g_signal_connect (x11ic->context, "commit-text", G_CALLBACK (_context_commit_text_cb), x11ic); g_signal_connect (x11ic->context, "forward-key-event", G_CALLBACK (_context_forward_key_event_cb), x11ic); g_signal_connect (x11ic->context, "update-preedit-text", G_CALLBACK (_context_update_preedit_text_cb), x11ic); g_signal_connect (x11ic->context, "show-preedit-text", G_CALLBACK (_context_show_preedit_text_cb), x11ic); g_signal_connect (x11ic->context, "hide-preedit-text", G_CALLBACK (_context_hide_preedit_text_cb), x11ic); g_signal_connect (x11ic->context, "enabled", G_CALLBACK (_context_enabled_cb), x11ic); g_signal_connect (x11ic->context, "disabled", G_CALLBACK (_context_disabled_cb), x11ic); if (x11ic->input_style & XIMPreeditCallbacks) { ibus_input_context_set_capabilities (x11ic->context, IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT); } else { ibus_input_context_set_capabilities (x11ic->context, IBUS_CAP_FOCUS); } g_hash_table_insert (_x11_ic_table, GINT_TO_POINTER (x11ic->icid), (gpointer)x11ic); x11ic->conn->clients = g_list_append (x11ic->conn->clients, (gpointer)x11ic); return 1; } static int xim_destroy_ic (XIMS xims, IMChangeICStruct *call_data) { X11IC *x11ic; LOG (1, "XIM_DESTROY_IC ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *)g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); if (x11ic->context) { ibus_proxy_destroy ((IBusProxy *)x11ic->context); g_object_unref (x11ic->context); x11ic->context = NULL; } g_hash_table_remove (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); x11ic->conn->clients = g_list_remove (x11ic->conn->clients, (gconstpointer)x11ic); g_free (x11ic->preedit_string); x11ic->preedit_string = NULL; if (x11ic->preedit_attrs) { g_object_unref (x11ic->preedit_attrs); x11ic->preedit_attrs = NULL; } g_slice_free (X11IC, x11ic); return 1; } static int xim_set_ic_focus (XIMS xims, IMChangeFocusStruct *call_data) { X11IC *x11ic; LOG (1, "XIM_SET_IC_FOCUS ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); ibus_input_context_focus_in (x11ic->context); _xim_set_cursor_location (x11ic); return 1; } static int xim_unset_ic_focus (XIMS xims, IMChangeFocusStruct *call_data) { X11IC *x11ic; LOG (1, "XIM_UNSET_IC_FOCUS ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); ibus_input_context_focus_out (x11ic->context); return 1; } static void _process_key_event_done (GObject *object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = (IBusInputContext *)object; IMForwardEventStruct *pfe = (IMForwardEventStruct*) user_data; GError *error = NULL; gboolean retval = ibus_input_context_process_key_event_async_finish ( context, res, &error); if (error != NULL) { g_warning ("Process Key Event failed: %s.", error->message); g_error_free (error); } if (g_hash_table_lookup (_connections, GINT_TO_POINTER ((gint) pfe->connect_id)) == NULL) { g_slice_free (IMForwardEventStruct, pfe); return; } if (retval == FALSE) { IMForwardEvent (_xims, (XPointer) pfe); } g_slice_free (IMForwardEventStruct, pfe); } static int xim_forward_event (XIMS xims, IMForwardEventStruct *call_data) { X11IC *x11ic; XKeyEvent *xevent; GdkEventKey event; gboolean retval; LOG (1, "XIM_FORWARD_EVENT ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); xevent = (XKeyEvent*) &(call_data->event); translate_key_event (gdk_display_get_default (), (GdkEvent *)&event, (XEvent *)xevent); event.send_event = xevent->send_event; event.window = NULL; if (event.type == GDK_KEY_RELEASE) { event.state |= IBUS_RELEASE_MASK; } if (_use_sync_mode) { retval = ibus_input_context_process_key_event ( x11ic->context, event.keyval, event.hardware_keycode - 8, event.state); if (retval) { if (! x11ic->has_preedit_area) { _xim_set_cursor_location (x11ic); } return 1; } IMForwardEventStruct fe; memset (&fe, 0, sizeof (fe)); fe.major_code = XIM_FORWARD_EVENT; fe.icid = x11ic->icid; fe.connect_id = x11ic->connect_id; fe.sync_bit = 0; fe.serial_number = 0L; fe.event = call_data->event; IMForwardEvent (_xims, (XPointer) &fe); retval = 1; } else { IMForwardEventStruct *pfe; pfe = g_slice_new0 (IMForwardEventStruct); pfe->major_code = XIM_FORWARD_EVENT; pfe->icid = x11ic->icid; pfe->connect_id = x11ic->connect_id; pfe->sync_bit = 0; pfe->serial_number = 0L; pfe->event = call_data->event; ibus_input_context_process_key_event_async ( x11ic->context, event.keyval, event.hardware_keycode - 8, event.state, -1, NULL, _process_key_event_done, pfe); retval = 1; } return retval; } static int xim_open (XIMS xims, IMOpenStruct *call_data) { X11ICONN *conn; LOG (1, "XIM_OPEN connect_id=%d", call_data->connect_id); conn = (X11ICONN *) g_hash_table_lookup (_connections, GINT_TO_POINTER ((gint) call_data->connect_id)); g_return_val_if_fail (conn == NULL, 0); conn = g_slice_new0 (X11ICONN); g_hash_table_insert (_connections, (gpointer)(unsigned long)call_data->connect_id, (gpointer) conn); return 1; } static void _free_ic (gpointer data, gpointer user_data) { X11IC *x11ic = (X11IC *) data; g_return_if_fail (x11ic != NULL); g_free (x11ic->preedit_string); x11ic->preedit_string = NULL; if (x11ic->preedit_attrs) { g_object_unref (x11ic->preedit_attrs); x11ic->preedit_attrs = NULL; } if (x11ic->context) { ibus_proxy_destroy ((IBusProxy *)x11ic->context); g_object_unref (x11ic->context); x11ic->context = NULL; } /* Remove the IC from g_client dictionary */ g_hash_table_remove (_x11_ic_table, GINT_TO_POINTER (x11ic->icid)); g_slice_free (X11IC, x11ic); } static int _free_x11_iconn_from_id (CARD16 connect_id) { X11ICONN *conn; conn = (X11ICONN *) g_hash_table_lookup (_connections, GINT_TO_POINTER ((gint) connect_id)); if (conn == NULL) { return 0; } g_list_free_full (conn->clients, (GDestroyNotify) _free_ic); g_hash_table_remove (_connections, GINT_TO_POINTER ((gint) connect_id)); g_slice_free (X11ICONN, conn); return 1; } static int xim_close (XIMS xims, IMCloseStruct *call_data) { CARD16 connect_id = call_data->connect_id; LOG (1, "XIM_CLOSE connect_id=%d", connect_id); return _free_x11_iconn_from_id (connect_id); } static int xim_disconnect_ic (XIMS xims, IMDisConnectStruct *call_data) { CARD16 connect_id = call_data->connect_id; LOG (1, "XIM_DISCONNECT connect_id=%d", connect_id); _free_x11_iconn_from_id (connect_id); /* I am not sure if this can return 1 because I have not experienced * that xim_disconnect_ic() is called. But I wish connect_id is * released from _connections to avoid SEGV. */ return 0; } static void _xim_set_cursor_location (X11IC *x11ic) { g_return_if_fail (x11ic != NULL); GdkRectangle preedit_area = x11ic->preedit_area; Window w = x11ic->focus_window ? x11ic->focus_window :x11ic->client_window; if (w) { XWindowAttributes xwa; Window child; XGetWindowAttributes (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w, &xwa); if (preedit_area.x <= 0 && preedit_area.y <= 0) { XTranslateCoordinates (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w, xwa.root, 0, xwa.height, &preedit_area.x, &preedit_area.y, &child); } else { XTranslateCoordinates (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w, xwa.root, preedit_area.x, preedit_area.y, &preedit_area.x, &preedit_area.y, &child); } } ibus_input_context_set_cursor_location (x11ic->context, preedit_area.x, preedit_area.y, preedit_area.width, preedit_area.height); } static int xim_set_ic_values (XIMS xims, IMChangeICStruct *call_data) { X11IC *x11ic; gint i; LOG (1, "XIM_SET_IC_VALUES ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); i = _xim_store_ic_values (x11ic, call_data); if (i) { _xim_set_cursor_location (x11ic); } return 1; } static int xim_get_ic_values (XIMS xims, IMChangeICStruct *call_data) { X11IC *x11ic; gint i; LOG (1, "XIM_GET_IC_VALUES ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); XICAttribute *ic_attr = call_data->ic_attr; for (i = 0; i < (int) call_data->ic_attr_num; ++i, ++ic_attr) { if (g_strcmp0 (XNFilterEvents, ic_attr->name) == 0) { ic_attr->value = (void *) malloc (sizeof (CARD32)); *(CARD32 *) ic_attr->value = KeyPressMask | KeyReleaseMask; ic_attr->value_length = sizeof (CARD32); } } return 1; } static int xim_reset_ic (XIMS xims, IMResetICStruct *call_data) { X11IC *x11ic; LOG (1, "XIM_RESET_IC ic=%d connect_id=%d", call_data->icid, call_data->connect_id); x11ic = (X11IC *) g_hash_table_lookup (_x11_ic_table, GINT_TO_POINTER ((gint) call_data->icid)); g_return_val_if_fail (x11ic != NULL, 0); ibus_input_context_reset (x11ic->context); return 1; } int ims_protocol_handler (XIMS xims, IMProtocol *call_data) { g_return_val_if_fail (xims != NULL, 1); g_return_val_if_fail (call_data != NULL, 1); switch (call_data->major_code) { case XIM_OPEN: return xim_open (xims, (IMOpenStruct *)call_data); case XIM_CLOSE: return xim_close (xims, (IMCloseStruct *)call_data); case XIM_DISCONNECT: return xim_disconnect_ic (xims, (IMDisConnectStruct *)call_data); case XIM_CREATE_IC: return xim_create_ic (xims, (IMChangeICStruct *)call_data); case XIM_DESTROY_IC: return xim_destroy_ic (xims, (IMChangeICStruct *)call_data); case XIM_SET_IC_VALUES: return xim_set_ic_values (xims, (IMChangeICStruct *)call_data); case XIM_GET_IC_VALUES: return xim_get_ic_values (xims, (IMChangeICStruct *)call_data); case XIM_FORWARD_EVENT: return xim_forward_event (xims, (IMForwardEventStruct *)call_data); case XIM_SET_IC_FOCUS: return xim_set_ic_focus (xims, (IMChangeFocusStruct *)call_data); case XIM_UNSET_IC_FOCUS: return xim_unset_ic_focus (xims, (IMChangeFocusStruct *)call_data); case XIM_RESET_IC: return xim_reset_ic (xims, (IMResetICStruct *)call_data); case XIM_TRIGGER_NOTIFY: LOG (1, "XIM_TRIGGER_NOTIFY"); return 0; case XIM_PREEDIT_START_REPLY: LOG (1, "XIM_PREEDIT_START_REPLY"); return 0; case XIM_PREEDIT_CARET_REPLY: LOG (1, "XIM_PREEDIT_CARET_REPLY"); return 0; case XIM_SYNC_REPLY: LOG (1, "XIM_SYNC_REPLY"); return 0; default: LOG (1, "Unknown (%d)", call_data->major_code); return 0; } } static void _xim_forward_key_event (X11IC *x11ic, guint keyval, guint keycode, guint state) { g_return_if_fail (x11ic != NULL); IMForwardEventStruct fe = {0}; XEvent xkp = {0}; xkp.xkey.type = (state & IBUS_RELEASE_MASK) ? KeyRelease : KeyPress; xkp.xkey.serial = 0L; xkp.xkey.send_event = False; xkp.xkey.same_screen = True; xkp.xkey.display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); xkp.xkey.window = x11ic->focus_window ? x11ic->focus_window : x11ic->client_window; xkp.xkey.subwindow = None; xkp.xkey.root = DefaultRootWindow (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); xkp.xkey.time = 0; xkp.xkey.state = state; xkp.xkey.keycode = (keycode == 0) ? 0 : keycode + 8; fe.major_code = XIM_FORWARD_EVENT; fe.icid = x11ic->icid; fe.connect_id = x11ic->connect_id; fe.sync_bit = 0; fe.serial_number = 0L; fe.event = xkp; IMForwardEvent (_xims, (XPointer) & fe); } static void _bus_disconnected_cb (IBusBus *bus, gpointer user_data) { g_warning ("Connection closed by ibus-daemon"); g_object_unref (_bus); _bus = NULL; exit(EXIT_SUCCESS); } static void _context_commit_text_cb (IBusInputContext *context, IBusText *text, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_TEXT (text)); g_assert (x11ic != NULL); XTextProperty tp; IMCommitStruct cms = {0}; Xutf8TextListToTextProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), (gchar **)&(text->text), 1, XCompoundTextStyle, &tp); cms.major_code = XIM_COMMIT; cms.icid = x11ic->icid; cms.connect_id = x11ic->connect_id; cms.flag = XimLookupChars; cms.commit_string = (gchar *)tp.value; IMCommitString (_xims, (XPointer) & cms); XFree (tp.value); } static void _context_forward_key_event_cb (IBusInputContext *context, guint keyval, guint keycode, guint state, X11IC *x11ic) { g_assert (x11ic); _xim_forward_key_event (x11ic, keyval, keycode, state); } static void _update_preedit (X11IC *x11ic) { if (x11ic->preedit_visible == FALSE && x11ic->preedit_started == TRUE) { _xim_preedit_callback_draw (_xims, x11ic, "", NULL); _xim_preedit_callback_done (_xims, x11ic); x11ic->preedit_started = FALSE; } if (x11ic->preedit_visible == TRUE && x11ic->preedit_started == FALSE) { _xim_preedit_callback_start (_xims, x11ic); x11ic->preedit_started = TRUE; } if (x11ic->preedit_visible == TRUE) { _xim_preedit_callback_draw (_xims, x11ic, x11ic->preedit_string, x11ic->preedit_attrs); } } static void _context_update_preedit_text_cb (IBusInputContext *context, IBusText *text, gint cursor_pos, gboolean visible, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_TEXT (text)); g_assert (x11ic); if (x11ic->preedit_string) { g_free(x11ic->preedit_string); } x11ic->preedit_string = g_strdup(text->text); if (x11ic->preedit_attrs) { g_object_unref (x11ic->preedit_attrs); } g_object_ref(text->attrs); x11ic->preedit_attrs = text->attrs; x11ic->preedit_cursor = cursor_pos; x11ic->preedit_visible = visible; _update_preedit (x11ic); } static void _context_show_preedit_text_cb (IBusInputContext *context, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (x11ic); x11ic->preedit_visible = TRUE; _update_preedit (x11ic); } static void _context_hide_preedit_text_cb (IBusInputContext *context, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (x11ic); x11ic->preedit_visible = FALSE; _update_preedit (x11ic); } static void _context_enabled_cb (IBusInputContext *context, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (x11ic); _xim_preedit_start (_xims, x11ic); } static void _context_disabled_cb (IBusInputContext *context, X11IC *x11ic) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (x11ic); _xim_preedit_end (_xims, x11ic); } static gboolean _get_boolean_env(const gchar *name, gboolean defval) { const gchar *value = g_getenv (name); if (value == NULL) return defval; if (g_strcmp0 (value, "") == 0 || g_strcmp0 (value, "0") == 0 || g_strcmp0 (value, "false") == 0 || g_strcmp0 (value, "False") == 0 || g_strcmp0 (value, "FALSE") == 0) return FALSE; return TRUE; } static void _init_ibus (void) { if (_bus != NULL) return; ibus_init (); _bus = ibus_bus_new (); g_signal_connect (_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL); /* https://github.com/ibus/ibus/issues/1713 */ _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", TRUE); } static void _xim_init_IMdkit () { #if 0 XIMStyle ims_styles_overspot [] = { XIMPreeditPosition | XIMStatusNothing, XIMPreeditNothing | XIMStatusNothing, XIMPreeditPosition | XIMStatusCallbacks, XIMPreeditNothing | XIMStatusCallbacks, 0 }; #endif XIMStyle ims_styles_onspot [] = { XIMPreeditPosition | XIMStatusNothing, XIMPreeditCallbacks | XIMStatusNothing, XIMPreeditNothing | XIMStatusNothing, XIMPreeditPosition | XIMStatusCallbacks, XIMPreeditCallbacks | XIMStatusCallbacks, XIMPreeditNothing | XIMStatusCallbacks, 0 }; XIMEncoding ims_encodings[] = { "COMPOUND_TEXT", 0 }; GdkWindowAttr window_attr = { .title = "ibus-xim", .event_mask = GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, .wclass = GDK_INPUT_OUTPUT, .window_type = GDK_WINDOW_TOPLEVEL, .override_redirect = 1, }; XIMStyles styles; XIMEncodings encodings; GdkWindow *win; win = gdk_window_new (NULL, &window_attr, GDK_WA_TITLE); styles.count_styles = sizeof (ims_styles_onspot)/sizeof (XIMStyle) - 1; styles.supported_styles = ims_styles_onspot; encodings.count_encodings = sizeof (ims_encodings)/sizeof (XIMEncoding) - 1; encodings.supported_encodings = ims_encodings; _xims = IMOpenIM (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), IMModifiers, "Xi18n", #if GTK_CHECK_VERSION (3, 0, 0) IMServerWindow, GDK_WINDOW_XID (win), #else IMServerWindow, GDK_WINDOW_XWINDOW (win), #endif IMServerName, _server_name != NULL ? _server_name : "ibus", IMLocale, _locale != NULL ? _locale : LOCALES_STRING, IMServerTransport, "X/", IMInputStyles, &styles, IMEncodingList, &encodings, IMProtocolHandler, ims_protocol_handler, IMFilterEventMask, KeyPressMask | KeyReleaseMask, NULL); _init_ibus (); if (!ibus_bus_is_connected (_bus)) { g_warning ("Can not connect to ibus daemon"); exit (EXIT_FAILURE); } } static void _atexit_cb () { if (_bus && ibus_bus_is_connected (_bus)) { ibus_bus_exit(_bus, False); } } static void _sighandler (int sig) { exit(EXIT_FAILURE); } static void _print_usage (FILE *fp, gchar *name) { fprintf (fp, "Usage:\n" " %s --help Show this message\n" " --server-name= -n Setup xim sevrer name\n" " --locale= -l Setup support locales\n" " --locale-append= -a Append locales into the default support locales\n" " --kill-daemon -k Kill ibus daemon when exit\n" " --debug= -v Setup debug level\n", name); } static int _xerror_handler (Display *dpy, XErrorEvent *e) { g_debug ( "XError: " "serial=%lu error_code=%d request_code=%d minor_code=%d resourceid=%lu", e->serial, e->error_code, e->request_code, e->minor_code, e->resourceid); return 1; } int main (int argc, char **argv) { gint option_index = 0; gint c; /* GDK_DISPLAY_XDISPLAY() and GDK_WINDOW_XID() does not work * with GdkWaylandDisplay. */ #if GTK_CHECK_VERSION (3, 10, 0) gdk_set_allowed_backends ("x11"); #endif gtk_init (&argc, &argv); XSetErrorHandler (_xerror_handler); while (1) { static struct option long_options [] = { { "debug", 1, 0, 0}, { "server-name", 1, 0, 0}, { "locale", 1, 0, 0}, { "locale-append", 1, 0, 0}, { "help", 0, 0, 0}, { "kill-daemon", 0, 0, 0}, { 0, 0, 0, 0}, }; c = getopt_long (argc, argv, "v:n:l:k:a", long_options, &option_index); if (c == -1) break; switch (c) { case 0: if (g_strcmp0 (long_options[option_index].name, "debug") == 0) { g_debug_level = atoi (optarg); } else if (g_strcmp0 (long_options[option_index].name, "server-name") == 0) { g_free (_server_name); _server_name = g_strdup (optarg); } else if (g_strcmp0 (long_options[option_index].name, "locale") == 0) { g_free (_locale); _locale = g_strdup (optarg); } else if (g_strcmp0 (long_options[option_index].name, "locale-append") == 0) { gchar *tmp = g_strdup_printf ("%s,%s", _locale != NULL ? _locale : LOCALES_STRING, optarg); g_free (_locale); _locale = tmp; } else if (g_strcmp0 (long_options[option_index].name, "help") == 0) { _print_usage (stdout, argv[0]); exit (EXIT_SUCCESS); } else if (g_strcmp0 (long_options[option_index].name, "kill-daemon") == 0) { _kill_daemon = TRUE; } break; case 'v': g_debug_level = atoi (optarg); break; case 'n': g_free (_server_name); _server_name = g_strdup (optarg); break; case 'l': g_free (_locale); _locale = g_strdup (optarg); break; case 'a': { gchar *tmp = g_strdup_printf ("%s,%s", _locale != NULL ? _locale : LOCALES_STRING, optarg); g_free (_locale); _locale = tmp; } break; case 'k': _kill_daemon = TRUE; break; case '?': default: _print_usage (stderr, argv[0]); exit (EXIT_FAILURE); } } _x11_ic_table = g_hash_table_new (g_direct_hash, g_direct_equal); _connections = g_hash_table_new (g_direct_hash, g_direct_equal); signal (SIGINT, _sighandler); signal (SIGTERM, _sighandler); if (_kill_daemon) atexit (_atexit_cb); _xim_init_IMdkit (); gtk_main(); exit (EXIT_SUCCESS); } ibus-1.5.11/client/x11/gdk-private.c0000644000000000000000000000420612551654123013706 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * gdk-private.c: Copied some code from gtk2 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "config.h" #include #include #include #ifdef HAVE_X11_XKBLIB_H # define HAVE_XKB # include #endif void translate_key_event (GdkDisplay *display, GdkEvent *event, XEvent *xevent) { GdkKeymap *keymap = gdk_keymap_get_for_display (display); event->key.type = xevent->xany.type == KeyPress ? GDK_KEY_PRESS : GDK_KEY_RELEASE; event->key.time = xevent->xkey.time; event->key.state = (GdkModifierType) xevent->xkey.state; #ifdef HAVE_XKB event->key.group = XkbGroupForCoreState (xevent->xkey.state); #else event->key.group = 0; #endif event->key.hardware_keycode = xevent->xkey.keycode; #if GTK_CHECK_VERSION(3, 0, 0) event->key.keyval = GDK_KEY_VoidSymbol; #else event->key.keyval = GDK_VoidSymbol; #endif gdk_keymap_translate_keyboard_state (keymap, event->key.hardware_keycode, event->key.state, event->key.group, &event->key.keyval, NULL, NULL, NULL); event->key.is_modifier = 0; /* Fill in event->string crudely, since various programs * depend on it. */ event->key.string = NULL; event->key.length = 0; return; } ibus-1.5.11/client/x11/locales.h0000644000000000000000000000103312551654123013113 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #define LOCALES_STRING "aa,af,am,an,ar,as,ast,az,be,ber,bg,bn,bo,br,bs,byn,C,ca,crh,cs,csb,cy,da,de,dz,el,en,es,et,eu,fa,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,he,hi,hne,hr,hsb,ht,hu,hy,id,ig,ik,is,it,iu,iw,ja,ka,kk,kl,km,kn,ko,ks,ku,kw,ky,lg,li,lo,lt,lv,mai,mg,mi,mk,ml,mn,mr,ms,mt,nan,nb,nds,ne,nl,nn,no,nr,nso,oc,om,or,pa,pa,pap,pl,pt,ro,ru,rw,sa,sc,sd,se,shs,si,sid,sk,sl,so,sq,sr,ss,st,sv,ta,te,tg,th,ti,tig,tk,tl,tn,tr,ts,tt,ug,uk,ur,uz,ve,vi,wa,wo,xh,yi,yo,zh,zu" ibus-1.5.11/client/x11/Makefile.in0000644000000000000000000007212512551654256013406 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ libexec_PROGRAMS = ibus-x11$(EXEEXT) subdir = client/x11 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" PROGRAMS = $(libexec_PROGRAMS) am_ibus_x11_OBJECTS = ibus_x11-main.$(OBJEXT) \ ibus_x11-gdk-private.$(OBJEXT) ibus_x11_OBJECTS = $(am_ibus_x11_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_x11_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_x11_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_x11_SOURCES) DIST_SOURCES = $(ibus_x11_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libIMdkit = $(top_builddir)/util/IMdkit/libIMdkit.la libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la @ENABLE_GTK3_FALSE@GTK_CFLAGS = @GTK2_CFLAGS@ @ENABLE_GTK3_TRUE@GTK_CFLAGS = @GTK3_CFLAGS@ @ENABLE_GTK3_FALSE@GTK_LIBS = @GTK2_LIBS@ @ENABLE_GTK3_TRUE@GTK_LIBS = @GTK3_LIBS@ ibus_x11_SOURCES = \ main.c \ gdk-private.c \ $(NULL) ibus_x11_DEPENDENCIES = \ $(libIMdkit) \ $(libibus) \ $(NULL) ibus_x11_LDADD = \ $(libIMdkit) \ $(libibus) \ @X11_LIBS@ \ $(GTK_LIBS) \ $(NULL) ibus_x11_CFLAGS = \ @X11_CFLAGS@ \ $(GTK_CFLAGS) \ @DBUS_CFLAGS@ \ -I$(top_srcdir)/util/IMdkit \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) noinst_HEADERS = \ gdk-private.h \ locales.h \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client/x11/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu client/x11/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-x11$(EXEEXT): $(ibus_x11_OBJECTS) $(ibus_x11_DEPENDENCIES) $(EXTRA_ibus_x11_DEPENDENCIES) @rm -f ibus-x11$(EXEEXT) $(AM_V_CCLD)$(ibus_x11_LINK) $(ibus_x11_OBJECTS) $(ibus_x11_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_x11-gdk-private.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_x11-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_x11-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -MT ibus_x11-main.o -MD -MP -MF $(DEPDIR)/ibus_x11-main.Tpo -c -o ibus_x11-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_x11-main.Tpo $(DEPDIR)/ibus_x11-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_x11-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -c -o ibus_x11-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_x11-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -MT ibus_x11-main.obj -MD -MP -MF $(DEPDIR)/ibus_x11-main.Tpo -c -o ibus_x11-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_x11-main.Tpo $(DEPDIR)/ibus_x11-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_x11-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -c -o ibus_x11-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` ibus_x11-gdk-private.o: gdk-private.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -MT ibus_x11-gdk-private.o -MD -MP -MF $(DEPDIR)/ibus_x11-gdk-private.Tpo -c -o ibus_x11-gdk-private.o `test -f 'gdk-private.c' || echo '$(srcdir)/'`gdk-private.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_x11-gdk-private.Tpo $(DEPDIR)/ibus_x11-gdk-private.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdk-private.c' object='ibus_x11-gdk-private.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -c -o ibus_x11-gdk-private.o `test -f 'gdk-private.c' || echo '$(srcdir)/'`gdk-private.c ibus_x11-gdk-private.obj: gdk-private.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -MT ibus_x11-gdk-private.obj -MD -MP -MF $(DEPDIR)/ibus_x11-gdk-private.Tpo -c -o ibus_x11-gdk-private.obj `if test -f 'gdk-private.c'; then $(CYGPATH_W) 'gdk-private.c'; else $(CYGPATH_W) '$(srcdir)/gdk-private.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_x11-gdk-private.Tpo $(DEPDIR)/ibus_x11-gdk-private.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdk-private.c' object='ibus_x11-gdk-private.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_x11_CFLAGS) $(CFLAGS) -c -o ibus_x11-gdk-private.obj `if test -f 'gdk-private.c'; then $(CYGPATH_W) 'gdk-private.c'; else $(CYGPATH_W) '$(srcdir)/gdk-private.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libexecPROGRAMS install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-libexecPROGRAMS .PRECIOUS: Makefile $(libIMdkit): (cd $(top_builddir)/util/IMdkit; make) $(libibus): (cd $(top_builddir)/src; make) locales.h: ( \ locale -a | \ gawk -F _ '{ if (length($$1) <= 3) print $$1 }' | \ uniq | sort | \ xargs python -c 'import sys;print "#define LOCALES_STRING \"%s\"" % ",".join(sys.argv[1:])' \ ) > $@ -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/client/x11/Makefile.am0000644000000000000000000000360412551654123013362 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libIMdkit = $(top_builddir)/util/IMdkit/libIMdkit.la libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libexec_PROGRAMS = ibus-x11 if ENABLE_GTK3 GTK_CFLAGS = @GTK3_CFLAGS@ GTK_LIBS = @GTK3_LIBS@ else GTK_CFLAGS = @GTK2_CFLAGS@ GTK_LIBS = @GTK2_LIBS@ endif ibus_x11_SOURCES = \ main.c \ gdk-private.c \ $(NULL) ibus_x11_DEPENDENCIES = \ $(libIMdkit) \ $(libibus) \ $(NULL) ibus_x11_LDADD = \ $(libIMdkit) \ $(libibus) \ @X11_LIBS@ \ $(GTK_LIBS) \ $(NULL) ibus_x11_CFLAGS = \ @X11_CFLAGS@ \ $(GTK_CFLAGS) \ @DBUS_CFLAGS@ \ -I$(top_srcdir)/util/IMdkit \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) noinst_HEADERS = \ gdk-private.h \ locales.h \ $(NULL) $(libIMdkit): (cd $(top_builddir)/util/IMdkit; make) $(libibus): (cd $(top_builddir)/src; make) locales.h: ( \ locale -a | \ gawk -F _ '{ if (length($$1) <= 3) print $$1 }' | \ uniq | sort | \ xargs python -c 'import sys;print "#define LOCALES_STRING \"%s\"" % ",".join(sys.argv[1:])' \ ) > $@ -include $(top_srcdir)/git.mk ibus-1.5.11/client/x11/gdk-private.h0000644000000000000000000000211212551654123013705 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus * Copyright (C) 2008 Peng Huang * Copyright (C) 2008 Red Hat, Inc. * * gdk-private.h: * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __GTK_PRIVATE_H_ #define __GTK_PRIVATE_H_ void translate_key_event (GdkDisplay *display, GdkEvent *event, XEvent *xevent); #endif ibus-1.5.11/client/Makefile.in0000644000000000000000000005664612551654255013006 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = client ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = gtk2 gtk3 x11 wayland am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ENABLE_GTK2_TRUE@GTK2 = gtk2 @ENABLE_GTK3_TRUE@GTK3 = gtk3 @ENABLE_XIM_TRUE@X11 = x11 @ENABLE_WAYLAND_TRUE@WAYLAND = wayland SUBDIRS = \ $(GTK2) \ $(GTK3) \ $(X11) \ $(WAYLAND) \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu client/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/client/Makefile.am0000644000000000000000000000214312551654123012746 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ENABLE_GTK2 GTK2 = gtk2 endif if ENABLE_GTK3 GTK3 = gtk3 endif if ENABLE_XIM X11 = x11 endif if ENABLE_WAYLAND WAYLAND = wayland endif SUBDIRS = \ $(GTK2) \ $(GTK3) \ $(X11) \ $(WAYLAND) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/client/wayland/0000755000000000000000000000000012551654532012435 500000000000000ibus-1.5.11/client/wayland/main.c0000644000000000000000000005605612551654123013455 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2013 Intel Corporation * Copyright (C) 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ #include "config.h" #include #include #include #include #include #include #include "input-method-client-protocol.h" struct _IBusWaylandIM { struct wl_input_method *input_method; struct wl_input_method_context *context; struct wl_keyboard *keyboard; IBusInputContext *ibuscontext; IBusText *preedit_text; guint preedit_cursor_pos; IBusModifierType modifiers; struct xkb_context *xkb_context; struct xkb_keymap *keymap; struct xkb_state *state; xkb_mod_mask_t shift_mask; xkb_mod_mask_t lock_mask; xkb_mod_mask_t control_mask; xkb_mod_mask_t mod1_mask; xkb_mod_mask_t mod2_mask; xkb_mod_mask_t mod3_mask; xkb_mod_mask_t mod4_mask; xkb_mod_mask_t mod5_mask; xkb_mod_mask_t super_mask; xkb_mod_mask_t hyper_mask; xkb_mod_mask_t meta_mask; uint32_t serial; GCancellable *cancellable; }; typedef struct _IBusWaylandIM IBusWaylandIM; struct _IBusWaylandKeyEvent { struct wl_input_method_context *context; uint32_t serial; uint32_t time; uint32_t key; enum wl_keyboard_key_state state; }; typedef struct _IBusWaylandKeyEvent IBusWaylandKeyEvent; struct _IBusWaylandSource { GSource source; GPollFD pfd; uint32_t mask; struct wl_display *display; }; typedef struct _IBusWaylandSource IBusWaylandSource; struct wl_display *_display = NULL; struct wl_registry *_registry = NULL; static IBusBus *_bus = NULL; static gboolean _use_sync_mode = FALSE; static gboolean _get_boolean_env (const gchar *name, gboolean defval) { const gchar *value = g_getenv (name); if (value == NULL) return defval; if (g_strcmp0 (value, "") == 0 || g_strcmp0 (value, "0") == 0 || g_strcmp0 (value, "false") == 0 || g_strcmp0 (value, "False") == 0 || g_strcmp0 (value, "FALSE") == 0) return FALSE; return TRUE; } static gboolean ibus_wayland_source_prepare (GSource *base, gint *timeout) { IBusWaylandSource *source = (IBusWaylandSource *) base; *timeout = -1; wl_display_flush (source->display); return FALSE; } static gboolean ibus_wayland_source_check (GSource *base) { IBusWaylandSource *source = (IBusWaylandSource *) base; if (source->pfd.revents & (G_IO_ERR | G_IO_HUP)) g_error ("Lost connection to wayland compositor"); return source->pfd.revents; } static gboolean ibus_wayland_source_dispatch (GSource *base, GSourceFunc callback, gpointer data) { IBusWaylandSource *source = (IBusWaylandSource *) base; if (source->pfd.revents) { wl_display_dispatch (source->display); source->pfd.revents = 0; } return TRUE; } static void ibus_wayland_source_finalize (GSource *source) { } static GSourceFuncs ibus_wayland_source_funcs = { ibus_wayland_source_prepare, ibus_wayland_source_check, ibus_wayland_source_dispatch, ibus_wayland_source_finalize }; GSource * ibus_wayland_source_new (struct wl_display *display) { GSource *source; IBusWaylandSource *wlsource; source = g_source_new (&ibus_wayland_source_funcs, sizeof (IBusWaylandSource)); wlsource = (IBusWaylandSource *) source; wlsource->display = display; wlsource->pfd.fd = wl_display_get_fd (display); wlsource->pfd.events = G_IO_IN | G_IO_ERR | G_IO_HUP; g_source_add_poll (source, &wlsource->pfd); return source; } static void _context_commit_text_cb (IBusInputContext *context, IBusText *text, IBusWaylandIM *wlim) { wl_input_method_context_commit_string (wlim->context, wlim->serial, text->text); } static void _context_forward_key_event_cb (IBusInputContext *context, guint keyval, guint keycode, guint modifiers, IBusWaylandIM *wlim) { uint32_t state; if (modifiers & IBUS_RELEASE_MASK) state = WL_KEYBOARD_KEY_STATE_RELEASED; else state = WL_KEYBOARD_KEY_STATE_PRESSED; wl_input_method_context_keysym (wlim->context, wlim->serial, 0, keyval, state, modifiers); } static void _context_show_preedit_text_cb (IBusInputContext *context, IBusWaylandIM *wlim) { /* CURSOR is byte offset. */ uint32_t cursor = g_utf8_offset_to_pointer (wlim->preedit_text->text, wlim->preedit_cursor_pos) - wlim->preedit_text->text; wl_input_method_context_preedit_cursor (wlim->context, cursor); wl_input_method_context_preedit_string (wlim->context, wlim->serial, wlim->preedit_text->text, wlim->preedit_text->text); } static void _context_hide_preedit_text_cb (IBusInputContext *context, IBusWaylandIM *wlim) { wl_input_method_context_preedit_string (wlim->context, wlim->serial, "", ""); } static void _context_update_preedit_text_cb (IBusInputContext *context, IBusText *text, gint cursor_pos, gboolean visible, IBusWaylandIM *wlim) { if (wlim->preedit_text) g_object_unref (wlim->preedit_text); wlim->preedit_text = g_object_ref_sink (text); wlim->preedit_cursor_pos = cursor_pos; if (visible) _context_show_preedit_text_cb (context, wlim); else _context_hide_preedit_text_cb (context, wlim); } static void handle_surrounding_text (void *data, struct wl_input_method_context *context, const char *text, uint32_t cursor, uint32_t anchor) { #if ENABLE_SURROUNDING IBusWaylandIM *wlim = data; if (wlim->ibuscontext != NULL && ibus_input_context_needs_surrounding_text (wlim->ibuscontext)) { /* CURSOR_POS and ANCHOR_POS are character offset. */ guint cursor_pos = g_utf8_pointer_to_offset (text, text + cursor); guint anchor_pos = g_utf8_pointer_to_offset (text, text + anchor); IBusText *ibustext = ibus_text_new_from_string (text); ibus_input_context_set_surrounding_text (wlim->ibuscontext, ibustext, cursor_pos, anchor_pos); } #endif } static void handle_reset (void *data, struct wl_input_method_context *context) { } static void handle_content_type (void *data, struct wl_input_method_context *context, uint32_t hint, uint32_t purpose) { } static void handle_invoke_action (void *data, struct wl_input_method_context *context, uint32_t button, uint32_t index) { } static void handle_commit_state (void *data, struct wl_input_method_context *context, uint32_t serial) { IBusWaylandIM *wlim = data; wlim->serial = serial; } static void handle_preferred_language (void *data, struct wl_input_method_context *context, const char *language) { } static const struct wl_input_method_context_listener context_listener = { handle_surrounding_text, handle_reset, handle_content_type, handle_invoke_action, handle_commit_state, handle_preferred_language }; static void input_method_keyboard_keymap (void *data, struct wl_keyboard *wl_keyboard, uint32_t format, int32_t fd, uint32_t size) { IBusWaylandIM *wlim = data; GMappedFile *map; GError *error; if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { close(fd); return; } error = NULL; map = g_mapped_file_new_from_fd (fd, FALSE, &error); if (map == NULL) { close (fd); return; } wlim->keymap = xkb_map_new_from_string (wlim->xkb_context, g_mapped_file_get_contents (map), XKB_KEYMAP_FORMAT_TEXT_V1, 0); g_mapped_file_unref (map); close(fd); if (!wlim->keymap) { return; } wlim->state = xkb_state_new (wlim->keymap); if (!wlim->state) { xkb_map_unref (wlim->keymap); return; } wlim->shift_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Shift"); wlim->lock_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Lock"); wlim->control_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Control"); wlim->mod1_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Mod1"); wlim->mod2_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Mod2"); wlim->mod3_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Mod3"); wlim->mod4_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Mod4"); wlim->mod5_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Mod5"); wlim->super_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Super"); wlim->hyper_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Hyper"); wlim->meta_mask = 1 << xkb_map_mod_get_index (wlim->keymap, "Meta"); } static void _process_key_event_done (GObject *object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = (IBusInputContext *)object; IBusWaylandKeyEvent *event = (IBusWaylandKeyEvent *) user_data; GError *error = NULL; gboolean retval = ibus_input_context_process_key_event_async_finish ( context, res, &error); if (error != NULL) { g_warning ("Process Key Event failed: %s.", error->message); g_error_free (error); } if (!retval) { wl_input_method_context_key (event->context, event->serial, event->time, event->key, event->state); } g_free (event); } static void input_method_keyboard_key (void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { IBusWaylandIM *wlim = data; uint32_t code; uint32_t num_syms; const xkb_keysym_t *syms; xkb_keysym_t sym; guint32 modifiers; if (!wlim->state) return; if (!wlim->ibuscontext) { wl_input_method_context_key (wlim->context, serial, time, key, state); return; } code = key + 8; num_syms = xkb_key_get_syms (wlim->state, code, &syms); sym = XKB_KEY_NoSymbol; if (num_syms == 1) sym = syms[0]; modifiers = wlim->modifiers; if (state == WL_KEYBOARD_KEY_STATE_RELEASED) modifiers |= IBUS_RELEASE_MASK; if (_use_sync_mode) { gboolean retval = ibus_input_context_process_key_event (wlim->ibuscontext, sym, code, modifiers); if (!retval) { wl_input_method_context_key (wlim->context, serial, time, key, state); } } else { IBusWaylandKeyEvent *event = g_new (IBusWaylandKeyEvent, 1); event->context = wlim->context; event->serial = serial; event->time = time; event->key = key; event->state = state; ibus_input_context_process_key_event_async (wlim->ibuscontext, sym, code, modifiers, -1, NULL, _process_key_event_done, event); } } static void input_method_keyboard_modifiers (void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { IBusWaylandIM *wlim = data; struct wl_input_method_context *context = wlim->context; xkb_mod_mask_t mask; xkb_state_update_mask (wlim->state, mods_depressed, mods_latched, mods_locked, 0, 0, group); mask = xkb_state_serialize_mods (wlim->state, XKB_STATE_DEPRESSED | XKB_STATE_LATCHED); wlim->modifiers = 0; if (mask & wlim->shift_mask) wlim->modifiers |= IBUS_SHIFT_MASK; if (mask & wlim->lock_mask) wlim->modifiers |= IBUS_LOCK_MASK; if (mask & wlim->control_mask) wlim->modifiers |= IBUS_CONTROL_MASK; if (mask & wlim->mod1_mask) wlim->modifiers |= IBUS_MOD1_MASK; if (mask & wlim->mod2_mask) wlim->modifiers |= IBUS_MOD2_MASK; if (mask & wlim->mod3_mask) wlim->modifiers |= IBUS_MOD3_MASK; if (mask & wlim->mod4_mask) wlim->modifiers |= IBUS_MOD4_MASK; if (mask & wlim->mod5_mask) wlim->modifiers |= IBUS_MOD5_MASK; if (mask & wlim->super_mask) wlim->modifiers |= IBUS_SUPER_MASK; if (mask & wlim->hyper_mask) wlim->modifiers |= IBUS_HYPER_MASK; if (mask & wlim->meta_mask) wlim->modifiers |= IBUS_META_MASK; wl_input_method_context_modifiers (context, serial, mods_depressed, mods_latched, mods_locked, group); } static const struct wl_keyboard_listener keyboard_listener = { input_method_keyboard_keymap, NULL, /* enter */ NULL, /* leave */ input_method_keyboard_key, input_method_keyboard_modifiers }; static void _create_input_context_done (GObject *object, GAsyncResult *res, gpointer user_data) { IBusWaylandIM *wlim = (IBusWaylandIM *) user_data; GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish ( _bus, res, &error); if (wlim->cancellable != NULL) { g_object_unref (wlim->cancellable); wlim->cancellable = NULL; } if (context == NULL) { g_warning ("Create input context failed: %s.", error->message); g_error_free (error); } else { wlim->ibuscontext = context; g_signal_connect (wlim->ibuscontext, "commit-text", G_CALLBACK (_context_commit_text_cb), wlim); g_signal_connect (wlim->ibuscontext, "forward-key-event", G_CALLBACK (_context_forward_key_event_cb), wlim); g_signal_connect (wlim->ibuscontext, "update-preedit-text", G_CALLBACK (_context_update_preedit_text_cb), wlim); g_signal_connect (wlim->ibuscontext, "show-preedit-text", G_CALLBACK (_context_show_preedit_text_cb), wlim); g_signal_connect (wlim->ibuscontext, "hide-preedit-text", G_CALLBACK (_context_hide_preedit_text_cb), wlim); #ifdef ENABLE_SURROUNDING ibus_input_context_set_capabilities (wlim->ibuscontext, IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_SURROUNDING_TEXT); #else ibus_input_context_set_capabilities (wlim->ibuscontext, IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT); #endif ibus_input_context_focus_in (wlim->ibuscontext); } } static void input_method_activate (void *data, struct wl_input_method *input_method, struct wl_input_method_context *context) { IBusWaylandIM *wlim = data; if (wlim->context) { wl_input_method_context_destroy (wlim->context); wlim->context = NULL; } wlim->serial = 0; wlim->context = context; wl_input_method_context_add_listener (context, &context_listener, wlim); wlim->keyboard = wl_input_method_context_grab_keyboard (context); wl_keyboard_add_listener(wlim->keyboard, &keyboard_listener, wlim); if (wlim->ibuscontext) { g_object_unref (wlim->ibuscontext); wlim->ibuscontext = NULL; } wlim->cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (_bus, "wayland", -1, wlim->cancellable, _create_input_context_done, wlim); } static void input_method_deactivate (void *data, struct wl_input_method *input_method, struct wl_input_method_context *context) { IBusWaylandIM *wlim = data; if (wlim->cancellable) { /* Cancel any ongoing create input context request. */ g_cancellable_cancel (wlim->cancellable); g_object_unref (wlim->cancellable); wlim->cancellable = NULL; } if (wlim->ibuscontext) { ibus_input_context_focus_out (wlim->ibuscontext); g_object_unref (wlim->ibuscontext); wlim->ibuscontext = NULL; } if (wlim->preedit_text) { g_object_unref (wlim->preedit_text); wlim->preedit_text = NULL; } if (wlim->context) { wl_input_method_context_destroy (wlim->context); wlim->context = NULL; } } static const struct wl_input_method_listener input_method_listener = { input_method_activate, input_method_deactivate }; static void registry_handle_global (void *data, struct wl_registry *registry, uint32_t name, const char *interface, uint32_t version) { IBusWaylandIM *wlim = data; if (!g_strcmp0 (interface, "wl_input_method")) { wlim->input_method = wl_registry_bind (registry, name, &wl_input_method_interface, 1); wl_input_method_add_listener (wlim->input_method, &input_method_listener, wlim); } } static void registry_handle_global_remove (void *data, struct wl_registry *registry, uint32_t name) { } static const struct wl_registry_listener registry_listener = { registry_handle_global, registry_handle_global_remove }; gint main (gint argc, gchar **argv) { IBusWaylandIM wlim; GSource *source; ibus_init (); _bus = ibus_bus_new (); if (!ibus_bus_is_connected (_bus)) { g_printerr ("Cannot connect to ibus-daemon\n"); return EXIT_FAILURE; } _display = wl_display_connect (NULL); if (_display == NULL) { g_printerr ("Failed to connect to Wayland server: %s\n", g_strerror (errno)); return EXIT_FAILURE; } _registry = wl_display_get_registry (_display); memset (&wlim, 0, sizeof (wlim)); wl_registry_add_listener (_registry, ®istry_listener, &wlim); wl_display_roundtrip (_display); if (wlim.input_method == NULL) { g_printerr ("No input_method global\n"); return EXIT_FAILURE; } wlim.xkb_context = xkb_context_new (0); if (wlim.xkb_context == NULL) { g_printerr ("Failed to create XKB context\n"); return EXIT_FAILURE; } _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); source = ibus_wayland_source_new (_display); g_source_set_priority (source, G_PRIORITY_DEFAULT); g_source_set_can_recurse (source, TRUE); g_source_attach (source, NULL); ibus_main (); return EXIT_SUCCESS; } ibus-1.5.11/client/wayland/input-method-protocol.c0000644000000000000000000000737012551654123017000 00000000000000/* * Copyright © 2012, 2013 Intel Corporation * * Permission to use, copy, modify, distribute, and sell this * software and its documentation for any purpose is hereby granted * without fee, provided that the above copyright notice appear in * all copies and that both that copyright notice and this permission * notice appear in supporting documentation, and that the name of * the copyright holders not be used in advertising or publicity * pertaining to distribution of the software without specific, * written prior permission. The copyright holders make no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF * THIS SOFTWARE. */ #include #include #include "wayland-util.h" extern const struct wl_interface wl_keyboard_interface; extern const struct wl_interface wl_input_method_context_interface; extern const struct wl_interface wl_input_method_context_interface; extern const struct wl_interface wl_input_panel_surface_interface; extern const struct wl_interface wl_surface_interface; extern const struct wl_interface wl_output_interface; static const struct wl_interface *types[] = { NULL, NULL, NULL, NULL, NULL, &wl_keyboard_interface, &wl_input_method_context_interface, &wl_input_method_context_interface, &wl_input_panel_surface_interface, &wl_surface_interface, &wl_output_interface, NULL, }; static const struct wl_message wl_input_method_context_requests[] = { { "destroy", "", types + 0 }, { "commit_string", "us", types + 0 }, { "preedit_string", "uss", types + 0 }, { "preedit_styling", "uuu", types + 0 }, { "preedit_cursor", "i", types + 0 }, { "delete_surrounding_text", "iu", types + 0 }, { "cursor_position", "ii", types + 0 }, { "modifiers_map", "a", types + 0 }, { "keysym", "uuuuu", types + 0 }, { "grab_keyboard", "n", types + 5 }, { "key", "uuuu", types + 0 }, { "modifiers", "uuuuu", types + 0 }, { "language", "us", types + 0 }, { "text_direction", "uu", types + 0 }, }; static const struct wl_message wl_input_method_context_events[] = { { "surrounding_text", "suu", types + 0 }, { "reset", "", types + 0 }, { "content_type", "uu", types + 0 }, { "invoke_action", "uu", types + 0 }, { "commit_state", "u", types + 0 }, { "preferred_language", "s", types + 0 }, }; WL_EXPORT const struct wl_interface wl_input_method_context_interface = { "wl_input_method_context", 1, 14, wl_input_method_context_requests, 6, wl_input_method_context_events, }; static const struct wl_message wl_input_method_events[] = { { "activate", "n", types + 6 }, { "deactivate", "o", types + 7 }, }; WL_EXPORT const struct wl_interface wl_input_method_interface = { "wl_input_method", 1, 0, NULL, 2, wl_input_method_events, }; static const struct wl_message wl_input_panel_requests[] = { { "get_input_panel_surface", "no", types + 8 }, }; WL_EXPORT const struct wl_interface wl_input_panel_interface = { "wl_input_panel", 1, 1, wl_input_panel_requests, 0, NULL, }; static const struct wl_message wl_input_panel_surface_requests[] = { { "set_toplevel", "ou", types + 10 }, { "set_overlay_panel", "", types + 0 }, }; WL_EXPORT const struct wl_interface wl_input_panel_surface_interface = { "wl_input_panel_surface", 1, 2, wl_input_panel_surface_requests, 0, NULL, }; ibus-1.5.11/client/wayland/README0000644000000000000000000000115112551654123013227 00000000000000The following two files are generated with wayland-scanner: input-method-protocol.c input-method-client-protocol.h We include them in the distribution instead of generating them, since the Wayland protocol structure will unlikely change. Do not modify those files manually. To generate them, use the wayland-scanner command as follows. You can find input-method.xml in the Weston source code (maybe it will be moved to the Wayland source code later). $ wayland-scanner code < input-method.xml \ > input-method-protocol.c $ wayland-scanner client-header < input-method.xml \ > input-method-client-protocol.h ibus-1.5.11/client/wayland/input-method-client-protocol.h0000644000000000000000000003427512551654123020265 00000000000000/* * Copyright © 2012, 2013 Intel Corporation * * Permission to use, copy, modify, distribute, and sell this * software and its documentation for any purpose is hereby granted * without fee, provided that the above copyright notice appear in * all copies and that both that copyright notice and this permission * notice appear in supporting documentation, and that the name of * the copyright holders not be used in advertising or publicity * pertaining to distribution of the software without specific, * written prior permission. The copyright holders make no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF * THIS SOFTWARE. */ #ifndef INPUT_METHOD_CLIENT_PROTOCOL_H #define INPUT_METHOD_CLIENT_PROTOCOL_H #ifdef __cplusplus extern "C" { #endif #include #include #include "wayland-client.h" struct wl_client; struct wl_resource; struct wl_input_method_context; struct wl_input_method; struct wl_input_panel; struct wl_input_panel_surface; extern const struct wl_interface wl_input_method_context_interface; extern const struct wl_interface wl_input_method_interface; extern const struct wl_interface wl_input_panel_interface; extern const struct wl_interface wl_input_panel_surface_interface; /** * wl_input_method_context - input method context * @surrounding_text: surrounding text event * @reset: (none) * @content_type: (none) * @invoke_action: (none) * @commit_state: (none) * @preferred_language: (none) * * Corresponds to a text model on input method side. An input method * context is created on text mode activation on the input method side. It * allows to receive information about the text model from the application * via events. Input method contexts do not keep state after deactivation * and should be destroyed after deactivation is handled. * * Text is generally UTF-8 encoded, indices and lengths are in bytes. * * Serials are used to synchronize the state between the text input and an * input method. New serials are sent by the text input in the commit_state * request and are used by the input method to indicate the known text * input state in events like preedit_string, commit_string, and keysym. * The text input can then ignore events from the input method which are * based on an outdated state (for example after a reset). */ struct wl_input_method_context_listener { /** * surrounding_text - surrounding text event * @text: (none) * @cursor: (none) * @anchor: (none) * * The plain surrounding text around the input position. Cursor * is the position in bytes within the surrounding text relative to * the beginning of the text. Anchor is the position in bytes of * the selection anchor within the surrounding text relative to the * beginning of the text. If there is no selected text anchor is * the same as cursor. */ void (*surrounding_text)(void *data, struct wl_input_method_context *wl_input_method_context, const char *text, uint32_t cursor, uint32_t anchor); /** * reset - (none) */ void (*reset)(void *data, struct wl_input_method_context *wl_input_method_context); /** * content_type - (none) * @hint: (none) * @purpose: (none) */ void (*content_type)(void *data, struct wl_input_method_context *wl_input_method_context, uint32_t hint, uint32_t purpose); /** * invoke_action - (none) * @button: (none) * @index: (none) */ void (*invoke_action)(void *data, struct wl_input_method_context *wl_input_method_context, uint32_t button, uint32_t index); /** * commit_state - (none) * @serial: serial of text input state */ void (*commit_state)(void *data, struct wl_input_method_context *wl_input_method_context, uint32_t serial); /** * preferred_language - (none) * @language: (none) */ void (*preferred_language)(void *data, struct wl_input_method_context *wl_input_method_context, const char *language); }; static inline int wl_input_method_context_add_listener(struct wl_input_method_context *wl_input_method_context, const struct wl_input_method_context_listener *listener, void *data) { return wl_proxy_add_listener((struct wl_proxy *) wl_input_method_context, (void (**)(void)) listener, data); } #define WL_INPUT_METHOD_CONTEXT_DESTROY 0 #define WL_INPUT_METHOD_CONTEXT_COMMIT_STRING 1 #define WL_INPUT_METHOD_CONTEXT_PREEDIT_STRING 2 #define WL_INPUT_METHOD_CONTEXT_PREEDIT_STYLING 3 #define WL_INPUT_METHOD_CONTEXT_PREEDIT_CURSOR 4 #define WL_INPUT_METHOD_CONTEXT_DELETE_SURROUNDING_TEXT 5 #define WL_INPUT_METHOD_CONTEXT_CURSOR_POSITION 6 #define WL_INPUT_METHOD_CONTEXT_MODIFIERS_MAP 7 #define WL_INPUT_METHOD_CONTEXT_KEYSYM 8 #define WL_INPUT_METHOD_CONTEXT_GRAB_KEYBOARD 9 #define WL_INPUT_METHOD_CONTEXT_KEY 10 #define WL_INPUT_METHOD_CONTEXT_MODIFIERS 11 #define WL_INPUT_METHOD_CONTEXT_LANGUAGE 12 #define WL_INPUT_METHOD_CONTEXT_TEXT_DIRECTION 13 static inline void wl_input_method_context_set_user_data(struct wl_input_method_context *wl_input_method_context, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) wl_input_method_context, user_data); } static inline void * wl_input_method_context_get_user_data(struct wl_input_method_context *wl_input_method_context) { return wl_proxy_get_user_data((struct wl_proxy *) wl_input_method_context); } static inline void wl_input_method_context_destroy(struct wl_input_method_context *wl_input_method_context) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_DESTROY); wl_proxy_destroy((struct wl_proxy *) wl_input_method_context); } static inline void wl_input_method_context_commit_string(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *text) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_COMMIT_STRING, serial, text); } static inline void wl_input_method_context_preedit_string(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *text, const char *commit) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_PREEDIT_STRING, serial, text, commit); } static inline void wl_input_method_context_preedit_styling(struct wl_input_method_context *wl_input_method_context, uint32_t index, uint32_t length, uint32_t style) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_PREEDIT_STYLING, index, length, style); } static inline void wl_input_method_context_preedit_cursor(struct wl_input_method_context *wl_input_method_context, int32_t index) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_PREEDIT_CURSOR, index); } static inline void wl_input_method_context_delete_surrounding_text(struct wl_input_method_context *wl_input_method_context, int32_t index, uint32_t length) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_DELETE_SURROUNDING_TEXT, index, length); } static inline void wl_input_method_context_cursor_position(struct wl_input_method_context *wl_input_method_context, int32_t index, int32_t anchor) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_CURSOR_POSITION, index, anchor); } static inline void wl_input_method_context_modifiers_map(struct wl_input_method_context *wl_input_method_context, struct wl_array *map) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_MODIFIERS_MAP, map); } static inline void wl_input_method_context_keysym(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t time, uint32_t sym, uint32_t state, uint32_t modifiers) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_KEYSYM, serial, time, sym, state, modifiers); } static inline struct wl_keyboard * wl_input_method_context_grab_keyboard(struct wl_input_method_context *wl_input_method_context) { struct wl_proxy *keyboard; keyboard = wl_proxy_create((struct wl_proxy *) wl_input_method_context, &wl_keyboard_interface); if (!keyboard) return NULL; wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_GRAB_KEYBOARD, keyboard); return (struct wl_keyboard *) keyboard; } static inline void wl_input_method_context_key(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_KEY, serial, time, key, state); } static inline void wl_input_method_context_modifiers(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_MODIFIERS, serial, mods_depressed, mods_latched, mods_locked, group); } static inline void wl_input_method_context_language(struct wl_input_method_context *wl_input_method_context, uint32_t serial, const char *language) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_LANGUAGE, serial, language); } static inline void wl_input_method_context_text_direction(struct wl_input_method_context *wl_input_method_context, uint32_t serial, uint32_t direction) { wl_proxy_marshal((struct wl_proxy *) wl_input_method_context, WL_INPUT_METHOD_CONTEXT_TEXT_DIRECTION, serial, direction); } /** * wl_input_method - input method * @activate: activate event * @deactivate: activate event * * An input method object is responsible to compose text in response to * input from hardware or virtual keyboards. There is one input method * object per seat. On activate there is a new input method context object * created which allows the input method to communicate with the text * model. */ struct wl_input_method_listener { /** * activate - activate event * @id: (none) * * A text model was activated. Creates an input method context * object which allows communication with the text model. */ void (*activate)(void *data, struct wl_input_method *wl_input_method, struct wl_input_method_context *id); /** * deactivate - activate event * @context: (none) * * The text model corresponding to the context argument was * deactivated. The input method context should be destroyed after * deactivation is handled. */ void (*deactivate)(void *data, struct wl_input_method *wl_input_method, struct wl_input_method_context *context); }; static inline int wl_input_method_add_listener(struct wl_input_method *wl_input_method, const struct wl_input_method_listener *listener, void *data) { return wl_proxy_add_listener((struct wl_proxy *) wl_input_method, (void (**)(void)) listener, data); } static inline void wl_input_method_set_user_data(struct wl_input_method *wl_input_method, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) wl_input_method, user_data); } static inline void * wl_input_method_get_user_data(struct wl_input_method *wl_input_method) { return wl_proxy_get_user_data((struct wl_proxy *) wl_input_method); } static inline void wl_input_method_destroy(struct wl_input_method *wl_input_method) { wl_proxy_destroy((struct wl_proxy *) wl_input_method); } #define WL_INPUT_PANEL_GET_INPUT_PANEL_SURFACE 0 static inline void wl_input_panel_set_user_data(struct wl_input_panel *wl_input_panel, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) wl_input_panel, user_data); } static inline void * wl_input_panel_get_user_data(struct wl_input_panel *wl_input_panel) { return wl_proxy_get_user_data((struct wl_proxy *) wl_input_panel); } static inline void wl_input_panel_destroy(struct wl_input_panel *wl_input_panel) { wl_proxy_destroy((struct wl_proxy *) wl_input_panel); } static inline struct wl_input_panel_surface * wl_input_panel_get_input_panel_surface(struct wl_input_panel *wl_input_panel, struct wl_surface *surface) { struct wl_proxy *id; id = wl_proxy_create((struct wl_proxy *) wl_input_panel, &wl_input_panel_surface_interface); if (!id) return NULL; wl_proxy_marshal((struct wl_proxy *) wl_input_panel, WL_INPUT_PANEL_GET_INPUT_PANEL_SURFACE, id, surface); return (struct wl_input_panel_surface *) id; } #ifndef WL_INPUT_PANEL_SURFACE_POSITION_ENUM #define WL_INPUT_PANEL_SURFACE_POSITION_ENUM enum wl_input_panel_surface_position { WL_INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM = 0, }; #endif /* WL_INPUT_PANEL_SURFACE_POSITION_ENUM */ #define WL_INPUT_PANEL_SURFACE_SET_TOPLEVEL 0 #define WL_INPUT_PANEL_SURFACE_SET_OVERLAY_PANEL 1 static inline void wl_input_panel_surface_set_user_data(struct wl_input_panel_surface *wl_input_panel_surface, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) wl_input_panel_surface, user_data); } static inline void * wl_input_panel_surface_get_user_data(struct wl_input_panel_surface *wl_input_panel_surface) { return wl_proxy_get_user_data((struct wl_proxy *) wl_input_panel_surface); } static inline void wl_input_panel_surface_destroy(struct wl_input_panel_surface *wl_input_panel_surface) { wl_proxy_destroy((struct wl_proxy *) wl_input_panel_surface); } static inline void wl_input_panel_surface_set_toplevel(struct wl_input_panel_surface *wl_input_panel_surface, struct wl_output *output, uint32_t position) { wl_proxy_marshal((struct wl_proxy *) wl_input_panel_surface, WL_INPUT_PANEL_SURFACE_SET_TOPLEVEL, output, position); } static inline void wl_input_panel_surface_set_overlay_panel(struct wl_input_panel_surface *wl_input_panel_surface) { wl_proxy_marshal((struct wl_proxy *) wl_input_panel_surface, WL_INPUT_PANEL_SURFACE_SET_OVERLAY_PANEL); } #ifdef __cplusplus } #endif #endif ibus-1.5.11/client/wayland/Makefile.in0000644000000000000000000007227212551654255014436 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ libexec_PROGRAMS = ibus-wayland$(EXEEXT) subdir = client/wayland ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" PROGRAMS = $(libexec_PROGRAMS) am__objects_1 = ibus_wayland-input-method-protocol.$(OBJEXT) am_ibus_wayland_OBJECTS = $(am__objects_1) ibus_wayland-main.$(OBJEXT) ibus_wayland_OBJECTS = $(am_ibus_wayland_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_wayland_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_wayland_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_wayland_SOURCES) DIST_SOURCES = $(ibus_wayland_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la protocol_sources = \ input-method-protocol.c \ input-method-client-protocol.h \ $(NULL) ibus_wayland_SOURCES = \ $(protocol_sources) \ main.c \ $(NULL) ibus_wayland_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_wayland_LDADD = \ $(libibus) \ $(GIO2_LIBS) \ $(WAYLAND_LIBS) \ $(NULL) ibus_wayland_CFLAGS = \ $(GIO2_CFLAGS) \ $(WAYLAND_CFLAGS) \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) EXTRA_DIST = \ README \ $(protocol_sources) \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client/wayland/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu client/wayland/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-wayland$(EXEEXT): $(ibus_wayland_OBJECTS) $(ibus_wayland_DEPENDENCIES) $(EXTRA_ibus_wayland_DEPENDENCIES) @rm -f ibus-wayland$(EXEEXT) $(AM_V_CCLD)$(ibus_wayland_LINK) $(ibus_wayland_OBJECTS) $(ibus_wayland_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_wayland-input-method-protocol.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_wayland-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_wayland-input-method-protocol.o: input-method-protocol.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -MT ibus_wayland-input-method-protocol.o -MD -MP -MF $(DEPDIR)/ibus_wayland-input-method-protocol.Tpo -c -o ibus_wayland-input-method-protocol.o `test -f 'input-method-protocol.c' || echo '$(srcdir)/'`input-method-protocol.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-input-method-protocol.Tpo $(DEPDIR)/ibus_wayland-input-method-protocol.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='input-method-protocol.c' object='ibus_wayland-input-method-protocol.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -c -o ibus_wayland-input-method-protocol.o `test -f 'input-method-protocol.c' || echo '$(srcdir)/'`input-method-protocol.c ibus_wayland-input-method-protocol.obj: input-method-protocol.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -MT ibus_wayland-input-method-protocol.obj -MD -MP -MF $(DEPDIR)/ibus_wayland-input-method-protocol.Tpo -c -o ibus_wayland-input-method-protocol.obj `if test -f 'input-method-protocol.c'; then $(CYGPATH_W) 'input-method-protocol.c'; else $(CYGPATH_W) '$(srcdir)/input-method-protocol.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-input-method-protocol.Tpo $(DEPDIR)/ibus_wayland-input-method-protocol.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='input-method-protocol.c' object='ibus_wayland-input-method-protocol.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -c -o ibus_wayland-input-method-protocol.obj `if test -f 'input-method-protocol.c'; then $(CYGPATH_W) 'input-method-protocol.c'; else $(CYGPATH_W) '$(srcdir)/input-method-protocol.c'; fi` ibus_wayland-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -MT ibus_wayland-main.o -MD -MP -MF $(DEPDIR)/ibus_wayland-main.Tpo -c -o ibus_wayland-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-main.Tpo $(DEPDIR)/ibus_wayland-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_wayland-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -c -o ibus_wayland-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_wayland-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -MT ibus_wayland-main.obj -MD -MP -MF $(DEPDIR)/ibus_wayland-main.Tpo -c -o ibus_wayland-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-main.Tpo $(DEPDIR)/ibus_wayland-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_wayland-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_wayland_CFLAGS) $(CFLAGS) -c -o ibus_wayland-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(libexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libexecPROGRAMS install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-libexecPROGRAMS .PRECIOUS: Makefile $(libibus): (cd $(top_builddir)/src; make) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/client/wayland/Makefile.am0000644000000000000000000000276712551654123014421 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA. libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libexec_PROGRAMS = ibus-wayland protocol_sources = \ input-method-protocol.c \ input-method-client-protocol.h \ $(NULL) ibus_wayland_SOURCES = \ $(protocol_sources) \ main.c \ $(NULL) ibus_wayland_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_wayland_LDADD = \ $(libibus) \ $(GIO2_LIBS) \ $(WAYLAND_LIBS) \ $(NULL) ibus_wayland_CFLAGS = \ $(GIO2_CFLAGS) \ $(WAYLAND_CFLAGS) \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) $(libibus): (cd $(top_builddir)/src; make) EXTRA_DIST = \ README \ $(protocol_sources) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/autogen.sh0000755000000000000000000000134112551654123011434 00000000000000#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. PKG_NAME="ibus" (test -f $srcdir/configure.ac \ && test -f $srcdir/README ) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level $PKG_NAME directory" exit 1 } which gnome-autogen.sh || { echo "Not found gnome-autogen.sh. You may need to install gnome-common" exit 1 } (test -f $srcdir/ChangeLog) || { touch $srcdir/ChangeLog } CFLAGS=${CFLAGS-"-Wall -Wformat -Werror=format-security"} # need --enable-gtk-doc for gnome-autogen.sh to make dist ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.11 CFLAGS="$CFLAGS" . gnome-autogen.sh "$@" ibus-1.5.11/test-driver0000755000000000000000000001104012551654261011631 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/ltmain.sh0000644000000000000000000105152212551654220011260 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.2 TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 ibus-1.5.11/python-config.py0000755000000000000000000000261212551654123012576 00000000000000#!/usr/bin/python2.5 import sys import os import getopt from distutils import sysconfig valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', 'ldflags', 'help'] def exit_with_usage(code=1): print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0], '|'.join('--'+opt for opt in valid_opts)) sys.exit(code) try: opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) except getopt.error: exit_with_usage() if not opts: exit_with_usage() opt = opts[0][0] pyver = sysconfig.get_config_var('VERSION') getvar = sysconfig.get_config_var if opt == '--help': exit_with_usage(0) elif opt == '--prefix': print sysconfig.PREFIX elif opt == '--exec-prefix': print sysconfig.EXEC_PREFIX elif opt in ('--includes', '--cflags'): flags = ['-I' + sysconfig.get_python_inc(), '-I' + sysconfig.get_python_inc(plat_specific=True)] if opt == '--cflags': flags.extend(getvar('CFLAGS').split()) print ' '.join(flags) elif opt in ('--libs', '--ldflags'): libs = getvar('LIBS').split() + getvar('SYSLIBS').split() libs.append('-lpython'+pyver) # add the prefix/lib/pythonX.Y/config dir, but only if there is no # shared library in prefix/lib/. if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'): libs.insert(0, '-L' + getvar('LIBPL')) print ' '.join(libs) ibus-1.5.11/NEWS0000644000000000000000000000000012551654123010121 00000000000000ibus-1.5.11/setup/0000755000000000000000000000000012551655057010663 500000000000000ibus-1.5.11/setup/setup.ui0000644000000000000000000020005712551654123012277 00000000000000 Horizontal Vertical Top left corner Top right corner Bottom left corner Bottom right corner Custom Do not show Hide automatically Always False 12 IBus Preferences False center-always ibus-setup True vertical True False 12 True True vertical True False 18 12 12 12 12 True False 0 none True False 5 2 12 6 6 12 True False The shortcut keys for switching to next input method in the list start Next input method: 3 4 GTK_FILL GTK_FILL True False False The shortcut keys for switching to previous input method in the list start Previous input method: 4 5 GTK_FILL GTK_FILL horizontal True False 6 True True False True True 0 ... False True True False False True False True 1 1 2 GTK_FILL horizontal True False 6 True True False True True 0 ... False True True False False True False True 1 1 2 3 4 GTK_FILL horizontal True False 6 > True False True False True True 0 ... False True False True False False True False True 1 1 2 4 5 GTK_FILL True False The shortcut keys for turning input method on or off start Enable or disable: GTK_FILL GTK_FILL True False start Enable: 1 2 GTK_FILL GTK_FILL horizontal True False 6 True True False True True 0 ... False True True True False True False True 1 1 2 1 2 GTK_FILL True False start Disable: 2 3 GTK_FILL GTK_FILL horizontal True False 6 True True False True True 0 ... False True True True False True False True 1 1 2 2 3 GTK_FILL True False <b>Keyboard Shortcuts</b> True False True 0 True False 0 none True False 7 2 12 6 6 12 True False Set the orientation of candidates in lookup table start Candidates orientation: right GTK_FILL GTK_FILL True False model_candidates_orientation 0 1 2 GTK_FILL True False Set the behavior of ibus how to show or hide language bar start Show property panel: right 1 2 GTK_FILL GTK_FILL False True start Language panel position: right 2 3 GTK_FILL GTK_FILL True False model_panel_show_mode 0 1 2 1 2 GTK_FILL False True model_panel_position 0 1 2 2 3 GTK_FILL Show icon on system tray False True True False Show icon on system tray False start True 2 3 4 GTK_FILL GTK_FILL Show input method name on language bar False True True False Show input method's name on language bar when check the checkbox False start True 2 4 5 GTK_FILL GTK_FILL Embed preedit text in application window False True True False Embed the preedit text of input method in the application window False start True 2 5 6 GTK_FILL GTK_FILL Use custom font: False True True False False True start True 6 7 GTK_FILL GTK_FILL False True True True False 1 2 6 7 GTK_FILL True False <b>Font and Style</b> True False True 1 True False General False vertical True False 12 12 12 12 horizontal True False True False vertical True False 6 True False True False True 0 240 300 True True in True True True True 1 True True 0 vertical True False 5 start 12 _Add True False True False True True Add the selected input method into the enabled input methods False False False 0 _Remove True False True False True True Remove the selected input method from the enabled input methods False False False 1 _Up True False True False True True Move up the selected input method in the enabled input methods list False False False 2 _Down True False True False True True Move down the selected input method in the enabled input methods False False False 3 _About True False True False True True Show information of the selected input method False False False 4 _Preferences True False True False True True Show setup of the selected input method False False False 5 False True 1 True True 0 horizontal True False 6 6 True False dialog-information 2 False True 0 True False 0 True 74 <small><i>The active input method can be switched around from the selected ones in the above list by pressing the keyboard shortcut keys or clicking the panel icon.</i></small> True True True 1 False True 1 1 True False Input Method 1 False vertical True False 12 12 12 12 True False 0 none vertical True False 6 6 24 Use system keyboard layout False True True False Use system keyboard (XKB) layout False start True False False 0 True False <b>Keyboard Layout</b> True False False 0 True False 0 none vertical True False 6 6 24 Share the same input method among all applications False True True False False start True False False 0 True False <b>Global input method settings</b> True False False 1 2 True False Advanced 3 False vertical False True True False <big><b>IBus</b></big> <small>The intelligent input bus</small> Homepage: https://github.com/ibus/ibus/wiki True center True True 1 False True 0 none Start ibus on login False True True False False True start True 6 12 True False <b>Startup</b> True False False 2 3 True False About 3 False True True 0 horizontal True False 12 end _Close True False True True False False False False 0 False True 1 ibus-1.5.11/setup/icon.py0000644000000000000000000000552412551654123012104 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "load_icon" ) from gi.repository import Gdk from gi.repository import GdkPixbuf from gi.repository import Gtk from os import path icon_theme = Gtk.IconTheme.get_default() dir = path.dirname(__file__) icondir = path.join(dir, "..", "icons") icon_theme.prepend_search_path(icondir) icon_cache = {} # load_icon: # @icon_name_or_path: Can be a name or path but not stock id # because gtk_icon_theme_load_icon() cannot fallback the stock id to # a real file name against gtk_image_new_from_stock(). # @size: #GtkIconSize def load_icon(icon_name_or_path, size): if (icon_name_or_path, size) in icon_cache: return icon_cache[(icon_name_or_path, size)] icon_size = Gtk.icon_size_lookup(size) if icon_size[0]: icon_size = icon_size[1] pixbuf = None try: pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon_name_or_path) w, h = pixbuf.get_width(), pixbuf.get_height() rate = max(w, h) / float(icon_size) w = int(w / rate) h = int(h / rate) pixbuf = pixbuf.scale_simple(w, h, GdkPixbuf.InterpType.BILINEAR) except: # import traceback # traceback.print_exc() pass if pixbuf == None: try: theme = Gtk.IconTheme.get_default() pixbuf = theme.load_icon(icon_name_or_path, icon_size, 0) except: # import traceback # traceback.print_exc() pass if pixbuf == None: try: theme = Gtk.IconTheme.get_default() pixbuf = theme.load_icon('ibus-engine', icon_size, 0) except: # import traceback # traceback.print_exc() pass if pixbuf == None: try: theme = Gtk.IconTheme.get_default() pixbuf = theme.load_icon('image-missing', icon_size, 0) except: # import traceback # traceback.print_exc() pass icon_cache[(icon_name_or_path, size)] = pixbuf return pixbuf ibus-1.5.11/setup/ibus-setup.in0000644000000000000000000000220112551654123013217 00000000000000#!/bin/sh # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ libexecdir=@libexecdir@ export IBUS_PREFIX=@prefix@ export IBUS_DATAROOTDIR=@datarootdir@ export IBUS_LOCALEDIR=@localedir@ export IBUS_LIBEXECDIR=${libexecdir} exec @PYTHON@ @prefix@/share/ibus/setup/main.py $@ ibus-1.5.11/setup/enginecombobox.py0000644000000000000000000001416512551654123014153 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA import locale import functools import sys from gi.repository import GObject from gi.repository import Gtk from gi.repository import IBus from gi.repository import Pango from icon import load_icon from i18n import _, N_ class EngineComboBox(Gtk.ComboBox): __gtype_name__ = 'EngineComboBox' __gproperties__ = { 'active-engine' : ( object, 'selected engine', 'selected engine', GObject.ParamFlags.READABLE) } def __init__(self): super(EngineComboBox, self).__init__() self.connect("notify::active", self.__notify_active_cb) self.__model = None renderer = Gtk.CellRendererPixbuf() renderer.set_property("xalign", 0) renderer.set_property("xpad", 2) self.pack_start(renderer, False) self.set_cell_data_func(renderer, self.__icon_cell_data_cb, None) renderer = Gtk.CellRendererText() renderer.set_property("xalign", 0) renderer.set_property("xpad", 2) self.pack_start(renderer, True) self.set_cell_data_func(renderer, self.__name_cell_data_cb, None) def set_engines(self, engines): self.__model = Gtk.TreeStore(object) iter1 = self.__model.append(None) self.__model.set(iter1, 0, 0) langs = {} for e in engines: l = IBus.get_language_name(e.get_language()) if l == None: l = "" if l not in langs: langs[l] = [] langs[l].append(e) keys = list(langs.keys()) keys.sort(key=functools.cmp_to_key(locale.strcoll)) loc = locale.getlocale()[0] # None on C locale if loc == None or loc == 'C': loc = 'en_US' current_lang = IBus.get_language_name(loc) # move current language to the first place if current_lang in keys: keys.remove(current_lang) keys.insert(0, current_lang) #add "Others" to the end of the combo box if IBus.get_language_name("Other") in keys: keys.remove(IBus.get_language_name("Other")) keys += [IBus.get_language_name("Other")] for l in keys: iter1 = self.__model.append(None) self.__model.set(iter1, 0, l) def cmp_engine(a, b): if a.get_rank() == b.get_rank(): return locale.strcoll(a.get_longname(), b.get_longname()) return int(b.get_rank() - a.get_rank()) langs[l].sort(key=functools.cmp_to_key(cmp_engine)) for e in langs[l]: iter2 = self.__model.append(iter1) self.__model.set(iter2, 0, e) self.set_model(self.__model) self.set_active(0) def __icon_cell_data_cb(self, celllayout, renderer, model, iter, data): engine = self.__model.get_value(iter, 0) if isinstance(engine, str): renderer.set_property("visible", False) renderer.set_property("sensitive", False) elif sys.version < '3' and isinstance (engine, unicode): renderer.set_property("visible", False) renderer.set_property("sensitive", False) elif isinstance(engine, int): renderer.set_property("visible", False) renderer.set_property("sensitive", False) else: renderer.set_property("visible", True) renderer.set_property("sensitive", True) pixbuf = load_icon(engine.get_icon(), Gtk.IconSize.LARGE_TOOLBAR) renderer.set_property("pixbuf", pixbuf) def __name_cell_data_cb(self, celllayout, renderer, model, iter, data): engine = self.__model.get_value(iter, 0) if isinstance (engine, str): renderer.set_property("sensitive", False) renderer.set_property("text", engine) renderer.set_property("weight", Pango.Weight.NORMAL) elif sys.version < '3' and isinstance (engine, unicode): renderer.set_property("sensitive", False) renderer.set_property("text", engine) renderer.set_property("weight", Pango.Weight.NORMAL) elif isinstance(engine, int): renderer.set_property("sensitive", True) renderer.set_property("text", _("Select an input method")) renderer.set_property("weight", Pango.Weight.NORMAL) else: renderer.set_property("sensitive", True) renderer.set_property("text", engine.get_longname()) renderer.set_property("weight", Pango.Weight.BOLD if engine.get_rank() > 0 else Pango.Weight.NORMAL) def __notify_active_cb(self, combobox, property): self.notify("active-engine") def do_get_property(self, property): if property.name == "active-engine": i = self.get_active() if i == 0 or i == -1: return None iter = self.get_active_iter() return self.get_model()[iter][0] else: raise AttributeError('unknown property %s' % property.name) def get_active_engine(self): return self.get_property("active-engine") if __name__ == "__main__": combo = EngineComboBox() combo.set_engines([IBus.EngineDesc(language="zh")]) w = Gtk.Window() w.add(combo) w.show_all() Gtk.main() ibus-1.5.11/setup/ibus-setup.1.in0000644000000000000000000000156712551654123013374 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) LI Daobing , 2008. .\" Copyright (C) Takao Fujiwara , 2013-2015. .\" Copyright (c) Peng Huang , 2013. .\" .TH "IBUS-SETUP" 1 "November 2008" "@VERSION@" "User Commands" .SH NAME .B ibus-setup \- configuration program for ibus .SH "SYNOPSIS" .B ibus-setup .SH "DESCRIPTION" .PP IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. It also may help developers to develop input method easily. .PP .B ibus-setup is the configuration program for IBus. .PP Homepage: https://github.com/ibus/ibus/wiki .SH BUGS If you find a bug, please report it at http://code.google.com/p/ibus/issues/list .SH "SEE ALSO" .BR ibus (1) ibus-1.5.11/setup/enginetreeview.py0000644000000000000000000002356112551654123014175 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from gi.repository import GLib from gi.repository import GObject from gi.repository import Gtk from gi.repository import IBus from gi.repository import Pango import i18n from icon import load_icon from i18n import _, N_ class EngineTreeView(Gtk.TreeView): __gtype_name__ = 'EngineTreeView' __gproperties__ = { 'active-engine' : ( object, 'selected engine', 'selected engine', GObject.ParamFlags.READABLE), 'engines' : ( object, 'engines', 'engines', GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE) } def __init__(self): super(EngineTreeView, self).__init__() self.__engines = [] self.__changed = False # self.set_headers_visible(True) self.set_reorderable(True) self.__model = Gtk.ListStore(GObject.TYPE_PYOBJECT, GObject.TYPE_STRING) self.set_model(self.__model) self.__model.connect("row-changed", self.__emit_changed_delay_cb, "row-changed") self.__model.connect("row-deleted", self.__emit_changed_delay_cb, "row-deleted") self.__model.connect("row-inserted", self.__emit_changed_delay_cb, "row-inserted") self.__model.connect("rows-reordered", self.__emit_changed_delay_cb, "rows-reordered") self.__model.set_default_sort_func(self.__sort_engines, None) self.__model.set_sort_column_id(-1, Gtk.SortType.ASCENDING) # create im name & icon column column = Gtk.TreeViewColumn(_("Input Method")) column.set_min_width(220) renderer = Gtk.CellRendererPixbuf() renderer.set_property("xalign", 0) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__icon_cell_data_cb) renderer = Gtk.CellRendererText() renderer.set_property("xalign", 0) renderer.set_property("ellipsize", Pango.EllipsizeMode.END) column.pack_start(renderer, True) column.set_cell_data_func(renderer, self.__name_cell_data_cb) self.append_column(column) # create im keyboard layout column renderer = Gtk.CellRendererCombo() model = Gtk.ListStore(GObject.TYPE_STRING) model.append(("us",)) model.append(("jp",)) model.append(("xkb",)) renderer.set_property("xalign", 0) renderer.set_property("model", model) renderer.set_property("text-column", 0) renderer.set_property("has-entry", False) renderer.set_property("editable", True) renderer.connect("changed", self.__engine_layout_changed_cb) column = Gtk.TreeViewColumn(_("Kbd")) column.set_expand(False) column.set_fixed_width(32) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__layout_cell_data_cb) # self.append_column(column) self.get_selection().connect("changed", self.__selection_changed_cb) def __sort_engines(self, model, a, b, data): engine_a = model[a][0] engine_b = model[b][0] language_a = IBus.get_language_name(engine_a.get_language()) language_b = IBus.get_language_name(engine_b.get_language()) longname_a = i18n.gettext_engine_longname(engine_a) longname_b = i18n.gettext_engine_longname(engine_b) label_a = "%s - %s" % (language_a, longname_a) label_b = "%s - %s" % (language_b, longname_b) # http://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons return (label_a > label_b) - (label_a < label_b) def __selection_changed_cb(self, *args): self.notify("active-engine"); def __emit_changed(self, *args): if self.__changed: self.__changed = False self.notify("engines") def __emit_changed_delay_cb(self, *args): if not self.__changed: self.__changed = True GLib.idle_add(self.__emit_changed) def __icon_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) # When append_engine() is called, self.__model.append(None) # is called internally and engine == None could happen in # a slow system. if engine == None: return icon_size = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)[0] pixbuf = load_icon(engine.get_icon(), Gtk.IconSize.LARGE_TOOLBAR) renderer.set_property("pixbuf", pixbuf) def __name_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) # When append_engine() is called, self.__model.append(None) # is called internally and engine == None could happen in # a slow system. if engine == None: return renderer.set_property("sensitive", True) language = IBus.get_language_name(engine.get_language()) longname = i18n.gettext_engine_longname(engine) renderer.set_property("text", "%s - %s" % (language, longname)) renderer.set_property("weight", Pango.Weight.NORMAL) def __layout_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) layout = self.__model.get_value(it, 1) renderer.set_property("sensitive", True) if not layout: layout = engine.layout renderer.set_property("text", layout) renderer.set_property("weight", Pango.Weight.NORMAL) def __engine_layout_changed_cb(self, combo, path, it): return i = self.__model.get_iter(path) layout = combo.get_property("model").get_value(it, 0) self.__model.set_value(i, 1, layout) def do_get_property(self, prop): if prop.name == "active-engine": it = self.get_selected_iter() if it == None: return None row = self.__model.get(it, 0) return row[0] elif prop.name == "engines": engines = [ r[0] for r in self.__model if r[0] != None] return engines else: raise AttributeError('unknown property %s' % prop.name) def do_set_property(self, prop, value): if prop.name == "active-engine": raise AttributeError("active-engine is readonly") elif prop.name == "engines": set_engines(value) else: raise AttributeError('unknown property %s' % prop.name) def set_engines(self, engines): self.__model.clear() self.__engines = [] for e in engines: if e in self.__engines: continue it = self.__model.append(None) i18n.init_textdomain(e.get_textdomain()) self.__model.set(it, 0, e) self.__engines.append(e) self.__emit_changed() def get_selected_iter(self): selection = self.get_selection() if selection: return selection.get_selected()[1] def get_engines(self): return self.__engines def get_sorted_engines(self): return self.get_property("engines") def get_active_engine(self): return self.get_property("active-engine") def prepend_engine(self, engine): if engine == None or engine in self.__engines: return it = self.__model.prepend(None) self.__model.set(it, 0, engine) self.__engines = [engine] + self.__engines def append_engine(self, engine): if engine == None or engine in self.__engines: return it = self.__model.append(None) self.__model.set(it, 0, engine) self.__engines.append(engine) def remove_engine(self): it = self.get_selected_iter() if it == None: return row = self.__model[it] engine = row[0] self.__engines.remove(engine) index = row.path.get_indices()[0] self.__model.remove(it) try: row = self.__model[index] selection = self.get_selection() selection.select_path(row.path) except: pass def move_up_engine(self): it = self.get_selected_iter() if it == None: return row = self.__model[it] index = row.path.get_indices()[0] if index == 0: return self.__model.swap(it, self.__model[index - 1].iter) self.scroll_to_cell(row.path, None) def move_down_engine(self): it = self.get_selected_iter() if it == None: return row = self.__model[it] index = row.path.get_indices()[0] last_row = self.__model[-1] last_index = last_row.path.get_indices()[0] if index == last_index: return self.__model.swap(it, self.__model[index + 1].iter) self.scroll_to_cell(row.path, None) GObject.type_register(EngineTreeView) if __name__ == "__main__": tree = EngineTreeView() tree.set_engines([IBus.EngineDesc(language="zh")]) w = Gtk.Window() w.add(tree) w.show_all() Gtk.main() ibus-1.5.11/setup/main.py0000644000000000000000000005215612551654123012103 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # for python2 from __future__ import print_function import os import signal import sys import time from gi.repository import GLib # set_prgname before importing other modules to show the name in warning # messages when import modules are failed. GLib.set_prgname('ibus-setup') from gi.repository import GdkX11 from gi.repository import Gio from gi.repository import Gtk from gi.repository import IBus from os import path import i18n import keyboardshortcut import locale from enginecombobox import EngineComboBox from enginedialog import EngineDialog from enginetreeview import EngineTreeView from engineabout import EngineAbout from i18n import DOMAINNAME, _, N_ ( COLUMN_NAME, COLUMN_ENABLE, COLUMN_PRELOAD, COLUMN_VISIBLE, COLUMN_ICON, COLUMN_DATA, ) = list(range(6)) ( DATA_NAME, DATA_LOCAL_NAME, DATA_LANG, DATA_ICON, DATA_AUTHOR, DATA_CREDITS, DATA_EXEC, DATA_STARTED, DATA_PRELOAD ) = list(range(9)) class Setup(object): def __flush_gtk_events(self): while Gtk.events_pending(): Gtk.main_iteration() def __init__(self): super(Setup, self).__init__() self.__settings_general = Gio.Settings( schema = "org.freedesktop.ibus.general"); self.__settings_hotkey = Gio.Settings( schema = "org.freedesktop.ibus.general.hotkey"); self.__settings_panel = Gio.Settings( schema = "org.freedesktop.ibus.panel"); # IBus.Bus() calls ibus_bus_new(). # Gtk.Builder().add_from_file() also calls ibus_bus_new_async() # via ibus_im_context_new(). # Then if IBus.Bus() is called after Gtk.Builder().add_from_file(), # the connection delay would be happened without an async # finish function. self.__bus = None self.__init_bus() # Gtk.ListBox has been available since gtk 3.10 self.__has_list_box = hasattr(Gtk, 'ListBox') gtk_builder_file = path.join(path.dirname(__file__), "./setup.ui") self.__builder = Gtk.Builder() self.__builder.set_translation_domain(DOMAINNAME) self.__builder.add_from_file(gtk_builder_file); self.__init_ui() def __init_hotkey(self): name = 'triggers' label = 'switch_engine' shortcuts = self.__settings_hotkey.get_strv(name) button = self.__builder.get_object("button_%s" % label) entry = self.__builder.get_object("entry_%s" % label) entry.set_text("; ".join(shortcuts)) tooltip = "\n".join(shortcuts) tooltip += "\n" + \ _("Use shortcut with shift to switch to the previous input method") entry.set_tooltip_text(tooltip) button.connect("clicked", self.__shortcut_button_clicked_cb, name, "general/hotkey", label, entry) def __init_panel(self): # lookup table orientation self.__combobox_lookup_table_orientation = self.__builder.get_object( "combobox_lookup_table_orientation") self.__settings_panel.bind('lookup-table-orientation', self.__combobox_lookup_table_orientation, 'active', Gio.SettingsBindFlags.DEFAULT) # auto hide self.__combobox_panel_show = self.__builder.get_object( "combobox_panel_show") self.__settings_panel.bind('show', self.__combobox_panel_show, 'active', Gio.SettingsBindFlags.DEFAULT) # panel position self.__combobox_panel_position = self.__builder.get_object( "combobox_panel_position") self.__combobox_panel_position.set_active(3) #self.__settings_panel.bind('position', # self.__combobox_panel_position, # 'active', # Gio.SettingsBindFlags.DEFAULT) # custom font self.__checkbutton_custom_font = self.__builder.get_object( "checkbutton_custom_font") self.__settings_panel.bind('use-custom-font', self.__checkbutton_custom_font, 'active', Gio.SettingsBindFlags.DEFAULT) self.__fontbutton_custom_font = self.__builder.get_object( "fontbutton_custom_font") self.__settings_panel.bind('custom-font', self.__fontbutton_custom_font, 'font-name', Gio.SettingsBindFlags.DEFAULT) self.__settings_panel.bind('use-custom-font', self.__fontbutton_custom_font, 'sensitive', Gio.SettingsBindFlags.GET) # show icon on system tray self.__checkbutton_show_icon_on_systray = self.__builder.get_object( "checkbutton_show_icon_on_systray") self.__settings_panel.bind('show-icon-on-systray', self.__checkbutton_show_icon_on_systray, 'active', Gio.SettingsBindFlags.DEFAULT) # show ime name self.__checkbutton_show_im_name = self.__builder.get_object( "checkbutton_show_im_name") self.__settings_panel.bind('show-im-name', self.__checkbutton_show_im_name, 'active', Gio.SettingsBindFlags.DEFAULT) def __init_general(self): # embed preedit text self.__checkbutton_embed_preedit_text = self.__builder.get_object( "checkbutton_embed_preedit_text") self.__settings_general.bind('embed-preedit-text', self.__checkbutton_embed_preedit_text, 'active', Gio.SettingsBindFlags.DEFAULT) # use system keyboard layout setting self.__checkbutton_use_sys_layout = self.__builder.get_object( "checkbutton_use_sys_layout") self.__settings_general.bind('use-system-keyboard-layout', self.__checkbutton_use_sys_layout, 'active', Gio.SettingsBindFlags.DEFAULT) # use global ime setting self.__checkbutton_use_global_engine = self.__builder.get_object( "checkbutton_use_global_engine") self.__settings_general.bind('use-global-engine', self.__checkbutton_use_global_engine, 'active', Gio.SettingsBindFlags.DEFAULT) # init engine page self.__engines = self.__bus.list_engines() self.__combobox = self.__builder.get_object("combobox_engines") if self.__has_list_box: self.__combobox.set_no_show_all(True) self.__combobox.hide() else: self.__combobox.set_engines(self.__engines) tmp_dict = {} for e in self.__engines: tmp_dict[e.get_name()] = e engine_names = self.__settings_general.get_strv('preload-engines') engines = [tmp_dict[name] for name in engine_names if name in tmp_dict] self.__treeview = self.__builder.get_object("treeview_engines") self.__treeview.set_engines(engines) button = self.__builder.get_object("button_engine_add") if self.__has_list_box: button.set_sensitive(True) button.connect("clicked", self.__button_engine_add_cb) else: button.connect("clicked", self.__button_engine_add_cb_deprecate) button = self.__builder.get_object("button_engine_remove") button.connect("clicked", lambda *args:self.__treeview.remove_engine()) button = self.__builder.get_object("button_engine_up") button.connect("clicked", lambda *args:self.__treeview.move_up_engine()) button = self.__builder.get_object("button_engine_down") button.connect("clicked", lambda *args:self.__treeview.move_down_engine()) button = self.__builder.get_object("button_engine_about") button.connect("clicked", self.__button_engine_about_cb) self.__engine_setup_exec_list = {} button = self.__builder.get_object("button_engine_preferences") button.connect("clicked", self.__button_engine_preferences_cb) self.__combobox.connect("notify::active-engine", self.__combobox_notify_active_engine_cb) self.__treeview.connect("notify::active-engine", self.__treeview_notify_cb) self.__treeview.connect("notify::engines", self.__treeview_notify_cb) def __init_ui(self): # add icon search path self.__window = self.__builder.get_object("window_preferences") self.__window.connect("delete-event", Gtk.main_quit) self.__window.connect("notify::window", self.__gdk_window_set_cb) self.__button_close = self.__builder.get_object("button_close") self.__button_close.connect("clicked", Gtk.main_quit) # auto start ibus self.__checkbutton_auto_start = self.__builder.get_object( "checkbutton_auto_start") self.__checkbutton_auto_start.set_active(self.__is_auto_start()) self.__checkbutton_auto_start.connect("toggled", self.__checkbutton_auto_start_toggled_cb) self.__init_hotkey() self.__init_panel() self.__init_general() def __gdk_window_set_cb(self, object, pspec): str = '%u' % GdkX11.X11Window.get_xid(object.get_window()) GLib.setenv('IBUS_SETUP_XID', str, True) def __combobox_notify_active_engine_cb(self, combobox, property): engine = self.__combobox.get_active_engine() button = self.__builder.get_object("button_engine_add") button.set_sensitive( engine != None and engine not in self.__treeview.get_engines()) def __get_engine_setup_exec_args(self, engine): args = [] if engine == None: return args setup = str(engine.get_setup()) if len(setup) != 0: args = setup.split() args.insert(1, path.basename(args[0])) return args name = str(engine.get_name()) libexecdir = os.environ['IBUS_LIBEXECDIR'] setup_path = (libexecdir + '/' + 'ibus-setup-' if libexecdir != None \ else 'ibus-setup-') + name.split(':')[0] if path.exists(setup_path): args.append(setup_path) args.append(path.basename(setup_path)) return args def __treeview_notify_cb(self, treeview, prop): if prop.name not in ("active-engine", "engines"): return engines = self.__treeview.get_sorted_engines() engine = self.__treeview.get_active_engine() self.__builder.get_object("button_engine_remove").set_sensitive(engine != None) self.__builder.get_object("button_engine_about").set_sensitive(engine != None) self.__builder.get_object("button_engine_up").set_sensitive(engine not in engines[:1]) self.__builder.get_object("button_engine_down").set_sensitive(engine not in engines[-1:]) obj = self.__builder.get_object("button_engine_preferences") if len(self.__get_engine_setup_exec_args(engine)) != 0: obj.set_sensitive(True) else: obj.set_sensitive(False) if prop.name == "engines": engines = self.__treeview.get_engines() engine_names = [e.get_name() for e in engines] self.__settings_general.set_strv('preload-engines', engine_names) def __button_engine_add_cb(self, button): dialog = EngineDialog(transient_for = self.__window) dialog.set_engines(self.__engines) id = dialog.run() if id != Gtk.ResponseType.APPLY: dialog.destroy() return engine = dialog.get_selected_engine() dialog.destroy() self.__treeview.append_engine(engine) def __button_engine_add_cb_deprecate(self, button): engine = self.__combobox.get_active_engine() self.__treeview.append_engine(engine) def __button_engine_about_cb(self, button): engine = self.__treeview.get_active_engine() if engine: about = EngineAbout(engine = engine, transient_for = self.__window) about.run() about.destroy() def __button_engine_preferences_cb(self, button): engine = self.__treeview.get_active_engine() args = self.__get_engine_setup_exec_args(engine) if len(args) == 0: return name = engine.get_name() if name in list(self.__engine_setup_exec_list.keys()): try: wpid, sts = os.waitpid(self.__engine_setup_exec_list[name], os.WNOHANG) # the setup is still running. if wpid == 0: return except OSError: pass del self.__engine_setup_exec_list[name] self.__engine_setup_exec_list[name] = os.spawnl(os.P_NOWAIT, *args) def __init_bus(self): self.__bus = IBus.Bus() if self.__bus.is_connected(): return message = _("The IBus daemon is not running. Do you wish to start it?") dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.QUESTION, buttons = Gtk.ButtonsType.YES_NO, text = message) id = dlg.run() dlg.destroy() self.__flush_gtk_events() if id != Gtk.ResponseType.YES: sys.exit(0) main_loop = GLib.MainLoop() timeout = 5 GLib.timeout_add_seconds(timeout, lambda *args: main_loop.quit()) self.__bus.connect("connected", lambda *args: main_loop.quit()) os.spawnlp(os.P_NOWAIT, "ibus-daemon", "ibus-daemon", "--xim") main_loop.run() if self.__bus.is_connected(): message = _("IBus has been started! " "If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" ) dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, buttons = Gtk.ButtonsType.OK, text = message) id = dlg.run() dlg.destroy() self.__flush_gtk_events() else: # Translators: %d == 5 currently message = _("IBus daemon could not be started in %d seconds") dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, buttons = Gtk.ButtonsType.OK, text = message % timeout) id = dlg.run() dlg.destroy() self.__flush_gtk_events() sys.exit(0) def __shortcut_button_clicked_cb(self, button, name, section, _name, entry): buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, _("_OK"), Gtk.ResponseType.OK) title1 = _("Select keyboard shortcut for %s") # Translators: Title of the window title2 = _("switching input methods") title = title1 % title2 dialog = keyboardshortcut.KeyboardShortcutSelectionDialog( title = title, transient_for = self.__window) dialog.add_buttons(*buttons) text = entry.get_text() if text: shortcuts = text.split("; ") else: shortcuts = None dialog.set_shortcuts(shortcuts) id = dialog.run() shortcuts = dialog.get_shortcuts() dialog.destroy() if id != Gtk.ResponseType.OK: return self.__settings_hotkey.set_strv(name, shortcuts) text = "; ".join(shortcuts) entry.set_text(text) tooltip = "\n".join(shortcuts) tooltip += "\n" + \ _("Use shortcut with shift to switch to the previous input method") entry.set_tooltip_text(tooltip) def __item_started_column_toggled_cb(self, cell, path_str, model): # get toggled iter iter = model.get_iter_from_string(path_str) data = model.get_value(iter, COLUMN_DATA) # do something with the value if data[DATA_STARTED] == False: try: self.__bus.register_start_engine(data[DATA_LANG], data[DATA_NAME]) except Exception as e: dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, transient_for = self.__window, buttons = Gtk.ButtonsType.CLOSE, text = str(e)) dlg.run() dlg.destroy() self.__flush_gtk_events() return else: try: self.__bus.register_stop_engine(data[DATA_LANG], data[DATA_NAME]) except Exception as e: dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, transient_for = self.__window, buttons = Gtk.ButtonsType.CLOSE, text = str(e)) dlg.run() dlg.destroy() self.__flush_gtk_events() return data[DATA_STARTED] = not data[DATA_STARTED] # set new value model.set(iter, COLUMN_ENABLE, data[DATA_STARTED]) def __item_preload_column_toggled_cb(self, cell, path_str, model): # get toggled iter iter = model.get_iter_from_string(path_str) data = model.get_value(iter, COLUMN_DATA) data[DATA_PRELOAD] = not data[DATA_PRELOAD] engine = "%s:%s" % (data[DATA_LANG], data[DATA_NAME]) if data[DATA_PRELOAD]: if engine not in self.__preload_engines: self.__preload_engines.add(engine) self.__settings_general.set_strv('preload-engines', list(self.__preload_engines)) else: if engine in self.__preload_engines: self.__preload_engines.remove(engine) self.__settings_general.set_strv('preload-engines', list(self.__preload_engines)) # set new value model.set(iter, COLUMN_PRELOAD, data[DATA_PRELOAD]) def __is_auto_start(self): link_file = path.join(GLib.get_user_config_dir(), "autostart/ibus.desktop") ibus_desktop = path.join(os.getenv("IBUS_PREFIX"), "share/applications/ibus.desktop") if not path.exists(link_file): return False if not path.islink(link_file): return False if path.realpath(link_file) != ibus_desktop: return False return True def __checkbutton_auto_start_toggled_cb(self, button): auto_start_dir = path.join(GLib.get_user_config_dir(), "autostart") if not path.isdir(auto_start_dir): os.makedirs(auto_start_dir) link_file = path.join(GLib.get_user_config_dir(), "autostart/ibus.desktop") ibus_desktop = path.join(os.getenv("IBUS_PREFIX"), "share/applications/ibus.desktop") # unlink file try: os.unlink(link_file) except: pass if self.__checkbutton_auto_start.get_active(): os.symlink(ibus_desktop, link_file) def __sigusr1_cb(self, *args): self.__window.present() def run(self): self.__window.show_all() signal.signal(signal.SIGUSR1, self.__sigusr1_cb) Gtk.main() if __name__ == "__main__": try: locale.setlocale(locale.LC_ALL, '') except locale.Error: print("Using the fallback 'C' locale", file=sys.stderr) locale.setlocale(locale.LC_ALL, 'C') i18n.init_textdomain(DOMAINNAME) i18n.init_textdomain('xkeyboard-config') setup = Setup() setup.run() ibus-1.5.11/setup/ibus-setup.desktop.in0000644000000000000000000000025512551654123014676 00000000000000[Desktop Entry] _Name=IBus Preferences _Comment=Set IBus Preferences Exec=ibus-setup Icon=ibus-setup Terminal=false Type=Application StartupNotify=true Categories=Settings; ibus-1.5.11/setup/enginedialog.py0000644000000000000000000003126312551654123013600 00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus - The Input Bus # # Copyright (c) 2015 Peng Huang # Copyright (c) 2015 Takao Fujiwara # Copyright (c) 2013-2015 Red Hat, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # This file is ported from # gnome-control-center/panels/region/cc-input-chooser.c from gi.repository import Gtk from gi.repository import GLib from gi.repository import IBus import functools import gettext import i18n import locale from icon import load_icon from i18n import _, N_ ROW_TRAVEL_DIRECTION_NONE, \ ROW_TRAVEL_DIRECTION_FORWARD, \ ROW_TRAVEL_DIRECTION_BACKWARD = list(range(3)) class EngineDialog(Gtk.Dialog): __gtype_name__ = 'EngineDialog' __initial_languages = [ IBus.get_language_name('en_US'), IBus.get_language_name('en_GB'), IBus.get_language_name('de_DE'), IBus.get_language_name('fr_FR'), IBus.get_language_name('es_ES'), IBus.get_language_name('zh_CN'), IBus.get_language_name('ja_JP'), IBus.get_language_name('ru_RU'), IBus.get_language_name('ar_EG') ] def __init__(self, transient_for = None): super(EngineDialog, self).__init__( title = _("Select an input method"), transient_for = transient_for, resizable = True) buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, _("_Add"), Gtk.ResponseType.APPLY) self.add_buttons(*buttons) self.set_response_sensitive(Gtk.ResponseType.APPLY, False) self.__engines_for_lang = {} self.__untrans_for_lang = {} self.__langs = {} self.__scrolled = Gtk.ScrolledWindow( hscrollbar_policy = Gtk.PolicyType.NEVER, vscrollbar_policy = Gtk.PolicyType.NEVER, shadow_type = Gtk.ShadowType.IN, margin_left = 6, margin_right = 6, margin_top = 6, margin_bottom = 6) self.vbox.add(self.__scrolled) viewport = Gtk.Viewport() self.__scrolled.add(viewport) self.__list = Gtk.ListBox(vexpand = True, halign = Gtk.Align.FILL, valign = Gtk.Align.FILL) viewport.add(self.__list) self.__adjustment = self.__scrolled.get_vadjustment() self.__list.set_adjustment(self.__adjustment) self.__list.set_filter_func(self.__list_filter, None) self.__list.connect('row-activated', self.__row_activated) self.__list.connect('row-selected', self.__row_selected) self.__showing_extra = False self.__more_row = self.__more_row_new() self.__filter_timeout_id = 0 self.__filter_word = None self.__filter_entry = Gtk.SearchEntry(hexpand = True, margin_left = 6, margin_right = 6, margin_top = 6, margin_bottom = 6) self.__filter_entry.set_no_show_all(True) self.__filter_entry.connect('search-changed', self.__filter_changed) self.vbox.add(self.__filter_entry) self.show_all() def __list_filter(self, row, data): if row == self.__more_row: return not self.__showing_extra if not self.__showing_extra and row.is_extra: return False if self.__filter_word == None: return True name = row.name.lower() untrans = row.untrans.lower() if self.__filter_word != None: word = self.__filter_word.lower() if name.startswith(word): return True if untrans.startswith(word): return True return False def __row_activated(self, box, row): if row == self.__more_row: self.__show_more() return if row.back: self.__filter_entry.set_text('') self.__show_lang_rows() return if row.lang_info: self.__filter_entry.set_text('') self.__show_engines_for_lang(row) return def __row_selected(self, box, row): self.set_response_sensitive(Gtk.ResponseType.APPLY, row != None) def __padded_label_new(self, text, icon, alignment, direction): hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) if direction == ROW_TRAVEL_DIRECTION_BACKWARD: rtl = (Gtk.Widget.get_default_direction() == \ Gtk.TextDirection.RTL) if rtl: arrow = Gtk.Image.new_from_icon_name( 'go-previous-rtl-symbolic', Gtk.IconSize.MENU) else: arrow = Gtk.Image.new_from_icon_name( 'go-previous-symbolic', Gtk.IconSize.MENU) hbox.pack_start(arrow, False, True, 0) if icon != None: pixbuf = load_icon(icon, Gtk.IconSize.LARGE_TOOLBAR) image = Gtk.Image(pixbuf = pixbuf) hbox.pack_start(image, False, True, 0) label = Gtk.Label(label = text) label.set_halign(alignment) label.set_valign(Gtk.Align.CENTER) label.set_margin_left(20) label.set_margin_right(20) label.set_margin_top(6) label.set_margin_bottom(6) hbox.pack_start(label, True, True, 0) return hbox def __list_box_row_new(self, text): row = Gtk.ListBoxRow() row.name = text row.is_extra = False row.lang_info = False row.back = False row.untrans = '' row.engine = None return row def __lang_row_new(self, text): row = self.__list_box_row_new(text) row.lang_info = True if len(self.__untrans_for_lang) != 0: row.untrans = self.__untrans_for_lang[text] if not self.__showing_extra and text not in self.__initial_languages: row.is_extra = True widget = self.__padded_label_new(text, None, Gtk.Align.CENTER, ROW_TRAVEL_DIRECTION_NONE) row.add(widget) return row def __more_row_new(self): row = Gtk.ListBoxRow() hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) row.add(hbox) row.set_tooltip_text(_("More…")) arrow = Gtk.Image.new_from_icon_name('view-more-symbolic', Gtk.IconSize.MENU) arrow.set_margin_left(20) arrow.set_margin_right(20) arrow.set_margin_top(6) arrow.set_margin_bottom(6) arrow.set_halign(Gtk.Align.CENTER) arrow.set_valign(Gtk.Align.CENTER) hbox.pack_start(arrow, True, True, 0) return row def __back_row_new(self, text): row = self.__list_box_row_new(text) row.lang_info = True row.back = True widget = self.__padded_label_new(text, None, Gtk.Align.CENTER, ROW_TRAVEL_DIRECTION_BACKWARD) row.add(widget) return row def __engine_row_new(self, engine): longname = i18n.gettext_engine_longname(engine) description = i18n.gettext_engine_description(engine) row = self.__list_box_row_new(longname) row.untrans = engine.get_longname() row.set_tooltip_text(description) row.engine = engine widget = self.__padded_label_new(longname, engine.get_icon(), Gtk.Align.START, ROW_TRAVEL_DIRECTION_NONE) row.add(widget) return row def __set_fixed_size(self): if self.__scrolled.get_policy()[0] == Gtk.PolicyType.AUTOMATIC: return (width, height) = self.get_size() self.set_size_request(width, height) self.__scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) def __remove_all_children(self): for l in self.__list.get_children(): self.__list.remove(l) def __add_engine_rows_for_lang(self, row): lang = row.name def cmp_engine(a, b): if a.get_rank() == b.get_rank(): a_longname = i18n.gettext_engine_longname(a) b_longname = i18n.gettext_engine_longname(b) return locale.strcoll(a_longname, b_longname) return int(b.get_rank() - a.get_rank()) self.__engines_for_lang[lang].sort( key = functools.cmp_to_key(cmp_engine)) for e in self.__engines_for_lang[lang]: row = self.__engine_row_new(e) self.__list.add(row) def __show_lang_rows(self): self.__remove_all_children() for lang in self.__langs: row = self.__lang_row_new(lang) self.__list.add(row) self.__list.add(self.__more_row) self.__list.show_all() self.__adjustment.set_value(self.__adjustment.get_lower()) self.__list.invalidate_filter() self.__list.set_selection_mode(Gtk.SelectionMode.SINGLE) def __show_more(self): self.__set_fixed_size() self.__filter_entry.show() self.__showing_extra = True self.__list.invalidate_filter() def __show_engines_for_lang(self, row): text = row.name self.__set_fixed_size() self.__remove_all_children() row = self.__back_row_new(text) self.__list.add(row) self.__add_engine_rows_for_lang(row) self.__list.show_all() self.__adjustment.set_value(self.__adjustment.get_lower()) def __do_filter(self): text = self.__filter_entry.get_text() if text == '': self.__filter_word = None else: self.__filter_word = text self.__list.invalidate_filter() self.__filter_timeout_id = 0 return False def __filter_changed(self, entry): if self.__filter_timeout_id == 0: self.__filter_timeout_id = GLib.timeout_add(150, self.__do_filter) def set_engines(self, engines): self.__engines_for_lang = {} self.__untrans_for_lang = {} for e in engines: l = IBus.get_language_name(e.get_language()) if l == None: l = '' if l not in self.__engines_for_lang: self.__engines_for_lang[l] = [] i18n.init_textdomain(e.get_textdomain()) self.__engines_for_lang[l].append(e) # Retrieve Untranslated language names. untrans = IBus.get_untranslated_language_name(e.get_language()) if untrans == None: untrans = '' self.__untrans_for_lang[l] = untrans keys = list(self.__engines_for_lang.keys()) keys.sort(key=functools.cmp_to_key(locale.strcoll)) loc = locale.getlocale()[0] # None on C locale if loc == None or loc == 'C': loc = 'en_US' current_lang = IBus.get_language_name(loc) # move current language to the first place if current_lang in keys: keys.remove(current_lang) keys.insert(0, current_lang) # move English to the second place en_lang = IBus.get_language_name('en_US') if en_lang != current_lang and en_lang in keys: keys.remove(en_lang) keys.insert(1, en_lang) #add 'Others' to the end of the combo box if IBus.get_language_name('Other') in keys: keys.remove(IBus.get_language_name('Other')) keys += [IBus.get_language_name('Other')] self.__langs = keys self.__show_lang_rows() def get_selected_engine(self): row = self.__list.get_selected_row() if row == None: return None return row.engine ibus-1.5.11/setup/i18n.py0000644000000000000000000000422012551654123011723 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright(c) 2007-2015 Peng Huang # Copyright(c) 2007-2015 Google, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA import locale import gettext import os DOMAINNAME = "ibus10" _ = lambda a: gettext.dgettext(DOMAINNAME, a) N_ = lambda a: a LOCALEDIR = os.getenv("IBUS_LOCALEDIR") def init_textdomain(domainname): if domainname == '': return # Python's locale module doesn't provide all methods on some # operating systems like FreeBSD try: locale.bindtextdomain(domainname, LOCALEDIR) locale.bind_textdomain_codeset(domainname, 'UTF-8') except AttributeError: pass gettext.bindtextdomain(domainname, LOCALEDIR) gettext.bind_textdomain_codeset(domainname, 'UTF-8') def gettext_engine_longname(engine): name = engine.get_name() if (name.startswith('xkb:')): return gettext.dgettext('xkeyboard-config', engine.get_longname()) textdomain = engine.get_textdomain() if textdomain == '': return engine.get_longname() return gettext.dgettext(textdomain, engine.get_longname()) def gettext_engine_description(engine): name = engine.get_name() if (name.startswith('xkb:')): return gettext.dgettext('xkeyboard-config', engine.get_description()) textdomain = engine.get_textdomain() if textdomain == '': return engine.get_description() return gettext.dgettext(textdomain, engine.get_description()) ibus-1.5.11/setup/keyboardshortcut.py0000644000000000000000000003360112551654123014545 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "KeyboardShortcutSelection", "KeyboardShortcutSelectionDialog", ); from gi.repository import Gdk from gi.repository import GObject from gi.repository import Gtk from gi.repository import IBus from gi.repository import Pango from i18n import _, N_ MAX_HOTKEY = 6 class KeyboardShortcutSelection(Gtk.Box): def __init__(self, shortcuts = None): super(KeyboardShortcutSelection, self).__init__( orientation=Gtk.Orientation.VERTICAL) self.__init_ui() self.set_shortcuts(shortcuts) def __init_ui(self): # label = Gtk.Label(_("Keyboard shortcuts:")) # label.set_justify(Gtk.Justification.LEFT) # label.set_alignment(0.0, 0.5) # self.pack_start(label, False, True, 4) # shortcuts view self.__shortcut_view = Gtk.TreeView( model = Gtk.ListStore(GObject.TYPE_STRING)) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(_("Keyboard shortcuts"), renderer, text = 0) self.__shortcut_view.append_column(column) self.__shortcut_view.connect("cursor-changed", self.__shortcut_view_cursor_changed_cb) scrolledwindow = Gtk.ScrolledWindow() scrolledwindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scrolledwindow.set_min_content_height(100) scrolledwindow.add(self.__shortcut_view) scrolledwindow.set_shadow_type(Gtk.ShadowType.IN) self.pack_start(scrolledwindow, True, True, 4) # key code hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) label = Gtk.Label(label = _("Key code:")) label.set_justify(Gtk.Justification.LEFT) label.set_alignment(0.0, 0.5) hbox.pack_start(label, False, True, 4) self.__keycode_entry = Gtk.Entry() self.__keycode_entry.connect("notify::text", self.__keycode_entry_notify_cb) hbox.pack_start(self.__keycode_entry, True, True, 4) self.__keycode_button = Gtk.Button(label = "...") self.__keycode_button.connect("clicked", self.__keycode_button_clicked_cb) hbox.pack_start(self.__keycode_button, False, True, 4) self.pack_start(hbox, False, True, 4) # modifiers hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) label = Gtk.Label(label = _("Modifiers:")) label.set_justify(Gtk.Justification.LEFT) label.set_alignment(0.0, 0.5) hbox.pack_start(label, False, True, 4) table = Gtk.Table(n_rows = 4, n_columns = 2) self.__modifier_buttons = [] self.__modifier_buttons.append(("Control", Gtk.CheckButton.new_with_mnemonic("_Control"), Gdk.ModifierType.CONTROL_MASK)) self.__modifier_buttons.append(("Alt", Gtk.CheckButton.new_with_mnemonic("A_lt"), Gdk.ModifierType.MOD1_MASK)) self.__modifier_buttons.append(("Shift", Gtk.CheckButton.new_with_mnemonic("_Shift"), Gdk.ModifierType.SHIFT_MASK)) self.__modifier_buttons.append(("Meta", Gtk.CheckButton.new_with_mnemonic("_Meta"), Gdk.ModifierType.META_MASK)) self.__modifier_buttons.append(("Super", Gtk.CheckButton.new_with_mnemonic("S_uper"), Gdk.ModifierType.SUPER_MASK)) self.__modifier_buttons.append(("Hyper", Gtk.CheckButton.new_with_mnemonic("_Hyper"), Gdk.ModifierType.HYPER_MASK)) # is not parsed by gtk_accelerator_parse() # is not supported by XIGrabKeycode() for name, button, mask in self.__modifier_buttons: button.connect("toggled", self.__modifier_button_toggled_cb, name) table.attach(self.__modifier_buttons[0][1], 0, 1, 0, 1) table.attach(self.__modifier_buttons[1][1], 1, 2, 0, 1) table.attach(self.__modifier_buttons[2][1], 2, 3, 0, 1) table.attach(self.__modifier_buttons[3][1], 0, 1, 1, 2) table.attach(self.__modifier_buttons[4][1], 1, 2, 1, 2) table.attach(self.__modifier_buttons[5][1], 2, 3, 1, 2) hbox.pack_start(table, True, True, 4) self.pack_start(hbox, False, True, 4) # buttons hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) # add button self.__add_button = Gtk.Button(label = _("_Add"), use_underline = True) self.__add_button.set_sensitive(False) self.__add_button.connect("clicked", self.__add_button_clicked_cb) hbox.pack_start(self.__add_button, False, True, 0) # apply button self.__apply_button = Gtk.Button(label = _("_Apply"), use_underline = True) self.__apply_button.set_sensitive(False) self.__apply_button.connect("clicked", self.__apply_button_clicked_cb) hbox.pack_start(self.__apply_button, False, True, 0) # delete button self.__delete_button = Gtk.Button(label = _("_Delete"), use_underline = True) self.__delete_button.set_sensitive(False) self.__delete_button.connect("clicked", self.__delete_button_clicked_cb) hbox.pack_start(self.__delete_button, False, True, 0) self.pack_start(hbox, False, True, 4) def set_shortcuts(self, shortcuts = None): if shortcuts == None: shortcuts = [] model = self.__shortcut_view.get_model() model.clear() added = [] for shortcut in shortcuts: if shortcut not in added: it = model.insert(0) model[it][0] = shortcut added.append(shortcut) def get_shortcuts(self): model = self.__shortcut_view.get_model() try: return [i[0] for i in model] except: return [] def add_shortcut(self, shortcut): model = self.__shortcut_view.get_model() if len(model) > MAX_HOTKEY: return if shortcut in self.get_shortcuts(): return it = model.insert(0) model[it][0] = shortcut self.__add_button.set_sensitive(False) path = model.get_path(it) self.__shortcut_view.set_cursor(path, None, False) def __get_shortcut_from_buttons(self): modifiers = [] keycode = self.__keycode_entry.get_text() if Gdk.keyval_from_name(keycode) == 0: return None for name, button, mask in self.__modifier_buttons: if button.get_active(): modifiers.append(name) if keycode.startswith("_"): keycode = keycode[1:] shortcut = "".join(['<' + m + '>' for m in modifiers]) shortcut += keycode return shortcut def __set_shortcut_to_buttons(self, shortcut): (keyval, state) = Gtk.accelerator_parse(shortcut) if keyval == 0 and state == 0: return for name, button, mask in self.__modifier_buttons: if state & mask: button.set_active(True) else: button.set_active(False) self.__keycode_entry.set_text(shortcut.rsplit('>', 1)[-1]) def __get_selected_shortcut(self): model = self.__shortcut_view.get_model() path, column = self.__shortcut_view.get_cursor() if path == None: return None return model[path.get_indices()[0]][0] def __set_selected_shortcut(self, shortcut): model = self.__shortcut_view.get_model() path, column = self.__shortcut_view.get_cursor() model[path[0]][0] = shortcut self.__update_add_and_apply_buttons() def __del_selected_shortcut(self): model = self.__shortcut_view.get_model() path, column = self.__shortcut_view.get_cursor() model.remove(model.get_iter(path)) self.__update_add_and_apply_buttons() def __shortcut_view_cursor_changed_cb(self, treeview): shortcut = self.__get_selected_shortcut() if shortcut != None: self.__set_shortcut_to_buttons(shortcut) self.__delete_button.set_sensitive(True) else: self.__delete_button.set_sensitive(False) def __update_add_and_apply_buttons(self): shortcut = self.__get_shortcut_from_buttons() selected_shortcut = self.__get_selected_shortcut() shortcuts = self.get_shortcuts() can_add = shortcut != None and \ shortcut not in shortcuts \ and len(shortcuts) < MAX_HOTKEY self.__add_button.set_sensitive(can_add) can_apply = shortcut != selected_shortcut and \ shortcut != None and \ selected_shortcut != None and \ shortcut not in shortcuts self.__apply_button.set_sensitive(can_apply) def __modifier_button_toggled_cb(self, button, name): self.__update_add_and_apply_buttons() def __keycode_entry_notify_cb(self, entry, arg): self.__update_add_and_apply_buttons() def __keycode_button_clicked_cb(self, button): out = [] dlg = Gtk.MessageDialog(transient_for = self.get_toplevel(), buttons = Gtk.ButtonsType.CLOSE) message = _("Please press a key (or a key combination).\n" \ "The dialog will be closed when the key is released.") dlg.set_markup(message) dlg.set_title(_("Please press a key (or a key combination)")) sw = Gtk.ScrolledWindow() def __accel_edited_cb(c, path, keyval, state, keycode): out.append(keyval) out.append(state) out.append(keycode) dlg.response(Gtk.ResponseType.OK) model = Gtk.ListStore(GObject.TYPE_INT, GObject.TYPE_UINT, GObject.TYPE_UINT) accel_view = Gtk.TreeView(model = model) accel_view.set_headers_visible(False) sw.add(accel_view) sw.set_min_content_height(30) column = Gtk.TreeViewColumn() renderer = Gtk.CellRendererAccel(accel_mode=Gtk.CellRendererAccelMode.OTHER, editable=True) renderer.connect('accel-edited', __accel_edited_cb) column.pack_start(renderer, True) column.add_attribute(renderer, 'accel-mods', 0) column.add_attribute(renderer, 'accel-key', 1) column.add_attribute(renderer, 'keycode', 2) accel_view.append_column(column) it = model.append(None) area = dlg.get_message_area() area.pack_end(sw, True, True, 0) sw.show_all() id = dlg.run() dlg.destroy() if id != Gtk.ResponseType.OK or len(out) < 3: return keyval = out[0] state = out[1] keycode = out[2] for name, button, mask in self.__modifier_buttons: if state & mask: button.set_active(True) else: button.set_active(False) shortcut = Gtk.accelerator_name_with_keycode(None, keyval, keycode, state) shortcut = shortcut.replace('', '') self.__keycode_entry.set_text(shortcut.rsplit('>', 1)[-1]) def __add_button_clicked_cb(self, button): shortcut = self.__get_shortcut_from_buttons() self.add_shortcut(shortcut) def __apply_button_clicked_cb(self, button): shortcut = self.__get_shortcut_from_buttons() self.__set_selected_shortcut(shortcut) def __delete_button_clicked_cb(self, button): self.__del_selected_shortcut() self.__delete_button.set_sensitive(False) self.__apply_button.set_sensitive(False) class KeyboardShortcutSelectionDialog(Gtk.Dialog): def __init__(self, title = None, transient_for = None, flags = 0): super(KeyboardShortcutSelectionDialog, self).__init__( title = title, transient_for = transient_for, flags = flags) self.__selection_view = KeyboardShortcutSelection() self.vbox.pack_start(self.__selection_view, False, True, 0) self.vbox.show_all() def set_shortcuts(self, shotrcuts = None): self.__selection_view.set_shortcuts(shotrcuts) def add_shortcut(self, shotrcut): self.__selection_view.add_shortcut(shotrcut) def get_shortcuts(self): return self.__selection_view.get_shortcuts() if __name__ == "__main__": dlg = KeyboardShortcutSelectionDialog(title = "Select test") buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, _("_OK"), Gtk.ResponseType.OK) dlg.add_buttons(buttons) dlg.add_shortcut("Control+Shift+space") dlg.set_shortcuts(None) print((dlg.run())) print((dlg.get_shortcuts())) ibus-1.5.11/setup/engineabout.py0000644000000000000000000001166312551654123013455 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from gi.repository import IBus from gi.repository import Gdk from gi.repository import GdkPixbuf from gi.repository import Gtk from gi.repository import Pango import i18n from i18n import _, N_ class EngineAbout(Gtk.Dialog): def __init__(self, engine, transient_for = None): self.__engine_desc = engine super(EngineAbout, self).__init__( title = _("About"), transient_for = transient_for) buttons = (_("_Close"), Gtk.ResponseType.CLOSE) self.add_buttons(*buttons) self.__init_ui() def __init_ui(self): # set_icon_name() cannot fallback any stock ids to the real files. self.set_icon_name('help-about') sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) sw.set_size_request(400, 400) self.__text_view = Gtk.TextView() self.__text_view.set_editable(False) sw.add(self.__text_view) sw.show_all() self.vbox.pack_start(sw, True, True, 0) self.__fill_text_view() def __fill_text_view(self): text_buffer = self.__text_view.get_buffer() self.__create_tags(text_buffer) iter = text_buffer.get_iter_at_offset(0) text_buffer.insert_with_tags_by_name(iter, "\n ", "left_margin_16") text_buffer.insert_pixbuf(iter, self.__load_icon(self.__engine_desc.get_icon())) text_buffer.insert_with_tags_by_name(iter, "\n%s\n" % i18n.gettext_engine_longname(self.__engine_desc), "heading", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, _("Language: %s\n") % IBus.get_language_name(self.__engine_desc.get_language()), "small", "bold", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, _("Keyboard layout: %s\n") % self.__engine_desc.get_layout(), "small", "bold", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, _("Author: %s\n") % self.__engine_desc.get_author(), "small", "bold", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, _("Description:\n"), "small", "bold", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, i18n.gettext_engine_description(self.__engine_desc), "wrap_text", "left_margin_32") def __create_tags(self, text_buffer): text_buffer.create_tag("heading", weight=Pango.Weight.BOLD, size = 16 * Pango.SCALE) text_buffer.create_tag("bold", weight=Pango.Weight.BOLD) text_buffer.create_tag("italic", style=Pango.Style.ITALIC) text_buffer.create_tag("small", scale=0.833333333333) # Pango.SCALE_SMALL ? text_buffer.create_tag("gray_foreground", foreground="dark gray") text_buffer.create_tag("wrap_text", wrap_mode=Gtk.WrapMode.WORD) text_buffer.create_tag("left_margin_16", left_margin=16) text_buffer.create_tag("left_margin_32", left_margin=32) def __load_icon(self, icon_name): try: pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(icon_name, 48, 48, True) except: theme = Gtk.IconTheme.get_default() icon = theme.lookup_icon(icon_name, 48, 0) if icon == None: icon = theme.lookup_icon("ibus-engine", 48, 0) if icon == None: icon = theme.lookup_icon("image-missing", 48, 0) pixbuf = icon.load_icon() return pixbuf if __name__ == "__main__": desc = IBus.EngineDesc() EngineAbout(desc).run() ibus-1.5.11/setup/Makefile.in0000644000000000000000000006400512551654260012650 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = setup ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(ibussetup_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = ibus-setup CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(ibussetupdir)" \ "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(ibussetupdir)" \ "$(DESTDIR)$(man_onedir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile DATA = $(desktop_DATA) $(ibussetup_DATA) $(man_one_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ibus-setup.in \ $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ibussetup_PYTHON = \ main.py \ i18n.py \ icon.py \ enginecombobox.py \ enginedialog.py \ enginetreeview.py \ engineabout.py \ keyboardshortcut.py \ $(NULL) ibussetup_DATA = \ setup.ui \ $(NULL) bin_SCRIPTS = ibus-setup ibussetupdir = $(pkgdatadir)/setup desktop_in_files = ibus-setup.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) desktopdir = $(datadir)/applications man_one_in_files = ibus-setup.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA = $(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ *.pyc \ ibus-setup \ $(NULL) EXTRA_DIST = \ $(man_one_in_files) \ ibus-setup.in \ setup.ui \ ibus-setup.desktop.in \ $(NULL) DISTCLEANFILES = \ $(desktop_DATA) \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu setup/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu setup/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): ibus-setup: $(top_builddir)/config.status $(srcdir)/ibus-setup.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-ibussetupPYTHON: $(ibussetup_PYTHON) @$(NORMAL_INSTALL) @list='$(ibussetup_PYTHON)'; dlist=; list2=; test -n "$(ibussetupdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibussetupdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibussetupdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ibussetupdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(ibussetupdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(ibussetupdir)" $$dlist; \ else :; fi uninstall-ibussetupPYTHON: @$(NORMAL_UNINSTALL) @list='$(ibussetup_PYTHON)'; test -n "$(ibussetupdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(ibussetupdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) install-ibussetupDATA: $(ibussetup_DATA) @$(NORMAL_INSTALL) @list='$(ibussetup_DATA)'; test -n "$(ibussetupdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibussetupdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibussetupdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ibussetupdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(ibussetupdir)" || exit $$?; \ done uninstall-ibussetupDATA: @$(NORMAL_UNINSTALL) @list='$(ibussetup_DATA)'; test -n "$(ibussetupdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(ibussetupdir)'; $(am__uninstall_files_from_dir) install-man_oneDATA: $(man_one_DATA) @$(NORMAL_INSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(man_onedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man_onedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man_onedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man_onedir)" || exit $$?; \ done uninstall-man_oneDATA: @$(NORMAL_UNINSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(man_onedir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(ibussetupdir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(ibussetupdir)" "$(DESTDIR)$(man_onedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-desktopDATA install-ibussetupDATA \ install-ibussetupPYTHON install-man_oneDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-desktopDATA \ uninstall-ibussetupDATA uninstall-ibussetupPYTHON \ uninstall-man_oneDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-desktopDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-ibussetupDATA install-ibussetupPYTHON install-info \ install-info-am install-man install-man_oneDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-binSCRIPTS uninstall-desktopDATA \ uninstall-ibussetupDATA uninstall-ibussetupPYTHON \ uninstall-man_oneDATA .PRECIOUS: Makefile @INTLTOOL_DESKTOP_RULE@ %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ test: $(ENV_IBUS_TEST) \ PYTHONPATH=$(top_srcdir) \ IBUS_PREFIX="@prefix@" \ IBUS_LOCALEDIR="@localedir@" \ $(PYTHON) \ $(srcdir)/main.py -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/setup/Makefile.am0000644000000000000000000000376312551654123012641 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA ibussetup_PYTHON = \ main.py \ i18n.py \ icon.py \ enginecombobox.py \ enginedialog.py \ enginetreeview.py \ engineabout.py \ keyboardshortcut.py \ $(NULL) ibussetup_DATA = \ setup.ui \ $(NULL) bin_SCRIPTS = ibus-setup ibussetupdir = $(pkgdatadir)/setup desktop_in_files = ibus-setup.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) desktopdir = $(datadir)/applications @INTLTOOL_DESKTOP_RULE@ man_one_in_files = ibus-setup.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA =$(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ *.pyc \ ibus-setup \ $(NULL) EXTRA_DIST = \ $(man_one_in_files) \ ibus-setup.in \ setup.ui \ ibus-setup.desktop.in \ $(NULL) DISTCLEANFILES = \ $(desktop_DATA) \ $(NULL) test: $(ENV_IBUS_TEST) \ PYTHONPATH=$(top_srcdir) \ IBUS_PREFIX="@prefix@" \ IBUS_LOCALEDIR="@localedir@" \ $(PYTHON) \ $(srcdir)/main.py -include $(top_srcdir)/git.mk ibus-1.5.11/configure.ac0000644000000000000000000004751712551654151011741 00000000000000# vim:set et ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # If ibus_released is 0, append datestamp to the version number. m4_define([ibus_released], [1]) m4_define([ibus_major_version], [1]) m4_define([ibus_minor_version], [5]) m4_define([ibus_micro_version], [11]) m4_define([ibus_abi_current], [5]) m4_define([ibus_abi_revision], [m4_eval(100 * ibus_minor_version + ibus_micro_version)]) m4_define([ibus_abi_age], [0]) m4_define([ibus_maybe_datestamp], m4_esyscmd([test x]ibus_released[ != x1 && date +.%Y%m%d | tr -d '\n\r'])) m4_define([ibus_version], ibus_major_version.ibus_minor_version.ibus_micro_version[]ibus_maybe_datestamp) m4_define([ibus_api_version], [ibus_major_version.0]) AC_PREFEQ([2.62]) AC_INIT([ibus], [ibus_version], [https://github.com/ibus/ibus/issues], [ibus]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) m4_define([ibus_abi_current_minus_age], [m4_eval(ibus_abi_current - ibus_abi_age)]) m4_define([ibus_binary_version], [ibus_major_version.ibus_abi_current_minus_age.ibus_abi_age.ibus_abi_revision]) # Required versions of other packages. m4_define([glib_required_version], [2.32.0]) # VALA_TARGET_GLIB_VERSION is used by valac --ccode --target-glib . # VALA_TARGET_GLIB_VERSION and glib_required_version will be different # in the future. VALA_TARGET_GLIB_VERSION=2.32 AC_SUBST(VALA_TARGET_GLIB_VERSION) # Init automake. AM_INIT_AUTOMAKE([1.11.1 parallel-tests]) AM_MAINTAINER_MODE([enable]) AC_GNU_SOURCE # Support silent build rules. Disable # by either passing --disable-silent-rules to configure or passing V=1 # to make AM_SILENT_RULES([yes]) # Define sustituted variables: IBUS_MAJOR_VERSION=ibus_major_version IBUS_MINOR_VERSION=ibus_minor_version IBUS_MICRO_VERSION=ibus_micro_version IBUS_ABI_CURRENT=ibus_abi_current IBUS_ABI_REVISION=ibus_abi_revision IBUS_ABI_AGE=ibus_abi_age IBUS_VERSION=ibus_version IBUS_API_VERSION=ibus_api_version IBUS_BINARY_VERSION=ibus_binary_version AC_SUBST(IBUS_MAJOR_VERSION) AC_SUBST(IBUS_MINOR_VERSION) AC_SUBST(IBUS_MICRO_VERSION) AC_SUBST(IBUS_ABI_CURRENT) AC_SUBST(IBUS_ABI_REVISION) AC_SUBST(IBUS_ABI_AGE) AC_SUBST(IBUS_API_VERSION) AC_SUBST(IBUS_VERSION) AC_SUBST(IBUS_BINARY_VERSION) # libtool versioning # # If LT_VERSION_INFO="lt_current:lt_revision:lt_age", libibus is # libibus-ibus_api_version.so.(lt_current - lt_age).lt_age.lt_revision # If the abi is changed, but it is compatible with last version, # ibus_abi_current++, ibus_abi_age++; # If the abi is not compatible with last version, # ibus_abi_current++, ibus_abi_age = 0; m4_define([lt_current], [ibus_abi_current]) m4_define([lt_revision], [ibus_abi_revision]) m4_define([lt_age], [ibus_abi_age]) LT_VERSION_INFO="lt_current:lt_revision:lt_age" LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age) AC_SUBST(LT_VERSION_INFO) AC_SUBST(LT_CURRENT_MINUS_AGE) # Define GETTEXT_* variables. GETTEXT_PACKAGE=ibus10 AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for out gettext translation domains.]) GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR) GLIB_LOCALE_DIR=$localedir AC_SUBST(GLIB_LOCALE_DIR) # For dislpay date. m4_define(ibus_datedisplay, m4_esyscmd(date '+%a %b %d %Y' | tr -d '\n\r')) DATE_DISPLAY="ibus_datedisplay" AC_SUBST(DATE_DISPLAY) # Check for programs. AC_PROG_CC AM_PROG_CC_C_O AC_PROG_CC_STDC AM_PROG_VALAC([0.20]) AC_PROG_INSTALL AC_PROG_MAKE_SET # i18n stuff AM_GLIB_GNU_GETTEXT # Define PACKAGE_VERSION_* variables. AM_DISABLE_STATIC AC_ISC_POSIX AC_HEADER_STDC LT_INIT IT_PROG_INTLTOOL([0.35.0]) # Check functions. AC_CHECK_FUNCS(daemon) # Check packages. # Check glib2. AM_PATH_GLIB_2_0 PKG_CHECK_MODULES(GLIB2, [ glib-2.0 >= glib_required_version ]) PKG_CHECK_MODULES(GOBJECT2, [ gobject-2.0 >= glib_required_version ]) PKG_CHECK_MODULES(GIO2, [ gio-2.0 >= glib_required_version ]) PKG_CHECK_MODULES(GTHREAD2, [ gthread-2.0 >= glib_required_version ]) # --disable-tests option. AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests], [Do not run tests]), [enable_tests=$enableval], [enable_tests=yes] ) AM_CONDITIONAL([ENABLE_TESTS], [test x"$enable_tests" = x"yes"]) if test x"$enable_tests" != x"yes"; then enable_tests="no (disabled, use --enable-tests to enable)" fi # --disable-gtk2 option. AC_ARG_ENABLE(gtk2, AS_HELP_STRING([--disable-gtk2], [Do not build gtk2 im module]), [enable_gtk2=$enableval], [enable_gtk2=yes] ) AM_CONDITIONAL([ENABLE_GTK2], [test x"$enable_gtk2" = x"yes"]) # --disable-gtk3 option. AC_ARG_ENABLE(gtk3, AS_HELP_STRING([--disable-gtk3], [Do not build gtk3 im module]), [enable_gtk3=$enableval], [enable_gtk3=yes] ) AM_CONDITIONAL([ENABLE_GTK3], [test x"$enable_gtk3" = x"yes"]) # --disable-xim option. AC_ARG_ENABLE(xim, AS_HELP_STRING([--disable-xim], [Do not build xim server]), [enable_xim=$enableval], [enable_xim=yes] ) AM_CONDITIONAL([ENABLE_XIM], [test x"$enable_xim" = x"yes"]) # --enable-wayland option. AC_ARG_ENABLE(wayland, AS_HELP_STRING([--enable-wayland], [Build wayland support]), [enable_wayland=$enableval], [enable_wayland=no] ) AM_CONDITIONAL([ENABLE_WAYLAND], [test x"$enable_wayland" = x"yes"]) # --enable-appindicator option. AC_ARG_ENABLE(appindicator, AS_HELP_STRING([--enable-appindicator], [Build appindicator support]), [enable_appindicator=$enableval], [enable_appindicator=yes] ) AM_CONDITIONAL([ENABLE_APPINDICATOR], [test x"$enable_appindicator" = x"yes"]) if test x"$enable_gtk2" = x"yes"; then # check for gtk2 PKG_CHECK_MODULES(GTK2, [ gtk+-2.0 ]) gtk2_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GTK2_IM_MODULEDIR="$libdir"/gtk-2.0/$gtk2_binary_version/immodules else enable_gtk2="no (disabled, use --enable-gtk2 to enable)" fi if test x"$enable_gtk3" = x"yes"; then # check for gtk3 PKG_CHECK_MODULES(GTK3, [ gtk+-3.0 ]) gtk3_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0` GTK3_IM_MODULEDIR="$libdir"/gtk-3.0/$gtk3_binary_version/immodules else enable_gtk3="no (disabled, use --enable-gtk3 to enable)" fi if test x"$enable_xim" = x"yes"; then # Check for x11 PKG_CHECK_MODULES(X11, [ x11 ]) AC_CHECK_HEADERS([X11/XKBlib.h]) # if we don't have gtk3 yet, check for gtk2 if test x"$enable_gtk3" != x"yes"; then # check for gtk2 PKG_CHECK_MODULES(GTK2, [ gtk+-2.0 ]) fi else enable_xim="no (disabled, use --enable-xim to enable)" fi if test x"$enable_wayland" = x"yes"; then # Check for wayland PKG_CHECK_MODULES(WAYLAND, [ wayland-client >= 1.2.0 xkbcommon ]) else enable_wayland="no (disabled, use --enable-wayland to enable)" fi enable_appindicator_engine_icon="no" if test x"$enable_appindicator" = x"yes"; then enable_appindicator="yes (enabled, use --disable-appindicator to disable)" # Need qt5-qtbase-devel package # There is no way to check the version of KStatusNotifierItem and # check the version of qtbase here. AC_MSG_CHECKING([for KDE5 appindicator engine icon]) PKG_CHECK_EXISTS([Qt5Gui >= 5.4], enable_appindicator_engine_icon="yes" ) AC_MSG_RESULT([$enable_appindicator_engine_icon]) fi if test x"$enable_appindicator_engine_icon" != x"yes" ; then enable_appindicator_engine_icon="no (disabled, need qtbase-devel 5.4 or later)" fi AM_CONDITIONAL([ENABLE_APPINDICATOR_ENGINE_ICON], [test x"$enable_appindicator_engine_icon" = x"yes"]) # GObject introspection GOBJECT_INTROSPECTION_CHECK([0.6.8]) IBUS_GIR_SCANNERFLAGS= if test x"$found_introspection" = x"yes" ; then IBUS_GIR_SCANNERFLAGS="--warn-all --identifier-prefix=IBus --symbol-prefix=ibus" PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.9.6], [gir_symbol_prefix=yes], [gir_symbol_prefix=no]) if test x"$gir_symbol_prefix" = x"no" ; then IBUS_GIR_SCANNERFLAGS="--strip-prefix=IBus" fi fi AC_SUBST(IBUS_GIR_SCANNERFLAGS) # Check vapigen. VAPIGEN_CHECK([0.16]) # Check for gtk-doc. GTK_DOC_CHECK(1.9) if test x"$enable_gtk_doc" = x"no"; then enable_gtk_doc="no (disabled, use --enable-gtk-doc to enable)" fi # Check for dbus. PKG_CHECK_MODULES(DBUS, [ dbus-1 ]) # --enable-gconf option. AC_ARG_ENABLE(gconf, AS_HELP_STRING([--enable-gconf], [Use GConf code]), [enable_gconf=$enableval], [enable_gconf=no] ) AM_CONDITIONAL([ENABLE_GCONF], [test x"$enable_gconf" = x"yes"]) if test x"$enable_gconf" = x"yes"; then # check gconf PKG_CHECK_MODULES(GCONF, [gconf-2.0 >= 2.12], ) AC_PATH_PROG(GCONFTOOL, gconftool-2, no) if test x"$GCONFTOOL" = xno; then AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) fi AM_GCONF_SOURCE_2 # GCONF_SCHEMAS_INSTALL should be set in macro AM_GCONF_SOURCE_2 else AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false]) enable_gconf="no (disabled, use --enable-gconf to enable)" fi # --enable-memconf option. AC_ARG_ENABLE(memconf, AS_HELP_STRING([--enable-memconf], [Enable configure base on memory]), [enable_memconf=$enableval], [enable_memconf=no] ) AM_CONDITIONAL([ENABLE_MEMCONF], [test "x$enable_memconf" = "xyes"]) AC_ARG_ENABLE(dconf, AS_HELP_STRING([--disable-dconf], [Disable configure base on dconf]), [enable_dconf=$enableval], [enable_dconf=yes] ) AM_CONDITIONAL([ENABLE_DCONF], [test x"$enable_dconf" = x"yes"]) if test x"$enable_dconf" = x"yes"; then # check dconf PKG_CHECK_MODULES(DCONF, [dconf >= 0.7.5], ) PKG_CHECK_EXISTS([dconf >= 0.13.4], [AC_DEFINE(DCONF_0_13_4, TRUE, [dconf is 0.13.4 or later])], []) # check glib-compile-schemas GLIB_GSETTINGS enable_dconf="yes (enabled, use --disable-dconf to disable)" fi # Check env. AC_PATH_PROG(ENV_IBUS_TEST, env) AC_SUBST(ENV_IBUS_TEST) AC_ARG_ENABLE(python-library, AS_HELP_STRING([--enable-python-library], [Use ibus python library]), [enable_python_library=$enableval], [enable_python_library=no] ) AC_ARG_ENABLE(setup, AS_HELP_STRING([--disable-setup], [Do not use setup ui.]), [enable_setup=$enableval], [enable_setup=yes] ) AM_CONDITIONAL([ENABLE_PYTHON_LIBRARY], [test x"$enable_python_library" = x"yes"]) AM_CONDITIONAL([ENABLE_SETUP], [test x"$enable_setup" = x"yes"]) AM_CONDITIONAL([ENABLE_DAEMON], [true]) # Define python version AC_ARG_WITH(python, AS_HELP_STRING([--with-python[=PATH]], [Select python2 or python3]), [PYTHON=$with_python], [] ) AM_PATH_PYTHON([2.5]) AC_PATH_PROG(PYTHON2, python2) if test x"$PYTHON2" = x""; then PYTHON2=$PYTHON fi PYGOBJECT_REQUIRED=3.0.0 PKG_CHECK_EXISTS([pygobject-3.0 >= $PYGOBJECT_REQUIRED], [enable_pygobject=yes], [enable_pygobject=no]) if test "x$enable_pygobject" = "xyes"; then PKG_CHECK_MODULES(PYTHON, [pygobject-3.0 >= $PYGOBJECT_REQUIRED]) pyoverridesdir=`$PYTHON -c "import gi; print(gi._overridesdir)"` AC_SUBST(pyoverridesdir) py2overridesdir=`$PYTHON2 -c "import gi; print(gi._overridesdir)"` AC_SUBST(py2overridesdir) fi AM_CONDITIONAL(ENABLE_PYGOBJECT, test x"$enable_pygobject" = "xyes") if test x"$enable_python_library" = x"yes"; then # Check python. AC_PATH_PROG(PYTHON_CONFIG, python$PYTHON_VERSION-config) if test x"$PYTHON_CONFIG" = x""; then AC_PATH_PROG(PYTHON_CONFIG, python-config) fi if test x"$PYTHON_CONFIG" != x""; then PYTHON_CFLAGS=`$PYTHON_CONFIG --includes` PYTHON_LIBS=`$PYTHON_CONFIG --libs` else PYTHON_CFLAGS=`$PYTHON $srcdir/python-config.py --includes` PYTHON_LIBS=`$PYTHON $srcdir/python-config.py --libs` fi PYTHON_INCLUDES="$PYTHON_CFLAGS" AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_INCLUDES) AC_SUBST(PYTHON_LIBS) PYTHON2_PREFIX=`$PYTHON2 -c "import sys; sys.stdout.write(sys.prefix)"` PYTHON2_VERSION=`$PYTHON2 -c "import sys; sys.stdout.write(sys.version[[:3]])"` PYTHON2_LIBDIR="$PYTHON2_PREFIX/lib/python$PYTHON2_VERSION" python2dir="$PYTHON2_LIBDIR/site-packages" pkgpython2dir="$python2dir/ibus" AC_SUBST(pkgpython2dir) else enable_python_library="no (disabled, use --enable-python-library to enable)" fi # Define gtk2 immodule dir. AC_ARG_WITH(gtk2-im-module-dir, AS_HELP_STRING([--with-gtk2-im-module-dir[=DIR]], [Select gtk2 immodule dir]), GTK2_IM_MODULEDIR=$with_gtk2_im_module_dir ) AC_SUBST(GTK2_IM_MODULEDIR) # Define gtk3 immodule dir. AC_ARG_WITH(gtk3-im-module-dir, AS_HELP_STRING([--with-gtk3-im-module-dir[=DIR]], [Select gtk3 immodule dir]), GTK3_IM_MODULEDIR=$with_gtk3_im_module_dir ) AC_SUBST(GTK3_IM_MODULEDIR) if test x"$enable_python" = x"yes"; then # Check for dbus-python. AC_ARG_ENABLE(dbus-python-check, AS_HELP_STRING([--disable-dbus-python-check], [Do not check dbus-python]), [enable_dbus_python_check=$enableval], [enable_dbus_python_check=yes] ) PKG_CHECK_MODULES(DBUS_PYTHON, [dbus-python >= 0.83.0], [IBUS_HAS_DBUS_PYTHON=yes], [IBUS_HAS_DBUS_PYTHON=no] ) if test x"$IBUS_HAS_DBUS_PYTHON" != x"yes"; then if test x"$enable_dbus_python_check" != x"no"; then AC_MSG_ERROR([can not find dbus-python >= 0.83.0. Please install or update dbus-python.]) else AC_MSG_WARN([can not find dbus-python >= 0.83.0. It is required.]) fi fi fi # Option for always disable snooper applications. AC_ARG_ENABLE(key-snooper, AS_HELP_STRING([--disable-key-snooper], [Always disable key snooper in gtk im module]), [enable_key_snooper=$enableval], [enable_key_snooper=yes] ) if test x"$enable_key_snooper" = x"yes"; then AC_DEFINE(ENABLE_SNOOPER, TRUE, [Enable key snooper]) else AC_DEFINE(ENABLE_SNOOPER, FALSE, [Enable key snooper]) enable_key_snooper="no (disabled, use --enable-key-snooper to enable)" fi # Option for no snooper applications. AC_ARG_WITH(no-snooper-apps, AS_HELP_STRING([--with-no-snooper-apps[=regex1,regex2]], [Does not enable keyboard snooper in those applications (like: .*chrome.*,firefox.*)]), NO_SNOOPER_APPS=$with_no_snooper_apps, NO_SNOOPER_APPS=[firefox.*,.*chrome.*,.*chromium.*] ) AC_DEFINE_UNQUOTED(NO_SNOOPER_APPS, "$NO_SNOOPER_APPS", [Does not enbale keyboard snooper in those applications]) # GNOME 3 uses the theme's icon. AC_ARG_WITH(panel-icon-keyboard, AS_HELP_STRING([--with-panel-icon-keyboard[=icon_name]], [Set the default panel icon (default: "ibus-keyboard")]), [if test x"$with_panel_icon_keyboard" = x"yes" -o \ x"$with_panel_icon_keyboard" = x; then with_panel_icon_keyboard="input-keyboard-symbolic" fi if test x"$with_panel_icon_keyboard" = x"legacy"; then with_panel_icon_keyboard="ibus-keyboard" fi IBUS_ICON_KEYBOARD=$with_panel_icon_keyboard ], IBUS_ICON_KEYBOARD="ibus-keyboard" ) AC_SUBST(IBUS_ICON_KEYBOARD) # --disable-surrounding-text option. AC_ARG_ENABLE(surrounding-text, AS_HELP_STRING([--disable-surrounding-text], [Enable surrounding-text support]), [enable_surrounding_text=$enableval], [enable_surrounding_text=yes] ) if test x"$enable_surrounding_text" = x"yes"; then AC_DEFINE(ENABLE_SURROUNDING, TRUE, [Enable surrounding-text support]) else enable_surrounding_text="no (disabled, use --enable-surrounding-text to enable)" fi # --disable-ui AC_ARG_ENABLE(ui, AS_HELP_STRING([--disable-ui], [Disable ibus default user interface]), [enable_ui=$enableval], [enable_ui=yes] ) AM_CONDITIONAL([ENABLE_UI], [test x"$enable_ui" = x"yes"]) if test x"$enable_ui" = x"yes"; then enable_ui="yes (enabled, use --disable-ui to disable)" fi # --disable-engine AC_ARG_ENABLE(engine, AS_HELP_STRING([--disable-engine], [Disable ibus simple engine]), [enable_engine=$enableval], [enable_engine=yes] ) AM_CONDITIONAL([ENABLE_ENGINE], [test x"$enable_engine" = x"yes"]) if test x"$enable_engine" = x"yes"; then enable_engine="yes (enabled, use --disable-engine to disable)" fi # --disable-libnotify AC_ARG_ENABLE(libnotify, AS_HELP_STRING([--disable-libnotify], [Disable to link libnotify]), [enable_libnotify=$enableval], [enable_libnotify=yes] ) AM_CONDITIONAL([ENABLE_LIBNOTIFY], [test x"$enable_libnotify" = x"yes"]) if test x"$enable_libnotify" = x"yes"; then PKG_CHECK_MODULES(LIBNOTIFY, [ libnotify >= 0.7 ]) enable_libnotify="yes (enabled, use --disable-libnotify to disable)" fi # Check iso-codes. PKG_CHECK_MODULES(ISOCODES, [ iso-codes ]) ISOCODES_PREFIX=`pkg-config iso-codes --variable=prefix` AC_SUBST(ISOCODES_PREFIX) # OUTPUT files AC_CONFIG_FILES([ po/Makefile.in Makefile ibus-1.0.pc ibus.spec client/Makefile client/gtk2/Makefile client/gtk3/Makefile client/x11/Makefile client/wayland/Makefile src/Makefile src/ibusversion.h src/tests/Makefile bus/Makefile engine/Makefile util/Makefile util/IMdkit/Makefile data/Makefile data/icons/Makefile data/keymaps/Makefile data/dconf/Makefile docs/Makefile docs/reference/Makefile docs/reference/ibus/ibus-docs.sgml docs/reference/ibus/Makefile m4/Makefile ibus/_config.py ibus/Makefile ibus/interface/Makefile ui/Makefile ui/gtk3/Makefile setup/Makefile setup/ibus-setup bindings/Makefile bindings/pygobject/Makefile bindings/vala/Makefile conf/Makefile conf/gconf/Makefile conf/dconf/Makefile conf/memconf/Makefile tools/Makefile ]) AC_OUTPUT AC_MSG_RESULT([ Build options: Version $IBUS_VERSION Install prefix $prefix Build shared libs $enable_shared Build static libs $enable_static CFLAGS $CFLAGS PYTHON $PYTHON PYTHON2 $PYTHON2 Gtk2 immodule dir $GTK2_IM_MODULEDIR Gtk3 immodule dir $GTK3_IM_MODULEDIR Build gtk2 immodule $enable_gtk2 Build gtk3 immodule $enable_gtk3 Build XIM agent server $enable_xim Build wayland support $enable_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library Build gconf modules $enable_gconf Build memconf modules $enable_memconf Build dconf modules $enable_dconf Build introspection $found_introspection IBus-1.0.gir scannerflags "$IBUS_GIR_SCANNERFLAGS" Build vala binding $enable_vala Build document $enable_gtk_doc Build UI $enable_ui Build engine $enable_engine Enable key snooper $enable_key_snooper No snooper regexes "$NO_SNOOPER_APPS" Panel icon "$IBUS_ICON_KEYBOARD" Enable surrounding-text $enable_surrounding_text Enable libnotify $enable_libnotify Run test cases $enable_tests ]) ibus-1.5.11/config.sub0000755000000000000000000010624612551654253011434 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ibus-1.5.11/ui/0000755000000000000000000000000012551655046010136 500000000000000ibus-1.5.11/ui/gtk3/0000755000000000000000000000000012551655053011004 500000000000000ibus-1.5.11/ui/gtk3/property.vala0000644000000000000000000001726612551654123013466 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ public class PropertyManager { private IBus.PropList m_props; public void ProperyManager() { } public void set_properties(IBus.PropList props) { m_props = props; } public int create_menu_items(Gtk.Menu menu) { return create_menu_items_internal(m_props, menu); } private int create_menu_items_internal(IBus.PropList props, Gtk.Menu menu) { int i = 0; PropRadioMenuItem last_radio = null; while (true) { IBus.Property prop = props.get(i); if (prop == null) break; debug("ins prop = %s", prop.get_key()); i++; IPropItem item = null; switch(prop.get_prop_type()) { case IBus.PropType.NORMAL: item = new PropImageMenuItem(prop); break; case IBus.PropType.TOGGLE: item = new PropCheckMenuItem(prop); break; case IBus.PropType.RADIO: { PropRadioMenuItem radio = new PropRadioMenuItem(prop, last_radio); item = radio; last_radio = radio; } break; case IBus.PropType.MENU: { var menuitem = new PropImageMenuItem(prop); item = menuitem; var submenu = new Gtk.Menu(); if(create_menu_items_internal(prop.get_sub_props(), submenu) > 0) menuitem.set_submenu(submenu); } break; case IBus.PropType.SEPARATOR: item = new PropSeparatorMenuItem(prop); break; default: warning("unknown property type %d", (int)prop.get_prop_type()); break; } if (prop.get_prop_type() != IBus.PropType.RADIO) last_radio = null; if (item != null) { menu.append(item as Gtk.MenuItem); item.property_activate.connect((k, s) => property_activate(k, s)); } } return i; } public void update_property(IBus.Property prop) { assert(prop != null); if (m_props != null) m_props.update_property(prop); } public signal void property_activate(string key, int state); } public interface IPropItem : GLib.Object { public abstract void update_property(IBus.Property prop); public signal void property_activate(string key, int state); } public class PropImageMenuItem : Gtk.MenuItem, IPropItem { private IBus.Property m_property; public PropImageMenuItem(IBus.Property property) { assert(property != null); m_property = property; set_no_show_all(true); sync(); } public void update_property(IBus.Property property) { if (m_property.get_key() != property.get_key()) return; m_property.set_label(property.get_label()); m_property.set_visible(property.get_visible()); m_property.set_sensitive(property.get_sensitive()); m_property.set_tooltip(property.get_tooltip()); m_property.set_state(property.get_state()); sync(); } private void sync() { set_label(m_property.get_label().get_text()); set_visible(m_property.get_visible()); set_sensitive(m_property.get_sensitive()); } public override void activate() { property_activate(m_property.get_key(), m_property.get_state()); } } public class PropCheckMenuItem : Gtk.CheckMenuItem, IPropItem { private IBus.Property m_property; public PropCheckMenuItem(IBus.Property property) { assert(property != null); m_property = property; set_no_show_all(true); sync(); } public void update_property(IBus.Property property) { if (m_property.get_key() != property.get_key()) return; m_property.set_label(property.get_label()); m_property.set_icon(property.get_icon()); m_property.set_visible(property.get_visible()); m_property.set_sensitive(property.get_sensitive()); m_property.set_tooltip(property.get_tooltip()); m_property.set_state(property.get_state()); sync(); } private void sync() { set_label(m_property.get_label().get_text()); set_visible(m_property.get_visible()); set_sensitive(m_property.get_sensitive()); set_active(m_property.get_state() == IBus.PropState.CHECKED); } public override void toggled() { IBus.PropState new_state = get_active() ? IBus.PropState.CHECKED : IBus.PropState.UNCHECKED; if (m_property.get_state() != new_state) { m_property.set_state(new_state); property_activate(m_property.get_key(), m_property.get_state()); } } } public class PropRadioMenuItem : Gtk.RadioMenuItem, IPropItem { private IBus.Property m_property; public PropRadioMenuItem(IBus.Property property, PropRadioMenuItem ?group_source) { assert(property != null); m_property = property; set_no_show_all(true); if (group_source != null) set_group(group_source.get_group()); /* Call sync() after call set_group() because * gtk_radio_menu_item_set_group() sets active = 0. */ sync(); } public void update_property(IBus.Property property) { if (m_property.get_key() != property.get_key()) return; m_property.set_label(property.get_label()); m_property.set_icon(property.get_icon()); m_property.set_visible(property.get_visible()); m_property.set_sensitive(property.get_sensitive()); m_property.set_tooltip(property.get_tooltip()); m_property.set_state(property.get_state()); sync(); } private void sync() { set_label(m_property.get_label().get_text()); set_visible(m_property.get_visible()); set_sensitive(m_property.get_sensitive()); set_active(m_property.get_state() == IBus.PropState.CHECKED); } public override void toggled() { IBus.PropState new_state = get_active() ? IBus.PropState.CHECKED : IBus.PropState.UNCHECKED; if (m_property.get_state() != new_state) { m_property.set_state(new_state); property_activate(m_property.get_key(), m_property.get_state()); } } } public class PropSeparatorMenuItem : Gtk.SeparatorMenuItem, IPropItem { private IBus.Property m_property; public PropSeparatorMenuItem(IBus.Property property) { assert(property != null); m_property = property; } public void update_property(IBus.Property property) { } } ibus-1.5.11/ui/gtk3/xkblayout.c0000644000000000000000000012737212551655052013125 00000000000000/* xkblayout.c generated by valac 0.28.0, the Vala compiler * generated from xkblayout.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2014 Red Hat, Inc. * Copyright(c) 2014 Peng Huang * Copyright(c) 2014 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #define TYPE_XKB_LAYOUT (xkb_layout_get_type ()) #define XKB_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XKB_LAYOUT, XKBLayout)) #define XKB_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XKB_LAYOUT, XKBLayoutClass)) #define IS_XKB_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XKB_LAYOUT)) #define IS_XKB_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XKB_LAYOUT)) #define XKB_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XKB_LAYOUT, XKBLayoutClass)) typedef struct _XKBLayout XKBLayout; typedef struct _XKBLayoutClass XKBLayoutClass; typedef struct _XKBLayoutPrivate XKBLayoutPrivate; #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) typedef struct _ParamSpecXKBLayout ParamSpecXKBLayout; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _XKBLayout { GTypeInstance parent_instance; volatile int ref_count; XKBLayoutPrivate * priv; }; struct _XKBLayoutClass { GTypeClass parent_class; void (*finalize) (XKBLayout *self); }; struct _XKBLayoutPrivate { gchar** m_xkb_latin_layouts; gint m_xkb_latin_layouts_length1; gint _m_xkb_latin_layouts_size_; gchar* m_default_layout; gchar* m_default_variant; gchar* m_default_option; gboolean m_use_xmodmap; }; struct _ParamSpecXKBLayout { GParamSpec parent_instance; }; static gpointer xkb_layout_parent_class = NULL; gpointer xkb_layout_ref (gpointer instance); void xkb_layout_unref (gpointer instance); GParamSpec* param_spec_xkb_layout (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_xkb_layout (GValue* value, gpointer v_object); void value_take_xkb_layout (GValue* value, gpointer v_object); gpointer value_get_xkb_layout (const GValue* value); GType xkb_layout_get_type (void) G_GNUC_CONST; #define XKB_LAYOUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_XKB_LAYOUT, XKBLayoutPrivate)) enum { XKB_LAYOUT_DUMMY_PROPERTY }; #define XKB_LAYOUT_XKB_COMMAND "setxkbmap" #define XKB_LAYOUT_XKB_QUERY_ARG "-query" #define XKB_LAYOUT_XKB_LAYOUT_ARG "-layout" #define XKB_LAYOUT_XMODMAP_COMMAND "xmodmap" XKBLayout* xkb_layout_new (void); XKBLayout* xkb_layout_construct (GType object_type); void xkb_layout_set_latin_layouts (XKBLayout* self, gchar** xkb_latin_layouts, int xkb_latin_layouts_length1); static gchar** _vala_array_dup6 (gchar** self, int length); void xkb_layout_get_layout (gchar** layout, gchar** variant, gchar** option); static void _vala_array_add23 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add24 (gchar*** array, int* length, int* size, gchar* value); void xkb_layout_set_layout (XKBLayout* self, IBusEngineDesc* engine); static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle); static void _vala_array_add25 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add26 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add27 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add28 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add29 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add30 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add31 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add32 (gchar*** array, int* length, int* size, gchar* value); void xkb_layout_run_xmodmap (XKBLayout* self); void xkb_layout_set_use_xmodmap (XKBLayout* self, gboolean use_xmodmap); static void xkb_layout_finalize (XKBLayout* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); static const gchar* XKB_LAYOUT_XMODMAP_KNOWN_FILES[4] = {".xmodmap", ".xmodmaprc", ".Xmodmap", ".Xmodmaprc"}; XKBLayout* xkb_layout_construct (GType object_type) { XKBLayout* self = NULL; self = (XKBLayout*) g_type_create_instance (object_type); return self; } XKBLayout* xkb_layout_new (void) { return xkb_layout_construct (TYPE_XKB_LAYOUT); } static gchar** _vala_array_dup6 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_ = NULL; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } void xkb_layout_set_latin_layouts (XKBLayout* self, gchar** xkb_latin_layouts, int xkb_latin_layouts_length1) { gchar** _tmp0_ = NULL; gint _tmp0__length1 = 0; gchar** _tmp1_ = NULL; gint _tmp1__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = xkb_latin_layouts; _tmp0__length1 = xkb_latin_layouts_length1; _tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup6 (_tmp0_, _tmp0__length1) : ((gpointer) _tmp0_); _tmp1__length1 = _tmp0__length1; self->priv->m_xkb_latin_layouts = (_vala_array_free (self->priv->m_xkb_latin_layouts, self->priv->m_xkb_latin_layouts_length1, (GDestroyNotify) g_free), NULL); self->priv->m_xkb_latin_layouts = _tmp1_; self->priv->m_xkb_latin_layouts_length1 = _tmp1__length1; self->priv->_m_xkb_latin_layouts_size_ = self->priv->m_xkb_latin_layouts_length1; } static void _vala_array_add23 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add24 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static gchar* string_slice (const gchar* self, glong start, glong end) { gchar* result = NULL; glong string_length = 0L; gint _tmp0_ = 0; gint _tmp1_ = 0; glong _tmp2_ = 0L; glong _tmp5_ = 0L; gboolean _tmp8_ = FALSE; glong _tmp9_ = 0L; gboolean _tmp12_ = FALSE; glong _tmp13_ = 0L; glong _tmp16_ = 0L; glong _tmp17_ = 0L; glong _tmp18_ = 0L; glong _tmp19_ = 0L; glong _tmp20_ = 0L; gchar* _tmp21_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; _tmp2_ = start; if (_tmp2_ < ((glong) 0)) { glong _tmp3_ = 0L; glong _tmp4_ = 0L; _tmp3_ = string_length; _tmp4_ = start; start = _tmp3_ + _tmp4_; } _tmp5_ = end; if (_tmp5_ < ((glong) 0)) { glong _tmp6_ = 0L; glong _tmp7_ = 0L; _tmp6_ = string_length; _tmp7_ = end; end = _tmp6_ + _tmp7_; } _tmp9_ = start; if (_tmp9_ >= ((glong) 0)) { glong _tmp10_ = 0L; glong _tmp11_ = 0L; _tmp10_ = start; _tmp11_ = string_length; _tmp8_ = _tmp10_ <= _tmp11_; } else { _tmp8_ = FALSE; } g_return_val_if_fail (_tmp8_, NULL); _tmp13_ = end; if (_tmp13_ >= ((glong) 0)) { glong _tmp14_ = 0L; glong _tmp15_ = 0L; _tmp14_ = end; _tmp15_ = string_length; _tmp12_ = _tmp14_ <= _tmp15_; } else { _tmp12_ = FALSE; } g_return_val_if_fail (_tmp12_, NULL); _tmp16_ = start; _tmp17_ = end; g_return_val_if_fail (_tmp16_ <= _tmp17_, NULL); _tmp18_ = start; _tmp19_ = end; _tmp20_ = start; _tmp21_ = g_strndup (((gchar*) self) + _tmp18_, (gsize) (_tmp19_ - _tmp20_)); result = _tmp21_; return result; } static gchar* string_strip (const gchar* self) { gchar* result = NULL; gchar* _result_ = NULL; gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = g_strdup (self); _result_ = _tmp0_; _tmp1_ = _result_; g_strstrip (_tmp1_); result = _result_; return result; } void xkb_layout_get_layout (gchar** layout, gchar** variant, gchar** option) { gchar* _vala_layout = NULL; gchar* _vala_variant = NULL; gchar* _vala_option = NULL; gchar** exec_command = NULL; gchar** _tmp0_ = NULL; gint exec_command_length1 = 0; gint _exec_command_size_ = 0; gchar** _tmp1_ = NULL; gint _tmp1__length1 = 0; gchar* _tmp2_ = NULL; gchar** _tmp3_ = NULL; gint _tmp3__length1 = 0; gchar* _tmp4_ = NULL; gchar* standard_output = NULL; gchar* standard_error = NULL; gint exit_status = 0; gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; gchar* _tmp7_ = NULL; gint _tmp15_ = 0; const gchar* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; gchar** _tmp21_ = NULL; gchar** _tmp22_ = NULL; GError * _inner_error_ = NULL; _tmp0_ = g_new0 (gchar*, 0 + 1); exec_command = _tmp0_; exec_command_length1 = 0; _exec_command_size_ = exec_command_length1; _tmp1_ = exec_command; _tmp1__length1 = exec_command_length1; _tmp2_ = g_strdup (XKB_LAYOUT_XKB_COMMAND); _vala_array_add23 (&exec_command, &exec_command_length1, &_exec_command_size_, _tmp2_); _tmp3_ = exec_command; _tmp3__length1 = exec_command_length1; _tmp4_ = g_strdup (XKB_LAYOUT_XKB_QUERY_ARG); _vala_array_add24 (&exec_command, &exec_command_length1, &_exec_command_size_, _tmp4_); standard_output = NULL; standard_error = NULL; exit_status = 0; _tmp5_ = g_strdup (""); _g_free0 (_vala_layout); _vala_layout = _tmp5_; _tmp6_ = g_strdup (""); _g_free0 (_vala_variant); _vala_variant = _tmp6_; _tmp7_ = g_strdup (""); _g_free0 (_vala_option); _vala_option = _tmp7_; { gchar** _tmp8_ = NULL; gint _tmp8__length1 = 0; gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; gint _tmp11_ = 0; _tmp8_ = exec_command; _tmp8__length1 = exec_command_length1; g_spawn_sync (NULL, _tmp8_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &_tmp9_, &_tmp10_, &_tmp11_, &_inner_error_); _g_free0 (standard_output); standard_output = _tmp9_; _g_free0 (standard_error); standard_error = _tmp10_; exit_status = _tmp11_; if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_SPAWN_ERROR) { goto __catch14_g_spawn_error; } _g_free0 (standard_error); _g_free0 (standard_output); exec_command = (_vala_array_free (exec_command, exec_command_length1, (GDestroyNotify) g_free), NULL); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } goto __finally14; __catch14_g_spawn_error: { GError* err = NULL; FILE* _tmp12_ = NULL; GError* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; err = _inner_error_; _inner_error_ = NULL; _tmp12_ = stderr; _tmp13_ = err; _tmp14_ = _tmp13_->message; fprintf (_tmp12_, "IBUS_ERROR: %s\n", _tmp14_); _g_error_free0 (err); } __finally14: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (standard_error); _g_free0 (standard_output); exec_command = (_vala_array_free (exec_command, exec_command_length1, (GDestroyNotify) g_free), NULL); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp15_ = exit_status; if (_tmp15_ != 0) { const gchar* _tmp16_ = NULL; const gchar* _tmp17_ = NULL; FILE* _tmp18_ = NULL; _tmp17_ = standard_error; _tmp16_ = _tmp17_; if (_tmp16_ == NULL) { _tmp16_ = ""; } _tmp18_ = stderr; fprintf (_tmp18_, "IBUS_ERROR: %s\n", _tmp16_); } _tmp19_ = standard_output; if (_tmp19_ == NULL) { _g_free0 (standard_error); _g_free0 (standard_output); exec_command = (_vala_array_free (exec_command, exec_command_length1, (GDestroyNotify) g_free), NULL); if (layout) { *layout = _vala_layout; } else { _g_free0 (_vala_layout); } if (variant) { *variant = _vala_variant; } else { _g_free0 (_vala_variant); } if (option) { *option = _vala_option; } else { _g_free0 (_vala_option); } return; } _tmp20_ = standard_output; _tmp22_ = _tmp21_ = g_strsplit (_tmp20_, "\n", 0); { gchar** line_collection = NULL; gint line_collection_length1 = 0; gint _line_collection_size_ = 0; gint line_it = 0; line_collection = _tmp22_; line_collection_length1 = _vala_array_length (_tmp21_); for (line_it = 0; line_it < _vala_array_length (_tmp21_); line_it = line_it + 1) { gchar* _tmp23_ = NULL; gchar* line = NULL; _tmp23_ = g_strdup (line_collection[line_it]); line = _tmp23_; { gchar* element = NULL; gchar* _tmp24_ = NULL; gchar* retval = NULL; gchar* _tmp25_ = NULL; const gchar* _tmp26_ = NULL; const gchar* _tmp27_ = NULL; gboolean _tmp28_ = FALSE; gchar* _tmp42_ = NULL; gchar* _tmp43_ = NULL; const gchar* _tmp44_ = NULL; const gchar* _tmp45_ = NULL; gboolean _tmp46_ = FALSE; gchar* _tmp60_ = NULL; gchar* _tmp61_ = NULL; const gchar* _tmp62_ = NULL; const gchar* _tmp63_ = NULL; gboolean _tmp64_ = FALSE; _tmp24_ = g_strdup ("layout:"); element = _tmp24_; _tmp25_ = g_strdup (""); retval = _tmp25_; _tmp26_ = line; _tmp27_ = element; _tmp28_ = g_str_has_prefix (_tmp26_, _tmp27_); if (_tmp28_) { const gchar* _tmp29_ = NULL; const gchar* _tmp30_ = NULL; gint _tmp31_ = 0; gint _tmp32_ = 0; const gchar* _tmp33_ = NULL; gint _tmp34_ = 0; gint _tmp35_ = 0; gchar* _tmp36_ = NULL; const gchar* _tmp37_ = NULL; const gchar* _tmp40_ = NULL; gchar* _tmp41_ = NULL; _tmp29_ = line; _tmp30_ = element; _tmp31_ = strlen (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = line; _tmp34_ = strlen (_tmp33_); _tmp35_ = _tmp34_; _tmp36_ = string_slice (_tmp29_, (glong) _tmp32_, (glong) _tmp35_); _g_free0 (retval); retval = _tmp36_; _tmp37_ = retval; if (_tmp37_ != NULL) { const gchar* _tmp38_ = NULL; gchar* _tmp39_ = NULL; _tmp38_ = retval; _tmp39_ = string_strip (_tmp38_); _g_free0 (retval); retval = _tmp39_; } _tmp40_ = retval; _tmp41_ = g_strdup (_tmp40_); _g_free0 (_vala_layout); _vala_layout = _tmp41_; } _tmp42_ = g_strdup ("variant:"); _g_free0 (element); element = _tmp42_; _tmp43_ = g_strdup (""); _g_free0 (retval); retval = _tmp43_; _tmp44_ = line; _tmp45_ = element; _tmp46_ = g_str_has_prefix (_tmp44_, _tmp45_); if (_tmp46_) { const gchar* _tmp47_ = NULL; const gchar* _tmp48_ = NULL; gint _tmp49_ = 0; gint _tmp50_ = 0; const gchar* _tmp51_ = NULL; gint _tmp52_ = 0; gint _tmp53_ = 0; gchar* _tmp54_ = NULL; const gchar* _tmp55_ = NULL; const gchar* _tmp58_ = NULL; gchar* _tmp59_ = NULL; _tmp47_ = line; _tmp48_ = element; _tmp49_ = strlen (_tmp48_); _tmp50_ = _tmp49_; _tmp51_ = line; _tmp52_ = strlen (_tmp51_); _tmp53_ = _tmp52_; _tmp54_ = string_slice (_tmp47_, (glong) _tmp50_, (glong) _tmp53_); _g_free0 (retval); retval = _tmp54_; _tmp55_ = retval; if (_tmp55_ != NULL) { const gchar* _tmp56_ = NULL; gchar* _tmp57_ = NULL; _tmp56_ = retval; _tmp57_ = string_strip (_tmp56_); _g_free0 (retval); retval = _tmp57_; } _tmp58_ = retval; _tmp59_ = g_strdup (_tmp58_); _g_free0 (_vala_variant); _vala_variant = _tmp59_; } _tmp60_ = g_strdup ("options:"); _g_free0 (element); element = _tmp60_; _tmp61_ = g_strdup (""); _g_free0 (retval); retval = _tmp61_; _tmp62_ = line; _tmp63_ = element; _tmp64_ = g_str_has_prefix (_tmp62_, _tmp63_); if (_tmp64_) { const gchar* _tmp65_ = NULL; const gchar* _tmp66_ = NULL; gint _tmp67_ = 0; gint _tmp68_ = 0; const gchar* _tmp69_ = NULL; gint _tmp70_ = 0; gint _tmp71_ = 0; gchar* _tmp72_ = NULL; const gchar* _tmp73_ = NULL; const gchar* _tmp76_ = NULL; gchar* _tmp77_ = NULL; _tmp65_ = line; _tmp66_ = element; _tmp67_ = strlen (_tmp66_); _tmp68_ = _tmp67_; _tmp69_ = line; _tmp70_ = strlen (_tmp69_); _tmp71_ = _tmp70_; _tmp72_ = string_slice (_tmp65_, (glong) _tmp68_, (glong) _tmp71_); _g_free0 (retval); retval = _tmp72_; _tmp73_ = retval; if (_tmp73_ != NULL) { const gchar* _tmp74_ = NULL; gchar* _tmp75_ = NULL; _tmp74_ = retval; _tmp75_ = string_strip (_tmp74_); _g_free0 (retval); retval = _tmp75_; } _tmp76_ = retval; _tmp77_ = g_strdup (_tmp76_); _g_free0 (_vala_option); _vala_option = _tmp77_; } _g_free0 (retval); _g_free0 (element); _g_free0 (line); } } line_collection = (_vala_array_free (line_collection, line_collection_length1, (GDestroyNotify) g_free), NULL); } _g_free0 (standard_error); _g_free0 (standard_output); exec_command = (_vala_array_free (exec_command, exec_command_length1, (GDestroyNotify) g_free), NULL); if (layout) { *layout = _vala_layout; } else { _g_free0 (_vala_layout); } if (variant) { *variant = _vala_variant; } else { _g_free0 (_vala_variant); } if (option) { *option = _vala_option; } else { _g_free0 (_vala_option); } } static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle) { int i; for (i = 0; i < stack_length; i++) { if (g_strcmp0 (stack[i], needle) == 0) { return TRUE; } } return FALSE; } static void _vala_array_add25 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add26 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add27 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add28 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add29 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add30 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add31 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add32 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } void xkb_layout_set_layout (XKBLayout* self, IBusEngineDesc* engine) { gchar* layout = NULL; IBusEngineDesc* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; gchar* variant = NULL; IBusEngineDesc* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; gchar* _tmp5_ = NULL; gchar* option = NULL; IBusEngineDesc* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; gchar* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; const gchar* _tmp12_ = NULL; gboolean need_us_layout = FALSE; const gchar* _tmp19_ = NULL; gboolean _tmp22_ = FALSE; gboolean _tmp23_ = FALSE; const gchar* _tmp30_ = NULL; gboolean _tmp34_ = FALSE; const gchar* _tmp35_ = NULL; const gchar* _tmp41_ = NULL; gboolean _tmp42_ = FALSE; const gchar* _tmp43_ = NULL; gboolean _tmp58_ = FALSE; gchar** args = NULL; gchar** _tmp64_ = NULL; gint args_length1 = 0; gint _args_size_ = 0; gchar** _tmp65_ = NULL; gint _tmp65__length1 = 0; gchar* _tmp66_ = NULL; gchar** _tmp67_ = NULL; gint _tmp67__length1 = 0; gchar* _tmp68_ = NULL; gchar** _tmp69_ = NULL; gint _tmp69__length1 = 0; const gchar* _tmp70_ = NULL; gchar* _tmp71_ = NULL; gboolean _tmp72_ = FALSE; gboolean _tmp73_ = FALSE; const gchar* _tmp74_ = NULL; gboolean _tmp82_ = FALSE; gboolean _tmp83_ = FALSE; const gchar* _tmp84_ = NULL; gchar* standard_error = NULL; gint exit_status = 0; gint _tmp103_ = 0; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); _tmp0_ = engine; _tmp1_ = ibus_engine_desc_get_layout (_tmp0_); _tmp2_ = g_strdup (_tmp1_); layout = _tmp2_; _tmp3_ = engine; _tmp4_ = ibus_engine_desc_get_layout_variant (_tmp3_); _tmp5_ = g_strdup (_tmp4_); variant = _tmp5_; _tmp6_ = engine; _tmp7_ = ibus_engine_desc_get_layout_option (_tmp6_); _tmp8_ = g_strdup (_tmp7_); option = _tmp8_; _tmp9_ = layout; _vala_assert (_tmp9_ != NULL, "layout != null"); _tmp12_ = layout; if (g_strcmp0 (_tmp12_, "default") == 0) { gboolean _tmp13_ = FALSE; const gchar* _tmp14_ = NULL; _tmp14_ = variant; if (g_strcmp0 (_tmp14_, "default") == 0) { _tmp13_ = TRUE; } else { const gchar* _tmp15_ = NULL; _tmp15_ = variant; _tmp13_ = g_strcmp0 (_tmp15_, "") == 0; } _tmp11_ = _tmp13_; } else { _tmp11_ = FALSE; } if (_tmp11_) { gboolean _tmp16_ = FALSE; const gchar* _tmp17_ = NULL; _tmp17_ = option; if (g_strcmp0 (_tmp17_, "default") == 0) { _tmp16_ = TRUE; } else { const gchar* _tmp18_ = NULL; _tmp18_ = option; _tmp16_ = g_strcmp0 (_tmp18_, "") == 0; } _tmp10_ = _tmp16_; } else { _tmp10_ = FALSE; } if (_tmp10_) { _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return; } need_us_layout = FALSE; _tmp19_ = variant; if (g_strcmp0 (_tmp19_, "eng") != 0) { const gchar* _tmp20_ = NULL; gchar** _tmp21_ = NULL; gint _tmp21__length1 = 0; _tmp20_ = layout; _tmp21_ = self->priv->m_xkb_latin_layouts; _tmp21__length1 = self->priv->m_xkb_latin_layouts_length1; need_us_layout = _vala_string_array_contains (_tmp21_, _tmp21__length1, _tmp20_); } _tmp23_ = need_us_layout; if (!_tmp23_) { const gchar* _tmp24_ = NULL; _tmp24_ = variant; _tmp22_ = _tmp24_ != NULL; } else { _tmp22_ = FALSE; } if (_tmp22_) { const gchar* _tmp25_ = NULL; const gchar* _tmp26_ = NULL; gchar* _tmp27_ = NULL; gchar* _tmp28_ = NULL; gchar** _tmp29_ = NULL; gint _tmp29__length1 = 0; _tmp25_ = layout; _tmp26_ = variant; _tmp27_ = g_strdup_printf ("%s(%s)", _tmp25_, _tmp26_); _tmp28_ = _tmp27_; _tmp29_ = self->priv->m_xkb_latin_layouts; _tmp29__length1 = self->priv->m_xkb_latin_layouts_length1; need_us_layout = _vala_string_array_contains (_tmp29_, _tmp29__length1, _tmp28_); _g_free0 (_tmp28_); } _tmp30_ = self->priv->m_default_layout; if (g_strcmp0 (_tmp30_, "") == 0) { gchar* _tmp31_ = NULL; gchar* _tmp32_ = NULL; gchar* _tmp33_ = NULL; xkb_layout_get_layout (&_tmp31_, &_tmp32_, &_tmp33_); _g_free0 (self->priv->m_default_layout); self->priv->m_default_layout = _tmp31_; _g_free0 (self->priv->m_default_variant); self->priv->m_default_variant = _tmp32_; _g_free0 (self->priv->m_default_option); self->priv->m_default_option = _tmp33_; } _tmp35_ = layout; if (g_strcmp0 (_tmp35_, "default") == 0) { _tmp34_ = TRUE; } else { const gchar* _tmp36_ = NULL; _tmp36_ = layout; _tmp34_ = g_strcmp0 (_tmp36_, "") == 0; } if (_tmp34_) { const gchar* _tmp37_ = NULL; gchar* _tmp38_ = NULL; const gchar* _tmp39_ = NULL; gchar* _tmp40_ = NULL; _tmp37_ = self->priv->m_default_layout; _tmp38_ = g_strdup (_tmp37_); _g_free0 (layout); layout = _tmp38_; _tmp39_ = self->priv->m_default_variant; _tmp40_ = g_strdup (_tmp39_); _g_free0 (variant); variant = _tmp40_; } _tmp41_ = layout; if (g_strcmp0 (_tmp41_, "") == 0) { g_warning ("xkblayout.vala:148: Could not get the correct layout"); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return; } _tmp43_ = option; if (g_strcmp0 (_tmp43_, "default") == 0) { _tmp42_ = TRUE; } else { const gchar* _tmp44_ = NULL; _tmp44_ = option; _tmp42_ = g_strcmp0 (_tmp44_, "") == 0; } if (_tmp42_) { const gchar* _tmp45_ = NULL; gchar* _tmp46_ = NULL; _tmp45_ = self->priv->m_default_option; _tmp46_ = g_strdup (_tmp45_); _g_free0 (option); option = _tmp46_; } else { const gchar* _tmp47_ = NULL; const gchar* _tmp48_ = NULL; gchar** _tmp49_ = NULL; gchar** _tmp50_ = NULL; gchar** _tmp51_ = NULL; gint _tmp51__length1 = 0; gboolean _tmp52_ = FALSE; _tmp47_ = option; _tmp48_ = self->priv->m_default_option; _tmp50_ = _tmp49_ = g_strsplit (_tmp48_, ",", 0); _tmp51_ = _tmp50_; _tmp51__length1 = _vala_array_length (_tmp49_); _tmp52_ = !_vala_string_array_contains (_tmp51_, _vala_array_length (_tmp49_), _tmp47_); _tmp51_ = (_vala_array_free (_tmp51_, _tmp51__length1, (GDestroyNotify) g_free), NULL); if (_tmp52_) { const gchar* _tmp53_ = NULL; const gchar* _tmp54_ = NULL; gchar* _tmp55_ = NULL; _tmp53_ = self->priv->m_default_option; _tmp54_ = option; _tmp55_ = g_strdup_printf ("%s,%s", _tmp53_, _tmp54_); _g_free0 (option); option = _tmp55_; } else { const gchar* _tmp56_ = NULL; gchar* _tmp57_ = NULL; _tmp56_ = self->priv->m_default_option; _tmp57_ = g_strdup (_tmp56_); _g_free0 (option); option = _tmp57_; } } _tmp58_ = need_us_layout; if (_tmp58_) { const gchar* _tmp59_ = NULL; gchar* _tmp60_ = NULL; const gchar* _tmp61_ = NULL; _tmp59_ = layout; _tmp60_ = g_strconcat (_tmp59_, ",us", NULL); _g_free0 (layout); layout = _tmp60_; _tmp61_ = variant; if (_tmp61_ != NULL) { const gchar* _tmp62_ = NULL; gchar* _tmp63_ = NULL; _tmp62_ = variant; _tmp63_ = g_strconcat (_tmp62_, ",", NULL); _g_free0 (variant); variant = _tmp63_; } } _tmp64_ = g_new0 (gchar*, 0 + 1); args = _tmp64_; args_length1 = 0; _args_size_ = args_length1; _tmp65_ = args; _tmp65__length1 = args_length1; _tmp66_ = g_strdup (XKB_LAYOUT_XKB_COMMAND); _vala_array_add25 (&args, &args_length1, &_args_size_, _tmp66_); _tmp67_ = args; _tmp67__length1 = args_length1; _tmp68_ = g_strdup (XKB_LAYOUT_XKB_LAYOUT_ARG); _vala_array_add26 (&args, &args_length1, &_args_size_, _tmp68_); _tmp69_ = args; _tmp69__length1 = args_length1; _tmp70_ = layout; _tmp71_ = g_strdup (_tmp70_); _vala_array_add27 (&args, &args_length1, &_args_size_, _tmp71_); _tmp74_ = variant; if (_tmp74_ != NULL) { const gchar* _tmp75_ = NULL; _tmp75_ = variant; _tmp73_ = g_strcmp0 (_tmp75_, "") != 0; } else { _tmp73_ = FALSE; } if (_tmp73_) { const gchar* _tmp76_ = NULL; _tmp76_ = variant; _tmp72_ = g_strcmp0 (_tmp76_, "default") != 0; } else { _tmp72_ = FALSE; } if (_tmp72_) { gchar** _tmp77_ = NULL; gint _tmp77__length1 = 0; gchar* _tmp78_ = NULL; gchar** _tmp79_ = NULL; gint _tmp79__length1 = 0; const gchar* _tmp80_ = NULL; gchar* _tmp81_ = NULL; _tmp77_ = args; _tmp77__length1 = args_length1; _tmp78_ = g_strdup ("-variant"); _vala_array_add28 (&args, &args_length1, &_args_size_, _tmp78_); _tmp79_ = args; _tmp79__length1 = args_length1; _tmp80_ = variant; _tmp81_ = g_strdup (_tmp80_); _vala_array_add29 (&args, &args_length1, &_args_size_, _tmp81_); } _tmp84_ = option; if (_tmp84_ != NULL) { const gchar* _tmp85_ = NULL; _tmp85_ = option; _tmp83_ = g_strcmp0 (_tmp85_, "") != 0; } else { _tmp83_ = FALSE; } if (_tmp83_) { const gchar* _tmp86_ = NULL; _tmp86_ = option; _tmp82_ = g_strcmp0 (_tmp86_, "default") != 0; } else { _tmp82_ = FALSE; } if (_tmp82_) { gchar** _tmp87_ = NULL; gint _tmp87__length1 = 0; gchar* _tmp88_ = NULL; gchar** _tmp89_ = NULL; gint _tmp89__length1 = 0; gchar* _tmp90_ = NULL; gchar** _tmp91_ = NULL; gint _tmp91__length1 = 0; const gchar* _tmp92_ = NULL; gchar* _tmp93_ = NULL; _tmp87_ = args; _tmp87__length1 = args_length1; _tmp88_ = g_strdup ("-option"); _vala_array_add30 (&args, &args_length1, &_args_size_, _tmp88_); _tmp89_ = args; _tmp89__length1 = args_length1; _tmp90_ = g_strdup ("-option"); _vala_array_add31 (&args, &args_length1, &_args_size_, _tmp90_); _tmp91_ = args; _tmp91__length1 = args_length1; _tmp92_ = option; _tmp93_ = g_strdup (_tmp92_); _vala_array_add32 (&args, &args_length1, &_args_size_, _tmp93_); } standard_error = NULL; exit_status = 0; { gboolean _tmp94_ = FALSE; gchar** _tmp95_ = NULL; gint _tmp95__length1 = 0; gchar* _tmp96_ = NULL; gint _tmp97_ = 0; gboolean _tmp98_ = FALSE; _tmp95_ = args; _tmp95__length1 = args_length1; _tmp98_ = g_spawn_sync (NULL, _tmp95_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_tmp96_, &_tmp97_, &_inner_error_); _g_free0 (standard_error); standard_error = _tmp96_; exit_status = _tmp97_; _tmp94_ = _tmp98_; if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_SPAWN_ERROR) { goto __catch15_g_spawn_error; } _g_free0 (standard_error); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } if (!_tmp94_) { IBusEngineDesc* _tmp99_ = NULL; const gchar* _tmp100_ = NULL; _tmp99_ = engine; _tmp100_ = ibus_engine_desc_get_layout (_tmp99_); g_warning ("xkblayout.vala:195: Switch xkb layout to %s failed.", _tmp100_); } } goto __finally15; __catch15_g_spawn_error: { GError* e = NULL; GError* _tmp101_ = NULL; const gchar* _tmp102_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp101_ = e; _tmp102_ = _tmp101_->message; g_warning ("xkblayout.vala:198: Execute setxkbmap failed: %s", _tmp102_); _g_error_free0 (e); _g_free0 (standard_error); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return; } __finally15: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (standard_error); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp103_ = exit_status; if (_tmp103_ != 0) { const gchar* _tmp104_ = NULL; const gchar* _tmp105_ = NULL; _tmp105_ = standard_error; _tmp104_ = _tmp105_; if (_tmp104_ == NULL) { _tmp104_ = "(null)"; } g_warning ("xkblayout.vala:203: Execute setxkbmap failed: %s", _tmp104_); } xkb_layout_run_xmodmap (self); _g_free0 (standard_error); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); } void xkb_layout_run_xmodmap (XKBLayout* self) { gboolean _tmp0_ = FALSE; gchar* homedir = NULL; const gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_use_xmodmap; if (!_tmp0_) { return; } _tmp1_ = g_get_home_dir (); _tmp2_ = g_strdup (_tmp1_); homedir = _tmp2_; { const gchar** xmodmap_file_collection = NULL; gint xmodmap_file_collection_length1 = 0; gint _xmodmap_file_collection_size_ = 0; gint xmodmap_file_it = 0; xmodmap_file_collection = XKB_LAYOUT_XMODMAP_KNOWN_FILES; xmodmap_file_collection_length1 = G_N_ELEMENTS (XKB_LAYOUT_XMODMAP_KNOWN_FILES); for (xmodmap_file_it = 0; xmodmap_file_it < G_N_ELEMENTS (XKB_LAYOUT_XMODMAP_KNOWN_FILES); xmodmap_file_it = xmodmap_file_it + 1) { gchar* _tmp3_ = NULL; gchar* xmodmap_file = NULL; _tmp3_ = g_strdup (xmodmap_file_collection[xmodmap_file_it]); xmodmap_file = _tmp3_; { gchar* xmodmap_filepath = NULL; const gchar* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; gboolean _tmp8_ = FALSE; gchar** args = NULL; gchar* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; gchar* _tmp11_ = NULL; gchar** _tmp12_ = NULL; gint args_length1 = 0; gint _args_size_ = 0; _tmp4_ = homedir; _tmp5_ = xmodmap_file; _tmp6_ = g_build_filename (_tmp4_, _tmp5_, NULL); xmodmap_filepath = _tmp6_; _tmp7_ = xmodmap_filepath; _tmp8_ = g_file_test (_tmp7_, G_FILE_TEST_EXISTS); if (!_tmp8_) { _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); continue; } _tmp9_ = g_strdup (XKB_LAYOUT_XMODMAP_COMMAND); _tmp10_ = xmodmap_filepath; _tmp11_ = g_strdup (_tmp10_); _tmp12_ = g_new0 (gchar*, 2 + 1); _tmp12_[0] = _tmp9_; _tmp12_[1] = _tmp11_; args = _tmp12_; args_length1 = 2; _args_size_ = args_length1; { gchar** _tmp13_ = NULL; gint _tmp13__length1 = 0; _tmp13_ = args; _tmp13__length1 = args_length1; g_spawn_async (NULL, _tmp13_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_SPAWN_ERROR) { goto __catch16_g_spawn_error; } args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); _g_free0 (homedir); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } goto __finally16; __catch16_g_spawn_error: { GError* e = NULL; GError* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp14_ = e; _tmp15_ = _tmp14_->message; g_warning ("xkblayout.vala:241: Execute xmodmap is failed: %s\n", _tmp15_); _g_error_free0 (e); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); _g_free0 (homedir); return; } __finally16: if (G_UNLIKELY (_inner_error_ != NULL)) { args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); _g_free0 (homedir); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); break; } } } _g_free0 (homedir); } void xkb_layout_set_use_xmodmap (XKBLayout* self, gboolean use_xmodmap) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = use_xmodmap; self->priv->m_use_xmodmap = _tmp0_; } static void value_xkb_layout_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_xkb_layout_free_value (GValue* value) { if (value->data[0].v_pointer) { xkb_layout_unref (value->data[0].v_pointer); } } static void value_xkb_layout_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = xkb_layout_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_xkb_layout_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_xkb_layout_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { XKBLayout* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = xkb_layout_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_xkb_layout_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { XKBLayout** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = xkb_layout_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_xkb_layout (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecXKBLayout* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_XKB_LAYOUT), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer value_get_xkb_layout (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_XKB_LAYOUT), NULL); return value->data[0].v_pointer; } void value_set_xkb_layout (GValue* value, gpointer v_object) { XKBLayout* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_XKB_LAYOUT)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_XKB_LAYOUT)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; xkb_layout_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { xkb_layout_unref (old); } } void value_take_xkb_layout (GValue* value, gpointer v_object) { XKBLayout* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_XKB_LAYOUT)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_XKB_LAYOUT)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { xkb_layout_unref (old); } } static void xkb_layout_class_init (XKBLayoutClass * klass) { xkb_layout_parent_class = g_type_class_peek_parent (klass); ((XKBLayoutClass *) klass)->finalize = xkb_layout_finalize; g_type_class_add_private (klass, sizeof (XKBLayoutPrivate)); } static void xkb_layout_instance_init (XKBLayout * self) { gchar** _tmp0_ = NULL; gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; self->priv = XKB_LAYOUT_GET_PRIVATE (self); _tmp0_ = g_new0 (gchar*, 0 + 1); self->priv->m_xkb_latin_layouts = _tmp0_; self->priv->m_xkb_latin_layouts_length1 = 0; self->priv->_m_xkb_latin_layouts_size_ = self->priv->m_xkb_latin_layouts_length1; _tmp1_ = g_strdup (""); self->priv->m_default_layout = _tmp1_; _tmp2_ = g_strdup (""); self->priv->m_default_variant = _tmp2_; _tmp3_ = g_strdup (""); self->priv->m_default_option = _tmp3_; self->priv->m_use_xmodmap = TRUE; self->ref_count = 1; } static void xkb_layout_finalize (XKBLayout* obj) { XKBLayout * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_XKB_LAYOUT, XKBLayout); g_signal_handlers_destroy (self); self->priv->m_xkb_latin_layouts = (_vala_array_free (self->priv->m_xkb_latin_layouts, self->priv->m_xkb_latin_layouts_length1, (GDestroyNotify) g_free), NULL); _g_free0 (self->priv->m_default_layout); _g_free0 (self->priv->m_default_variant); _g_free0 (self->priv->m_default_option); } GType xkb_layout_get_type (void) { static volatile gsize xkb_layout_type_id__volatile = 0; if (g_once_init_enter (&xkb_layout_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { value_xkb_layout_init, value_xkb_layout_free_value, value_xkb_layout_copy_value, value_xkb_layout_peek_pointer, "p", value_xkb_layout_collect_value, "p", value_xkb_layout_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (XKBLayoutClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) xkb_layout_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (XKBLayout), 0, (GInstanceInitFunc) xkb_layout_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType xkb_layout_type_id; xkb_layout_type_id = g_type_register_fundamental (g_type_fundamental_next (), "XKBLayout", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&xkb_layout_type_id__volatile, xkb_layout_type_id); } return xkb_layout_type_id__volatile; } gpointer xkb_layout_ref (gpointer instance) { XKBLayout* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void xkb_layout_unref (gpointer instance) { XKBLayout* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { XKB_LAYOUT_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.11/ui/gtk3/panel.c0000644000000000000000000057014112551655052012176 00000000000000/* panel.c generated by valac 0.28.0, the Vala compiler * generated from panel.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * Copyright(c) 2015 Takao Fujwiara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define TYPE_PANEL (panel_get_type ()) #define PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PANEL, Panel)) #define PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PANEL, PanelClass)) #define IS_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PANEL)) #define IS_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PANEL)) #define PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PANEL, PanelClass)) typedef struct _Panel Panel; typedef struct _PanelClass PanelClass; typedef struct _PanelPrivate PanelPrivate; #define PANEL_TYPE_ICON_TYPE (panel_icon_type_get_type ()) #define TYPE_INDICATOR (indicator_get_type ()) #define INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_INDICATOR, Indicator)) #define INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_INDICATOR, IndicatorClass)) #define IS_INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_INDICATOR)) #define IS_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_INDICATOR)) #define INDICATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_INDICATOR, IndicatorClass)) typedef struct _Indicator Indicator; typedef struct _IndicatorClass IndicatorClass; #define TYPE_CANDIDATE_PANEL (candidate_panel_get_type ()) #define CANDIDATE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CANDIDATE_PANEL, CandidatePanel)) #define CANDIDATE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CANDIDATE_PANEL, CandidatePanelClass)) #define IS_CANDIDATE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CANDIDATE_PANEL)) #define IS_CANDIDATE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CANDIDATE_PANEL)) #define CANDIDATE_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CANDIDATE_PANEL, CandidatePanelClass)) typedef struct _CandidatePanel CandidatePanel; typedef struct _CandidatePanelClass CandidatePanelClass; #define TYPE_SWITCHER (switcher_get_type ()) #define SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SWITCHER, Switcher)) #define SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SWITCHER, SwitcherClass)) #define IS_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SWITCHER)) #define IS_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SWITCHER)) #define SWITCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SWITCHER, SwitcherClass)) typedef struct _Switcher Switcher; typedef struct _SwitcherClass SwitcherClass; #define TYPE_PROPERTY_MANAGER (property_manager_get_type ()) #define PROPERTY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROPERTY_MANAGER, PropertyManager)) #define PROPERTY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROPERTY_MANAGER, PropertyManagerClass)) #define IS_PROPERTY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROPERTY_MANAGER)) #define IS_PROPERTY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROPERTY_MANAGER)) #define PROPERTY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROPERTY_MANAGER, PropertyManagerClass)) typedef struct _PropertyManager PropertyManager; typedef struct _PropertyManagerClass PropertyManagerClass; #define TYPE_PROPERTY_PANEL (property_panel_get_type ()) #define PROPERTY_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROPERTY_PANEL, PropertyPanel)) #define PROPERTY_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROPERTY_PANEL, PropertyPanelClass)) #define IS_PROPERTY_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROPERTY_PANEL)) #define IS_PROPERTY_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROPERTY_PANEL)) #define PROPERTY_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROPERTY_PANEL, PropertyPanelClass)) typedef struct _PropertyPanel PropertyPanel; typedef struct _PropertyPanelClass PropertyPanelClass; #define TYPE_XKB_LAYOUT (xkb_layout_get_type ()) #define XKB_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XKB_LAYOUT, XKBLayout)) #define XKB_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XKB_LAYOUT, XKBLayoutClass)) #define IS_XKB_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XKB_LAYOUT)) #define IS_XKB_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XKB_LAYOUT)) #define XKB_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XKB_LAYOUT, XKBLayoutClass)) typedef struct _XKBLayout XKBLayout; typedef struct _XKBLayoutClass XKBLayoutClass; #define PANEL_TYPE_KEYBINDING (panel_keybinding_get_type ()) #define PANEL_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANEL_TYPE_KEYBINDING, PanelKeybinding)) #define PANEL_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANEL_TYPE_KEYBINDING, PanelKeybindingClass)) #define PANEL_IS_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANEL_TYPE_KEYBINDING)) #define PANEL_IS_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANEL_TYPE_KEYBINDING)) #define PANEL_KEYBINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANEL_TYPE_KEYBINDING, PanelKeybindingClass)) typedef struct _PanelKeybinding PanelKeybinding; typedef struct _PanelKeybindingClass PanelKeybindingClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _property_manager_unref0(var) ((var == NULL) ? NULL : (var = (property_manager_unref (var), NULL))) #define _xkb_layout_unref0(var) ((var == NULL) ? NULL : (var = (xkb_layout_unref (var), NULL))) #define __g_list_free__panel_keybinding_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__panel_keybinding_unref0_ (var), NULL))) #define INDICATOR_TYPE_CATEGORY (indicator_category_get_type ()) #define INDICATOR_TYPE_STATUS (indicator_status_get_type ()) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define TYPE_KEYBINDING_MANAGER (keybinding_manager_get_type ()) #define KEYBINDING_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_KEYBINDING_MANAGER, KeybindingManager)) #define KEYBINDING_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_KEYBINDING_MANAGER, KeybindingManagerClass)) #define IS_KEYBINDING_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_KEYBINDING_MANAGER)) #define IS_KEYBINDING_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_KEYBINDING_MANAGER)) #define KEYBINDING_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_KEYBINDING_MANAGER, KeybindingManagerClass)) typedef struct _KeybindingManager KeybindingManager; typedef struct _KeybindingManagerClass KeybindingManagerClass; #define _panel_keybinding_unref0(var) ((var == NULL) ? NULL : (var = (panel_keybinding_unref (var), NULL))) #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) typedef struct _Block4Data Block4Data; #define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = (_vala_PangoFontDescription_free (var), NULL))) #define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL))) #define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) typedef struct _Block5Data Block5Data; typedef struct _Block6Data Block6Data; #define _gtk_icon_info_free0(var) ((var == NULL) ? NULL : (var = (gtk_icon_info_free (var), NULL))) typedef struct _PanelKeybindingPrivate PanelKeybindingPrivate; typedef struct _PanelParamSpecKeybinding PanelParamSpecKeybinding; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _Panel { IBusPanelService parent_instance; PanelPrivate * priv; }; struct _PanelClass { IBusPanelServiceClass parent_class; }; typedef enum { PANEL_ICON_TYPE_STATUS_ICON, PANEL_ICON_TYPE_INDICATOR } PanelIconType; struct _PanelPrivate { IBusBus* m_bus; GSettings* m_settings_general; GSettings* m_settings_hotkey; GSettings* m_settings_panel; PanelIconType m_icon_type; Indicator* m_indicator; GDBusConnection* m_session_bus_connection; GtkStatusIcon* m_status_icon; GtkMenu* m_ime_menu; GtkMenu* m_sys_menu; IBusEngineDesc** m_engines; gint m_engines_length1; gint _m_engines_size_; GHashTable* m_engine_contexts; gchar* m_current_context_path; gboolean m_use_global_engine; CandidatePanel* m_candidate_panel; Switcher* m_switcher; gboolean m_switcher_is_running; PropertyManager* m_property_manager; PropertyPanel* m_property_panel; GPid m_setup_pid; GtkAboutDialog* m_about_dialog; GtkCssProvider* m_css_provider; gint m_switcher_delay_time; gboolean m_use_system_keyboard_layout; GHashTable* m_xkb_icon_pixbufs; GHashTable* m_xkb_icon_image; GdkRGBA m_xkb_icon_rgba; XKBLayout* m_xkblayout; gboolean inited_engines_order; guint m_preload_engines_id; gchar* m_icon_prop_key; gint m_property_icon_delay_time; guint m_property_icon_delay_time_id; GList* m_keybindings; }; typedef enum { INDICATOR_CATEGORY_APPLICATION_STATUS, INDICATOR_CATEGORY_COMMUNICATIONS, INDICATOR_CATEGORY_SYSTEM_SERVICES, INDICATOR_CATEGORY_HARDWARE, INDICATOR_CATEGORY_OTHER } IndicatorCategory; typedef enum { INDICATOR_STATUS_PASSIVE, INDICATOR_STATUS_ACTIVE, INDICATOR_STATUS_ATTENTION } IndicatorStatus; typedef void (*KeybindingManagerKeybindingHandlerFunc) (GdkEvent* event, void* user_data); struct _Block4Data { int _ref_count_; Panel* self; gchar** names; gint names_length1; gint _names_size_; }; struct _Block5Data { int _ref_count_; Panel* self; IBusEngineDesc* e; }; struct _Block6Data { int _ref_count_; Panel* self; gchar* symbol; }; struct _PanelKeybinding { GTypeInstance parent_instance; volatile int ref_count; PanelKeybindingPrivate * priv; }; struct _PanelKeybindingClass { GTypeClass parent_class; void (*finalize) (PanelKeybinding *self); }; struct _PanelKeybindingPrivate { guint _keysym; GdkModifierType _modifiers; gboolean _reverse; }; struct _PanelParamSpecKeybinding { GParamSpec parent_instance; }; static gpointer panel_parent_class = NULL; static gpointer panel_keybinding_parent_class = NULL; GType panel_get_type (void) G_GNUC_CONST; static GType panel_icon_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; GType indicator_get_type (void) G_GNUC_CONST; GType candidate_panel_get_type (void) G_GNUC_CONST; GType switcher_get_type (void) G_GNUC_CONST; gpointer property_manager_ref (gpointer instance); void property_manager_unref (gpointer instance); GParamSpec* param_spec_property_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_property_manager (GValue* value, gpointer v_object); void value_take_property_manager (GValue* value, gpointer v_object); gpointer value_get_property_manager (const GValue* value); GType property_manager_get_type (void) G_GNUC_CONST; GType property_panel_get_type (void) G_GNUC_CONST; gpointer xkb_layout_ref (gpointer instance); void xkb_layout_unref (gpointer instance); GParamSpec* param_spec_xkb_layout (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_xkb_layout (GValue* value, gpointer v_object); void value_take_xkb_layout (GValue* value, gpointer v_object); gpointer value_get_xkb_layout (const GValue* value); GType xkb_layout_get_type (void) G_GNUC_CONST; static gpointer panel_keybinding_ref (gpointer instance); static void panel_keybinding_unref (gpointer instance); static GParamSpec* panel_param_spec_keybinding (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) G_GNUC_UNUSED; static void panel_value_set_keybinding (GValue* value, gpointer v_object) G_GNUC_UNUSED; static void panel_value_take_keybinding (GValue* value, gpointer v_object) G_GNUC_UNUSED; static gpointer panel_value_get_keybinding (const GValue* value) G_GNUC_UNUSED; static GType panel_keybinding_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PANEL, PanelPrivate)) enum { PANEL_DUMMY_PROPERTY }; static void panel_unbind_switch_shortcut (Panel* self); static void _g_free0_ (gpointer var); static void _g_object_unref0_ (gpointer var); static void _cairo_surface_destroy0_ (gpointer var); XKBLayout* xkb_layout_new (void); XKBLayout* xkb_layout_construct (GType object_type); static void _panel_keybinding_unref0_ (gpointer var); static void _g_list_free__panel_keybinding_unref0_ (GList* self); #define PANEL_PRELOAD_ENGINES_DELAY_TIME ((guint) 30000) Panel* panel_new (IBusBus* bus); Panel* panel_construct (GType object_type, IBusBus* bus); static void panel_init_settings (Panel* self); static gboolean panel_is_kde (Panel* self); static void panel_init_indicator (Panel* self); static void panel_init_status_icon (Panel* self); CandidatePanel* candidate_panel_new (void); CandidatePanel* candidate_panel_construct (GType object_type); static void __lambda61_ (Panel* self, CandidatePanel* w); static void ___lambda61__candidate_panel_page_up (CandidatePanel* _sender, gpointer self); static void __lambda62_ (Panel* self, CandidatePanel* w); static void ___lambda62__candidate_panel_page_down (CandidatePanel* _sender, gpointer self); static void __lambda63_ (Panel* self, CandidatePanel* w, guint i, guint b, guint s); static void ___lambda63__candidate_panel_candidate_clicked (CandidatePanel* _sender, guint index, guint button, guint state, gpointer self); Switcher* switcher_new (void); Switcher* switcher_construct (GType object_type); static void panel_bind_switch_shortcut (Panel* self); void switcher_set_popup_delay_time (Switcher* self, guint popup_delay_time); PropertyManager* property_manager_new (void); PropertyManager* property_manager_construct (GType object_type); static void __lambda64_ (Panel* self, PropertyManager* w, const gchar* k, gint s); static void ___lambda64__property_manager_property_activate (PropertyManager* _sender, const gchar* key, gint state, gpointer self); PropertyPanel* property_panel_new (void); PropertyPanel* property_panel_construct (GType object_type); static void __lambda65_ (Panel* self, PropertyPanel* w, const gchar* k, gint s); static void ___lambda65__property_panel_property_activate (PropertyPanel* _sender, const gchar* key, gint state, gpointer self); static void __lambda30_ (Panel* self, const gchar* key); static void panel_update_engines (Panel* self, gchar** unowned_engine_names, int unowned_engine_names_length1, gchar** order_names, int order_names_length1); static void ___lambda30__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda32_ (Panel* self, const gchar* key); static void panel_set_switcher_delay_time (Panel* self); static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda33_ (Panel* self, const gchar* key); static void panel_set_use_system_keyboard_layout (Panel* self); static void ___lambda33__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda34_ (Panel* self, const gchar* key); static void panel_set_embed_preedit_text (Panel* self); static void ___lambda34__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda35_ (Panel* self, const gchar* key); static void panel_set_use_global_engine (Panel* self); static void ___lambda35__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda36_ (Panel* self, const gchar* key); static void panel_set_use_xmodmap (Panel* self); static void ___lambda36__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda37_ (Panel* self, const gchar* key); static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda40_ (Panel* self, const gchar* key); static void panel_set_custom_font (Panel* self); static void ___lambda40__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda41_ (Panel* self, const gchar* key); static void ___lambda41__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda42_ (Panel* self, const gchar* key); static void panel_set_show_icon_on_systray (Panel* self); static void ___lambda42__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda43_ (Panel* self, const gchar* key); static void panel_set_lookup_table_orientation (Panel* self); static void ___lambda43__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda44_ (Panel* self, const gchar* key); static void panel_set_show_property_panel (Panel* self); static void ___lambda44__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda45_ (Panel* self, const gchar* key); static void panel_set_timeout_property_panel (Panel* self); static void ___lambda45__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda46_ (Panel* self, const gchar* key); static void panel_set_follow_input_cursor_when_always_shown_property_panel (Panel* self); static void ___lambda46__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda47_ (Panel* self, const gchar* key); static void panel_set_xkb_icon_rgba (Panel* self); static void ___lambda47__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda48_ (Panel* self, const gchar* key); static void panel_set_property_icon_delay_time (Panel* self); static void ___lambda48__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda49_ (Panel* self, GObject* obj, GAsyncResult* res); GType indicator_category_get_type (void) G_GNUC_CONST; Indicator* indicator_new (const gchar* id, GDBusConnection* connection, IndicatorCategory category); Indicator* indicator_construct (GType object_type, const gchar* id, GDBusConnection* connection, IndicatorCategory category); void indicator_set_title (Indicator* self, const gchar* value); static void ___lambda50_ (Panel* self); GType indicator_status_get_type (void) G_GNUC_CONST; void indicator_set_status (Indicator* self, IndicatorStatus status); static void ____lambda50__indicator_registered_status_notifier_item (Indicator* _sender, gpointer self); static void ___lambda51_ (Panel* self, guint b, guint t); static GtkMenu* panel_create_context_menu (Panel* self); void indicator_position_context_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); static void _indicator_position_context_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self); static void ____lambda51__indicator_context_menu (Indicator* _sender, guint button, guint activate_time, gpointer self); static void ___lambda57_ (Panel* self); static GtkMenu* panel_create_activate_menu (Panel* self); void indicator_position_activate_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); static void _indicator_position_activate_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self); static void ____lambda57__indicator_activate (Indicator* _sender, gpointer self); static void ___lambda49__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self); static void __lambda59_ (Panel* self, guint b, guint t); static void _gtk_status_icon_position_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self); static void ___lambda59__gtk_status_icon_popup_menu (GtkStatusIcon* _sender, guint button, guint activate_time, gpointer self); static void __lambda60_ (Panel* self); static void ___lambda60__gtk_status_icon_activate (GtkStatusIcon* _sender, gpointer self); GType keybinding_manager_get_type (void) G_GNUC_CONST; static void panel_keybinding_manager_bind (Panel* self, KeybindingManager* keybinding_manager, const gchar* accelerator); static PanelKeybinding* panel_keybinding_new (guint keysym, GdkModifierType modifiers, gboolean reverse); static PanelKeybinding* panel_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, gboolean reverse); gboolean keybinding_manager_bind (KeybindingManager* self, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target); static void __lambda38_ (Panel* self, GdkEvent* e); static void panel_handle_engine_switch (Panel* self, GdkEvent* event, gboolean revert); static void ___lambda38__keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self); static void __lambda39_ (Panel* self, GdkEvent* e); static void ___lambda39__keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self); KeybindingManager* keybinding_manager_get_instance (void); void keybinding_manager_unbind (KeybindingManager* self, guint keysym, GdkModifierType modifiers); static guint panel_keybinding_get_keysym (PanelKeybinding* self); static GdkModifierType panel_keybinding_get_modifiers (PanelKeybinding* self); static GList* panel_get_engines_from_xkb (Panel* self, GList* engines); void xkb_layout_get_layout (gchar** layout, gchar** variant, gchar** option); static void _g_list_free__g_object_unref0_ (GList* self); static GList* panel_get_engines_from_locale (Panel* self, GList* engines); static gint __lambda66_ (IBusEngineDesc* a, IBusEngineDesc* b); static gint ___lambda66__gcompare_func (gconstpointer a, gconstpointer b); static void panel_init_engines_order (Panel* self); void xkb_layout_set_latin_layouts (XKBLayout* self, gchar** xkb_latin_layouts, int xkb_latin_layouts_length1); static void _vala_array_add14 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add15 (gchar*** array, int* length, int* size, gchar* value); void xkb_layout_set_use_xmodmap (XKBLayout* self, gboolean use_xmodmap); void candidate_panel_set_vertical (CandidatePanel* self, gboolean vertical); void property_panel_set_show (PropertyPanel* self, gint _show); void property_panel_set_auto_hide_timeout (PropertyPanel* self, guint timeout); void property_panel_set_follow_input_cursor_when_always_shown (PropertyPanel* self, gboolean is_follow); static gint panel_compare_versions (Panel* self, const gchar* version1, const gchar* version2); static void panel_update_version_1_5_3 (Panel* self); static void panel_update_version_1_5_8 (Panel* self); static void panel_set_version (Panel* self); void panel_load_settings (Panel* self); static void panel_engine_contexts_insert (Panel* self, IBusEngineDesc* engine); static void panel_set_engine (Panel* self, IBusEngineDesc* engine); void xkb_layout_set_layout (XKBLayout* self, IBusEngineDesc* engine); static void panel_switch_engine (Panel* self, gint i, gboolean force); #define KEYBINDING_MANAGER_MODIFIER_FILTER ((guint) (GDK_MODIFIER_MASK & (~(((((((((GDK_LOCK_MASK | GDK_MOD2_MASK) | GDK_BUTTON1_MASK) | GDK_BUTTON2_MASK) | GDK_BUTTON3_MASK) | GDK_BUTTON4_MASK) | GDK_BUTTON5_MASK) | GDK_SUPER_MASK) | GDK_HYPER_MASK) | GDK_META_MASK)))) GdkModifierType keybinding_manager_get_primary_modifier (guint binding_mask); gboolean keybinding_manager_primary_modifier_still_pressed (GdkEvent* event, guint primary_modifier); gint switcher_run (Switcher* self, guint keyval, guint state, GdkEvent* event, IBusEngineDesc** engines, int engines_length1, gint index); static void panel_run_preload_engines (Panel* self, IBusEngineDesc** engines, int engines_length1, gint index); static Block4Data* block4_data_ref (Block4Data* _data4_); static void block4_data_unref (void * _userdata_); static void _vala_array_add16 (gchar*** array, int* length, int* size, gchar* value); static gboolean __lambda31_ (Block4Data* _data4_); static gboolean ___lambda31__gsource_func (gpointer self); static gchar** _vala_array_dup2 (gchar** self, int length); static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle); static void _vala_array_add17 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add18 (gchar*** array, int* length, int* size, gchar* value); static IBusEngineDesc** _vala_array_dup3 (IBusEngineDesc** self, int length); static IBusEngineDesc** _vala_array_dup4 (IBusEngineDesc** self, int length); static void panel_context_render_string (Panel* self, cairo_t* cr, const gchar* symbol, gint image_width, gint image_height); static void _vala_PangoFontDescription_free (PangoFontDescription* self); static cairo_surface_t* panel_create_cairo_image_surface_with_string (Panel* self, const gchar* symbol, gboolean cache); static GdkPixbuf* panel_create_icon_pixbuf_with_string (Panel* self, const gchar* symbol); static void panel_show_setup_dialog (Panel* self); static void __lambda53_ (Panel* self, GPid pid, gint state); static void ___lambda53__gchild_watch_func (GPid pid, gint status, gpointer self); static void panel_show_about_dialog (Panel* self); static void ___lambda52_ (Panel* self, GtkMenuItem* i); static void ____lambda52__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda54_ (Panel* self, GtkMenuItem* i); static void ____lambda54__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda55_ (Panel* self, GtkMenuItem* i); static void ____lambda55__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda56_ (Panel* self, GtkMenuItem* i); static void ____lambda56__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); gint property_manager_create_menu_items (PropertyManager* self, GtkMenu* menu); static Block5Data* block5_data_ref (Block5Data* _data5_); static void block5_data_unref (void * _userdata_); static void ____lambda58_ (Block5Data* _data5_, GtkMenuItem* item); static void _____lambda58__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void panel_set_properties (Panel* self, IBusPropList* props); static void panel_set_property (Panel* self, IBusProperty* prop, gboolean all_update); static void panel_animate_icon (Panel* self, const gchar* symbol, gboolean all_update); static Block6Data* block6_data_ref (Block6Data* _data6_); static void block6_data_unref (void * _userdata_); static gboolean __lambda67_ (Block6Data* _data6_); void indicator_set_cairo_image_surface_full (Indicator* self, cairo_surface_t* image, const gchar* icon_desc); static gboolean ___lambda67__gsource_func (gpointer self); static void panel_real_set_cursor_location (IBusPanelService* base, gint x, gint y, gint width, gint height); void candidate_panel_set_cursor_location (CandidatePanel* self, gint x, gint y, gint width, gint height); void property_panel_set_cursor_location (PropertyPanel* self, gint x, gint y, gint width, gint height); static void panel_real_focus_in (IBusPanelService* base, const gchar* input_context_path); void property_panel_focus_in (PropertyPanel* self); static void panel_real_focus_out (IBusPanelService* base, const gchar* input_context_path); static void panel_real_destroy_context (IBusPanelService* base, const gchar* input_context_path); static void panel_real_register_properties (IBusPanelService* base, IBusPropList* props); void property_manager_set_properties (PropertyManager* self, IBusPropList* props); void property_panel_set_properties (PropertyPanel* self, IBusPropList* props); static void panel_real_update_property (IBusPanelService* base, IBusProperty* prop); void property_manager_update_property (PropertyManager* self, IBusProperty* prop); void property_panel_update_property (PropertyPanel* self, IBusProperty* prop); static void panel_real_update_preedit_text (IBusPanelService* base, IBusText* text, guint cursor_pos, gboolean visible); void candidate_panel_set_preedit_text (CandidatePanel* self, IBusText* text, guint cursor); void property_panel_set_preedit_text (PropertyPanel* self, IBusText* text, guint cursor); static void panel_real_hide_preedit_text (IBusPanelService* base); static void panel_real_update_auxiliary_text (IBusPanelService* base, IBusText* text, gboolean visible); void candidate_panel_set_auxiliary_text (CandidatePanel* self, IBusText* text); void property_panel_set_auxiliary_text (PropertyPanel* self, IBusText* text); static void panel_real_hide_auxiliary_text (IBusPanelService* base); static void panel_real_update_lookup_table (IBusPanelService* base, IBusLookupTable* table, gboolean visible); void candidate_panel_set_lookup_table (CandidatePanel* self, IBusLookupTable* table); void property_panel_set_lookup_table (PropertyPanel* self, IBusLookupTable* table); static void panel_real_hide_lookup_table (IBusPanelService* base); static void panel_real_set_content_type (IBusPanelService* base, guint purpose, guint hints); void candidate_panel_set_content_type (CandidatePanel* self, guint purpose, guint hints); static void panel_real_state_changed (IBusPanelService* base); void indicator_set_icon_full (Indicator* self, const gchar* icon_name, const gchar* icon_desc); gchar* switcher_get_xkb_language (Switcher* self, IBusEngineDesc* engine); static void _vala_array_add19 (gchar*** array, int* length, int* size, gchar* value); #define PANEL_KEYBINDING_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_TYPE_KEYBINDING, PanelKeybindingPrivate)) enum { PANEL_KEYBINDING_DUMMY_PROPERTY }; static void panel_keybinding_set_keysym (PanelKeybinding* self, guint value); static void panel_keybinding_set_modifiers (PanelKeybinding* self, GdkModifierType value); static void panel_keybinding_set_reverse (PanelKeybinding* self, gboolean value); static gboolean panel_keybinding_get_reverse (PanelKeybinding* self); static void panel_keybinding_finalize (PanelKeybinding* obj); static void panel_finalize (GObject* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); static GType panel_icon_type_get_type (void) { static volatile gsize panel_icon_type_type_id__volatile = 0; if (g_once_init_enter (&panel_icon_type_type_id__volatile)) { static const GEnumValue values[] = {{PANEL_ICON_TYPE_STATUS_ICON, "PANEL_ICON_TYPE_STATUS_ICON", "status-icon"}, {PANEL_ICON_TYPE_INDICATOR, "PANEL_ICON_TYPE_INDICATOR", "indicator"}, {0, NULL, NULL}}; GType panel_icon_type_type_id; panel_icon_type_type_id = g_enum_register_static ("PanelIconType", values); g_once_init_leave (&panel_icon_type_type_id__volatile, panel_icon_type_type_id); } return panel_icon_type_type_id__volatile; } static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static void _cairo_surface_destroy0_ (gpointer var) { (var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL)); } static void _panel_keybinding_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (panel_keybinding_unref (var), NULL)); } static void _g_list_free__panel_keybinding_unref0_ (GList* self) { g_list_foreach (self, (GFunc) _panel_keybinding_unref0_, NULL); g_list_free (self); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void __lambda61_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_page_up ((IBusPanelService*) self); } static void ___lambda61__candidate_panel_page_up (CandidatePanel* _sender, gpointer self) { __lambda61_ ((Panel*) self, _sender); } static void __lambda62_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_page_down ((IBusPanelService*) self); } static void ___lambda62__candidate_panel_page_down (CandidatePanel* _sender, gpointer self) { __lambda62_ ((Panel*) self, _sender); } static void __lambda63_ (Panel* self, CandidatePanel* w, guint i, guint b, guint s) { guint _tmp0_ = 0U; guint _tmp1_ = 0U; guint _tmp2_ = 0U; g_return_if_fail (w != NULL); _tmp0_ = i; _tmp1_ = b; _tmp2_ = s; ibus_panel_service_candidate_clicked ((IBusPanelService*) self, _tmp0_, _tmp1_, _tmp2_); } static void ___lambda63__candidate_panel_candidate_clicked (CandidatePanel* _sender, guint index, guint button, guint state, gpointer self) { __lambda63_ ((Panel*) self, _sender, index, button, state); } static void __lambda64_ (Panel* self, PropertyManager* w, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; ibus_panel_service_property_activate ((IBusPanelService*) self, _tmp0_, (guint) _tmp1_); } static void ___lambda64__property_manager_property_activate (PropertyManager* _sender, const gchar* key, gint state, gpointer self) { __lambda64_ ((Panel*) self, _sender, key, state); } static void __lambda65_ (Panel* self, PropertyPanel* w, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; ibus_panel_service_property_activate ((IBusPanelService*) self, _tmp0_, (guint) _tmp1_); } static void ___lambda65__property_panel_property_activate (PropertyPanel* _sender, const gchar* key, gint state, gpointer self) { __lambda65_ ((Panel*) self, _sender, key, state); } Panel* panel_construct (GType object_type, IBusBus* bus) { Panel * self = NULL; IBusBus* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; IBusBus* _tmp2_ = NULL; GDBusConnection* _tmp3_ = NULL; IBusBus* _tmp4_ = NULL; IBusBus* _tmp5_ = NULL; gboolean _tmp6_ = FALSE; CandidatePanel* _tmp7_ = NULL; CandidatePanel* _tmp8_ = NULL; CandidatePanel* _tmp9_ = NULL; CandidatePanel* _tmp10_ = NULL; Switcher* _tmp11_ = NULL; gint _tmp12_ = 0; PropertyManager* _tmp15_ = NULL; PropertyManager* _tmp16_ = NULL; PropertyPanel* _tmp17_ = NULL; PropertyPanel* _tmp18_ = NULL; g_return_val_if_fail (bus != NULL, NULL); _tmp0_ = bus; _tmp1_ = ibus_bus_is_connected (_tmp0_); _vala_assert (_tmp1_, "bus.is_connected()"); _tmp2_ = bus; _tmp3_ = ibus_bus_get_connection (_tmp2_); self = (Panel*) g_object_new (object_type, "connection", _tmp3_, "object-path", "/org/freedesktop/IBus/Panel", NULL); _tmp4_ = bus; _tmp5_ = _g_object_ref0 (_tmp4_); _g_object_unref0 (self->priv->m_bus); self->priv->m_bus = _tmp5_; panel_init_settings (self); _tmp6_ = panel_is_kde (self); if (_tmp6_) { panel_init_indicator (self); } else { panel_init_status_icon (self); } _tmp7_ = candidate_panel_new (); g_object_ref_sink (_tmp7_); _g_object_unref0 (self->priv->m_candidate_panel); self->priv->m_candidate_panel = _tmp7_; _tmp8_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp8_, "page-up", (GCallback) ___lambda61__candidate_panel_page_up, self, 0); _tmp9_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp9_, "page-down", (GCallback) ___lambda62__candidate_panel_page_down, self, 0); _tmp10_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp10_, "candidate-clicked", (GCallback) ___lambda63__candidate_panel_candidate_clicked, self, 0); _tmp11_ = switcher_new (); g_object_ref_sink (_tmp11_); _g_object_unref0 (self->priv->m_switcher); self->priv->m_switcher = _tmp11_; panel_bind_switch_shortcut (self); _tmp12_ = self->priv->m_switcher_delay_time; if (_tmp12_ >= 0) { Switcher* _tmp13_ = NULL; gint _tmp14_ = 0; _tmp13_ = self->priv->m_switcher; _tmp14_ = self->priv->m_switcher_delay_time; switcher_set_popup_delay_time (_tmp13_, (guint) _tmp14_); } _tmp15_ = property_manager_new (); _property_manager_unref0 (self->priv->m_property_manager); self->priv->m_property_manager = _tmp15_; _tmp16_ = self->priv->m_property_manager; g_signal_connect_object (_tmp16_, "property-activate", (GCallback) ___lambda64__property_manager_property_activate, self, 0); _tmp17_ = property_panel_new (); g_object_ref_sink (_tmp17_); _g_object_unref0 (self->priv->m_property_panel); self->priv->m_property_panel = _tmp17_; _tmp18_ = self->priv->m_property_panel; g_signal_connect_object (_tmp18_, "property-activate", (GCallback) ___lambda65__property_panel_property_activate, self, 0); g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); return self; } Panel* panel_new (IBusBus* bus) { return panel_construct (TYPE_PANEL, bus); } static void __lambda30_ (Panel* self, const gchar* key) { GSettings* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gchar** _tmp2_ = NULL; gchar** _tmp3_ = NULL; gchar** _tmp4_ = NULL; gint _tmp4__length1 = 0; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = key; _tmp3_ = _tmp2_ = g_settings_get_strv (_tmp0_, _tmp1_); _tmp4_ = _tmp3_; _tmp4__length1 = _vala_array_length (_tmp2_); panel_update_engines (self, _tmp4_, _vala_array_length (_tmp2_), NULL, 0); _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_free), NULL); } static void ___lambda30__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda30_ ((Panel*) self, key); } static void __lambda32_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_switcher_delay_time (self); } static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda32_ ((Panel*) self, key); } static void __lambda33_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_use_system_keyboard_layout (self); } static void ___lambda33__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda33_ ((Panel*) self, key); } static void __lambda34_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_embed_preedit_text (self); } static void ___lambda34__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda34_ ((Panel*) self, key); } static void __lambda35_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_use_global_engine (self); } static void ___lambda35__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda35_ ((Panel*) self, key); } static void __lambda36_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_use_xmodmap (self); } static void ___lambda36__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda36_ ((Panel*) self, key); } static void __lambda37_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_unbind_switch_shortcut (self); panel_bind_switch_shortcut (self); } static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda37_ ((Panel*) self, key); } static void __lambda40_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_custom_font (self); } static void ___lambda40__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda40_ ((Panel*) self, key); } static void __lambda41_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_custom_font (self); } static void ___lambda41__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda41_ ((Panel*) self, key); } static void __lambda42_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_show_icon_on_systray (self); } static void ___lambda42__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda42_ ((Panel*) self, key); } static void __lambda43_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_lookup_table_orientation (self); } static void ___lambda43__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda43_ ((Panel*) self, key); } static void __lambda44_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_show_property_panel (self); } static void ___lambda44__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda44_ ((Panel*) self, key); } static void __lambda45_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_timeout_property_panel (self); } static void ___lambda45__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda45_ ((Panel*) self, key); } static void __lambda46_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_follow_input_cursor_when_always_shown_property_panel (self); } static void ___lambda46__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda46_ ((Panel*) self, key); } static void __lambda47_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_xkb_icon_rgba (self); } static void ___lambda47__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda47_ ((Panel*) self, key); } static void __lambda48_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_property_icon_delay_time (self); } static void ___lambda48__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda48_ ((Panel*) self, key); } static void panel_init_settings (Panel* self) { GSettings* _tmp0_ = NULL; GSettings* _tmp1_ = NULL; GSettings* _tmp2_ = NULL; GSettings* _tmp3_ = NULL; GSettings* _tmp4_ = NULL; GSettings* _tmp5_ = NULL; GSettings* _tmp6_ = NULL; GSettings* _tmp7_ = NULL; GSettings* _tmp8_ = NULL; GSettings* _tmp9_ = NULL; GSettings* _tmp10_ = NULL; GSettings* _tmp11_ = NULL; GSettings* _tmp12_ = NULL; GSettings* _tmp13_ = NULL; GSettings* _tmp14_ = NULL; GSettings* _tmp15_ = NULL; GSettings* _tmp16_ = NULL; GSettings* _tmp17_ = NULL; GSettings* _tmp18_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = g_settings_new ("org.freedesktop.ibus.general"); _g_object_unref0 (self->priv->m_settings_general); self->priv->m_settings_general = _tmp0_; _tmp1_ = g_settings_new ("org.freedesktop.ibus.general.hotkey"); _g_object_unref0 (self->priv->m_settings_hotkey); self->priv->m_settings_hotkey = _tmp1_; _tmp2_ = g_settings_new ("org.freedesktop.ibus.panel"); _g_object_unref0 (self->priv->m_settings_panel); self->priv->m_settings_panel = _tmp2_; _tmp3_ = self->priv->m_settings_general; g_signal_connect_object (_tmp3_, "changed::preload-engines", (GCallback) ___lambda30__g_settings_changed, self, 0); _tmp4_ = self->priv->m_settings_general; g_signal_connect_object (_tmp4_, "changed::switcher-delay-time", (GCallback) ___lambda32__g_settings_changed, self, 0); _tmp5_ = self->priv->m_settings_general; g_signal_connect_object (_tmp5_, "changed::use-system-keyboard-layout", (GCallback) ___lambda33__g_settings_changed, self, 0); _tmp6_ = self->priv->m_settings_general; g_signal_connect_object (_tmp6_, "changed::embed-preedit-text", (GCallback) ___lambda34__g_settings_changed, self, 0); _tmp7_ = self->priv->m_settings_general; g_signal_connect_object (_tmp7_, "changed::use-global-engine", (GCallback) ___lambda35__g_settings_changed, self, 0); _tmp8_ = self->priv->m_settings_general; g_signal_connect_object (_tmp8_, "changed::use-xmodmap", (GCallback) ___lambda36__g_settings_changed, self, 0); _tmp9_ = self->priv->m_settings_hotkey; g_signal_connect_object (_tmp9_, "changed::triggers", (GCallback) ___lambda37__g_settings_changed, self, 0); _tmp10_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp10_, "changed::custom-font", (GCallback) ___lambda40__g_settings_changed, self, 0); _tmp11_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp11_, "changed::use-custom-font", (GCallback) ___lambda41__g_settings_changed, self, 0); _tmp12_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp12_, "changed::show-icon-on-systray", (GCallback) ___lambda42__g_settings_changed, self, 0); _tmp13_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp13_, "changed::lookup-table-orientation", (GCallback) ___lambda43__g_settings_changed, self, 0); _tmp14_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp14_, "changed::show", (GCallback) ___lambda44__g_settings_changed, self, 0); _tmp15_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp15_, "changed::timeout", (GCallback) ___lambda45__g_settings_changed, self, 0); _tmp16_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp16_, "changed::follow-input-cursor-when-always-shown", (GCallback) ___lambda46__g_settings_changed, self, 0); _tmp17_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp17_, "changed::xkb-icon-rgba", (GCallback) ___lambda47__g_settings_changed, self, 0); _tmp18_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp18_, "changed::property-icon-delay-time", (GCallback) ___lambda48__g_settings_changed, self, 0); } static gboolean panel_is_kde (Panel* self) { gboolean result = FALSE; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = g_getenv ("XDG_CURRENT_DESKTOP"); if (g_strcmp0 (_tmp0_, "KDE") == 0) { result = TRUE; return result; } g_warning ("panel.vala:221: %s", "If you launch KDE5 on xterm, " "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); result = FALSE; return result; } static void ___lambda50_ (Panel* self) { Indicator* _tmp0_ = NULL; _tmp0_ = self->priv->m_indicator; indicator_set_status (_tmp0_, INDICATOR_STATUS_ACTIVE); g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } static void ____lambda50__indicator_registered_status_notifier_item (Indicator* _sender, gpointer self) { ___lambda50_ ((Panel*) self); } static void _indicator_position_context_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self) { indicator_position_context_menu ((Indicator*) self, menu, x, y, push_in); } static void ___lambda51_ (Panel* self, guint b, guint t) { GtkMenu* menu = NULL; GtkMenu* _tmp0_ = NULL; Indicator* _tmp1_ = NULL; guint32 _tmp2_ = 0U; _tmp0_ = panel_create_context_menu (self); menu = _tmp0_; _tmp1_ = self->priv->m_indicator; _tmp2_ = gtk_get_current_event_time (); gtk_menu_popup (menu, NULL, NULL, _indicator_position_context_menu_gtk_menu_position_func, _tmp1_, (guint) 0, _tmp2_); _g_object_unref0 (menu); } static void ____lambda51__indicator_context_menu (Indicator* _sender, guint button, guint activate_time, gpointer self) { ___lambda51_ ((Panel*) self, button, activate_time); } static void _indicator_position_activate_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self) { indicator_position_activate_menu ((Indicator*) self, menu, x, y, push_in); } static void ___lambda57_ (Panel* self) { GtkMenu* menu = NULL; GtkMenu* _tmp0_ = NULL; Indicator* _tmp1_ = NULL; guint32 _tmp2_ = 0U; _tmp0_ = panel_create_activate_menu (self); menu = _tmp0_; _tmp1_ = self->priv->m_indicator; _tmp2_ = gtk_get_current_event_time (); gtk_menu_popup (menu, NULL, NULL, _indicator_position_activate_menu_gtk_menu_position_func, _tmp1_, (guint) 0, _tmp2_); _g_object_unref0 (menu); } static void ____lambda57__indicator_activate (Indicator* _sender, gpointer self) { ___lambda57_ ((Panel*) self); } static void __lambda49_ (Panel* self, GObject* obj, GAsyncResult* res) { GError * _inner_error_ = NULL; g_return_if_fail (res != NULL); { GDBusConnection* _tmp0_ = NULL; GAsyncResult* _tmp1_ = NULL; GDBusConnection* _tmp2_ = NULL; GDBusConnection* _tmp3_ = NULL; GDBusConnection* _tmp4_ = NULL; Indicator* _tmp5_ = NULL; Indicator* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; Indicator* _tmp8_ = NULL; Indicator* _tmp9_ = NULL; Indicator* _tmp10_ = NULL; _tmp1_ = res; _tmp2_ = g_bus_get_finish (_tmp1_, &_inner_error_); _tmp0_ = _tmp2_; if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_IO_ERROR) { goto __catch10_g_io_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp3_ = _tmp0_; _tmp0_ = NULL; _g_object_unref0 (self->priv->m_session_bus_connection); self->priv->m_session_bus_connection = _tmp3_; _tmp4_ = self->priv->m_session_bus_connection; _tmp5_ = indicator_new ("ibus-ui-gtk3", _tmp4_, INDICATOR_CATEGORY_APPLICATION_STATUS); g_object_ref_sink (_tmp5_); _g_object_unref0 (self->priv->m_indicator); self->priv->m_indicator = _tmp5_; _tmp6_ = self->priv->m_indicator; _tmp7_ = _ ("IBus Panel"); indicator_set_title (_tmp6_, _tmp7_); _tmp8_ = self->priv->m_indicator; g_signal_connect_object (_tmp8_, "registered-status-notifier-item", (GCallback) ____lambda50__indicator_registered_status_notifier_item, self, 0); _tmp9_ = self->priv->m_indicator; g_signal_connect_object (_tmp9_, "context-menu", (GCallback) ____lambda51__indicator_context_menu, self, 0); _tmp10_ = self->priv->m_indicator; g_signal_connect_object (_tmp10_, "activate", (GCallback) ____lambda57__indicator_activate, self, 0); _g_object_unref0 (_tmp0_); } goto __finally10; __catch10_g_io_error: { GError* e = NULL; GError* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp11_ = e; _tmp12_ = _tmp11_->message; g_warning ("panel.vala:257: Failed to get the session bus: %s", _tmp12_); _g_error_free0 (e); } __finally10: if (G_UNLIKELY (_inner_error_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } static void ___lambda49__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) { __lambda49_ ((Panel*) self, source_object, res); g_object_unref (self); } static void panel_init_indicator (Panel* self) { g_return_if_fail (self != NULL); self->priv->m_icon_type = PANEL_ICON_TYPE_INDICATOR; g_bus_get (G_BUS_TYPE_SESSION, NULL, ___lambda49__gasync_ready_callback, g_object_ref (self)); } static void _gtk_status_icon_position_menu_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self) { gtk_status_icon_position_menu (menu, x, y, push_in, (GtkStatusIcon*) self); } static void __lambda59_ (Panel* self, guint b, guint t) { GtkMenu* menu = NULL; GtkMenu* _tmp0_ = NULL; GtkStatusIcon* _tmp1_ = NULL; guint32 _tmp2_ = 0U; _tmp0_ = panel_create_context_menu (self); menu = _tmp0_; _tmp1_ = self->priv->m_status_icon; _tmp2_ = gtk_get_current_event_time (); gtk_menu_popup (menu, NULL, NULL, _gtk_status_icon_position_menu_gtk_menu_position_func, _tmp1_, (guint) 0, _tmp2_); _g_object_unref0 (menu); } static void ___lambda59__gtk_status_icon_popup_menu (GtkStatusIcon* _sender, guint button, guint activate_time, gpointer self) { __lambda59_ ((Panel*) self, button, activate_time); } static void __lambda60_ (Panel* self) { GtkMenu* menu = NULL; GtkMenu* _tmp0_ = NULL; GtkStatusIcon* _tmp1_ = NULL; guint32 _tmp2_ = 0U; _tmp0_ = panel_create_activate_menu (self); menu = _tmp0_; _tmp1_ = self->priv->m_status_icon; _tmp2_ = gtk_get_current_event_time (); gtk_menu_popup (menu, NULL, NULL, _gtk_status_icon_position_menu_gtk_menu_position_func, _tmp1_, (guint) 0, _tmp2_); _g_object_unref0 (menu); } static void ___lambda60__gtk_status_icon_activate (GtkStatusIcon* _sender, gpointer self) { __lambda60_ ((Panel*) self); } static void panel_init_status_icon (Panel* self) { GtkStatusIcon* _tmp0_ = NULL; GtkStatusIcon* _tmp1_ = NULL; GtkStatusIcon* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; GtkStatusIcon* _tmp4_ = NULL; GtkStatusIcon* _tmp5_ = NULL; GtkStatusIcon* _tmp6_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = gtk_status_icon_new (); _g_object_unref0 (self->priv->m_status_icon); self->priv->m_status_icon = _tmp0_; _tmp1_ = self->priv->m_status_icon; gtk_status_icon_set_name (_tmp1_, "ibus-ui-gtk"); _tmp2_ = self->priv->m_status_icon; _tmp3_ = _ ("IBus Panel"); gtk_status_icon_set_title (_tmp2_, _tmp3_); _tmp4_ = self->priv->m_status_icon; g_signal_connect_object (_tmp4_, "popup-menu", (GCallback) ___lambda59__gtk_status_icon_popup_menu, self, 0); _tmp5_ = self->priv->m_status_icon; g_signal_connect_object (_tmp5_, "activate", (GCallback) ___lambda60__gtk_status_icon_activate, self, 0); _tmp6_ = self->priv->m_status_icon; gtk_status_icon_set_from_icon_name (_tmp6_, "ibus-keyboard"); } static gpointer _panel_keybinding_ref0 (gpointer self) { return self ? panel_keybinding_ref (self) : NULL; } static void __lambda38_ (Panel* self, GdkEvent* e) { GdkEvent* _tmp0_ = NULL; g_return_if_fail (e != NULL); _tmp0_ = e; panel_handle_engine_switch (self, _tmp0_, FALSE); } static void ___lambda38__keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self) { __lambda38_ ((Panel*) self, event); } static void __lambda39_ (Panel* self, GdkEvent* e) { GdkEvent* _tmp0_ = NULL; g_return_if_fail (e != NULL); _tmp0_ = e; panel_handle_engine_switch (self, _tmp0_, TRUE); } static void ___lambda39__keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self) { __lambda39_ ((Panel*) self, event); } static void panel_keybinding_manager_bind (Panel* self, KeybindingManager* keybinding_manager, const gchar* accelerator) { guint switch_keysym = 0U; GdkModifierType switch_modifiers = 0; GdkModifierType reverse_modifier = 0; PanelKeybinding* keybinding = NULL; const gchar* _tmp0_ = NULL; guint _tmp1_ = 0U; GdkModifierType _tmp2_ = 0; static const GdkModifierType VIRTUAL_MODIFIERS = (GDK_SUPER_MASK | GDK_HYPER_MASK) | GDK_META_MASK; GdkModifierType _tmp3_ = 0; gboolean _tmp6_ = FALSE; guint _tmp7_ = 0U; guint _tmp10_ = 0U; GdkModifierType _tmp11_ = 0; PanelKeybinding* _tmp12_ = NULL; PanelKeybinding* _tmp13_ = NULL; PanelKeybinding* _tmp14_ = NULL; KeybindingManager* _tmp15_ = NULL; guint _tmp16_ = 0U; GdkModifierType _tmp17_ = 0; GdkModifierType _tmp18_ = 0; GdkModifierType _tmp19_ = 0; GdkModifierType _tmp20_ = 0; GdkModifierType _tmp21_ = 0; guint _tmp22_ = 0U; GdkModifierType _tmp23_ = 0; PanelKeybinding* _tmp24_ = NULL; PanelKeybinding* _tmp25_ = NULL; PanelKeybinding* _tmp26_ = NULL; KeybindingManager* _tmp27_ = NULL; guint _tmp28_ = 0U; GdkModifierType _tmp29_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (keybinding_manager != NULL); switch_keysym = (guint) 0; switch_modifiers = 0; reverse_modifier = GDK_SHIFT_MASK; _tmp0_ = accelerator; gtk_accelerator_parse (_tmp0_, &_tmp1_, &_tmp2_); switch_keysym = _tmp1_; switch_modifiers = _tmp2_; _tmp3_ = switch_modifiers; if ((_tmp3_ & VIRTUAL_MODIFIERS) != 0) { GdkKeymap* _tmp4_ = NULL; GdkModifierType _tmp5_ = 0; _tmp4_ = gdk_keymap_get_default (); gdk_keymap_map_virtual_modifiers (_tmp4_, &switch_modifiers); _tmp5_ = switch_modifiers; switch_modifiers = _tmp5_ & (~VIRTUAL_MODIFIERS); } _tmp7_ = switch_keysym; if (_tmp7_ == ((guint) 0)) { GdkModifierType _tmp8_ = 0; _tmp8_ = switch_modifiers; _tmp6_ = _tmp8_ == 0; } else { _tmp6_ = FALSE; } if (_tmp6_) { const gchar* _tmp9_ = NULL; _tmp9_ = accelerator; g_warning ("panel.vala:317: Parse accelerator '%s' failed!", _tmp9_); _panel_keybinding_unref0 (keybinding); return; } _tmp10_ = switch_keysym; _tmp11_ = switch_modifiers; _tmp12_ = panel_keybinding_new (_tmp10_, _tmp11_, FALSE); _panel_keybinding_unref0 (keybinding); keybinding = _tmp12_; _tmp13_ = keybinding; _tmp14_ = _panel_keybinding_ref0 (_tmp13_); self->priv->m_keybindings = g_list_append (self->priv->m_keybindings, _tmp14_); _tmp15_ = keybinding_manager; _tmp16_ = switch_keysym; _tmp17_ = switch_modifiers; keybinding_manager_bind (_tmp15_, _tmp16_, _tmp17_, ___lambda38__keybinding_manager_keybinding_handler_func, self); _tmp18_ = switch_modifiers; _tmp19_ = reverse_modifier; if ((_tmp18_ & _tmp19_) != 0) { _panel_keybinding_unref0 (keybinding); return; } _tmp20_ = switch_modifiers; _tmp21_ = reverse_modifier; switch_modifiers = _tmp20_ | _tmp21_; _tmp22_ = switch_keysym; _tmp23_ = switch_modifiers; _tmp24_ = panel_keybinding_new (_tmp22_, _tmp23_, TRUE); _panel_keybinding_unref0 (keybinding); keybinding = _tmp24_; _tmp25_ = keybinding; _tmp26_ = _panel_keybinding_ref0 (_tmp25_); self->priv->m_keybindings = g_list_append (self->priv->m_keybindings, _tmp26_); _tmp27_ = keybinding_manager; _tmp28_ = switch_keysym; _tmp29_ = switch_modifiers; keybinding_manager_bind (_tmp27_, _tmp28_, _tmp29_, ___lambda39__keybinding_manager_keybinding_handler_func, self); _panel_keybinding_unref0 (keybinding); } static void panel_bind_switch_shortcut (Panel* self) { gchar** accelerators = NULL; GSettings* _tmp0_ = NULL; gchar** _tmp1_ = NULL; gchar** _tmp2_ = NULL; gint accelerators_length1 = 0; gint _accelerators_size_ = 0; KeybindingManager* keybinding_manager = NULL; KeybindingManager* _tmp3_ = NULL; gchar** _tmp4_ = NULL; gint _tmp4__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_hotkey; _tmp2_ = _tmp1_ = g_settings_get_strv (_tmp0_, "triggers"); accelerators = _tmp2_; accelerators_length1 = _vala_array_length (_tmp1_); _accelerators_size_ = accelerators_length1; _tmp3_ = keybinding_manager_get_instance (); keybinding_manager = _tmp3_; _tmp4_ = accelerators; _tmp4__length1 = accelerators_length1; { gchar** accelerator_collection = NULL; gint accelerator_collection_length1 = 0; gint _accelerator_collection_size_ = 0; gint accelerator_it = 0; accelerator_collection = _tmp4_; accelerator_collection_length1 = _tmp4__length1; for (accelerator_it = 0; accelerator_it < _tmp4__length1; accelerator_it = accelerator_it + 1) { gchar* _tmp5_ = NULL; gchar* accelerator = NULL; _tmp5_ = g_strdup (accelerator_collection[accelerator_it]); accelerator = _tmp5_; { KeybindingManager* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; _tmp6_ = keybinding_manager; _tmp7_ = accelerator; panel_keybinding_manager_bind (self, _tmp6_, _tmp7_); _g_free0 (accelerator); } } } _g_object_unref0 (keybinding_manager); accelerators = (_vala_array_free (accelerators, accelerators_length1, (GDestroyNotify) g_free), NULL); } static void panel_unbind_switch_shortcut (Panel* self) { KeybindingManager* keybinding_manager = NULL; KeybindingManager* _tmp0_ = NULL; GList* keybindings = NULL; GList* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = keybinding_manager_get_instance (); keybinding_manager = _tmp0_; _tmp1_ = self->priv->m_keybindings; keybindings = _tmp1_; while (TRUE) { GList* _tmp2_ = NULL; PanelKeybinding* keybinding = NULL; GList* _tmp3_ = NULL; gconstpointer _tmp4_ = NULL; PanelKeybinding* _tmp5_ = NULL; KeybindingManager* _tmp6_ = NULL; PanelKeybinding* _tmp7_ = NULL; guint _tmp8_ = 0U; guint _tmp9_ = 0U; PanelKeybinding* _tmp10_ = NULL; GdkModifierType _tmp11_ = 0; GdkModifierType _tmp12_ = 0; GList* _tmp13_ = NULL; GList* _tmp14_ = NULL; _tmp2_ = keybindings; if (!(_tmp2_ != NULL)) { break; } _tmp3_ = keybindings; _tmp4_ = _tmp3_->data; _tmp5_ = _panel_keybinding_ref0 ((PanelKeybinding*) _tmp4_); keybinding = _tmp5_; _tmp6_ = keybinding_manager; _tmp7_ = keybinding; _tmp8_ = panel_keybinding_get_keysym (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = keybinding; _tmp11_ = panel_keybinding_get_modifiers (_tmp10_); _tmp12_ = _tmp11_; keybinding_manager_unbind (_tmp6_, _tmp9_, _tmp12_); _tmp13_ = keybindings; _tmp14_ = _tmp13_->next; keybindings = _tmp14_; _panel_keybinding_unref0 (keybinding); } __g_list_free__panel_keybinding_unref0_0 (self->priv->m_keybindings); self->priv->m_keybindings = NULL; _g_object_unref0 (keybinding_manager); } /** * panel_get_engines_from_xkb: * @self: #Panel class * @engines: all engines from ibus_bus_list_engines() * @returns: ibus xkb engines * * Made ibus engines from the current XKB keymaps. * This returns only XKB engines whose name start with "xkb:". */ static void _g_list_free__g_object_unref0_ (GList* self) { g_list_foreach (self, (GFunc) _g_object_unref0_, NULL); g_list_free (self); } static GList* panel_get_engines_from_xkb (Panel* self, GList* engines) { GList* result = NULL; gchar* layouts = NULL; gchar* variants = NULL; gchar* option = NULL; gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; GList* xkb_engines = NULL; IBusEngineDesc* us_engine = NULL; IBusEngineDesc* _tmp3_ = NULL; gchar** layout_array = NULL; const gchar* _tmp4_ = NULL; gchar** _tmp5_ = NULL; gchar** _tmp6_ = NULL; gint layout_array_length1 = 0; gint _layout_array_size_ = 0; gchar** variant_array = NULL; const gchar* _tmp7_ = NULL; gchar** _tmp8_ = NULL; gchar** _tmp9_ = NULL; gint variant_array_length1 = 0; gint _variant_array_size_ = 0; GList* _tmp51_ = NULL; guint _tmp52_ = 0U; g_return_val_if_fail (self != NULL, NULL); xkb_layout_get_layout (&_tmp0_, &_tmp1_, &_tmp2_); _g_free0 (layouts); layouts = _tmp0_; _g_free0 (variants); variants = _tmp1_; _g_free0 (option); option = _tmp2_; xkb_engines = NULL; _tmp3_ = ibus_engine_desc_new ("xkb:us::eng", "", "", "", "", "", "", ""); g_object_ref_sink (_tmp3_); us_engine = _tmp3_; _tmp4_ = layouts; _tmp6_ = _tmp5_ = g_strsplit (_tmp4_, ",", 0); layout_array = _tmp6_; layout_array_length1 = _vala_array_length (_tmp5_); _layout_array_size_ = layout_array_length1; _tmp7_ = variants; _tmp9_ = _tmp8_ = g_strsplit (_tmp7_, ",", 0); variant_array = _tmp9_; variant_array_length1 = _vala_array_length (_tmp8_); _variant_array_size_ = variant_array_length1; { gint i = 0; i = 0; { gboolean _tmp10_ = FALSE; _tmp10_ = TRUE; while (TRUE) { gint _tmp12_ = 0; gchar** _tmp13_ = NULL; gint _tmp13__length1 = 0; gchar* layout = NULL; gchar** _tmp14_ = NULL; gint _tmp14__length1 = 0; gint _tmp15_ = 0; const gchar* _tmp16_ = NULL; gchar* _tmp17_ = NULL; gchar* variant = NULL; IBusEngineDesc* current_engine = NULL; gint _tmp18_ = 0; gchar** _tmp19_ = NULL; gint _tmp19__length1 = 0; const gchar* _tmp24_ = NULL; GList* _tmp26_ = NULL; IBusEngineDesc* _tmp41_ = NULL; if (!_tmp10_) { gint _tmp11_ = 0; _tmp11_ = i; i = _tmp11_ + 1; } _tmp10_ = FALSE; _tmp12_ = i; _tmp13_ = layout_array; _tmp13__length1 = layout_array_length1; if (!(_tmp12_ < _tmp13__length1)) { break; } _tmp14_ = layout_array; _tmp14__length1 = layout_array_length1; _tmp15_ = i; _tmp16_ = _tmp14_[_tmp15_]; _tmp17_ = g_strdup (_tmp16_); layout = _tmp17_; variant = NULL; current_engine = NULL; _tmp18_ = i; _tmp19_ = variant_array; _tmp19__length1 = variant_array_length1; if (_tmp18_ < _tmp19__length1) { gchar** _tmp20_ = NULL; gint _tmp20__length1 = 0; gint _tmp21_ = 0; const gchar* _tmp22_ = NULL; gchar* _tmp23_ = NULL; _tmp20_ = variant_array; _tmp20__length1 = variant_array_length1; _tmp21_ = i; _tmp22_ = _tmp20_[_tmp21_]; _tmp23_ = g_strdup (_tmp22_); _g_free0 (variant); variant = _tmp23_; } _tmp24_ = variant; if (_tmp24_ == NULL) { gchar* _tmp25_ = NULL; _tmp25_ = g_strdup (""); _g_free0 (variant); variant = _tmp25_; } _tmp26_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp26_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar* name = NULL; IBusEngineDesc* _tmp27_ = NULL; const gchar* _tmp28_ = NULL; gchar* _tmp29_ = NULL; const gchar* _tmp30_ = NULL; gboolean _tmp31_ = FALSE; gboolean _tmp32_ = FALSE; IBusEngineDesc* _tmp33_ = NULL; const gchar* _tmp34_ = NULL; const gchar* _tmp35_ = NULL; _tmp27_ = engine; _tmp28_ = ibus_engine_desc_get_name (_tmp27_); _tmp29_ = g_strdup (_tmp28_); name = _tmp29_; _tmp30_ = name; _tmp31_ = g_str_has_prefix (_tmp30_, "xkb:"); if (!_tmp31_) { _g_free0 (name); continue; } _tmp33_ = engine; _tmp34_ = ibus_engine_desc_get_layout (_tmp33_); _tmp35_ = layout; if (g_strcmp0 (_tmp34_, _tmp35_) == 0) { IBusEngineDesc* _tmp36_ = NULL; const gchar* _tmp37_ = NULL; const gchar* _tmp38_ = NULL; _tmp36_ = engine; _tmp37_ = ibus_engine_desc_get_layout_variant (_tmp36_); _tmp38_ = variant; _tmp32_ = g_strcmp0 (_tmp37_, _tmp38_) == 0; } else { _tmp32_ = FALSE; } if (_tmp32_) { IBusEngineDesc* _tmp39_ = NULL; IBusEngineDesc* _tmp40_ = NULL; _tmp39_ = engine; _tmp40_ = _g_object_ref0 (_tmp39_); _g_object_unref0 (current_engine); current_engine = _tmp40_; _g_free0 (name); break; } _g_free0 (name); } } } _tmp41_ = current_engine; if (_tmp41_ != NULL) { IBusEngineDesc* _tmp42_ = NULL; IBusEngineDesc* _tmp43_ = NULL; _tmp42_ = current_engine; _tmp43_ = _g_object_ref0 (_tmp42_); xkb_engines = g_list_append (xkb_engines, _tmp43_); } else { GList* _tmp44_ = NULL; IBusEngineDesc* _tmp45_ = NULL; GList* _tmp46_ = NULL; _tmp44_ = xkb_engines; _tmp45_ = us_engine; _tmp46_ = g_list_find (_tmp44_, _tmp45_); if (_tmp46_ == NULL) { const gchar* _tmp47_ = NULL; const gchar* _tmp48_ = NULL; IBusEngineDesc* _tmp49_ = NULL; IBusEngineDesc* _tmp50_ = NULL; _tmp47_ = layout; _tmp48_ = variant; g_warning ("panel.vala:426: Fallback %s(%s) to us layout.", _tmp47_, _tmp48_); _tmp49_ = us_engine; _tmp50_ = _g_object_ref0 (_tmp49_); xkb_engines = g_list_append (xkb_engines, _tmp50_); } } _g_object_unref0 (current_engine); _g_free0 (variant); _g_free0 (layout); } } } _tmp51_ = xkb_engines; _tmp52_ = g_list_length (_tmp51_); if (_tmp52_ == ((guint) 0)) { g_warning ("panel.vala:432: Not found IBus XKB engines from the session."); } result = xkb_engines; variant_array = (_vala_array_free (variant_array, variant_array_length1, (GDestroyNotify) g_free), NULL); layout_array = (_vala_array_free (layout_array, layout_array_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (us_engine); _g_free0 (option); _g_free0 (variants); _g_free0 (layouts); return result; } /** * panel_get_engines_from_locale: * @self: #Panel class * @engines: all engines from ibus_bus_list_engines() * @returns: ibus im engines * * Made ibus engines from the current locale and IBus.EngineDesc.lang . * This returns non-XKB engines whose name does not start "xkb:". */ static gint __lambda66_ (IBusEngineDesc* a, IBusEngineDesc* b) { gint result = 0; IBusEngineDesc* _tmp0_ = NULL; guint _tmp1_ = 0U; IBusEngineDesc* _tmp2_ = NULL; guint _tmp3_ = 0U; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); _tmp0_ = b; _tmp1_ = ibus_engine_desc_get_rank (_tmp0_); _tmp2_ = a; _tmp3_ = ibus_engine_desc_get_rank (_tmp2_); result = ((gint) _tmp1_) - ((gint) _tmp3_); return result; } static gint ___lambda66__gcompare_func (gconstpointer a, gconstpointer b) { gint result; result = __lambda66_ ((IBusEngineDesc*) a, (IBusEngineDesc*) b); return result; } static GList* panel_get_engines_from_locale (Panel* self, GList* engines) { GList* result = NULL; gchar* locale = NULL; const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* lang = NULL; const gchar* _tmp4_ = NULL; gchar** _tmp5_ = NULL; gchar** _tmp6_ = NULL; gchar** _tmp7_ = NULL; gint _tmp7__length1 = 0; const gchar* _tmp8_ = NULL; gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; GList* im_engines = NULL; GList* _tmp11_ = NULL; GList* _tmp25_ = NULL; guint _tmp26_ = 0U; GList* _tmp47_ = NULL; guint _tmp48_ = 0U; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = setlocale (LC_CTYPE, NULL); _tmp1_ = g_strdup (_tmp0_); locale = _tmp1_; _tmp2_ = locale; if (_tmp2_ == NULL) { gchar* _tmp3_ = NULL; _tmp3_ = g_strdup ("C"); _g_free0 (locale); locale = _tmp3_; } _tmp4_ = locale; _tmp6_ = _tmp5_ = g_strsplit (_tmp4_, ".", 0); _tmp7_ = _tmp6_; _tmp7__length1 = _vala_array_length (_tmp5_); _tmp8_ = _tmp7_[0]; _tmp9_ = g_strdup (_tmp8_); _tmp10_ = _tmp9_; _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); lang = _tmp10_; im_engines = NULL; _tmp11_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp11_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar* name = NULL; IBusEngineDesc* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; gchar* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; gboolean _tmp16_ = FALSE; gboolean _tmp17_ = FALSE; IBusEngineDesc* _tmp18_ = NULL; const gchar* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; _tmp12_ = engine; _tmp13_ = ibus_engine_desc_get_name (_tmp12_); _tmp14_ = g_strdup (_tmp13_); name = _tmp14_; _tmp15_ = name; _tmp16_ = g_str_has_prefix (_tmp15_, "xkb:"); if (_tmp16_) { _g_free0 (name); continue; } _tmp18_ = engine; _tmp19_ = ibus_engine_desc_get_language (_tmp18_); _tmp20_ = lang; if (g_strcmp0 (_tmp19_, _tmp20_) == 0) { IBusEngineDesc* _tmp21_ = NULL; guint _tmp22_ = 0U; _tmp21_ = engine; _tmp22_ = ibus_engine_desc_get_rank (_tmp21_); _tmp17_ = _tmp22_ > ((guint) 0); } else { _tmp17_ = FALSE; } if (_tmp17_) { IBusEngineDesc* _tmp23_ = NULL; IBusEngineDesc* _tmp24_ = NULL; _tmp23_ = engine; _tmp24_ = _g_object_ref0 (_tmp23_); im_engines = g_list_append (im_engines, _tmp24_); } _g_free0 (name); } } } _tmp25_ = im_engines; _tmp26_ = g_list_length (_tmp25_); if (_tmp26_ == ((guint) 0)) { const gchar* _tmp27_ = NULL; gchar** _tmp28_ = NULL; gchar** _tmp29_ = NULL; gchar** _tmp30_ = NULL; gint _tmp30__length1 = 0; const gchar* _tmp31_ = NULL; gchar* _tmp32_ = NULL; GList* _tmp33_ = NULL; _tmp27_ = lang; _tmp29_ = _tmp28_ = g_strsplit (_tmp27_, "_", 0); _tmp30_ = _tmp29_; _tmp30__length1 = _vala_array_length (_tmp28_); _tmp31_ = _tmp30_[0]; _tmp32_ = g_strdup (_tmp31_); _g_free0 (lang); lang = _tmp32_; _tmp30_ = (_vala_array_free (_tmp30_, _tmp30__length1, (GDestroyNotify) g_free), NULL); _tmp33_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp33_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar* name = NULL; IBusEngineDesc* _tmp34_ = NULL; const gchar* _tmp35_ = NULL; gchar* _tmp36_ = NULL; const gchar* _tmp37_ = NULL; gboolean _tmp38_ = FALSE; gboolean _tmp39_ = FALSE; IBusEngineDesc* _tmp40_ = NULL; const gchar* _tmp41_ = NULL; const gchar* _tmp42_ = NULL; _tmp34_ = engine; _tmp35_ = ibus_engine_desc_get_name (_tmp34_); _tmp36_ = g_strdup (_tmp35_); name = _tmp36_; _tmp37_ = name; _tmp38_ = g_str_has_prefix (_tmp37_, "xkb:"); if (_tmp38_) { _g_free0 (name); continue; } _tmp40_ = engine; _tmp41_ = ibus_engine_desc_get_language (_tmp40_); _tmp42_ = lang; if (g_strcmp0 (_tmp41_, _tmp42_) == 0) { IBusEngineDesc* _tmp43_ = NULL; guint _tmp44_ = 0U; _tmp43_ = engine; _tmp44_ = ibus_engine_desc_get_rank (_tmp43_); _tmp39_ = _tmp44_ > ((guint) 0); } else { _tmp39_ = FALSE; } if (_tmp39_) { IBusEngineDesc* _tmp45_ = NULL; IBusEngineDesc* _tmp46_ = NULL; _tmp45_ = engine; _tmp46_ = _g_object_ref0 (_tmp45_); im_engines = g_list_append (im_engines, _tmp46_); } _g_free0 (name); } } } } _tmp47_ = im_engines; _tmp48_ = g_list_length (_tmp47_); if (_tmp48_ == ((guint) 0)) { result = im_engines; _g_free0 (lang); _g_free0 (locale); return result; } im_engines = g_list_sort (im_engines, ___lambda66__gcompare_func); result = im_engines; _g_free0 (lang); _g_free0 (locale); return result; } static void _vala_array_add14 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add15 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void panel_init_engines_order (Panel* self) { XKBLayout* _tmp0_ = NULL; GSettings* _tmp1_ = NULL; gchar** _tmp2_ = NULL; gchar** _tmp3_ = NULL; gchar** _tmp4_ = NULL; gint _tmp4__length1 = 0; gboolean _tmp5_ = FALSE; GSettings* _tmp6_ = NULL; gchar** _tmp7_ = NULL; gchar** _tmp8_ = NULL; gchar** _tmp9_ = NULL; gint _tmp9__length1 = 0; gboolean _tmp10_ = FALSE; GList* engines = NULL; IBusBus* _tmp11_ = NULL; GList* _tmp12_ = NULL; GList* xkb_engines = NULL; GList* _tmp13_ = NULL; GList* _tmp14_ = NULL; GList* im_engines = NULL; GList* _tmp15_ = NULL; GList* _tmp16_ = NULL; gchar** names = NULL; gchar** _tmp17_ = NULL; gint names_length1 = 0; gint _names_size_ = 0; GList* _tmp18_ = NULL; GList* _tmp23_ = NULL; GSettings* _tmp28_ = NULL; gchar** _tmp29_ = NULL; gint _tmp29__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_xkblayout; _tmp1_ = self->priv->m_settings_general; _tmp3_ = _tmp2_ = g_settings_get_strv (_tmp1_, "xkb-latin-layouts"); _tmp4_ = _tmp3_; _tmp4__length1 = _vala_array_length (_tmp2_); xkb_layout_set_latin_layouts (_tmp0_, _tmp4_, _vala_array_length (_tmp2_)); _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_free), NULL); _tmp5_ = self->priv->inited_engines_order; if (_tmp5_) { return; } _tmp6_ = self->priv->m_settings_general; _tmp8_ = _tmp7_ = g_settings_get_strv (_tmp6_, "preload-engines"); _tmp9_ = _tmp8_; _tmp9__length1 = _vala_array_length (_tmp7_); _tmp10_ = _vala_array_length (_tmp7_) > 0; _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_free), NULL); if (_tmp10_) { return; } _tmp11_ = self->priv->m_bus; _tmp12_ = ibus_bus_list_engines (_tmp11_); engines = _tmp12_; _tmp13_ = engines; _tmp14_ = panel_get_engines_from_xkb (self, _tmp13_); xkb_engines = _tmp14_; _tmp15_ = engines; _tmp16_ = panel_get_engines_from_locale (self, _tmp15_); im_engines = _tmp16_; _tmp17_ = g_new0 (gchar*, 0 + 1); names = _tmp17_; names_length1 = 0; _names_size_ = names_length1; _tmp18_ = xkb_engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp18_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar** _tmp19_ = NULL; gint _tmp19__length1 = 0; IBusEngineDesc* _tmp20_ = NULL; const gchar* _tmp21_ = NULL; gchar* _tmp22_ = NULL; _tmp19_ = names; _tmp19__length1 = names_length1; _tmp20_ = engine; _tmp21_ = ibus_engine_desc_get_name (_tmp20_); _tmp22_ = g_strdup (_tmp21_); _vala_array_add14 (&names, &names_length1, &_names_size_, _tmp22_); } } } _tmp23_ = im_engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp23_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar** _tmp24_ = NULL; gint _tmp24__length1 = 0; IBusEngineDesc* _tmp25_ = NULL; const gchar* _tmp26_ = NULL; gchar* _tmp27_ = NULL; _tmp24_ = names; _tmp24__length1 = names_length1; _tmp25_ = engine; _tmp26_ = ibus_engine_desc_get_name (_tmp25_); _tmp27_ = g_strdup (_tmp26_); _vala_array_add15 (&names, &names_length1, &_names_size_, _tmp27_); } } } _tmp28_ = self->priv->m_settings_general; _tmp29_ = names; _tmp29__length1 = names_length1; g_settings_set_strv (_tmp28_, "preload-engines", _tmp29_); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); __g_list_free__g_object_unref0_0 (im_engines); __g_list_free__g_object_unref0_0 (xkb_engines); __g_list_free__g_object_unref0_0 (engines); } static void panel_set_custom_font (Panel* self) { GdkDisplay* display = NULL; GdkDisplay* _tmp0_ = NULL; GdkDisplay* _tmp1_ = NULL; GdkScreen* _tmp2_ = NULL; GdkDisplay* _tmp3_ = NULL; GdkScreen* screen = NULL; GdkScreen* _tmp6_ = NULL; GdkScreen* _tmp7_ = NULL; gboolean use_custom_font = FALSE; GSettings* _tmp8_ = NULL; gboolean _tmp9_ = FALSE; GtkCssProvider* _tmp10_ = NULL; gboolean _tmp13_ = FALSE; gchar* font_name = NULL; GSettings* _tmp14_ = NULL; gchar* _tmp15_ = NULL; const gchar* _tmp16_ = NULL; gchar* data_format = NULL; gchar* _tmp17_ = NULL; gchar* data = NULL; const gchar* _tmp18_ = NULL; const gchar* _tmp19_ = NULL; gchar* _tmp20_ = NULL; GtkCssProvider* _tmp21_ = NULL; GdkScreen* _tmp27_ = NULL; GtkCssProvider* _tmp28_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = gdk_display_get_default (); _tmp1_ = _g_object_ref0 (_tmp0_); display = _tmp1_; _tmp3_ = display; if (_tmp3_ != NULL) { GdkDisplay* _tmp4_ = NULL; GdkScreen* _tmp5_ = NULL; _tmp4_ = display; _tmp5_ = gdk_display_get_default_screen (_tmp4_); _tmp2_ = _tmp5_; } else { _tmp2_ = NULL; } _tmp6_ = _g_object_ref0 (_tmp2_); screen = _tmp6_; _tmp7_ = screen; if (_tmp7_ == NULL) { g_warning ("panel.vala:523: Could not open display."); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp8_ = self->priv->m_settings_panel; _tmp9_ = g_settings_get_boolean (_tmp8_, "use-custom-font"); use_custom_font = _tmp9_; _tmp10_ = self->priv->m_css_provider; if (_tmp10_ != NULL) { GdkScreen* _tmp11_ = NULL; GtkCssProvider* _tmp12_ = NULL; _tmp11_ = screen; _tmp12_ = self->priv->m_css_provider; gtk_style_context_remove_provider_for_screen (_tmp11_, (GtkStyleProvider*) _tmp12_); _g_object_unref0 (self->priv->m_css_provider); self->priv->m_css_provider = NULL; } _tmp13_ = use_custom_font; if (_tmp13_ == FALSE) { _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp14_ = self->priv->m_settings_panel; _tmp15_ = g_settings_get_string (_tmp14_, "custom-font"); font_name = _tmp15_; _tmp16_ = font_name; if (_tmp16_ == NULL) { g_warning ("panel.vala:542: No config panel:custom-font."); _g_free0 (font_name); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp17_ = g_strdup ("GtkLabel { font: %s; }"); data_format = _tmp17_; _tmp18_ = data_format; _tmp19_ = font_name; _tmp20_ = g_strdup_printf (_tmp18_, _tmp19_); data = _tmp20_; _tmp21_ = gtk_css_provider_new (); _g_object_unref0 (self->priv->m_css_provider); self->priv->m_css_provider = _tmp21_; { GtkCssProvider* _tmp22_ = NULL; const gchar* _tmp23_ = NULL; _tmp22_ = self->priv->m_css_provider; _tmp23_ = data; gtk_css_provider_load_from_data (_tmp22_, _tmp23_, (gssize) (-1), &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch11_g_error; } } goto __finally11; __catch11_g_error: { GError* e = NULL; const gchar* _tmp24_ = NULL; GError* _tmp25_ = NULL; const gchar* _tmp26_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp24_ = font_name; _tmp25_ = e; _tmp26_ = _tmp25_->message; g_warning ("panel.vala:553: Failed css_provider_from_data: %s: %s", _tmp24_, _tmp26_); _g_error_free0 (e); _g_free0 (data); _g_free0 (data_format); _g_free0 (font_name); _g_object_unref0 (screen); _g_object_unref0 (display); return; } __finally11: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (data); _g_free0 (data_format); _g_free0 (font_name); _g_object_unref0 (screen); _g_object_unref0 (display); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp27_ = screen; _tmp28_ = self->priv->m_css_provider; gtk_style_context_add_provider_for_screen (_tmp27_, (GtkStyleProvider*) _tmp28_, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_free0 (data); _g_free0 (data_format); _g_free0 (font_name); _g_object_unref0 (screen); _g_object_unref0 (display); } static void panel_set_switcher_delay_time (Panel* self) { GSettings* _tmp0_ = NULL; gint _tmp1_ = 0; gboolean _tmp2_ = FALSE; Switcher* _tmp3_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = g_settings_get_int (_tmp0_, "switcher-delay-time"); self->priv->m_switcher_delay_time = _tmp1_; _tmp3_ = self->priv->m_switcher; if (_tmp3_ != NULL) { gint _tmp4_ = 0; _tmp4_ = self->priv->m_switcher_delay_time; _tmp2_ = _tmp4_ >= 0; } else { _tmp2_ = FALSE; } if (_tmp2_) { Switcher* _tmp5_ = NULL; gint _tmp6_ = 0; _tmp5_ = self->priv->m_switcher; _tmp6_ = self->priv->m_switcher_delay_time; switcher_set_popup_delay_time (_tmp5_, (guint) _tmp6_); } } static void panel_set_use_system_keyboard_layout (Panel* self) { GSettings* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = g_settings_get_boolean (_tmp0_, "use-system-keyboard-layout"); self->priv->m_use_system_keyboard_layout = _tmp1_; } static void panel_set_embed_preedit_text (Panel* self) { GVariant* variant = NULL; GSettings* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; GVariant* _tmp2_ = NULL; IBusBus* _tmp3_ = NULL; GVariant* _tmp4_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = g_settings_get_value (_tmp0_, "embed-preedit-text"); variant = _tmp1_; _tmp2_ = variant; if (_tmp2_ == NULL) { _g_variant_unref0 (variant); return; } _tmp3_ = self->priv->m_bus; _tmp4_ = variant; ibus_bus_set_ibus_property (_tmp3_, "EmbedPreeditText", _tmp4_); _g_variant_unref0 (variant); } static void panel_set_use_global_engine (Panel* self) { GSettings* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = g_settings_get_boolean (_tmp0_, "use-global-engine"); self->priv->m_use_global_engine = _tmp1_; } static void panel_set_use_xmodmap (Panel* self) { XKBLayout* _tmp0_ = NULL; GSettings* _tmp1_ = NULL; gboolean _tmp2_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_xkblayout; _tmp1_ = self->priv->m_settings_general; _tmp2_ = g_settings_get_boolean (_tmp1_, "use-xmodmap"); xkb_layout_set_use_xmodmap (_tmp0_, _tmp2_); } static void panel_set_show_icon_on_systray (Panel* self) { PanelIconType _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_icon_type; if (_tmp0_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp1_ = NULL; GtkStatusIcon* _tmp2_ = NULL; GSettings* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; _tmp1_ = self->priv->m_status_icon; if (_tmp1_ == NULL) { return; } _tmp2_ = self->priv->m_status_icon; _tmp3_ = self->priv->m_settings_panel; _tmp4_ = g_settings_get_boolean (_tmp3_, "show-icon-on-systray"); gtk_status_icon_set_visible (_tmp2_, _tmp4_); } else { PanelIconType _tmp5_ = 0; _tmp5_ = self->priv->m_icon_type; if (_tmp5_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp6_ = NULL; GSettings* _tmp7_ = NULL; gboolean _tmp8_ = FALSE; _tmp6_ = self->priv->m_indicator; if (_tmp6_ == NULL) { return; } _tmp7_ = self->priv->m_settings_panel; _tmp8_ = g_settings_get_boolean (_tmp7_, "show-icon-on-systray"); if (_tmp8_) { Indicator* _tmp9_ = NULL; _tmp9_ = self->priv->m_indicator; indicator_set_status (_tmp9_, INDICATOR_STATUS_ACTIVE); } else { Indicator* _tmp10_ = NULL; _tmp10_ = self->priv->m_indicator; indicator_set_status (_tmp10_, INDICATOR_STATUS_PASSIVE); } } } } static void panel_set_lookup_table_orientation (Panel* self) { CandidatePanel* _tmp0_ = NULL; CandidatePanel* _tmp1_ = NULL; GSettings* _tmp2_ = NULL; gint _tmp3_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_candidate_panel; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_candidate_panel; _tmp2_ = self->priv->m_settings_panel; _tmp3_ = g_settings_get_int (_tmp2_, "lookup-table-orientation"); candidate_panel_set_vertical (_tmp1_, _tmp3_ == ((gint) IBUS_ORIENTATION_VERTICAL)); } static void panel_set_show_property_panel (Panel* self) { PropertyPanel* _tmp0_ = NULL; PropertyPanel* _tmp1_ = NULL; GSettings* _tmp2_ = NULL; gint _tmp3_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property_panel; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_property_panel; _tmp2_ = self->priv->m_settings_panel; _tmp3_ = g_settings_get_int (_tmp2_, "show"); property_panel_set_show (_tmp1_, _tmp3_); } static void panel_set_timeout_property_panel (Panel* self) { PropertyPanel* _tmp0_ = NULL; PropertyPanel* _tmp1_ = NULL; GSettings* _tmp2_ = NULL; gint _tmp3_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property_panel; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_property_panel; _tmp2_ = self->priv->m_settings_panel; _tmp3_ = g_settings_get_int (_tmp2_, "auto-hide-timeout"); property_panel_set_auto_hide_timeout (_tmp1_, (guint) _tmp3_); } static void panel_set_follow_input_cursor_when_always_shown_property_panel (Panel* self) { PropertyPanel* _tmp0_ = NULL; PropertyPanel* _tmp1_ = NULL; GSettings* _tmp2_ = NULL; gboolean _tmp3_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property_panel; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_property_panel; _tmp2_ = self->priv->m_settings_panel; _tmp3_ = g_settings_get_boolean (_tmp2_, "follow-input-cursor-when-always-shown"); property_panel_set_follow_input_cursor_when_always_shown (_tmp1_, _tmp3_); } static void panel_set_xkb_icon_rgba (Panel* self) { gchar* spec = NULL; GSettings* _tmp0_ = NULL; gchar* _tmp1_ = NULL; GdkRGBA rgba = {0}; GdkRGBA _tmp2_ = {0}; const gchar* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; PanelIconType _tmp9_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = g_settings_get_string (_tmp0_, "xkb-icon-rgba"); spec = _tmp1_; _tmp2_.red = (gdouble) 0; rgba = _tmp2_; _tmp3_ = spec; _tmp4_ = gdk_rgba_parse (&rgba, _tmp3_); if (!_tmp4_) { const gchar* _tmp5_ = NULL; GdkRGBA _tmp6_ = {0}; GdkRGBA _tmp7_ = {0}; _tmp5_ = spec; g_warning ("panel.vala:656: invalid format of xkb-icon-rgba: %s", _tmp5_); memset (&_tmp6_, 0, sizeof (GdkRGBA)); _tmp6_.red = 0.0; _tmp6_.green = 0.0; _tmp6_.blue = 0.0; _tmp6_.alpha = 1.0; self->priv->m_xkb_icon_rgba = _tmp6_; _tmp7_ = self->priv->m_xkb_icon_rgba; } else { GdkRGBA _tmp8_ = {0}; _tmp8_ = rgba; self->priv->m_xkb_icon_rgba = _tmp8_; } _tmp9_ = self->priv->m_icon_type; if (_tmp9_ == PANEL_ICON_TYPE_STATUS_ICON) { GHashTable* _tmp10_ = NULL; guint _tmp11_ = 0U; _tmp10_ = self->priv->m_xkb_icon_pixbufs; _tmp11_ = g_hash_table_size (_tmp10_); if (_tmp11_ > ((guint) 0)) { GHashTable* _tmp12_ = NULL; gboolean _tmp13_ = FALSE; GtkStatusIcon* _tmp14_ = NULL; _tmp12_ = self->priv->m_xkb_icon_pixbufs; g_hash_table_remove_all (_tmp12_); _tmp14_ = self->priv->m_status_icon; if (_tmp14_ != NULL) { Switcher* _tmp15_ = NULL; _tmp15_ = self->priv->m_switcher; _tmp13_ = _tmp15_ != NULL; } else { _tmp13_ = FALSE; } if (_tmp13_) { g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } } } else { PanelIconType _tmp16_ = 0; _tmp16_ = self->priv->m_icon_type; if (_tmp16_ == PANEL_ICON_TYPE_INDICATOR) { GHashTable* _tmp17_ = NULL; guint _tmp18_ = 0U; _tmp17_ = self->priv->m_xkb_icon_image; _tmp18_ = g_hash_table_size (_tmp17_); if (_tmp18_ > ((guint) 0)) { GHashTable* _tmp19_ = NULL; gboolean _tmp20_ = FALSE; Indicator* _tmp21_ = NULL; _tmp19_ = self->priv->m_xkb_icon_image; g_hash_table_remove_all (_tmp19_); _tmp21_ = self->priv->m_indicator; if (_tmp21_ != NULL) { Switcher* _tmp22_ = NULL; _tmp22_ = self->priv->m_switcher; _tmp20_ = _tmp22_ != NULL; } else { _tmp20_ = FALSE; } if (_tmp20_) { g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } } } } _g_free0 (spec); } static void panel_set_property_icon_delay_time (Panel* self) { GSettings* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = g_settings_get_int (_tmp0_, "property-icon-delay-time"); self->priv->m_property_icon_delay_time = _tmp1_; } static gint panel_compare_versions (Panel* self, const gchar* version1, const gchar* version2) { gint result = 0; gchar** version1_list = NULL; const gchar* _tmp0_ = NULL; gchar** _tmp1_ = NULL; gchar** _tmp2_ = NULL; gint version1_list_length1 = 0; gint _version1_list_size_ = 0; gchar** version2_list = NULL; const gchar* _tmp3_ = NULL; gchar** _tmp4_ = NULL; gchar** _tmp5_ = NULL; gint version2_list_length1 = 0; gint _version2_list_size_ = 0; gint major1 = 0; gint minor1 = 0; gint micro1 = 0; gint major2 = 0; gint minor2 = 0; gint micro2 = 0; const gchar* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gchar** _tmp10_ = NULL; gint _tmp10__length1 = 0; gchar** _tmp11_ = NULL; gint _tmp11__length1 = 0; gchar** _tmp12_ = NULL; gint _tmp12__length1 = 0; const gchar* _tmp13_ = NULL; gint _tmp14_ = 0; gchar** _tmp15_ = NULL; gint _tmp15__length1 = 0; const gchar* _tmp16_ = NULL; gint _tmp17_ = 0; gchar** _tmp18_ = NULL; gint _tmp18__length1 = 0; const gchar* _tmp19_ = NULL; gint _tmp20_ = 0; gchar** _tmp21_ = NULL; gint _tmp21__length1 = 0; const gchar* _tmp22_ = NULL; gint _tmp23_ = 0; gchar** _tmp24_ = NULL; gint _tmp24__length1 = 0; const gchar* _tmp25_ = NULL; gint _tmp26_ = 0; gchar** _tmp27_ = NULL; gint _tmp27__length1 = 0; const gchar* _tmp28_ = NULL; gint _tmp29_ = 0; gboolean _tmp30_ = FALSE; gboolean _tmp31_ = FALSE; gint _tmp32_ = 0; gint _tmp33_ = 0; gboolean _tmp38_ = FALSE; gboolean _tmp39_ = FALSE; gint _tmp40_ = 0; gint _tmp41_ = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (version1 != NULL, 0); g_return_val_if_fail (version2 != NULL, 0); _tmp0_ = version1; _tmp2_ = _tmp1_ = g_strsplit (_tmp0_, ".", 0); version1_list = _tmp2_; version1_list_length1 = _vala_array_length (_tmp1_); _version1_list_size_ = version1_list_length1; _tmp3_ = version2; _tmp5_ = _tmp4_ = g_strsplit (_tmp3_, ".", 0); version2_list = _tmp5_; version2_list_length1 = _vala_array_length (_tmp4_); _version2_list_size_ = version2_list_length1; _tmp6_ = version1; _tmp7_ = version2; if (g_strcmp0 (_tmp6_, _tmp7_) == 0) { result = 0; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } _tmp8_ = version1; if (g_strcmp0 (_tmp8_, "") == 0) { result = -1; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } _tmp9_ = version2; if (g_strcmp0 (_tmp9_, "") == 0) { result = 1; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } _tmp10_ = version1_list; _tmp10__length1 = version1_list_length1; _vala_assert (_tmp10__length1 >= 3, "version1_list.length >= 3"); _tmp11_ = version2_list; _tmp11__length1 = version2_list_length1; _vala_assert (_tmp11__length1 >= 3, "version2_list.length >= 3"); _tmp12_ = version1_list; _tmp12__length1 = version1_list_length1; _tmp13_ = _tmp12_[0]; _tmp14_ = atoi (_tmp13_); major1 = _tmp14_; _tmp15_ = version1_list; _tmp15__length1 = version1_list_length1; _tmp16_ = _tmp15_[1]; _tmp17_ = atoi (_tmp16_); minor1 = _tmp17_; _tmp18_ = version1_list; _tmp18__length1 = version1_list_length1; _tmp19_ = _tmp18_[2]; _tmp20_ = atoi (_tmp19_); micro1 = _tmp20_; _tmp21_ = version2_list; _tmp21__length1 = version2_list_length1; _tmp22_ = _tmp21_[0]; _tmp23_ = atoi (_tmp22_); major2 = _tmp23_; _tmp24_ = version2_list; _tmp24__length1 = version2_list_length1; _tmp25_ = _tmp24_[1]; _tmp26_ = atoi (_tmp25_); minor2 = _tmp26_; _tmp27_ = version2_list; _tmp27__length1 = version2_list_length1; _tmp28_ = _tmp27_[2]; _tmp29_ = atoi (_tmp28_); micro2 = _tmp29_; _tmp32_ = major1; _tmp33_ = minor1; if (_tmp32_ == _tmp33_) { gint _tmp34_ = 0; gint _tmp35_ = 0; _tmp34_ = minor1; _tmp35_ = minor2; _tmp31_ = _tmp34_ == _tmp35_; } else { _tmp31_ = FALSE; } if (_tmp31_) { gint _tmp36_ = 0; gint _tmp37_ = 0; _tmp36_ = micro1; _tmp37_ = micro2; _tmp30_ = _tmp36_ == _tmp37_; } else { _tmp30_ = FALSE; } if (_tmp30_) { result = 0; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } _tmp40_ = major1; _tmp41_ = major2; if (_tmp40_ > _tmp41_) { _tmp39_ = TRUE; } else { gboolean _tmp42_ = FALSE; gint _tmp43_ = 0; gint _tmp44_ = 0; _tmp43_ = major1; _tmp44_ = major2; if (_tmp43_ == _tmp44_) { gint _tmp45_ = 0; gint _tmp46_ = 0; _tmp45_ = minor1; _tmp46_ = minor2; _tmp42_ = _tmp45_ > _tmp46_; } else { _tmp42_ = FALSE; } _tmp39_ = _tmp42_; } if (_tmp39_) { _tmp38_ = TRUE; } else { gboolean _tmp47_ = FALSE; gboolean _tmp48_ = FALSE; gint _tmp49_ = 0; gint _tmp50_ = 0; _tmp49_ = major1; _tmp50_ = major2; if (_tmp49_ == _tmp50_) { gint _tmp51_ = 0; gint _tmp52_ = 0; _tmp51_ = minor1; _tmp52_ = minor2; _tmp48_ = _tmp51_ == _tmp52_; } else { _tmp48_ = FALSE; } if (_tmp48_) { gint _tmp53_ = 0; gint _tmp54_ = 0; _tmp53_ = micro1; _tmp54_ = micro2; _tmp47_ = _tmp53_ > _tmp54_; } else { _tmp47_ = FALSE; } _tmp38_ = _tmp47_; } if (_tmp38_) { result = 1; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } result = -1; version2_list = (_vala_array_free (version2_list, version2_list_length1, (GDestroyNotify) g_free), NULL); version1_list = (_vala_array_free (version1_list, version1_list_length1, (GDestroyNotify) g_free), NULL); return result; } static void panel_update_version_1_5_3 (Panel* self) { gboolean _tmp0_ = FALSE; NotifyNotification* notification = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; NotifyNotification* _tmp3_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = notify_is_initted (); if (!_tmp0_) { notify_init ("ibus"); } _tmp1_ = _ ("IBus Update"); _tmp2_ = _ ("Super+space is now the default hotkey."); _tmp3_ = notify_notification_new (_tmp1_, _tmp2_, "ibus"); notification = _tmp3_; notify_notification_set_timeout (notification, 30 * 1000); notify_notification_set_category (notification, "hotkey"); { notify_notification_show (notification, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch12_g_error; } } goto __finally12; __catch12_g_error: { GError* e = NULL; GError* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp4_ = e; _tmp5_ = _tmp4_->message; g_warning ("panel.vala:740: Notification is failed for IBus 1.5.3: %s", _tmp5_); _g_error_free0 (e); } __finally12: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (notification); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _g_object_unref0 (notification); } static void panel_update_version_1_5_8 (Panel* self) { g_return_if_fail (self != NULL); self->priv->inited_engines_order = FALSE; } static void panel_set_version (Panel* self) { gchar* prev_version = NULL; GSettings* _tmp0_ = NULL; gchar* _tmp1_ = NULL; gchar* current_version = NULL; const gchar* _tmp2_ = NULL; gint _tmp3_ = 0; const gchar* _tmp4_ = NULL; gint _tmp5_ = 0; gchar* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; GSettings* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; _tmp1_ = g_settings_get_string (_tmp0_, "version"); prev_version = _tmp1_; current_version = NULL; _tmp2_ = prev_version; _tmp3_ = panel_compare_versions (self, _tmp2_, "1.5.3"); if (_tmp3_ < 0) { panel_update_version_1_5_3 (self); } _tmp4_ = prev_version; _tmp5_ = panel_compare_versions (self, _tmp4_, "1.5.8"); if (_tmp5_ < 0) { panel_update_version_1_5_8 (self); } _tmp6_ = g_strdup_printf ("%d.%d.%d", IBUS_MAJOR_VERSION, IBUS_MINOR_VERSION, IBUS_MICRO_VERSION); _g_free0 (current_version); current_version = _tmp6_; _tmp7_ = prev_version; _tmp8_ = current_version; if (g_strcmp0 (_tmp7_, _tmp8_) == 0) { _g_free0 (current_version); _g_free0 (prev_version); return; } _tmp9_ = self->priv->m_settings_general; _tmp10_ = current_version; g_settings_set_string (_tmp9_, "version", _tmp10_); _g_free0 (current_version); _g_free0 (prev_version); } void panel_load_settings (Panel* self) { GSettings* _tmp0_ = NULL; gchar** _tmp1_ = NULL; gchar** _tmp2_ = NULL; gchar** _tmp3_ = NULL; gint _tmp3__length1 = 0; GSettings* _tmp4_ = NULL; gchar** _tmp5_ = NULL; gchar** _tmp6_ = NULL; gchar** _tmp7_ = NULL; gint _tmp7__length1 = 0; g_return_if_fail (self != NULL); panel_set_version (self); panel_init_engines_order (self); panel_set_use_system_keyboard_layout (self); panel_set_use_global_engine (self); panel_set_use_xmodmap (self); _tmp0_ = self->priv->m_settings_general; _tmp2_ = _tmp1_ = g_settings_get_strv (_tmp0_, "preload-engines"); _tmp3_ = _tmp2_; _tmp3__length1 = _vala_array_length (_tmp1_); _tmp4_ = self->priv->m_settings_general; _tmp6_ = _tmp5_ = g_settings_get_strv (_tmp4_, "engines-order"); _tmp7_ = _tmp6_; _tmp7__length1 = _vala_array_length (_tmp5_); panel_update_engines (self, _tmp3_, _vala_array_length (_tmp1_), _tmp7_, _vala_array_length (_tmp5_)); _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL); panel_unbind_switch_shortcut (self); panel_bind_switch_shortcut (self); panel_set_switcher_delay_time (self); panel_set_embed_preedit_text (self); panel_set_custom_font (self); panel_set_show_icon_on_systray (self); panel_set_lookup_table_orientation (self); panel_set_show_property_panel (self); panel_set_timeout_property_panel (self); panel_set_follow_input_cursor_when_always_shown_property_panel (self); panel_set_xkb_icon_rgba (self); panel_set_property_icon_delay_time (self); } static void panel_engine_contexts_insert (Panel* self, IBusEngineDesc* engine) { gboolean _tmp0_ = FALSE; GHashTable* _tmp1_ = NULL; guint _tmp2_ = 0U; GHashTable* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; IBusEngineDesc* _tmp7_ = NULL; IBusEngineDesc* _tmp8_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); _tmp0_ = self->priv->m_use_global_engine; if (_tmp0_) { return; } _tmp1_ = self->priv->m_engine_contexts; _tmp2_ = g_hash_table_size (_tmp1_); if (_tmp2_ >= ((guint) 200)) { GHashTable* _tmp3_ = NULL; g_warning ("panel.vala:803: Contexts by windows are too much counted!"); _tmp3_ = self->priv->m_engine_contexts; g_hash_table_remove_all (_tmp3_); } _tmp4_ = self->priv->m_engine_contexts; _tmp5_ = self->priv->m_current_context_path; _tmp6_ = g_strdup (_tmp5_); _tmp7_ = engine; _tmp8_ = _g_object_ref0 (_tmp7_); g_hash_table_replace (_tmp4_, _tmp6_, _tmp8_); } static void panel_set_engine (Panel* self, IBusEngineDesc* engine) { IBusBus* _tmp0_ = NULL; IBusEngineDesc* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gboolean _tmp3_ = FALSE; gboolean _tmp6_ = FALSE; IBusEngineDesc* _tmp9_ = NULL; guint _tmp10_ = 0U; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); _tmp0_ = self->priv->m_bus; _tmp1_ = engine; _tmp2_ = ibus_engine_desc_get_name (_tmp1_); _tmp3_ = ibus_bus_set_global_engine (_tmp0_, _tmp2_); if (!_tmp3_) { IBusEngineDesc* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; _tmp4_ = engine; _tmp5_ = ibus_engine_desc_get_name (_tmp4_); g_warning ("panel.vala:812: Switch engine to %s failed.", _tmp5_); return; } _tmp6_ = self->priv->m_use_system_keyboard_layout; if (!_tmp6_) { XKBLayout* _tmp7_ = NULL; IBusEngineDesc* _tmp8_ = NULL; _tmp7_ = self->priv->m_xkblayout; _tmp8_ = engine; xkb_layout_set_layout (_tmp7_, _tmp8_); } _tmp9_ = engine; panel_engine_contexts_insert (self, _tmp9_); _tmp10_ = self->priv->m_property_icon_delay_time_id; if (_tmp10_ > ((guint) 0)) { guint _tmp11_ = 0U; _tmp11_ = self->priv->m_property_icon_delay_time_id; g_source_remove (_tmp11_); self->priv->m_property_icon_delay_time_id = (guint) 0; } } static void panel_switch_engine (Panel* self, gint i, gboolean force) { gboolean _tmp0_ = FALSE; gint _tmp1_ = 0; gboolean _tmp4_ = FALSE; gint _tmp5_ = 0; IBusEngineDesc* engine = NULL; IBusEngineDesc** _tmp7_ = NULL; gint _tmp7__length1 = 0; gint _tmp8_ = 0; IBusEngineDesc* _tmp9_ = NULL; IBusEngineDesc* _tmp10_ = NULL; IBusEngineDesc* _tmp11_ = NULL; g_return_if_fail (self != NULL); _tmp1_ = i; if (_tmp1_ >= 0) { gint _tmp2_ = 0; IBusEngineDesc** _tmp3_ = NULL; gint _tmp3__length1 = 0; _tmp2_ = i; _tmp3_ = self->priv->m_engines; _tmp3__length1 = self->priv->m_engines_length1; _tmp0_ = _tmp2_ < _tmp3__length1; } else { _tmp0_ = FALSE; } _vala_assert (_tmp0_, "i >= 0 && i < m_engines.length"); _tmp5_ = i; if (_tmp5_ == 0) { gboolean _tmp6_ = FALSE; _tmp6_ = force; _tmp4_ = !_tmp6_; } else { _tmp4_ = FALSE; } if (_tmp4_) { return; } _tmp7_ = self->priv->m_engines; _tmp7__length1 = self->priv->m_engines_length1; _tmp8_ = i; _tmp9_ = _tmp7_[_tmp8_]; _tmp10_ = _g_object_ref0 (_tmp9_); engine = _tmp10_; _tmp11_ = engine; panel_set_engine (self, _tmp11_); _g_object_unref0 (engine); } static void panel_handle_engine_switch (Panel* self, GdkEvent* event, gboolean revert) { IBusEngineDesc** _tmp0_ = NULL; gint _tmp0__length1 = 0; guint keyval = 0U; GdkEvent* _tmp1_ = NULL; GdkEventKey* _tmp2_ = NULL; GdkEventKey* _tmp3_ = NULL; guint _tmp4_ = 0U; guint modifiers = 0U; GdkEvent* _tmp5_ = NULL; GdkEventKey* _tmp6_ = NULL; GdkEventKey* _tmp7_ = NULL; GdkModifierType _tmp8_ = 0; guint primary_modifiers = 0U; GdkEvent* _tmp9_ = NULL; GdkEventKey* _tmp10_ = NULL; GdkEventKey* _tmp11_ = NULL; GdkModifierType _tmp12_ = 0; GdkModifierType _tmp13_ = 0; gboolean pressed = FALSE; GdkEvent* _tmp14_ = NULL; guint _tmp15_ = 0U; gboolean _tmp16_ = FALSE; gboolean _tmp17_ = FALSE; gboolean _tmp19_ = FALSE; gboolean _tmp20_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); _tmp0_ = self->priv->m_engines; _tmp0__length1 = self->priv->m_engines_length1; if (_tmp0__length1 <= 1) { return; } _tmp1_ = event; _tmp2_ = (GdkEventKey *) (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _tmp3_->keyval; keyval = _tmp4_; _tmp5_ = event; _tmp6_ = (GdkEventKey *) (_tmp5_); _tmp7_ = _tmp6_; _tmp8_ = _tmp7_->state; modifiers = KEYBINDING_MANAGER_MODIFIER_FILTER & _tmp8_; _tmp9_ = event; _tmp10_ = (GdkEventKey *) (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = _tmp11_->state; _tmp13_ = keybinding_manager_get_primary_modifier ((guint) _tmp12_); primary_modifiers = (guint) _tmp13_; _tmp14_ = event; _tmp15_ = primary_modifiers; _tmp16_ = keybinding_manager_primary_modifier_still_pressed (_tmp14_, _tmp15_); pressed = _tmp16_; _tmp17_ = revert; if (_tmp17_) { guint _tmp18_ = 0U; _tmp18_ = modifiers; modifiers = _tmp18_ & (~GDK_SHIFT_MASK); } _tmp20_ = pressed; if (_tmp20_) { gint _tmp21_ = 0; _tmp21_ = self->priv->m_switcher_delay_time; _tmp19_ = _tmp21_ >= 0; } else { _tmp19_ = FALSE; } if (_tmp19_) { gint _tmp22_ = 0; gboolean _tmp23_ = FALSE; gint i = 0; Switcher* _tmp25_ = NULL; guint _tmp26_ = 0U; guint _tmp27_ = 0U; GdkEvent* _tmp28_ = NULL; IBusEngineDesc** _tmp29_ = NULL; gint _tmp29__length1 = 0; gint _tmp30_ = 0; gint _tmp31_ = 0; gint _tmp32_ = 0; _tmp23_ = revert; if (_tmp23_) { IBusEngineDesc** _tmp24_ = NULL; gint _tmp24__length1 = 0; _tmp24_ = self->priv->m_engines; _tmp24__length1 = self->priv->m_engines_length1; _tmp22_ = _tmp24__length1 - 1; } else { _tmp22_ = 1; } i = _tmp22_; self->priv->m_switcher_is_running = TRUE; _tmp25_ = self->priv->m_switcher; _tmp26_ = keyval; _tmp27_ = modifiers; _tmp28_ = event; _tmp29_ = self->priv->m_engines; _tmp29__length1 = self->priv->m_engines_length1; _tmp30_ = i; _tmp31_ = switcher_run (_tmp25_, _tmp26_, _tmp27_, _tmp28_, _tmp29_, _tmp29__length1, _tmp30_); i = _tmp31_; self->priv->m_switcher_is_running = FALSE; _tmp32_ = i; if (_tmp32_ < 0) { g_debug ("panel.vala:875: switch cancelled"); } else { gint _tmp33_ = 0; IBusEngineDesc** _tmp34_ = NULL; gint _tmp34__length1 = 0; gint _tmp35_ = 0; _tmp33_ = i; _tmp34_ = self->priv->m_engines; _tmp34__length1 = self->priv->m_engines_length1; _vala_assert (_tmp33_ < _tmp34__length1, "i < m_engines.length"); _tmp35_ = i; panel_switch_engine (self, _tmp35_, FALSE); } } else { gint _tmp36_ = 0; gboolean _tmp37_ = FALSE; gint i = 0; gint _tmp39_ = 0; _tmp37_ = revert; if (_tmp37_) { IBusEngineDesc** _tmp38_ = NULL; gint _tmp38__length1 = 0; _tmp38_ = self->priv->m_engines; _tmp38__length1 = self->priv->m_engines_length1; _tmp36_ = _tmp38__length1 - 1; } else { _tmp36_ = 1; } i = _tmp36_; _tmp39_ = i; panel_switch_engine (self, _tmp39_, FALSE); } } static Block4Data* block4_data_ref (Block4Data* _data4_) { g_atomic_int_inc (&_data4_->_ref_count_); return _data4_; } static void block4_data_unref (void * _userdata_) { Block4Data* _data4_; _data4_ = (Block4Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) { Panel* self; self = _data4_->self; _data4_->names = (_vala_array_free (_data4_->names, _data4_->names_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (self); g_slice_free (Block4Data, _data4_); } } static void _vala_array_add16 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static gboolean __lambda31_ (Block4Data* _data4_) { Panel* self; gboolean result = FALSE; IBusBus* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; IBusBus* _tmp2_ = NULL; gchar** _tmp3_ = NULL; gint _tmp3__length1 = 0; self = _data4_->self; _tmp0_ = self->priv->m_bus; _tmp1_ = ibus_bus_is_connected (_tmp0_); if (!_tmp1_) { result = FALSE; return result; } _tmp2_ = self->priv->m_bus; _tmp3_ = _data4_->names; _tmp3__length1 = _data4_->names_length1; ibus_bus_preload_engines_async (_tmp2_, _tmp3_, -1, NULL, NULL, NULL); result = FALSE; return result; } static gboolean ___lambda31__gsource_func (gpointer self) { gboolean result; result = __lambda31_ (self); return result; } static void panel_run_preload_engines (Panel* self, IBusEngineDesc** engines, int engines_length1, gint index) { Block4Data* _data4_; gchar** _tmp0_ = NULL; IBusEngineDesc** _tmp1_ = NULL; gint _tmp1__length1 = 0; gint _tmp2_ = 0; guint _tmp3_ = 0U; gchar** _tmp5_ = NULL; gint _tmp5__length1 = 0; IBusEngineDesc** _tmp6_ = NULL; gint _tmp6__length1 = 0; gint _tmp7_ = 0; IBusEngineDesc* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; guint _tmp11_ = 0U; g_return_if_fail (self != NULL); _data4_ = g_slice_new0 (Block4Data); _data4_->_ref_count_ = 1; _data4_->self = g_object_ref (self); _tmp0_ = g_new0 (gchar*, 0 + 1); _data4_->names = _tmp0_; _data4_->names_length1 = 0; _data4_->_names_size_ = _data4_->names_length1; _tmp1_ = engines; _tmp1__length1 = engines_length1; _tmp2_ = index; if (_tmp1__length1 <= _tmp2_) { block4_data_unref (_data4_); _data4_ = NULL; return; } _tmp3_ = self->priv->m_preload_engines_id; if (_tmp3_ != ((guint) 0)) { guint _tmp4_ = 0U; _tmp4_ = self->priv->m_preload_engines_id; g_source_remove (_tmp4_); self->priv->m_preload_engines_id = (guint) 0; } _tmp5_ = _data4_->names; _tmp5__length1 = _data4_->names_length1; _tmp6_ = engines; _tmp6__length1 = engines_length1; _tmp7_ = index; _tmp8_ = _tmp6_[_tmp7_]; _tmp9_ = ibus_engine_desc_get_name (_tmp8_); _tmp10_ = g_strdup (_tmp9_); _vala_array_add16 (&_data4_->names, &_data4_->names_length1, &_data4_->_names_size_, _tmp10_); _tmp11_ = g_timeout_add_full (G_PRIORITY_DEFAULT, PANEL_PRELOAD_ENGINES_DELAY_TIME, ___lambda31__gsource_func, block4_data_ref (_data4_), block4_data_unref); self->priv->m_preload_engines_id = _tmp11_; block4_data_unref (_data4_); _data4_ = NULL; } static gchar** _vala_array_dup2 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_ = NULL; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle) { int i; for (i = 0; i < stack_length; i++) { if (g_strcmp0 (stack[i], needle) == 0) { return TRUE; } } return FALSE; } static void _vala_array_add17 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add18 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static IBusEngineDesc** _vala_array_dup3 (IBusEngineDesc** self, int length) { IBusEngineDesc** result; int i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_ = NULL; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static IBusEngineDesc** _vala_array_dup4 (IBusEngineDesc** self, int length) { IBusEngineDesc** result; int i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_ = NULL; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static void panel_update_engines (Panel* self, gchar** unowned_engine_names, int unowned_engine_names_length1, gchar** order_names, int order_names_length1) { gchar** engine_names = NULL; gchar** _tmp0_ = NULL; gint _tmp0__length1 = 0; gchar** _tmp1_ = NULL; gint _tmp1__length1 = 0; gint engine_names_length1 = 0; gint _engine_names_size_ = 0; gboolean _tmp2_ = FALSE; gchar** _tmp3_ = NULL; gint _tmp3__length1 = 0; gchar** names = NULL; gchar** _tmp7_ = NULL; gint names_length1 = 0; gint _names_size_ = 0; gchar** _tmp8_ = NULL; gint _tmp8__length1 = 0; gchar** _tmp15_ = NULL; gint _tmp15__length1 = 0; IBusEngineDesc** engines = NULL; IBusBus* _tmp22_ = NULL; gchar** _tmp23_ = NULL; gint _tmp23__length1 = 0; IBusEngineDesc** _tmp24_ = NULL; IBusEngineDesc** _tmp25_ = NULL; gint engines_length1 = 0; gint _engines_size_ = 0; IBusEngineDesc** _tmp26_ = NULL; gint _tmp26__length1 = 0; IBusEngineDesc** _tmp35_ = NULL; gint _tmp35__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = unowned_engine_names; _tmp0__length1 = unowned_engine_names_length1; _tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup2 (_tmp0_, _tmp0__length1) : ((gpointer) _tmp0_); _tmp1__length1 = _tmp0__length1; engine_names = _tmp1_; engine_names_length1 = _tmp1__length1; _engine_names_size_ = engine_names_length1; _tmp3_ = engine_names; _tmp3__length1 = engine_names_length1; if (_tmp3_ == NULL) { _tmp2_ = TRUE; } else { gchar** _tmp4_ = NULL; gint _tmp4__length1 = 0; _tmp4_ = engine_names; _tmp4__length1 = engine_names_length1; _tmp2_ = _tmp4__length1 == 0; } if (_tmp2_) { gchar* _tmp5_ = NULL; gchar** _tmp6_ = NULL; _tmp5_ = g_strdup ("xkb:us::eng"); _tmp6_ = g_new0 (gchar*, 1 + 1); _tmp6_[0] = _tmp5_; engine_names = (_vala_array_free (engine_names, engine_names_length1, (GDestroyNotify) g_free), NULL); engine_names = _tmp6_; engine_names_length1 = 1; _engine_names_size_ = engine_names_length1; } _tmp7_ = g_new0 (gchar*, 0 + 1); names = _tmp7_; names_length1 = 0; _names_size_ = names_length1; _tmp8_ = order_names; _tmp8__length1 = order_names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp8_; name_collection_length1 = _tmp8__length1; for (name_it = 0; name_it < _tmp8__length1; name_it = name_it + 1) { gchar* _tmp9_ = NULL; gchar* name = NULL; _tmp9_ = g_strdup (name_collection[name_it]); name = _tmp9_; { const gchar* _tmp10_ = NULL; gchar** _tmp11_ = NULL; gint _tmp11__length1 = 0; _tmp10_ = name; _tmp11_ = engine_names; _tmp11__length1 = engine_names_length1; if (_vala_string_array_contains (_tmp11_, _tmp11__length1, _tmp10_)) { gchar** _tmp12_ = NULL; gint _tmp12__length1 = 0; const gchar* _tmp13_ = NULL; gchar* _tmp14_ = NULL; _tmp12_ = names; _tmp12__length1 = names_length1; _tmp13_ = name; _tmp14_ = g_strdup (_tmp13_); _vala_array_add17 (&names, &names_length1, &_names_size_, _tmp14_); } _g_free0 (name); } } } _tmp15_ = engine_names; _tmp15__length1 = engine_names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp15_; name_collection_length1 = _tmp15__length1; for (name_it = 0; name_it < _tmp15__length1; name_it = name_it + 1) { gchar* _tmp16_ = NULL; gchar* name = NULL; _tmp16_ = g_strdup (name_collection[name_it]); name = _tmp16_; { const gchar* _tmp17_ = NULL; gchar** _tmp18_ = NULL; gint _tmp18__length1 = 0; gchar** _tmp19_ = NULL; gint _tmp19__length1 = 0; const gchar* _tmp20_ = NULL; gchar* _tmp21_ = NULL; _tmp17_ = name; _tmp18_ = names; _tmp18__length1 = names_length1; if (_vala_string_array_contains (_tmp18_, _tmp18__length1, _tmp17_)) { _g_free0 (name); continue; } _tmp19_ = names; _tmp19__length1 = names_length1; _tmp20_ = name; _tmp21_ = g_strdup (_tmp20_); _vala_array_add18 (&names, &names_length1, &_names_size_, _tmp21_); _g_free0 (name); } } } _tmp22_ = self->priv->m_bus; _tmp23_ = names; _tmp23__length1 = names_length1; _tmp25_ = _tmp24_ = ibus_bus_get_engines_by_names (_tmp22_, _tmp23_); engines = _tmp25_; engines_length1 = _vala_array_length (_tmp24_); _engines_size_ = engines_length1; _tmp26_ = engines; _tmp26__length1 = engines_length1; if (_tmp26__length1 == 0) { gchar* _tmp27_ = NULL; gchar** _tmp28_ = NULL; GSettings* _tmp29_ = NULL; gchar** _tmp30_ = NULL; gint _tmp30__length1 = 0; IBusBus* _tmp31_ = NULL; gchar** _tmp32_ = NULL; gint _tmp32__length1 = 0; IBusEngineDesc** _tmp33_ = NULL; IBusEngineDesc** _tmp34_ = NULL; _tmp27_ = g_strdup ("xkb:us::eng"); _tmp28_ = g_new0 (gchar*, 1 + 1); _tmp28_[0] = _tmp27_; names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); names = _tmp28_; names_length1 = 1; _names_size_ = names_length1; _tmp29_ = self->priv->m_settings_general; _tmp30_ = names; _tmp30__length1 = names_length1; g_settings_set_strv (_tmp29_, "preload-engines", _tmp30_); _tmp31_ = self->priv->m_bus; _tmp32_ = names; _tmp32__length1 = names_length1; _tmp34_ = _tmp33_ = ibus_bus_get_engines_by_names (_tmp31_, _tmp32_); engines = (_vala_array_free (engines, engines_length1, (GDestroyNotify) g_object_unref), NULL); engines = _tmp34_; engines_length1 = _vala_array_length (_tmp33_); _engines_size_ = engines_length1; } _tmp35_ = self->priv->m_engines; _tmp35__length1 = self->priv->m_engines_length1; if (_tmp35__length1 == 0) { IBusEngineDesc** _tmp36_ = NULL; gint _tmp36__length1 = 0; IBusEngineDesc** _tmp37_ = NULL; gint _tmp37__length1 = 0; IBusEngineDesc** _tmp38_ = NULL; gint _tmp38__length1 = 0; _tmp36_ = engines; _tmp36__length1 = engines_length1; _tmp37_ = (_tmp36_ != NULL) ? _vala_array_dup3 (_tmp36_, _tmp36__length1) : ((gpointer) _tmp36_); _tmp37__length1 = _tmp36__length1; self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_engines = _tmp37_; self->priv->m_engines_length1 = _tmp37__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; panel_switch_engine (self, 0, TRUE); _tmp38_ = engines; _tmp38__length1 = engines_length1; panel_run_preload_engines (self, _tmp38_, _tmp38__length1, 1); } else { IBusEngineDesc* current_engine = NULL; IBusEngineDesc** _tmp39_ = NULL; gint _tmp39__length1 = 0; IBusEngineDesc* _tmp40_ = NULL; IBusEngineDesc* _tmp41_ = NULL; IBusEngineDesc** _tmp42_ = NULL; gint _tmp42__length1 = 0; IBusEngineDesc** _tmp43_ = NULL; gint _tmp43__length1 = 0; gint i = 0; IBusEngineDesc** _tmp58_ = NULL; gint _tmp58__length1 = 0; _tmp39_ = self->priv->m_engines; _tmp39__length1 = self->priv->m_engines_length1; _tmp40_ = _tmp39_[0]; _tmp41_ = _g_object_ref0 (_tmp40_); current_engine = _tmp41_; _tmp42_ = engines; _tmp42__length1 = engines_length1; _tmp43_ = (_tmp42_ != NULL) ? _vala_array_dup4 (_tmp42_, _tmp42__length1) : ((gpointer) _tmp42_); _tmp43__length1 = _tmp42__length1; self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_engines = _tmp43_; self->priv->m_engines_length1 = _tmp43__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; { gboolean _tmp44_ = FALSE; i = 0; _tmp44_ = TRUE; while (TRUE) { gint _tmp46_ = 0; IBusEngineDesc** _tmp47_ = NULL; gint _tmp47__length1 = 0; IBusEngineDesc* _tmp48_ = NULL; const gchar* _tmp49_ = NULL; IBusEngineDesc** _tmp50_ = NULL; gint _tmp50__length1 = 0; gint _tmp51_ = 0; IBusEngineDesc* _tmp52_ = NULL; const gchar* _tmp53_ = NULL; if (!_tmp44_) { gint _tmp45_ = 0; _tmp45_ = i; i = _tmp45_ + 1; } _tmp44_ = FALSE; _tmp46_ = i; _tmp47_ = self->priv->m_engines; _tmp47__length1 = self->priv->m_engines_length1; if (!(_tmp46_ < _tmp47__length1)) { break; } _tmp48_ = current_engine; _tmp49_ = ibus_engine_desc_get_name (_tmp48_); _tmp50_ = engines; _tmp50__length1 = engines_length1; _tmp51_ = i; _tmp52_ = _tmp50_[_tmp51_]; _tmp53_ = ibus_engine_desc_get_name (_tmp52_); if (g_strcmp0 (_tmp49_, _tmp53_) == 0) { gint _tmp54_ = 0; gint _tmp55_ = 0; _tmp54_ = i; panel_switch_engine (self, _tmp54_, FALSE); _tmp55_ = i; if (_tmp55_ != 0) { IBusEngineDesc** _tmp56_ = NULL; gint _tmp56__length1 = 0; _tmp56_ = engines; _tmp56__length1 = engines_length1; panel_run_preload_engines (self, _tmp56_, _tmp56__length1, 0); } else { IBusEngineDesc** _tmp57_ = NULL; gint _tmp57__length1 = 0; _tmp57_ = engines; _tmp57__length1 = engines_length1; panel_run_preload_engines (self, _tmp57_, _tmp57__length1, 1); } _g_object_unref0 (current_engine); engines = (_vala_array_free (engines, engines_length1, (GDestroyNotify) g_object_unref), NULL); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); engine_names = (_vala_array_free (engine_names, engine_names_length1, (GDestroyNotify) g_free), NULL); return; } } } panel_switch_engine (self, 0, TRUE); _tmp58_ = engines; _tmp58__length1 = engines_length1; panel_run_preload_engines (self, _tmp58_, _tmp58__length1, 1); _g_object_unref0 (current_engine); } engines = (_vala_array_free (engines, engines_length1, (GDestroyNotify) g_object_unref), NULL); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); engine_names = (_vala_array_free (engine_names, engine_names_length1, (GDestroyNotify) g_free), NULL); } static void _vala_PangoFontDescription_free (PangoFontDescription* self) { g_boxed_free (pango_font_description_get_type (), self); } static void panel_context_render_string (Panel* self, cairo_t* cr, const gchar* symbol, gint image_width, gint image_height) { gint lwidth = 0; gint lheight = 0; PangoFontDescription* desc = NULL; PangoFontDescription* _tmp0_ = NULL; PangoLayout* layout = NULL; cairo_t* _tmp1_ = NULL; PangoLayout* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; gint _tmp4_ = 0; gint _tmp5_ = 0; PangoLayout* _tmp7_ = NULL; PangoFontDescription* _tmp8_ = NULL; PangoLayout* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; PangoLayout* _tmp11_ = NULL; gint _tmp12_ = 0; gint _tmp13_ = 0; cairo_t* _tmp14_ = NULL; gint _tmp15_ = 0; gint _tmp16_ = 0; gint _tmp17_ = 0; gint _tmp18_ = 0; cairo_t* _tmp19_ = NULL; GdkRGBA _tmp20_ = {0}; gdouble _tmp21_ = 0.0; GdkRGBA _tmp22_ = {0}; gdouble _tmp23_ = 0.0; GdkRGBA _tmp24_ = {0}; gdouble _tmp25_ = 0.0; GdkRGBA _tmp26_ = {0}; gdouble _tmp27_ = 0.0; cairo_t* _tmp28_ = NULL; PangoLayout* _tmp29_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (cr != NULL); g_return_if_fail (symbol != NULL); lwidth = 0; lheight = 0; _tmp0_ = pango_font_description_from_string ("Monospace Bold 22"); desc = _tmp0_; _tmp1_ = cr; _tmp2_ = pango_cairo_create_layout (_tmp1_); layout = _tmp2_; _tmp3_ = symbol; _tmp4_ = strlen (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ >= 3) { PangoFontDescription* _tmp6_ = NULL; _tmp6_ = pango_font_description_from_string ("Monospace Bold 18"); __vala_PangoFontDescription_free0 (desc); desc = _tmp6_; } _tmp7_ = layout; _tmp8_ = desc; pango_layout_set_font_description (_tmp7_, _tmp8_); _tmp9_ = layout; _tmp10_ = symbol; pango_layout_set_text (_tmp9_, _tmp10_, -1); _tmp11_ = layout; pango_layout_get_size (_tmp11_, &_tmp12_, &_tmp13_); lwidth = _tmp12_; lheight = _tmp13_; _tmp14_ = cr; _tmp15_ = image_width; _tmp16_ = lwidth; _tmp17_ = image_height; _tmp18_ = lheight; cairo_move_to (_tmp14_, (gdouble) ((_tmp15_ - (_tmp16_ / PANGO_SCALE)) / 2), (gdouble) ((_tmp17_ - (_tmp18_ / PANGO_SCALE)) / 2)); _tmp19_ = cr; _tmp20_ = self->priv->m_xkb_icon_rgba; _tmp21_ = _tmp20_.red; _tmp22_ = self->priv->m_xkb_icon_rgba; _tmp23_ = _tmp22_.green; _tmp24_ = self->priv->m_xkb_icon_rgba; _tmp25_ = _tmp24_.blue; _tmp26_ = self->priv->m_xkb_icon_rgba; _tmp27_ = _tmp26_.alpha; cairo_set_source_rgba (_tmp19_, _tmp21_, _tmp23_, _tmp25_, _tmp27_); _tmp28_ = cr; _tmp29_ = layout; pango_cairo_show_layout (_tmp28_, _tmp29_); _g_object_unref0 (layout); __vala_PangoFontDescription_free0 (desc); } static gpointer _cairo_surface_reference0 (gpointer self) { return self ? cairo_surface_reference (self) : NULL; } static cairo_surface_t* panel_create_cairo_image_surface_with_string (Panel* self, const gchar* symbol, gboolean cache) { cairo_surface_t* result = NULL; cairo_surface_t* image = NULL; gboolean _tmp0_ = FALSE; cairo_surface_t* _tmp6_ = NULL; cairo_t* cr = NULL; cairo_surface_t* _tmp7_ = NULL; cairo_t* _tmp8_ = NULL; gint width = 0; cairo_surface_t* _tmp9_ = NULL; gint _tmp10_ = 0; gint height = 0; cairo_surface_t* _tmp11_ = NULL; gint _tmp12_ = 0; gint stride = 0; cairo_surface_t* _tmp13_ = NULL; gint _tmp14_ = 0; cairo_t* _tmp15_ = NULL; cairo_t* _tmp16_ = NULL; cairo_t* _tmp17_ = NULL; cairo_t* _tmp18_ = NULL; cairo_t* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; gint _tmp21_ = 0; gint _tmp22_ = 0; cairo_surface_t* _tmp23_ = NULL; PanelIconType _tmp24_ = 0; gboolean _tmp40_ = FALSE; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (symbol != NULL, NULL); image = NULL; _tmp0_ = cache; if (_tmp0_) { GHashTable* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gconstpointer _tmp3_ = NULL; cairo_surface_t* _tmp4_ = NULL; cairo_surface_t* _tmp5_ = NULL; _tmp1_ = self->priv->m_xkb_icon_image; _tmp2_ = symbol; _tmp3_ = g_hash_table_lookup (_tmp1_, _tmp2_); _tmp4_ = _cairo_surface_reference0 ((cairo_surface_t*) _tmp3_); _cairo_surface_destroy0 (image); image = _tmp4_; _tmp5_ = image; if (_tmp5_ != NULL) { result = image; return result; } } _tmp6_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 48, 48); _cairo_surface_destroy0 (image); image = _tmp6_; _tmp7_ = image; _tmp8_ = cairo_create (_tmp7_); cr = _tmp8_; _tmp9_ = image; _tmp10_ = cairo_image_surface_get_width (_tmp9_); width = _tmp10_; _tmp11_ = image; _tmp12_ = cairo_image_surface_get_height (_tmp11_); height = _tmp12_; _tmp13_ = image; _tmp14_ = cairo_image_surface_get_stride (_tmp13_); stride = _tmp14_; _tmp15_ = cr; cairo_set_source_rgba (_tmp15_, 0.0, 0.0, 0.0, 0.0); _tmp16_ = cr; cairo_set_operator (_tmp16_, CAIRO_OPERATOR_SOURCE); _tmp17_ = cr; cairo_paint (_tmp17_); _tmp18_ = cr; cairo_set_operator (_tmp18_, CAIRO_OPERATOR_OVER); _tmp19_ = cr; _tmp20_ = symbol; _tmp21_ = width; _tmp22_ = height; panel_context_render_string (self, _tmp19_, _tmp20_, _tmp21_, _tmp22_); _tmp23_ = image; cairo_surface_flush (_tmp23_); _tmp24_ = self->priv->m_icon_type; if (_tmp24_ == PANEL_ICON_TYPE_INDICATOR) { if (G_BYTE_ORDER == G_LITTLE_ENDIAN) { guint* data = NULL; cairo_surface_t* _tmp25_ = NULL; guchar* _tmp26_ = NULL; gint data_length1 = 0; gint _data_size_ = 0; gint length = 0; gint _tmp27_ = 0; gint _tmp28_ = 0; _tmp25_ = image; _tmp26_ = cairo_image_surface_get_data (_tmp25_); data = (guint*) _tmp26_; data_length1 = (-1 * sizeof (guchar)) / sizeof (guint); _data_size_ = data_length1; _tmp27_ = stride; _tmp28_ = height; length = (_tmp27_ * _tmp28_) / ((gint) sizeof (guint)); { gint i = 0; i = 0; { gboolean _tmp29_ = FALSE; _tmp29_ = TRUE; while (TRUE) { gint _tmp31_ = 0; gint _tmp32_ = 0; guint* _tmp33_ = NULL; gint _tmp33__length1 = 0; gint _tmp34_ = 0; guint* _tmp35_ = NULL; gint _tmp35__length1 = 0; gint _tmp36_ = 0; guint _tmp37_ = 0U; guint _tmp38_ = 0U; guint _tmp39_ = 0U; if (!_tmp29_) { gint _tmp30_ = 0; _tmp30_ = i; i = _tmp30_ + 1; } _tmp29_ = FALSE; _tmp31_ = i; _tmp32_ = length; if (!(_tmp31_ < _tmp32_)) { break; } _tmp33_ = data; _tmp33__length1 = data_length1; _tmp34_ = i; _tmp35_ = data; _tmp35__length1 = data_length1; _tmp36_ = i; _tmp37_ = _tmp35_[_tmp36_]; _tmp38_ = GUINT_TO_BE (_tmp37_); _tmp33_[_tmp34_] = _tmp38_; _tmp39_ = _tmp33_[_tmp34_]; } } } } } _tmp40_ = cache; if (_tmp40_) { GHashTable* _tmp41_ = NULL; const gchar* _tmp42_ = NULL; gchar* _tmp43_ = NULL; cairo_surface_t* _tmp44_ = NULL; cairo_surface_t* _tmp45_ = NULL; _tmp41_ = self->priv->m_xkb_icon_image; _tmp42_ = symbol; _tmp43_ = g_strdup (_tmp42_); _tmp44_ = image; _tmp45_ = _cairo_surface_reference0 (_tmp44_); g_hash_table_insert (_tmp41_, _tmp43_, _tmp45_); } result = image; _cairo_destroy0 (cr); return result; } static GdkPixbuf* panel_create_icon_pixbuf_with_string (Panel* self, const gchar* symbol) { GdkPixbuf* result = NULL; GdkPixbuf* pixbuf = NULL; GHashTable* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gconstpointer _tmp2_ = NULL; GdkPixbuf* _tmp3_ = NULL; GdkPixbuf* _tmp4_ = NULL; cairo_surface_t* image = NULL; const gchar* _tmp5_ = NULL; cairo_surface_t* _tmp6_ = NULL; gint width = 0; cairo_surface_t* _tmp7_ = NULL; gint _tmp8_ = 0; gint height = 0; cairo_surface_t* _tmp9_ = NULL; gint _tmp10_ = 0; cairo_surface_t* _tmp11_ = NULL; gint _tmp12_ = 0; gint _tmp13_ = 0; GdkPixbuf* _tmp14_ = NULL; GHashTable* _tmp15_ = NULL; const gchar* _tmp16_ = NULL; gchar* _tmp17_ = NULL; GdkPixbuf* _tmp18_ = NULL; GdkPixbuf* _tmp19_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (symbol != NULL, NULL); _tmp0_ = self->priv->m_xkb_icon_pixbufs; _tmp1_ = symbol; _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); _tmp3_ = _g_object_ref0 ((GdkPixbuf*) _tmp2_); pixbuf = _tmp3_; _tmp4_ = pixbuf; if (_tmp4_ != NULL) { result = pixbuf; return result; } _tmp5_ = symbol; _tmp6_ = panel_create_cairo_image_surface_with_string (self, _tmp5_, FALSE); image = _tmp6_; _tmp7_ = image; _tmp8_ = cairo_image_surface_get_width (_tmp7_); width = _tmp8_; _tmp9_ = image; _tmp10_ = cairo_image_surface_get_height (_tmp9_); height = _tmp10_; _tmp11_ = image; _tmp12_ = width; _tmp13_ = height; _tmp14_ = gdk_pixbuf_get_from_surface (_tmp11_, 0, 0, _tmp12_, _tmp13_); _g_object_unref0 (pixbuf); pixbuf = _tmp14_; _tmp15_ = self->priv->m_xkb_icon_pixbufs; _tmp16_ = symbol; _tmp17_ = g_strdup (_tmp16_); _tmp18_ = pixbuf; _tmp19_ = _g_object_ref0 (_tmp18_); g_hash_table_insert (_tmp15_, _tmp17_, _tmp19_); result = pixbuf; _cairo_surface_destroy0 (image); return result; } static void __lambda53_ (Panel* self, GPid pid, gint state) { GPid _tmp0_ = 0; GPid _tmp1_ = 0; GPid _tmp2_ = 0; _tmp0_ = pid; _tmp1_ = self->priv->m_setup_pid; if (_tmp0_ != _tmp1_) { return; } self->priv->m_setup_pid = (GPid) 0; _tmp2_ = pid; g_spawn_close_pid (_tmp2_); } static void ___lambda53__gchild_watch_func (GPid pid, gint status, gpointer self) { __lambda53_ ((Panel*) self, pid, status); } static void panel_show_setup_dialog (Panel* self) { GPid _tmp0_ = 0; gchar* binary = NULL; gchar* _tmp3_ = NULL; GPid _tmp13_ = 0; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_setup_pid; if (_tmp0_ != ((GPid) 0)) { GPid _tmp1_ = 0; gint _tmp2_ = 0; _tmp1_ = self->priv->m_setup_pid; _tmp2_ = kill ((pid_t) _tmp1_, SIGUSR1); if (_tmp2_ == 0) { return; } self->priv->m_setup_pid = (GPid) 0; } _tmp3_ = g_build_filename (BINDIR, "ibus-setup", NULL); binary = _tmp3_; { const gchar* _tmp4_ = NULL; gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; gchar** _tmp7_ = NULL; gchar** _tmp8_ = NULL; gint _tmp8__length1 = 0; GPid _tmp9_ = 0; _tmp4_ = binary; _tmp5_ = g_strdup (_tmp4_); _tmp6_ = g_strdup ("ibus-setup"); _tmp7_ = g_new0 (gchar*, 2 + 1); _tmp7_[0] = _tmp5_; _tmp7_[1] = _tmp6_; _tmp8_ = _tmp7_; _tmp8__length1 = 2; g_spawn_async (NULL, _tmp8_, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &_tmp9_, &_inner_error_); self->priv->m_setup_pid = _tmp9_; _tmp8_ = (_vala_array_free (_tmp8_, _tmp8__length1, (GDestroyNotify) g_free), NULL); if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_SPAWN_ERROR) { goto __catch13_g_spawn_error; } _g_free0 (binary); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } goto __finally13; __catch13_g_spawn_error: { GError* e = NULL; const gchar* _tmp10_ = NULL; GError* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp10_ = binary; _tmp11_ = e; _tmp12_ = _tmp11_->message; g_warning ("panel.vala:1061: Execute %s failed! %s", _tmp10_, _tmp12_); self->priv->m_setup_pid = (GPid) 0; _g_error_free0 (e); } __finally13: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (binary); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp13_ = self->priv->m_setup_pid; g_child_watch_add_full (G_PRIORITY_DEFAULT_IDLE, _tmp13_, ___lambda53__gchild_watch_func, g_object_ref (self), g_object_unref); _g_free0 (binary); } static void panel_show_about_dialog (Panel* self) { GtkAboutDialog* _tmp0_ = NULL; GtkAboutDialog* _tmp23_ = NULL; gboolean _tmp24_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_about_dialog; if (_tmp0_ == NULL) { GtkAboutDialog* _tmp1_ = NULL; GtkAboutDialog* _tmp2_ = NULL; GtkAboutDialog* _tmp3_ = NULL; gchar* copyright = NULL; gchar* _tmp4_ = NULL; GtkAboutDialog* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; GtkAboutDialog* _tmp7_ = NULL; GtkAboutDialog* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; GtkAboutDialog* _tmp10_ = NULL; GtkAboutDialog* _tmp11_ = NULL; gchar* _tmp12_ = NULL; gchar** _tmp13_ = NULL; gchar** _tmp14_ = NULL; gint _tmp14__length1 = 0; GtkAboutDialog* _tmp15_ = NULL; gchar* _tmp16_ = NULL; gchar** _tmp17_ = NULL; gchar** _tmp18_ = NULL; gint _tmp18__length1 = 0; GtkAboutDialog* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; GtkAboutDialog* _tmp21_ = NULL; GtkAboutDialog* _tmp22_ = NULL; _tmp1_ = (GtkAboutDialog*) gtk_about_dialog_new (); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_about_dialog); self->priv->m_about_dialog = _tmp1_; _tmp2_ = self->priv->m_about_dialog; gtk_about_dialog_set_program_name (_tmp2_, "IBus"); _tmp3_ = self->priv->m_about_dialog; gtk_about_dialog_set_version (_tmp3_, PACKAGE_VERSION); _tmp4_ = g_strdup ("Copyright © 2007-2015 Peng Huang\n" "Copyright © 2015 Takao Fujiwara\n" "Copyright © 2007-2015 Red Hat, Inc.\n"); copyright = _tmp4_; _tmp5_ = self->priv->m_about_dialog; _tmp6_ = copyright; gtk_about_dialog_set_copyright (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_about_dialog; gtk_about_dialog_set_license (_tmp7_, "LGPL"); _tmp8_ = self->priv->m_about_dialog; _tmp9_ = _ ("IBus is an intelligent input bus for Linux/Unix."); gtk_about_dialog_set_comments (_tmp8_, _tmp9_); _tmp10_ = self->priv->m_about_dialog; gtk_about_dialog_set_website (_tmp10_, "https://github.com/ibus/ibus/wiki"); _tmp11_ = self->priv->m_about_dialog; _tmp12_ = g_strdup ("Peng Huang "); _tmp13_ = g_new0 (gchar*, 1 + 1); _tmp13_[0] = _tmp12_; _tmp14_ = _tmp13_; _tmp14__length1 = 1; gtk_about_dialog_set_authors (_tmp11_, _tmp14_); _tmp14_ = (_vala_array_free (_tmp14_, _tmp14__length1, (GDestroyNotify) g_free), NULL); _tmp15_ = self->priv->m_about_dialog; _tmp16_ = g_strdup ("Peng Huang "); _tmp17_ = g_new0 (gchar*, 1 + 1); _tmp17_[0] = _tmp16_; _tmp18_ = _tmp17_; _tmp18__length1 = 1; gtk_about_dialog_set_documenters (_tmp15_, _tmp18_); _tmp18_ = (_vala_array_free (_tmp18_, _tmp18__length1, (GDestroyNotify) g_free), NULL); _tmp19_ = self->priv->m_about_dialog; _tmp20_ = _ ("translator-credits"); gtk_about_dialog_set_translator_credits (_tmp19_, _tmp20_); _tmp21_ = self->priv->m_about_dialog; gtk_about_dialog_set_logo_icon_name (_tmp21_, "ibus"); _tmp22_ = self->priv->m_about_dialog; gtk_window_set_icon_name ((GtkWindow*) _tmp22_, "ibus"); _g_free0 (copyright); } _tmp23_ = self->priv->m_about_dialog; _tmp24_ = gtk_widget_get_visible ((GtkWidget*) _tmp23_); if (!_tmp24_) { GtkAboutDialog* _tmp25_ = NULL; GtkAboutDialog* _tmp26_ = NULL; _tmp25_ = self->priv->m_about_dialog; gtk_dialog_run ((GtkDialog*) _tmp25_); _tmp26_ = self->priv->m_about_dialog; gtk_widget_hide ((GtkWidget*) _tmp26_); } else { GtkAboutDialog* _tmp27_ = NULL; _tmp27_ = self->priv->m_about_dialog; gtk_window_present ((GtkWindow*) _tmp27_); } } static void ___lambda52_ (Panel* self, GtkMenuItem* i) { g_return_if_fail (i != NULL); panel_show_setup_dialog (self); } static void ____lambda52__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda52_ ((Panel*) self, _sender); } static void ___lambda54_ (Panel* self, GtkMenuItem* i) { g_return_if_fail (i != NULL); panel_show_about_dialog (self); } static void ____lambda54__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda54_ ((Panel*) self, _sender); } static void ___lambda55_ (Panel* self, GtkMenuItem* i) { IBusBus* _tmp0_ = NULL; g_return_if_fail (i != NULL); _tmp0_ = self->priv->m_bus; ibus_bus_exit (_tmp0_, TRUE); } static void ____lambda55__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda55_ ((Panel*) self, _sender); } static void ___lambda56_ (Panel* self, GtkMenuItem* i) { IBusBus* _tmp0_ = NULL; g_return_if_fail (i != NULL); _tmp0_ = self->priv->m_bus; ibus_bus_exit (_tmp0_, FALSE); } static void ____lambda56__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda56_ ((Panel*) self, _sender); } static GtkMenu* panel_create_context_menu (Panel* self) { GtkMenu* result = NULL; GtkMenu* _tmp0_ = NULL; GtkMenu* _tmp26_ = NULL; GtkMenu* _tmp27_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_sys_menu; if (_tmp0_ == NULL) { GtkMenuItem* item = NULL; GtkMenu* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; GtkMenuItem* _tmp3_ = NULL; GtkMenuItem* _tmp4_ = NULL; GtkMenu* _tmp5_ = NULL; GtkMenuItem* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; GtkMenuItem* _tmp8_ = NULL; GtkMenuItem* _tmp9_ = NULL; GtkMenu* _tmp10_ = NULL; GtkMenuItem* _tmp11_ = NULL; GtkMenu* _tmp12_ = NULL; GtkSeparatorMenuItem* _tmp13_ = NULL; GtkSeparatorMenuItem* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; GtkMenuItem* _tmp16_ = NULL; GtkMenuItem* _tmp17_ = NULL; GtkMenu* _tmp18_ = NULL; GtkMenuItem* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; GtkMenuItem* _tmp21_ = NULL; GtkMenuItem* _tmp22_ = NULL; GtkMenu* _tmp23_ = NULL; GtkMenuItem* _tmp24_ = NULL; GtkMenu* _tmp25_ = NULL; _tmp1_ = (GtkMenu*) gtk_menu_new (); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_sys_menu); self->priv->m_sys_menu = _tmp1_; _tmp2_ = _ ("Preferences"); _tmp3_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp2_); g_object_ref_sink (_tmp3_); _g_object_unref0 (item); item = _tmp3_; _tmp4_ = item; g_signal_connect_object (_tmp4_, "activate", (GCallback) ____lambda52__gtk_menu_item_activate, self, 0); _tmp5_ = self->priv->m_sys_menu; _tmp6_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp5_, (GtkWidget*) _tmp6_); _tmp7_ = _ ("About"); _tmp8_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp7_); g_object_ref_sink (_tmp8_); _g_object_unref0 (item); item = _tmp8_; _tmp9_ = item; g_signal_connect_object (_tmp9_, "activate", (GCallback) ____lambda54__gtk_menu_item_activate, self, 0); _tmp10_ = self->priv->m_sys_menu; _tmp11_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp10_, (GtkWidget*) _tmp11_); _tmp12_ = self->priv->m_sys_menu; _tmp13_ = (GtkSeparatorMenuItem*) gtk_separator_menu_item_new (); g_object_ref_sink (_tmp13_); _tmp14_ = _tmp13_; gtk_menu_shell_append ((GtkMenuShell*) _tmp12_, (GtkWidget*) ((GtkMenuItem*) _tmp14_)); _g_object_unref0 (_tmp14_); _tmp15_ = _ ("Restart"); _tmp16_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp15_); g_object_ref_sink (_tmp16_); _g_object_unref0 (item); item = _tmp16_; _tmp17_ = item; g_signal_connect_object (_tmp17_, "activate", (GCallback) ____lambda55__gtk_menu_item_activate, self, 0); _tmp18_ = self->priv->m_sys_menu; _tmp19_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp18_, (GtkWidget*) _tmp19_); _tmp20_ = _ ("Quit"); _tmp21_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp20_); g_object_ref_sink (_tmp21_); _g_object_unref0 (item); item = _tmp21_; _tmp22_ = item; g_signal_connect_object (_tmp22_, "activate", (GCallback) ____lambda56__gtk_menu_item_activate, self, 0); _tmp23_ = self->priv->m_sys_menu; _tmp24_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp23_, (GtkWidget*) _tmp24_); _tmp25_ = self->priv->m_sys_menu; gtk_widget_show_all ((GtkWidget*) _tmp25_); _g_object_unref0 (item); } _tmp26_ = self->priv->m_sys_menu; _tmp27_ = _g_object_ref0 (_tmp26_); result = _tmp27_; return result; } static Block5Data* block5_data_ref (Block5Data* _data5_) { g_atomic_int_inc (&_data5_->_ref_count_); return _data5_; } static void block5_data_unref (void * _userdata_) { Block5Data* _data5_; _data5_ = (Block5Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) { Panel* self; self = _data5_->self; _g_object_unref0 (_data5_->e); _g_object_unref0 (self); g_slice_free (Block5Data, _data5_); } } static void ____lambda58_ (Block5Data* _data5_, GtkMenuItem* item) { Panel* self; self = _data5_->self; g_return_if_fail (item != NULL); { gint i = 0; i = 0; { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { gint _tmp2_ = 0; IBusEngineDesc** _tmp3_ = NULL; gint _tmp3__length1 = 0; IBusEngineDesc* _tmp4_ = NULL; IBusEngineDesc** _tmp5_ = NULL; gint _tmp5__length1 = 0; gint _tmp6_ = 0; IBusEngineDesc* _tmp7_ = NULL; if (!_tmp0_) { gint _tmp1_ = 0; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; _tmp2_ = i; _tmp3_ = self->priv->m_engines; _tmp3__length1 = self->priv->m_engines_length1; if (!(_tmp2_ < _tmp3__length1)) { break; } _tmp4_ = _data5_->e; _tmp5_ = self->priv->m_engines; _tmp5__length1 = self->priv->m_engines_length1; _tmp6_ = i; _tmp7_ = _tmp5_[_tmp6_]; if (_tmp4_ == _tmp7_) { gint _tmp8_ = 0; _tmp8_ = i; panel_switch_engine (self, _tmp8_, FALSE); break; } } } } } static void _____lambda58__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ____lambda58_ (self, _sender); } static GtkMenu* panel_create_activate_menu (Panel* self) { GtkMenu* result = NULL; GtkMenu* _tmp0_ = NULL; PropertyManager* _tmp1_ = NULL; GtkMenu* _tmp2_ = NULL; GtkMenu* _tmp3_ = NULL; GtkSeparatorMenuItem* _tmp4_ = NULL; GtkSeparatorMenuItem* _tmp5_ = NULL; IBusEngineDesc** _tmp6_ = NULL; gint _tmp6__length1 = 0; GtkMenu* _tmp26_ = NULL; GtkMenu* _tmp27_ = NULL; GtkMenu* _tmp28_ = NULL; GtkMenu* _tmp29_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = (GtkMenu*) gtk_menu_new (); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_ime_menu); self->priv->m_ime_menu = _tmp0_; _tmp1_ = self->priv->m_property_manager; _tmp2_ = self->priv->m_ime_menu; property_manager_create_menu_items (_tmp1_, _tmp2_); _tmp3_ = self->priv->m_ime_menu; _tmp4_ = (GtkSeparatorMenuItem*) gtk_separator_menu_item_new (); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; gtk_menu_shell_append ((GtkMenuShell*) _tmp3_, (GtkWidget*) ((GtkMenuItem*) _tmp5_)); _g_object_unref0 (_tmp5_); _tmp6_ = self->priv->m_engines; _tmp6__length1 = self->priv->m_engines_length1; { IBusEngineDesc** engine_collection = NULL; gint engine_collection_length1 = 0; gint _engine_collection_size_ = 0; gint engine_it = 0; engine_collection = _tmp6_; engine_collection_length1 = _tmp6__length1; for (engine_it = 0; engine_it < _tmp6__length1; engine_it = engine_it + 1) { IBusEngineDesc* _tmp7_ = NULL; IBusEngineDesc* engine = NULL; _tmp7_ = _g_object_ref0 (engine_collection[engine_it]); engine = _tmp7_; { Block5Data* _data5_; gchar* language = NULL; IBusEngineDesc* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; gchar* longname = NULL; IBusEngineDesc* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; GtkMenuItem* item = NULL; const gchar* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; const gchar* _tmp16_ = NULL; gchar* _tmp17_ = NULL; gchar* _tmp18_ = NULL; GtkMenuItem* _tmp19_ = NULL; GtkMenuItem* _tmp20_ = NULL; IBusEngineDesc* _tmp21_ = NULL; IBusEngineDesc* _tmp22_ = NULL; GtkMenuItem* _tmp23_ = NULL; GtkMenu* _tmp24_ = NULL; GtkMenuItem* _tmp25_ = NULL; _data5_ = g_slice_new0 (Block5Data); _data5_->_ref_count_ = 1; _data5_->self = g_object_ref (self); _tmp8_ = engine; _tmp9_ = ibus_engine_desc_get_language (_tmp8_); _tmp10_ = g_strdup (_tmp9_); language = _tmp10_; _tmp11_ = engine; _tmp12_ = ibus_engine_desc_get_longname (_tmp11_); _tmp13_ = g_strdup (_tmp12_); longname = _tmp13_; _tmp14_ = language; _tmp15_ = ibus_get_language_name (_tmp14_); _tmp16_ = longname; _tmp17_ = g_strdup_printf ("%s - %s", _tmp15_, _tmp16_); _tmp18_ = _tmp17_; _tmp19_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp18_); g_object_ref_sink (_tmp19_); _tmp20_ = _tmp19_; _g_free0 (_tmp18_); item = _tmp20_; _tmp21_ = engine; _tmp22_ = _g_object_ref0 (_tmp21_); _data5_->e = _tmp22_; _tmp23_ = item; g_signal_connect_data (_tmp23_, "activate", (GCallback) _____lambda58__gtk_menu_item_activate, block5_data_ref (_data5_), (GClosureNotify) block5_data_unref, 0); _tmp24_ = self->priv->m_ime_menu; _tmp25_ = item; gtk_container_add ((GtkContainer*) _tmp24_, (GtkWidget*) _tmp25_); _g_object_unref0 (item); _g_free0 (longname); _g_free0 (language); _g_object_unref0 (engine); block5_data_unref (_data5_); _data5_ = NULL; } } } _tmp26_ = self->priv->m_ime_menu; gtk_widget_show_all ((GtkWidget*) _tmp26_); _tmp27_ = self->priv->m_ime_menu; gtk_menu_shell_set_take_focus ((GtkMenuShell*) _tmp27_, FALSE); _tmp28_ = self->priv->m_ime_menu; _tmp29_ = _g_object_ref0 (_tmp28_); result = _tmp29_; return result; } static void panel_set_properties (Panel* self, IBusPropList* props) { gint i = 0; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); i = 0; while (TRUE) { IBusProperty* prop = NULL; IBusPropList* _tmp0_ = NULL; gint _tmp1_ = 0; IBusProperty* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusPropList* _tmp5_ = NULL; gint _tmp6_ = 0; IBusProperty* _tmp7_ = NULL; gint _tmp8_ = 0; _tmp0_ = props; _tmp1_ = i; _tmp2_ = ibus_prop_list_get (_tmp0_, (guint) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); prop = _tmp3_; _tmp4_ = prop; if (_tmp4_ == NULL) { _g_object_unref0 (prop); break; } _tmp5_ = props; _tmp6_ = i; _tmp7_ = ibus_prop_list_get (_tmp5_, (guint) _tmp6_); panel_set_property (self, _tmp7_, TRUE); _tmp8_ = i; i = _tmp8_ + 1; _g_object_unref0 (prop); } } static void panel_set_property (Panel* self, IBusProperty* prop, gboolean all_update) { gchar* symbol = NULL; IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; const gchar* _tmp6_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = prop; _tmp1_ = ibus_property_get_symbol (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); _tmp3_ = g_strdup (_tmp2_); symbol = _tmp3_; _tmp6_ = self->priv->m_icon_prop_key; if (g_strcmp0 (_tmp6_, "") != 0) { IBusProperty* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; _tmp7_ = prop; _tmp8_ = ibus_property_get_key (_tmp7_); _tmp9_ = self->priv->m_icon_prop_key; _tmp5_ = g_strcmp0 (_tmp8_, _tmp9_) == 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { const gchar* _tmp10_ = NULL; _tmp10_ = symbol; _tmp4_ = g_strcmp0 (_tmp10_, "") != 0; } else { _tmp4_ = FALSE; } if (_tmp4_) { const gchar* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; _tmp11_ = symbol; _tmp12_ = all_update; panel_animate_icon (self, _tmp11_, _tmp12_); } _g_free0 (symbol); } static Block6Data* block6_data_ref (Block6Data* _data6_) { g_atomic_int_inc (&_data6_->_ref_count_); return _data6_; } static void block6_data_unref (void * _userdata_) { Block6Data* _data6_; _data6_ = (Block6Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) { Panel* self; self = _data6_->self; _g_free0 (_data6_->symbol); _g_object_unref0 (self); g_slice_free (Block6Data, _data6_); } } static gboolean __lambda67_ (Block6Data* _data6_) { Panel* self; gboolean result = FALSE; PanelIconType _tmp0_ = 0; self = _data6_->self; self->priv->m_property_icon_delay_time_id = (guint) 0; _tmp0_ = self->priv->m_icon_type; if (_tmp0_ == PANEL_ICON_TYPE_STATUS_ICON) { GdkPixbuf* pixbuf = NULL; const gchar* _tmp1_ = NULL; GdkPixbuf* _tmp2_ = NULL; GtkStatusIcon* _tmp3_ = NULL; GdkPixbuf* _tmp4_ = NULL; _tmp1_ = _data6_->symbol; _tmp2_ = panel_create_icon_pixbuf_with_string (self, _tmp1_); pixbuf = _tmp2_; _tmp3_ = self->priv->m_status_icon; _tmp4_ = pixbuf; gtk_status_icon_set_from_pixbuf (_tmp3_, _tmp4_); _g_object_unref0 (pixbuf); } else { PanelIconType _tmp5_ = 0; _tmp5_ = self->priv->m_icon_type; if (_tmp5_ == PANEL_ICON_TYPE_INDICATOR) { cairo_surface_t* image = NULL; const gchar* _tmp6_ = NULL; cairo_surface_t* _tmp7_ = NULL; Indicator* _tmp8_ = NULL; cairo_surface_t* _tmp9_ = NULL; _tmp6_ = _data6_->symbol; _tmp7_ = panel_create_cairo_image_surface_with_string (self, _tmp6_, TRUE); image = _tmp7_; _tmp8_ = self->priv->m_indicator; _tmp9_ = image; indicator_set_cairo_image_surface_full (_tmp8_, _tmp9_, ""); _cairo_surface_destroy0 (image); } } result = FALSE; return result; } static gboolean ___lambda67__gsource_func (gpointer self) { gboolean result; result = __lambda67_ (self); return result; } static void panel_animate_icon (Panel* self, const gchar* symbol, gboolean all_update) { Block6Data* _data6_; const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; gint _tmp2_ = 0; guint timeout = 0U; gboolean _tmp3_ = FALSE; guint _tmp5_ = 0U; guint _tmp7_ = 0U; guint _tmp8_ = 0U; g_return_if_fail (self != NULL); g_return_if_fail (symbol != NULL); _data6_ = g_slice_new0 (Block6Data); _data6_->_ref_count_ = 1; _data6_->self = g_object_ref (self); _tmp0_ = symbol; _tmp1_ = g_strdup (_tmp0_); _g_free0 (_data6_->symbol); _data6_->symbol = _tmp1_; _tmp2_ = self->priv->m_property_icon_delay_time; if (_tmp2_ < 0) { block6_data_unref (_data6_); _data6_ = NULL; return; } timeout = (guint) 0; _tmp3_ = all_update; if (_tmp3_) { gint _tmp4_ = 0; _tmp4_ = self->priv->m_property_icon_delay_time; timeout = (guint) _tmp4_; } _tmp5_ = self->priv->m_property_icon_delay_time_id; if (_tmp5_ > ((guint) 0)) { guint _tmp6_ = 0U; _tmp6_ = self->priv->m_property_icon_delay_time_id; g_source_remove (_tmp6_); self->priv->m_property_icon_delay_time_id = (guint) 0; } _tmp7_ = timeout; _tmp8_ = g_timeout_add_full (G_PRIORITY_DEFAULT, _tmp7_, ___lambda67__gsource_func, block6_data_ref (_data6_), block6_data_unref); self->priv->m_property_icon_delay_time_id = _tmp8_; block6_data_unref (_data6_); _data6_ = NULL; } static void panel_real_set_cursor_location (IBusPanelService* base, gint x, gint y, gint width, gint height) { Panel * self; CandidatePanel* _tmp0_ = NULL; gint _tmp1_ = 0; gint _tmp2_ = 0; gint _tmp3_ = 0; gint _tmp4_ = 0; PropertyPanel* _tmp5_ = NULL; gint _tmp6_ = 0; gint _tmp7_ = 0; gint _tmp8_ = 0; gint _tmp9_ = 0; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; _tmp1_ = x; _tmp2_ = y; _tmp3_ = width; _tmp4_ = height; candidate_panel_set_cursor_location (_tmp0_, _tmp1_, _tmp2_, _tmp3_, _tmp4_); _tmp5_ = self->priv->m_property_panel; _tmp6_ = x; _tmp7_ = y; _tmp8_ = width; _tmp9_ = height; property_panel_set_cursor_location (_tmp5_, _tmp6_, _tmp7_, _tmp8_, _tmp9_); } static void panel_real_focus_in (IBusPanelService* base, const gchar* input_context_path) { Panel * self; PropertyPanel* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; IBusEngineDesc* engine = NULL; GHashTable* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; gconstpointer _tmp7_ = NULL; IBusEngineDesc* _tmp8_ = NULL; IBusEngineDesc* _tmp9_ = NULL; IBusEngineDesc* _tmp23_ = NULL; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = self->priv->m_property_panel; property_panel_focus_in (_tmp0_); _tmp1_ = self->priv->m_use_global_engine; if (_tmp1_) { return; } _tmp2_ = self->priv->m_switcher_is_running; if (_tmp2_) { return; } _tmp3_ = input_context_path; _tmp4_ = g_strdup (_tmp3_); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp4_; _tmp5_ = self->priv->m_engine_contexts; _tmp6_ = self->priv->m_current_context_path; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); _tmp8_ = _g_object_ref0 ((IBusEngineDesc*) _tmp7_); engine = _tmp8_; _tmp9_ = engine; if (_tmp9_ == NULL) { IBusEngineDesc* _tmp10_ = NULL; IBusEngineDesc** _tmp11_ = NULL; gint _tmp11__length1 = 0; IBusEngineDesc* _tmp14_ = NULL; IBusEngineDesc* _tmp15_ = NULL; _tmp11_ = self->priv->m_engines; _tmp11__length1 = self->priv->m_engines_length1; if (_tmp11__length1 > 0) { IBusEngineDesc** _tmp12_ = NULL; gint _tmp12__length1 = 0; IBusEngineDesc* _tmp13_ = NULL; _tmp12_ = self->priv->m_engines; _tmp12__length1 = self->priv->m_engines_length1; _tmp13_ = _tmp12_[0]; _tmp10_ = _tmp13_; } else { _tmp10_ = NULL; } _tmp14_ = _g_object_ref0 (_tmp10_); _g_object_unref0 (engine); engine = _tmp14_; _tmp15_ = engine; if (_tmp15_ == NULL) { _g_object_unref0 (engine); return; } } else { gboolean in_engines = FALSE; IBusEngineDesc** _tmp16_ = NULL; gint _tmp16__length1 = 0; gboolean _tmp22_ = FALSE; in_engines = FALSE; _tmp16_ = self->priv->m_engines; _tmp16__length1 = self->priv->m_engines_length1; { IBusEngineDesc** e_collection = NULL; gint e_collection_length1 = 0; gint _e_collection_size_ = 0; gint e_it = 0; e_collection = _tmp16_; e_collection_length1 = _tmp16__length1; for (e_it = 0; e_it < _tmp16__length1; e_it = e_it + 1) { IBusEngineDesc* _tmp17_ = NULL; IBusEngineDesc* e = NULL; _tmp17_ = _g_object_ref0 (e_collection[e_it]); e = _tmp17_; { IBusEngineDesc* _tmp18_ = NULL; const gchar* _tmp19_ = NULL; IBusEngineDesc* _tmp20_ = NULL; const gchar* _tmp21_ = NULL; _tmp18_ = engine; _tmp19_ = ibus_engine_desc_get_name (_tmp18_); _tmp20_ = e; _tmp21_ = ibus_engine_desc_get_name (_tmp20_); if (g_strcmp0 (_tmp19_, _tmp21_) == 0) { in_engines = TRUE; _g_object_unref0 (e); break; } _g_object_unref0 (e); } } } _tmp22_ = in_engines; if (!_tmp22_) { _g_object_unref0 (engine); return; } } _tmp23_ = engine; panel_set_engine (self, _tmp23_); _g_object_unref0 (engine); } static void panel_real_focus_out (IBusPanelService* base, const gchar* input_context_path) { Panel * self; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gchar* _tmp2_ = NULL; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = self->priv->m_use_global_engine; if (_tmp0_) { return; } _tmp1_ = self->priv->m_switcher_is_running; if (_tmp1_) { return; } _tmp2_ = g_strdup (""); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp2_; } static void panel_real_destroy_context (IBusPanelService* base, const gchar* input_context_path) { Panel * self; gboolean _tmp0_ = FALSE; GHashTable* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = self->priv->m_use_global_engine; if (_tmp0_) { return; } _tmp1_ = self->priv->m_engine_contexts; _tmp2_ = input_context_path; g_hash_table_remove (_tmp1_, _tmp2_); } static void panel_real_register_properties (IBusPanelService* base, IBusPropList* props) { Panel * self; PropertyManager* _tmp0_ = NULL; IBusPropList* _tmp1_ = NULL; PropertyPanel* _tmp2_ = NULL; IBusPropList* _tmp3_ = NULL; IBusPropList* _tmp4_ = NULL; self = (Panel*) base; g_return_if_fail (props != NULL); _tmp0_ = self->priv->m_property_manager; _tmp1_ = props; property_manager_set_properties (_tmp0_, _tmp1_); _tmp2_ = self->priv->m_property_panel; _tmp3_ = props; property_panel_set_properties (_tmp2_, _tmp3_); _tmp4_ = props; panel_set_properties (self, _tmp4_); } static void panel_real_update_property (IBusPanelService* base, IBusProperty* prop) { Panel * self; PropertyManager* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; PropertyPanel* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; self = (Panel*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_property_manager; _tmp1_ = prop; property_manager_update_property (_tmp0_, _tmp1_); _tmp2_ = self->priv->m_property_panel; _tmp3_ = prop; property_panel_update_property (_tmp2_, _tmp3_); _tmp4_ = prop; panel_set_property (self, _tmp4_, FALSE); } static void panel_real_update_preedit_text (IBusPanelService* base, IBusText* text, guint cursor_pos, gboolean visible) { Panel * self; gboolean _tmp0_ = FALSE; self = (Panel*) base; g_return_if_fail (text != NULL); _tmp0_ = visible; if (_tmp0_) { CandidatePanel* _tmp1_ = NULL; IBusText* _tmp2_ = NULL; guint _tmp3_ = 0U; PropertyPanel* _tmp4_ = NULL; IBusText* _tmp5_ = NULL; guint _tmp6_ = 0U; _tmp1_ = self->priv->m_candidate_panel; _tmp2_ = text; _tmp3_ = cursor_pos; candidate_panel_set_preedit_text (_tmp1_, _tmp2_, _tmp3_); _tmp4_ = self->priv->m_property_panel; _tmp5_ = text; _tmp6_ = cursor_pos; property_panel_set_preedit_text (_tmp4_, _tmp5_, _tmp6_); } else { CandidatePanel* _tmp7_ = NULL; PropertyPanel* _tmp8_ = NULL; _tmp7_ = self->priv->m_candidate_panel; candidate_panel_set_preedit_text (_tmp7_, NULL, (guint) 0); _tmp8_ = self->priv->m_property_panel; property_panel_set_preedit_text (_tmp8_, NULL, (guint) 0); } } static void panel_real_hide_preedit_text (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_ = NULL; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_preedit_text (_tmp0_, NULL, (guint) 0); } static void panel_real_update_auxiliary_text (IBusPanelService* base, IBusText* text, gboolean visible) { Panel * self; IBusText* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; CandidatePanel* _tmp3_ = NULL; IBusText* _tmp4_ = NULL; gboolean _tmp5_ = FALSE; PropertyPanel* _tmp7_ = NULL; self = (Panel*) base; g_return_if_fail (text != NULL); _tmp1_ = visible; if (_tmp1_) { IBusText* _tmp2_ = NULL; _tmp2_ = text; _tmp0_ = _tmp2_; } else { _tmp0_ = NULL; } _tmp3_ = self->priv->m_candidate_panel; candidate_panel_set_auxiliary_text (_tmp3_, _tmp0_); _tmp5_ = visible; if (_tmp5_) { IBusText* _tmp6_ = NULL; _tmp6_ = text; _tmp4_ = _tmp6_; } else { _tmp4_ = NULL; } _tmp7_ = self->priv->m_property_panel; property_panel_set_auxiliary_text (_tmp7_, _tmp4_); } static void panel_real_hide_auxiliary_text (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_ = NULL; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_auxiliary_text (_tmp0_, NULL); } static void panel_real_update_lookup_table (IBusPanelService* base, IBusLookupTable* table, gboolean visible) { Panel * self; IBusLookupTable* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; CandidatePanel* _tmp3_ = NULL; IBusLookupTable* _tmp4_ = NULL; gboolean _tmp5_ = FALSE; PropertyPanel* _tmp7_ = NULL; self = (Panel*) base; g_return_if_fail (table != NULL); _tmp1_ = visible; if (_tmp1_) { IBusLookupTable* _tmp2_ = NULL; _tmp2_ = table; _tmp0_ = _tmp2_; } else { _tmp0_ = NULL; } _tmp3_ = self->priv->m_candidate_panel; candidate_panel_set_lookup_table (_tmp3_, _tmp0_); _tmp5_ = visible; if (_tmp5_) { IBusLookupTable* _tmp6_ = NULL; _tmp6_ = table; _tmp4_ = _tmp6_; } else { _tmp4_ = NULL; } _tmp7_ = self->priv->m_property_panel; property_panel_set_lookup_table (_tmp7_, _tmp4_); } static void panel_real_hide_lookup_table (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_ = NULL; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_lookup_table (_tmp0_, NULL); } static void panel_real_set_content_type (IBusPanelService* base, guint purpose, guint hints) { Panel * self; CandidatePanel* _tmp0_ = NULL; guint _tmp1_ = 0U; guint _tmp2_ = 0U; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; _tmp1_ = purpose; _tmp2_ = hints; candidate_panel_set_content_type (_tmp0_, _tmp1_, _tmp2_); } static gchar string_get (const gchar* self, glong index) { gchar result = '\0'; glong _tmp0_ = 0L; gchar _tmp1_ = '\0'; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = index; _tmp1_ = ((gchar*) self)[_tmp0_]; result = _tmp1_; return result; } static gchar* string_slice (const gchar* self, glong start, glong end) { gchar* result = NULL; glong string_length = 0L; gint _tmp0_ = 0; gint _tmp1_ = 0; glong _tmp2_ = 0L; glong _tmp5_ = 0L; gboolean _tmp8_ = FALSE; glong _tmp9_ = 0L; gboolean _tmp12_ = FALSE; glong _tmp13_ = 0L; glong _tmp16_ = 0L; glong _tmp17_ = 0L; glong _tmp18_ = 0L; glong _tmp19_ = 0L; glong _tmp20_ = 0L; gchar* _tmp21_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; _tmp2_ = start; if (_tmp2_ < ((glong) 0)) { glong _tmp3_ = 0L; glong _tmp4_ = 0L; _tmp3_ = string_length; _tmp4_ = start; start = _tmp3_ + _tmp4_; } _tmp5_ = end; if (_tmp5_ < ((glong) 0)) { glong _tmp6_ = 0L; glong _tmp7_ = 0L; _tmp6_ = string_length; _tmp7_ = end; end = _tmp6_ + _tmp7_; } _tmp9_ = start; if (_tmp9_ >= ((glong) 0)) { glong _tmp10_ = 0L; glong _tmp11_ = 0L; _tmp10_ = start; _tmp11_ = string_length; _tmp8_ = _tmp10_ <= _tmp11_; } else { _tmp8_ = FALSE; } g_return_val_if_fail (_tmp8_, NULL); _tmp13_ = end; if (_tmp13_ >= ((glong) 0)) { glong _tmp14_ = 0L; glong _tmp15_ = 0L; _tmp14_ = end; _tmp15_ = string_length; _tmp12_ = _tmp14_ <= _tmp15_; } else { _tmp12_ = FALSE; } g_return_val_if_fail (_tmp12_, NULL); _tmp16_ = start; _tmp17_ = end; g_return_val_if_fail (_tmp16_ <= _tmp17_, NULL); _tmp18_ = start; _tmp19_ = end; _tmp20_ = start; _tmp21_ = g_strndup (((gchar*) self) + _tmp18_, (gsize) (_tmp19_ - _tmp20_)); result = _tmp21_; return result; } static void _vala_array_add19 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void panel_real_state_changed (IBusPanelService* base) { Panel * self; gboolean _tmp0_ = FALSE; PanelIconType _tmp1_ = 0; gchar* icon_name = NULL; gchar* _tmp3_ = NULL; IBusEngineDesc* engine = NULL; IBusBus* _tmp4_ = NULL; IBusEngineDesc* _tmp5_ = NULL; IBusEngineDesc* _tmp6_ = NULL; IBusEngineDesc* _tmp7_ = NULL; const gchar* _tmp15_ = NULL; gchar _tmp16_ = '\0'; IBusEngineDesc* _tmp65_ = NULL; gint i = 0; gint _tmp76_ = 0; gint _tmp77_ = 0; IBusEngineDesc** _tmp78_ = NULL; gint _tmp78__length1 = 0; IBusEngineDesc** _tmp90_ = NULL; gint _tmp90__length1 = 0; IBusEngineDesc* _tmp91_ = NULL; IBusEngineDesc* _tmp92_ = NULL; IBusEngineDesc* _tmp93_ = NULL; gchar** names = NULL; gchar** _tmp94_ = NULL; gint names_length1 = 0; gint _names_size_ = 0; IBusEngineDesc** _tmp95_ = NULL; gint _tmp95__length1 = 0; GSettings* _tmp101_ = NULL; gchar** _tmp102_ = NULL; gint _tmp102__length1 = 0; self = (Panel*) base; _tmp0_ = self->priv->m_switcher_is_running; if (_tmp0_) { return; } _tmp1_ = self->priv->m_icon_type; if (_tmp1_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp2_ = NULL; _tmp2_ = self->priv->m_indicator; if (_tmp2_ == NULL) { return; } } _tmp3_ = g_strdup ("ibus-keyboard"); icon_name = _tmp3_; _tmp4_ = self->priv->m_bus; _tmp5_ = ibus_bus_get_global_engine (_tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); engine = _tmp6_; _tmp7_ = engine; if (_tmp7_ != NULL) { IBusEngineDesc* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; IBusEngineDesc* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; _tmp8_ = engine; _tmp9_ = ibus_engine_desc_get_icon (_tmp8_); _tmp10_ = g_strdup (_tmp9_); _g_free0 (icon_name); icon_name = _tmp10_; _tmp11_ = engine; _tmp12_ = ibus_engine_desc_get_icon_prop_key (_tmp11_); _tmp13_ = g_strdup (_tmp12_); _g_free0 (self->priv->m_icon_prop_key); self->priv->m_icon_prop_key = _tmp13_; } else { gchar* _tmp14_ = NULL; _tmp14_ = g_strdup (""); _g_free0 (self->priv->m_icon_prop_key); self->priv->m_icon_prop_key = _tmp14_; } _tmp15_ = icon_name; _tmp16_ = string_get (_tmp15_, (glong) 0); if (_tmp16_ == '/') { PanelIconType _tmp17_ = 0; _tmp17_ = self->priv->m_icon_type; if (_tmp17_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp18_ = NULL; const gchar* _tmp19_ = NULL; _tmp18_ = self->priv->m_status_icon; _tmp19_ = icon_name; gtk_status_icon_set_from_file (_tmp18_, _tmp19_); } else { PanelIconType _tmp20_ = 0; _tmp20_ = self->priv->m_icon_type; if (_tmp20_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp21_ = NULL; const gchar* _tmp22_ = NULL; _tmp21_ = self->priv->m_indicator; _tmp22_ = icon_name; indicator_set_icon_full (_tmp21_, _tmp22_, ""); } } } else { gchar* language = NULL; IBusEngineDesc* _tmp23_ = NULL; const gchar* _tmp37_ = NULL; language = NULL; _tmp23_ = engine; if (_tmp23_ != NULL) { gchar* name = NULL; IBusEngineDesc* _tmp24_ = NULL; const gchar* _tmp25_ = NULL; gchar* _tmp26_ = NULL; gboolean _tmp27_ = FALSE; const gchar* _tmp28_ = NULL; gint _tmp29_ = 0; gint _tmp30_ = 0; _tmp24_ = engine; _tmp25_ = ibus_engine_desc_get_name (_tmp24_); _tmp26_ = g_strdup (_tmp25_); name = _tmp26_; _tmp28_ = name; _tmp29_ = strlen (_tmp28_); _tmp30_ = _tmp29_; if (_tmp30_ >= 4) { const gchar* _tmp31_ = NULL; gchar* _tmp32_ = NULL; gchar* _tmp33_ = NULL; _tmp31_ = name; _tmp32_ = string_slice (_tmp31_, (glong) 0, (glong) 4); _tmp33_ = _tmp32_; _tmp27_ = g_strcmp0 (_tmp33_, "xkb:") == 0; _g_free0 (_tmp33_); } else { _tmp27_ = FALSE; } if (_tmp27_) { Switcher* _tmp34_ = NULL; IBusEngineDesc* _tmp35_ = NULL; gchar* _tmp36_ = NULL; _tmp34_ = self->priv->m_switcher; _tmp35_ = engine; _tmp36_ = switcher_get_xkb_language (_tmp34_, _tmp35_); _g_free0 (language); language = _tmp36_; } _g_free0 (name); } _tmp37_ = language; if (_tmp37_ != NULL) { PanelIconType _tmp38_ = 0; _tmp38_ = self->priv->m_icon_type; if (_tmp38_ == PANEL_ICON_TYPE_STATUS_ICON) { GdkPixbuf* pixbuf = NULL; const gchar* _tmp39_ = NULL; GdkPixbuf* _tmp40_ = NULL; GtkStatusIcon* _tmp41_ = NULL; GdkPixbuf* _tmp42_ = NULL; _tmp39_ = language; _tmp40_ = panel_create_icon_pixbuf_with_string (self, _tmp39_); pixbuf = _tmp40_; _tmp41_ = self->priv->m_status_icon; _tmp42_ = pixbuf; gtk_status_icon_set_from_pixbuf (_tmp41_, _tmp42_); _g_object_unref0 (pixbuf); } else { PanelIconType _tmp43_ = 0; _tmp43_ = self->priv->m_icon_type; if (_tmp43_ == PANEL_ICON_TYPE_INDICATOR) { cairo_surface_t* image = NULL; const gchar* _tmp44_ = NULL; cairo_surface_t* _tmp45_ = NULL; Indicator* _tmp46_ = NULL; cairo_surface_t* _tmp47_ = NULL; _tmp44_ = language; _tmp45_ = panel_create_cairo_image_surface_with_string (self, _tmp44_, TRUE); image = _tmp45_; _tmp46_ = self->priv->m_indicator; _tmp47_ = image; indicator_set_cairo_image_surface_full (_tmp46_, _tmp47_, ""); _cairo_surface_destroy0 (image); } } } else { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp48_ = NULL; GtkIconTheme* _tmp49_ = NULL; GtkIconTheme* _tmp50_ = NULL; const gchar* _tmp51_ = NULL; GtkIconInfo* _tmp52_ = NULL; GtkIconInfo* _tmp53_ = NULL; gboolean _tmp54_ = FALSE; _tmp48_ = gtk_icon_theme_get_default (); _tmp49_ = _g_object_ref0 (_tmp48_); theme = _tmp49_; _tmp50_ = theme; _tmp51_ = icon_name; _tmp52_ = gtk_icon_theme_lookup_icon (_tmp50_, _tmp51_, 48, 0); _tmp53_ = _tmp52_; _tmp54_ = _tmp53_ != NULL; _gtk_icon_info_free0 (_tmp53_); if (_tmp54_) { PanelIconType _tmp55_ = 0; _tmp55_ = self->priv->m_icon_type; if (_tmp55_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp56_ = NULL; const gchar* _tmp57_ = NULL; _tmp56_ = self->priv->m_status_icon; _tmp57_ = icon_name; gtk_status_icon_set_from_icon_name (_tmp56_, _tmp57_); } else { PanelIconType _tmp58_ = 0; _tmp58_ = self->priv->m_icon_type; if (_tmp58_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp59_ = NULL; const gchar* _tmp60_ = NULL; _tmp59_ = self->priv->m_indicator; _tmp60_ = icon_name; indicator_set_icon_full (_tmp59_, _tmp60_, ""); } } } else { PanelIconType _tmp61_ = 0; _tmp61_ = self->priv->m_icon_type; if (_tmp61_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp62_ = NULL; _tmp62_ = self->priv->m_status_icon; gtk_status_icon_set_from_icon_name (_tmp62_, "ibus-engine"); } else { PanelIconType _tmp63_ = 0; _tmp63_ = self->priv->m_icon_type; if (_tmp63_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp64_ = NULL; _tmp64_ = self->priv->m_indicator; indicator_set_icon_full (_tmp64_, "ibus-engine", ""); } } } _g_object_unref0 (theme); } _g_free0 (language); } _tmp65_ = engine; if (_tmp65_ == NULL) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } { gboolean _tmp66_ = FALSE; i = 0; _tmp66_ = TRUE; while (TRUE) { gint _tmp68_ = 0; IBusEngineDesc** _tmp69_ = NULL; gint _tmp69__length1 = 0; IBusEngineDesc** _tmp70_ = NULL; gint _tmp70__length1 = 0; gint _tmp71_ = 0; IBusEngineDesc* _tmp72_ = NULL; const gchar* _tmp73_ = NULL; IBusEngineDesc* _tmp74_ = NULL; const gchar* _tmp75_ = NULL; if (!_tmp66_) { gint _tmp67_ = 0; _tmp67_ = i; i = _tmp67_ + 1; } _tmp66_ = FALSE; _tmp68_ = i; _tmp69_ = self->priv->m_engines; _tmp69__length1 = self->priv->m_engines_length1; if (!(_tmp68_ < _tmp69__length1)) { break; } _tmp70_ = self->priv->m_engines; _tmp70__length1 = self->priv->m_engines_length1; _tmp71_ = i; _tmp72_ = _tmp70_[_tmp71_]; _tmp73_ = ibus_engine_desc_get_name (_tmp72_); _tmp74_ = engine; _tmp75_ = ibus_engine_desc_get_name (_tmp74_); if (g_strcmp0 (_tmp73_, _tmp75_) == 0) { break; } } } _tmp76_ = i; if (_tmp76_ == 0) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } _tmp77_ = i; _tmp78_ = self->priv->m_engines; _tmp78__length1 = self->priv->m_engines_length1; if (_tmp77_ >= _tmp78__length1) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } { gint j = 0; gint _tmp79_ = 0; _tmp79_ = i; j = _tmp79_; { gboolean _tmp80_ = FALSE; _tmp80_ = TRUE; while (TRUE) { gint _tmp82_ = 0; IBusEngineDesc** _tmp83_ = NULL; gint _tmp83__length1 = 0; gint _tmp84_ = 0; IBusEngineDesc** _tmp85_ = NULL; gint _tmp85__length1 = 0; gint _tmp86_ = 0; IBusEngineDesc* _tmp87_ = NULL; IBusEngineDesc* _tmp88_ = NULL; IBusEngineDesc* _tmp89_ = NULL; if (!_tmp80_) { gint _tmp81_ = 0; _tmp81_ = j; j = _tmp81_ - 1; } _tmp80_ = FALSE; _tmp82_ = j; if (!(_tmp82_ > 0)) { break; } _tmp83_ = self->priv->m_engines; _tmp83__length1 = self->priv->m_engines_length1; _tmp84_ = j; _tmp85_ = self->priv->m_engines; _tmp85__length1 = self->priv->m_engines_length1; _tmp86_ = j; _tmp87_ = _tmp85_[_tmp86_ - 1]; _tmp88_ = _g_object_ref0 (_tmp87_); _g_object_unref0 (_tmp83_[_tmp84_]); _tmp83_[_tmp84_] = _tmp88_; _tmp89_ = _tmp83_[_tmp84_]; } } } _tmp90_ = self->priv->m_engines; _tmp90__length1 = self->priv->m_engines_length1; _tmp91_ = engine; _tmp92_ = _g_object_ref0 (_tmp91_); _g_object_unref0 (_tmp90_[0]); _tmp90_[0] = _tmp92_; _tmp93_ = _tmp90_[0]; _tmp94_ = g_new0 (gchar*, 0 + 1); names = _tmp94_; names_length1 = 0; _names_size_ = names_length1; _tmp95_ = self->priv->m_engines; _tmp95__length1 = self->priv->m_engines_length1; { IBusEngineDesc** desc_collection = NULL; gint desc_collection_length1 = 0; gint _desc_collection_size_ = 0; gint desc_it = 0; desc_collection = _tmp95_; desc_collection_length1 = _tmp95__length1; for (desc_it = 0; desc_it < _tmp95__length1; desc_it = desc_it + 1) { IBusEngineDesc* _tmp96_ = NULL; IBusEngineDesc* desc = NULL; _tmp96_ = _g_object_ref0 (desc_collection[desc_it]); desc = _tmp96_; { gchar** _tmp97_ = NULL; gint _tmp97__length1 = 0; IBusEngineDesc* _tmp98_ = NULL; const gchar* _tmp99_ = NULL; gchar* _tmp100_ = NULL; _tmp97_ = names; _tmp97__length1 = names_length1; _tmp98_ = desc; _tmp99_ = ibus_engine_desc_get_name (_tmp98_); _tmp100_ = g_strdup (_tmp99_); _vala_array_add19 (&names, &names_length1, &_names_size_, _tmp100_); _g_object_unref0 (desc); } } } _tmp101_ = self->priv->m_settings_general; _tmp102_ = names; _tmp102__length1 = names_length1; g_settings_set_strv (_tmp101_, "engines-order", _tmp102_); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (engine); _g_free0 (icon_name); } static PanelKeybinding* panel_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, gboolean reverse) { PanelKeybinding* self = NULL; guint _tmp0_ = 0U; GdkModifierType _tmp1_ = 0; gboolean _tmp2_ = FALSE; self = (PanelKeybinding*) g_type_create_instance (object_type); _tmp0_ = keysym; panel_keybinding_set_keysym (self, _tmp0_); _tmp1_ = modifiers; panel_keybinding_set_modifiers (self, _tmp1_); _tmp2_ = reverse; panel_keybinding_set_reverse (self, _tmp2_); return self; } static PanelKeybinding* panel_keybinding_new (guint keysym, GdkModifierType modifiers, gboolean reverse) { return panel_keybinding_construct (PANEL_TYPE_KEYBINDING, keysym, modifiers, reverse); } static guint panel_keybinding_get_keysym (PanelKeybinding* self) { guint result; guint _tmp0_ = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->_keysym; result = _tmp0_; return result; } static void panel_keybinding_set_keysym (PanelKeybinding* self, guint value) { guint _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_keysym = _tmp0_; } static GdkModifierType panel_keybinding_get_modifiers (PanelKeybinding* self) { GdkModifierType result; GdkModifierType _tmp0_ = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->_modifiers; result = _tmp0_; return result; } static void panel_keybinding_set_modifiers (PanelKeybinding* self, GdkModifierType value) { GdkModifierType _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_modifiers = _tmp0_; } static gboolean panel_keybinding_get_reverse (PanelKeybinding* self) { gboolean result; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->_reverse; result = _tmp0_; return result; } static void panel_keybinding_set_reverse (PanelKeybinding* self, gboolean value) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_reverse = _tmp0_; } static void panel_value_keybinding_init (GValue* value) { value->data[0].v_pointer = NULL; } static void panel_value_keybinding_free_value (GValue* value) { if (value->data[0].v_pointer) { panel_keybinding_unref (value->data[0].v_pointer); } } static void panel_value_keybinding_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = panel_keybinding_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer panel_value_keybinding_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* panel_value_keybinding_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { PanelKeybinding* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = panel_keybinding_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* panel_value_keybinding_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { PanelKeybinding** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = panel_keybinding_ref (value->data[0].v_pointer); } return NULL; } static GParamSpec* panel_param_spec_keybinding (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { PanelParamSpecKeybinding* spec; g_return_val_if_fail (g_type_is_a (object_type, PANEL_TYPE_KEYBINDING), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } static gpointer panel_value_get_keybinding (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PANEL_TYPE_KEYBINDING), NULL); return value->data[0].v_pointer; } static void panel_value_set_keybinding (GValue* value, gpointer v_object) { PanelKeybinding* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PANEL_TYPE_KEYBINDING)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PANEL_TYPE_KEYBINDING)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; panel_keybinding_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { panel_keybinding_unref (old); } } static void panel_value_take_keybinding (GValue* value, gpointer v_object) { PanelKeybinding* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PANEL_TYPE_KEYBINDING)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PANEL_TYPE_KEYBINDING)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { panel_keybinding_unref (old); } } static void panel_keybinding_class_init (PanelKeybindingClass * klass) { panel_keybinding_parent_class = g_type_class_peek_parent (klass); ((PanelKeybindingClass *) klass)->finalize = panel_keybinding_finalize; g_type_class_add_private (klass, sizeof (PanelKeybindingPrivate)); } static void panel_keybinding_instance_init (PanelKeybinding * self) { self->priv = PANEL_KEYBINDING_GET_PRIVATE (self); self->ref_count = 1; } static void panel_keybinding_finalize (PanelKeybinding* obj) { PanelKeybinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, PANEL_TYPE_KEYBINDING, PanelKeybinding); g_signal_handlers_destroy (self); } static GType panel_keybinding_get_type (void) { static volatile gsize panel_keybinding_type_id__volatile = 0; if (g_once_init_enter (&panel_keybinding_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { panel_value_keybinding_init, panel_value_keybinding_free_value, panel_value_keybinding_copy_value, panel_value_keybinding_peek_pointer, "p", panel_value_keybinding_collect_value, "p", panel_value_keybinding_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (PanelKeybindingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) panel_keybinding_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PanelKeybinding), 0, (GInstanceInitFunc) panel_keybinding_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType panel_keybinding_type_id; panel_keybinding_type_id = g_type_register_fundamental (g_type_fundamental_next (), "PanelKeybinding", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&panel_keybinding_type_id__volatile, panel_keybinding_type_id); } return panel_keybinding_type_id__volatile; } static gpointer panel_keybinding_ref (gpointer instance) { PanelKeybinding* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } static void panel_keybinding_unref (gpointer instance) { PanelKeybinding* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { PANEL_KEYBINDING_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static void panel_class_init (PanelClass * klass) { panel_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PanelPrivate)); ((IBusPanelServiceClass *) klass)->set_cursor_location = panel_real_set_cursor_location; ((IBusPanelServiceClass *) klass)->focus_in = panel_real_focus_in; ((IBusPanelServiceClass *) klass)->focus_out = panel_real_focus_out; ((IBusPanelServiceClass *) klass)->destroy_context = panel_real_destroy_context; ((IBusPanelServiceClass *) klass)->register_properties = panel_real_register_properties; ((IBusPanelServiceClass *) klass)->update_property = panel_real_update_property; ((IBusPanelServiceClass *) klass)->update_preedit_text = panel_real_update_preedit_text; ((IBusPanelServiceClass *) klass)->hide_preedit_text = panel_real_hide_preedit_text; ((IBusPanelServiceClass *) klass)->update_auxiliary_text = panel_real_update_auxiliary_text; ((IBusPanelServiceClass *) klass)->hide_auxiliary_text = panel_real_hide_auxiliary_text; ((IBusPanelServiceClass *) klass)->update_lookup_table = panel_real_update_lookup_table; ((IBusPanelServiceClass *) klass)->hide_lookup_table = panel_real_hide_lookup_table; ((IBusPanelServiceClass *) klass)->set_content_type = panel_real_set_content_type; ((IBusPanelServiceClass *) klass)->state_changed = panel_real_state_changed; G_OBJECT_CLASS (klass)->finalize = panel_finalize; } static void panel_instance_init (Panel * self) { IBusEngineDesc** _tmp0_ = NULL; GHashFunc _tmp1_ = NULL; GEqualFunc _tmp2_ = NULL; GHashTable* _tmp3_ = NULL; gchar* _tmp4_ = NULL; GHashFunc _tmp5_ = NULL; GEqualFunc _tmp6_ = NULL; GHashTable* _tmp7_ = NULL; GHashFunc _tmp8_ = NULL; GEqualFunc _tmp9_ = NULL; GHashTable* _tmp10_ = NULL; GdkRGBA _tmp11_ = {0}; XKBLayout* _tmp12_ = NULL; gchar* _tmp13_ = NULL; self->priv = PANEL_GET_PRIVATE (self); self->priv->m_settings_general = NULL; self->priv->m_settings_hotkey = NULL; self->priv->m_settings_panel = NULL; self->priv->m_icon_type = PANEL_ICON_TYPE_STATUS_ICON; _tmp0_ = g_new0 (IBusEngineDesc*, 0 + 1); self->priv->m_engines = _tmp0_; self->priv->m_engines_length1 = 0; self->priv->_m_engines_size_ = self->priv->m_engines_length1; _tmp1_ = g_str_hash; _tmp2_ = g_str_equal; _tmp3_ = g_hash_table_new_full (_tmp1_, _tmp2_, _g_free0_, _g_object_unref0_); self->priv->m_engine_contexts = _tmp3_; _tmp4_ = g_strdup (""); self->priv->m_current_context_path = _tmp4_; self->priv->m_use_global_engine = TRUE; self->priv->m_switcher_is_running = FALSE; self->priv->m_setup_pid = (GPid) 0; self->priv->m_switcher_delay_time = 400; self->priv->m_use_system_keyboard_layout = FALSE; _tmp5_ = g_str_hash; _tmp6_ = g_str_equal; _tmp7_ = g_hash_table_new_full (_tmp5_, _tmp6_, _g_free0_, _g_object_unref0_); self->priv->m_xkb_icon_pixbufs = _tmp7_; _tmp8_ = g_str_hash; _tmp9_ = g_str_equal; _tmp10_ = g_hash_table_new_full (_tmp8_, _tmp9_, _g_free0_, _cairo_surface_destroy0_); self->priv->m_xkb_icon_image = _tmp10_; memset (&_tmp11_, 0, sizeof (GdkRGBA)); _tmp11_.red = 0.0; _tmp11_.green = 0.0; _tmp11_.blue = 0.0; _tmp11_.alpha = 1.0; self->priv->m_xkb_icon_rgba = _tmp11_; _tmp12_ = xkb_layout_new (); self->priv->m_xkblayout = _tmp12_; self->priv->inited_engines_order = TRUE; _tmp13_ = g_strdup (""); self->priv->m_icon_prop_key = _tmp13_; self->priv->m_property_icon_delay_time = 500; self->priv->m_keybindings = NULL; } static void panel_finalize (GObject* obj) { Panel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PANEL, Panel); panel_unbind_switch_shortcut (self); _g_object_unref0 (self->priv->m_bus); _g_object_unref0 (self->priv->m_settings_general); _g_object_unref0 (self->priv->m_settings_hotkey); _g_object_unref0 (self->priv->m_settings_panel); _g_object_unref0 (self->priv->m_indicator); _g_object_unref0 (self->priv->m_session_bus_connection); _g_object_unref0 (self->priv->m_status_icon); _g_object_unref0 (self->priv->m_ime_menu); _g_object_unref0 (self->priv->m_sys_menu); self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); _g_hash_table_unref0 (self->priv->m_engine_contexts); _g_free0 (self->priv->m_current_context_path); _g_object_unref0 (self->priv->m_candidate_panel); _g_object_unref0 (self->priv->m_switcher); _property_manager_unref0 (self->priv->m_property_manager); _g_object_unref0 (self->priv->m_property_panel); _g_object_unref0 (self->priv->m_about_dialog); _g_object_unref0 (self->priv->m_css_provider); _g_hash_table_unref0 (self->priv->m_xkb_icon_pixbufs); _g_hash_table_unref0 (self->priv->m_xkb_icon_image); _xkb_layout_unref0 (self->priv->m_xkblayout); _g_free0 (self->priv->m_icon_prop_key); __g_list_free__panel_keybinding_unref0_0 (self->priv->m_keybindings); G_OBJECT_CLASS (panel_parent_class)->finalize (obj); } GType panel_get_type (void) { static volatile gsize panel_type_id__volatile = 0; if (g_once_init_enter (&panel_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PanelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) panel_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Panel), 0, (GInstanceInitFunc) panel_instance_init, NULL }; GType panel_type_id; panel_type_id = g_type_register_static (ibus_panel_service_get_type (), "Panel", &g_define_type_info, 0); g_once_init_leave (&panel_type_id__volatile, panel_type_id); } return panel_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.11/ui/gtk3/application.vala0000644000000000000000000000731112551654123014073 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class Application { private IBus.Bus m_bus; private Panel m_panel; public Application(string[] argv) { GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.GLIB_LOCALE_DIR); GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); IBus.init(); Gtk.init(ref argv); m_bus = new IBus.Bus(); m_bus.connected.connect(bus_connected); m_bus.disconnected.connect(bus_disconnected); if (m_bus.is_connected()) { init(); } } private void init() { DBusConnection connection = m_bus.get_connection(); connection.signal_subscribe("org.freedesktop.DBus", "org.freedesktop.DBus", "NameAcquired", "/org/freedesktop/DBus", IBus.SERVICE_PANEL, DBusSignalFlags.NONE, bus_name_acquired_cb); connection.signal_subscribe("org.freedesktop.DBus", "org.freedesktop.DBus", "NameLost", "/org/freedesktop/DBus", IBus.SERVICE_PANEL, DBusSignalFlags.NONE, bus_name_lost_cb); var flags = IBus.BusNameFlag.ALLOW_REPLACEMENT | IBus.BusNameFlag.REPLACE_EXISTING; m_bus.request_name(IBus.SERVICE_PANEL, flags); } public int run() { Gtk.main(); return 0; } private void bus_name_acquired_cb(DBusConnection connection, string sender_name, string object_path, string interface_name, string signal_name, Variant parameters) { debug("signal_name = %s", signal_name); m_panel = new Panel(m_bus); m_panel.load_settings(); } private void bus_name_lost_cb(DBusConnection connection, string sender_name, string object_path, string interface_name, string signal_name, Variant parameters) { debug("signal_name = %s", signal_name); m_panel = null; } private void bus_disconnected(IBus.Bus bus) { debug("connection is lost."); Gtk.main_quit(); } private void bus_connected(IBus.Bus bus) { init(); } public static void main(string[] argv) { Application app = new Application(argv); app.run(); } } ibus-1.5.11/ui/gtk3/application.c0000644000000000000000000004174212551655051013401 00000000000000/* application.c generated by valac 0.28.0, the Vala compiler * generated from application.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #define TYPE_APPLICATION (application_get_type ()) #define APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APPLICATION, Application)) #define APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APPLICATION, ApplicationClass)) #define IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APPLICATION)) #define IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APPLICATION)) #define APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APPLICATION, ApplicationClass)) typedef struct _Application Application; typedef struct _ApplicationClass ApplicationClass; typedef struct _ApplicationPrivate ApplicationPrivate; #define TYPE_PANEL (panel_get_type ()) #define PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PANEL, Panel)) #define PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PANEL, PanelClass)) #define IS_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PANEL)) #define IS_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PANEL)) #define PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PANEL, PanelClass)) typedef struct _Panel Panel; typedef struct _PanelClass PanelClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _application_unref0(var) ((var == NULL) ? NULL : (var = (application_unref (var), NULL))) typedef struct _ParamSpecApplication ParamSpecApplication; struct _Application { GTypeInstance parent_instance; volatile int ref_count; ApplicationPrivate * priv; }; struct _ApplicationClass { GTypeClass parent_class; void (*finalize) (Application *self); }; struct _ApplicationPrivate { IBusBus* m_bus; Panel* m_panel; }; struct _ParamSpecApplication { GParamSpec parent_instance; }; static gpointer application_parent_class = NULL; gpointer application_ref (gpointer instance); void application_unref (gpointer instance); GParamSpec* param_spec_application (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_application (GValue* value, gpointer v_object); void value_take_application (GValue* value, gpointer v_object); gpointer value_get_application (const GValue* value); GType application_get_type (void) G_GNUC_CONST; GType panel_get_type (void) G_GNUC_CONST; #define APPLICATION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_APPLICATION, ApplicationPrivate)) enum { APPLICATION_DUMMY_PROPERTY }; Application* application_new (gchar** argv, int argv_length1); Application* application_construct (GType object_type, gchar** argv, int argv_length1); static void application_bus_connected (Application* self, IBusBus* bus); static void _application_bus_connected_ibus_bus_connected (IBusBus* _sender, gpointer self); static void application_bus_disconnected (Application* self, IBusBus* bus); static void _application_bus_disconnected_ibus_bus_disconnected (IBusBus* _sender, gpointer self); static void application_init (Application* self); static void application_bus_name_acquired_cb (Application* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters); static void _application_bus_name_acquired_cb_gd_bus_signal_callback (GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters, gpointer self); static void application_bus_name_lost_cb (Application* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters); static void _application_bus_name_lost_cb_gd_bus_signal_callback (GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters, gpointer self); gint application_run (Application* self); Panel* panel_new (IBusBus* bus); Panel* panel_construct (GType object_type, IBusBus* bus); void panel_load_settings (Panel* self); void application_main (gchar** argv, int argv_length1); static void application_finalize (Application* obj); static void _application_bus_connected_ibus_bus_connected (IBusBus* _sender, gpointer self) { application_bus_connected ((Application*) self, _sender); } static void _application_bus_disconnected_ibus_bus_disconnected (IBusBus* _sender, gpointer self) { application_bus_disconnected ((Application*) self, _sender); } Application* application_construct (GType object_type, gchar** argv, int argv_length1) { Application* self = NULL; IBusBus* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; IBusBus* _tmp2_ = NULL; IBusBus* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; self = (Application*) g_type_create_instance (object_type); bindtextdomain (GETTEXT_PACKAGE, GLIB_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); ibus_init (); gtk_init (&argv_length1, &argv); _tmp0_ = ibus_bus_new (); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_bus); self->priv->m_bus = _tmp0_; _tmp1_ = self->priv->m_bus; g_signal_connect (_tmp1_, "connected", (GCallback) _application_bus_connected_ibus_bus_connected, self); _tmp2_ = self->priv->m_bus; g_signal_connect (_tmp2_, "disconnected", (GCallback) _application_bus_disconnected_ibus_bus_disconnected, self); _tmp3_ = self->priv->m_bus; _tmp4_ = ibus_bus_is_connected (_tmp3_); if (_tmp4_) { application_init (self); } return self; } Application* application_new (gchar** argv, int argv_length1) { return application_construct (TYPE_APPLICATION, argv, argv_length1); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void _application_bus_name_acquired_cb_gd_bus_signal_callback (GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters, gpointer self) { application_bus_name_acquired_cb ((Application*) self, connection, sender_name, object_path, interface_name, signal_name, parameters); } static void _application_bus_name_lost_cb_gd_bus_signal_callback (GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters, gpointer self) { application_bus_name_lost_cb ((Application*) self, connection, sender_name, object_path, interface_name, signal_name, parameters); } static void application_init (Application* self) { GDBusConnection* connection = NULL; IBusBus* _tmp0_ = NULL; GDBusConnection* _tmp1_ = NULL; GDBusConnection* _tmp2_ = NULL; IBusBusNameFlag flags = 0; IBusBus* _tmp3_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_bus; _tmp1_ = ibus_bus_get_connection (_tmp0_); _tmp2_ = _g_object_ref0 (_tmp1_); connection = _tmp2_; g_dbus_connection_signal_subscribe (connection, "org.freedesktop.DBus", "org.freedesktop.DBus", "NameAcquired", "/org/freedesktop/DBus", IBUS_SERVICE_PANEL, G_DBUS_SIGNAL_FLAGS_NONE, _application_bus_name_acquired_cb_gd_bus_signal_callback, application_ref (self), application_unref); g_dbus_connection_signal_subscribe (connection, "org.freedesktop.DBus", "org.freedesktop.DBus", "NameLost", "/org/freedesktop/DBus", IBUS_SERVICE_PANEL, G_DBUS_SIGNAL_FLAGS_NONE, _application_bus_name_lost_cb_gd_bus_signal_callback, application_ref (self), application_unref); flags = IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT | IBUS_BUS_NAME_FLAG_REPLACE_EXISTING; _tmp3_ = self->priv->m_bus; ibus_bus_request_name (_tmp3_, IBUS_SERVICE_PANEL, (guint32) flags); _g_object_unref0 (connection); } gint application_run (Application* self) { gint result = 0; g_return_val_if_fail (self != NULL, 0); gtk_main (); result = 0; return result; } static void application_bus_name_acquired_cb (Application* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters) { const gchar* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; Panel* _tmp2_ = NULL; Panel* _tmp3_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (connection != NULL); g_return_if_fail (sender_name != NULL); g_return_if_fail (object_path != NULL); g_return_if_fail (interface_name != NULL); g_return_if_fail (signal_name != NULL); g_return_if_fail (parameters != NULL); _tmp0_ = signal_name; g_debug ("application.vala:77: signal_name = %s", _tmp0_); _tmp1_ = self->priv->m_bus; _tmp2_ = panel_new (_tmp1_); g_object_ref_sink (_tmp2_); _g_object_unref0 (self->priv->m_panel); self->priv->m_panel = _tmp2_; _tmp3_ = self->priv->m_panel; panel_load_settings (_tmp3_); } static void application_bus_name_lost_cb (Application* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters) { const gchar* _tmp0_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (connection != NULL); g_return_if_fail (sender_name != NULL); g_return_if_fail (object_path != NULL); g_return_if_fail (interface_name != NULL); g_return_if_fail (signal_name != NULL); g_return_if_fail (parameters != NULL); _tmp0_ = signal_name; g_debug ("application.vala:88: signal_name = %s", _tmp0_); _g_object_unref0 (self->priv->m_panel); self->priv->m_panel = NULL; } static void application_bus_disconnected (Application* self, IBusBus* bus) { g_return_if_fail (self != NULL); g_return_if_fail (bus != NULL); g_debug ("application.vala:93: connection is lost."); gtk_main_quit (); } static void application_bus_connected (Application* self, IBusBus* bus) { g_return_if_fail (self != NULL); g_return_if_fail (bus != NULL); application_init (self); } void application_main (gchar** argv, int argv_length1) { Application* app = NULL; gchar** _tmp0_ = NULL; gint _tmp0__length1 = 0; Application* _tmp1_ = NULL; _tmp0_ = argv; _tmp0__length1 = argv_length1; _tmp1_ = application_new (_tmp0_, _tmp0__length1); app = _tmp1_; application_run (app); _application_unref0 (app); } int main (int argc, char ** argv) { #if !GLIB_CHECK_VERSION (2,35,0) g_type_init (); #endif application_main (argv, argc); return 0; } static void value_application_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_application_free_value (GValue* value) { if (value->data[0].v_pointer) { application_unref (value->data[0].v_pointer); } } static void value_application_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = application_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_application_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_application_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { Application* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = application_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_application_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { Application** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = application_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_application (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecApplication* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_APPLICATION), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer value_get_application (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APPLICATION), NULL); return value->data[0].v_pointer; } void value_set_application (GValue* value, gpointer v_object) { Application* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APPLICATION)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APPLICATION)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; application_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { application_unref (old); } } void value_take_application (GValue* value, gpointer v_object) { Application* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APPLICATION)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APPLICATION)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { application_unref (old); } } static void application_class_init (ApplicationClass * klass) { application_parent_class = g_type_class_peek_parent (klass); ((ApplicationClass *) klass)->finalize = application_finalize; g_type_class_add_private (klass, sizeof (ApplicationPrivate)); } static void application_instance_init (Application * self) { self->priv = APPLICATION_GET_PRIVATE (self); self->ref_count = 1; } static void application_finalize (Application* obj) { Application * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_APPLICATION, Application); g_signal_handlers_destroy (self); _g_object_unref0 (self->priv->m_bus); _g_object_unref0 (self->priv->m_panel); } GType application_get_type (void) { static volatile gsize application_type_id__volatile = 0; if (g_once_init_enter (&application_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { value_application_init, value_application_free_value, value_application_copy_value, value_application_peek_pointer, "p", value_application_collect_value, "p", value_application_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (ApplicationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) application_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Application), 0, (GInstanceInitFunc) application_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType application_type_id; application_type_id = g_type_register_fundamental (g_type_fundamental_next (), "Application", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&application_type_id__volatile, application_type_id); } return application_type_id__volatile; } gpointer application_ref (gpointer instance) { Application* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void application_unref (gpointer instance) { Application* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { APPLICATION_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } ibus-1.5.11/ui/gtk3/pango.vala0000644000000000000000000000567612551654123012710 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ Pango.AttrList get_pango_attr_list_from_ibus_text(IBus.Text text) { Pango.AttrList pango_attrs = new Pango.AttrList(); unowned IBus.AttrList attrs = text.get_attributes(); if (attrs == null) return pango_attrs; unowned string str = text.get_text(); long nchars = str.char_count(); long[] offsets = new long[nchars + 1]; for (int i = 0; i <= nchars; i++) offsets[i] = str.index_of_nth_char(i); IBus.Attribute attr; int i = 0; while(true) { attr = attrs.get(i++); if (attr == null) break; long start_index = attr.start_index; if (start_index <= 0) start_index = 0; start_index = start_index <= nchars ? offsets[start_index] : offsets[-1]; long end_index = attr.end_index; if (end_index <= 0) end_index = 0; end_index = end_index <= nchars ? offsets[end_index] : offsets[-1]; Pango.Attribute pango_attr = null; switch(attr.type) { case IBus.AttrType.FOREGROUND: { uint16 r = (uint16)((attr.value & 0x00ff0000) >> 8); uint16 g = (uint16)(attr.value & 0x0000ff00); uint16 b = (uint16)((attr.value & 0x000000ff) << 8); pango_attr = Pango.attr_foreground_new(r, g, b); break; } case IBus.AttrType.BACKGROUND: { uint16 r = (uint16)((attr.value & 0x00ff0000) >> 8); uint16 g = (uint16)(attr.value & 0x0000ff00); uint16 b = (uint16)((attr.value & 0x000000ff) << 8); pango_attr = Pango.attr_background_new(r, g, b); break; } case IBus.AttrType.UNDERLINE: { pango_attr = Pango.attr_underline_new((Pango.Underline)attr.value); break; } default: continue; } pango_attr.start_index = (uint)start_index; pango_attr.end_index = (uint)end_index; // Transfer the ownership to pango_attrs pango_attrs.insert((owned)pango_attr); } return pango_attrs; } ibus-1.5.11/ui/gtk3/candidatepanel.vala0000644000000000000000000003151312551654123014525 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ public class CandidatePanel : Gtk.Box{ private bool m_vertical_panel_system = true; private bool m_vertical_writing; private Gtk.Window m_toplevel; private Gtk.Box m_vbox; private Gtk.Label m_preedit_label; private Gtk.Label m_aux_label; private CandidateArea m_candidate_area; private HSeparator m_hseparator; private Gdk.Rectangle m_cursor_location; public signal void cursor_up(); public signal void cursor_down(); public signal void page_up(); public signal void page_down(); public signal void candidate_clicked(uint index, uint button, uint state); public CandidatePanel() { // Call base class constructor GLib.Object( name : "IBusCandidate", orientation: Gtk.Orientation.HORIZONTAL, visible: true ); m_toplevel = new Gtk.Window(Gtk.WindowType.POPUP); m_toplevel.add_events(Gdk.EventMask.BUTTON_PRESS_MASK); m_toplevel.button_press_event.connect((w, e) => { if (e.button != 1 || (e.state & Gdk.ModifierType.CONTROL_MASK) == 0) return false; set_vertical(!m_vertical_panel_system); return true; }); m_toplevel.size_allocate.connect((w, a) => { adjust_window_position(); }); Handle handle = new Handle(); handle.set_visible(true); pack_start(handle, false, false, 0); m_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); m_vbox.set_visible(true); pack_start(m_vbox, false, false, 0); m_toplevel.add(this); create_ui(); } public void set_vertical(bool vertical) { if (m_vertical_panel_system == vertical) return; m_vertical_panel_system = vertical; m_candidate_area.set_vertical(vertical); } private void set_orientation(IBus.Orientation orientation) { switch (orientation) { case IBus.Orientation.VERTICAL: m_candidate_area.set_vertical(true); break; case IBus.Orientation.HORIZONTAL: m_candidate_area.set_vertical(false); break; case IBus.Orientation.SYSTEM: m_candidate_area.set_vertical(m_vertical_panel_system); break; } } public void set_cursor_location(int x, int y, int width, int height) { Gdk.Rectangle location = Gdk.Rectangle(){ x = x, y = y, width = width, height = height }; if (m_cursor_location == location) return; m_cursor_location = location; /* Do not call adjust_window_position() here because * m_toplevel is not shown yet and * m_toplevel.get_allocation() returns height = width = 1 */ } private void set_labels(IBus.Text[] labels) { m_candidate_area.set_labels(labels); } private void set_attributes(Gtk.Label label, IBus.Text text) { Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); Gtk.StyleContext context = label.get_style_context(); Gdk.RGBA color; if (context.lookup_color("placeholder_text_color", out color)) { Pango.Attribute pango_attr = Pango.attr_foreground_new( (uint16)(color.red * uint16.MAX), (uint16)(color.green * uint16.MAX), (uint16)(color.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = label.get_text().length; attrs.insert((owned)pango_attr); } label.set_attributes(attrs); } public void set_preedit_text(IBus.Text? text, uint cursor) { if (text != null) { var str = text.get_text(); if (str.length > 0) { m_preedit_label.set_text(str); m_preedit_label.show(); set_attributes(m_preedit_label, text); } else { m_preedit_label.set_text(""); m_preedit_label.hide(); } } else { m_preedit_label.set_text(""); m_preedit_label.hide(); } update(); } public void set_auxiliary_text(IBus.Text? text) { if (text != null) { m_aux_label.set_text(text.get_text()); m_aux_label.show(); } else { m_aux_label.set_text(""); m_aux_label.hide(); } update(); } public void set_lookup_table(IBus.LookupTable? table) { IBus.Text[] candidates = {}; uint cursor_in_page = 0; bool show_cursor = true; IBus.Text[] labels = {}; IBus.Orientation orientation = IBus.Orientation.SYSTEM; if (table != null) { uint page_size = table.get_page_size(); uint ncandidates = table.get_number_of_candidates(); uint cursor = table.get_cursor_pos(); cursor_in_page = table.get_cursor_in_page(); show_cursor = table.is_cursor_visible(); uint page_start_pos = cursor / page_size * page_size; uint page_end_pos = uint.min(page_start_pos + page_size, ncandidates); for (uint i = page_start_pos; i < page_end_pos; i++) candidates += table.get_candidate(i); for (uint i = 0; i < page_size; i++) { IBus.Text? label = table.get_label(i); if (label != null) labels += label; } orientation = (IBus.Orientation)table.get_orientation(); } m_candidate_area.set_candidates(candidates, cursor_in_page, show_cursor); set_labels(labels); if (table != null) { // Do not change orientation if table is null to avoid recreate // candidates area. set_orientation(orientation); } if (candidates.length != 0) m_candidate_area.show_all(); else m_candidate_area.hide(); update(); } public void set_content_type(uint purpose, uint hints) { m_vertical_writing = ((hints & IBus.InputHints.VERTICAL_WRITING) != 0); } private void update() { if (m_candidate_area.get_visible() || m_preedit_label.get_visible() || m_aux_label.get_visible()) m_toplevel.show(); else m_toplevel.hide(); if (m_aux_label.get_visible() && (m_candidate_area.get_visible() || m_preedit_label.get_visible())) m_hseparator.show(); else m_hseparator.hide(); } public override void get_preferred_width(out int minimum_width, out int natural_width) { base.get_preferred_width(out minimum_width, out natural_width); m_toplevel.resize(1, 1); } public override void get_preferred_height(out int minimum_width, out int natural_width) { base.get_preferred_height(out minimum_width, out natural_width); m_toplevel.resize(1, 1); } private void create_ui() { m_preedit_label = new Gtk.Label(null); m_preedit_label.set_size_request(20, -1); m_preedit_label.set_halign(Gtk.Align.START); m_preedit_label.set_valign(Gtk.Align.CENTER); /* Use Gtk.Widget.set_margin_start() since gtk 3.12 */ m_preedit_label.set_padding(8, 0); m_preedit_label.set_no_show_all(true); m_aux_label = new Gtk.Label(null); m_aux_label.set_size_request(20, -1); m_aux_label.set_halign(Gtk.Align.START); m_aux_label.set_valign(Gtk.Align.CENTER); /* Use Gtk.Widget.set_margin_start() since gtk 3.12 */ m_aux_label.set_padding(8, 0); m_aux_label.set_no_show_all(true); m_candidate_area = new CandidateArea(m_vertical_panel_system); m_candidate_area.candidate_clicked.connect( (w, i, b, s) => candidate_clicked(i, b, s)); m_candidate_area.page_up.connect((c) => page_up()); m_candidate_area.page_down.connect((c) => page_down()); m_candidate_area.cursor_up.connect((c) => cursor_up()); m_candidate_area.cursor_down.connect((c) => cursor_down()); m_hseparator = new HSeparator(); m_hseparator.set_visible(true); pack_all_widgets(); } private void pack_all_widgets() { m_vbox.pack_start(m_preedit_label, false, false, 4); m_vbox.pack_start(m_aux_label, false, false, 4); m_vbox.pack_start(m_hseparator, false, false, 0); m_vbox.pack_start(m_candidate_area, false, false, 0); } public new void show() { m_toplevel.show_all(); } public new void hide() { m_toplevel.hide(); } private void move(int x, int y) { m_toplevel.move(x, y); } private void adjust_window_position() { if (!m_vertical_writing) adjust_window_position_horizontal(); else adjust_window_position_vertical(); } private void adjust_window_position_horizontal() { Gdk.Point cursor_right_bottom = { m_cursor_location.x + m_cursor_location.width, m_cursor_location.y + m_cursor_location.height }; Gtk.Allocation allocation; m_toplevel.get_allocation(out allocation); Gdk.Point window_right_bottom = { cursor_right_bottom.x + allocation.width, cursor_right_bottom.y + allocation.height }; Gdk.Window root = Gdk.get_default_root_window(); int root_width = root.get_width(); int root_height = root.get_height(); int x, y; if (window_right_bottom.x > root_width) x = root_width - allocation.width; else x = cursor_right_bottom.x; if (x < 0) x = 0; if (window_right_bottom.y > root_height) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; if (y < 0) y = 0; move(x, y); } private void adjust_window_position_vertical() { /* Not sure in which top or left cursor appears * in the vertical writing mode. * Max (m_cursor_location.width, m_cursor_location.height) * can be considered as a char size. */ int char_size = int.max(m_cursor_location.width, m_cursor_location.height); Gdk.Point cursor_right_bottom = { m_cursor_location.x + char_size, m_cursor_location.y + char_size }; Gtk.Allocation allocation; m_toplevel.get_allocation(out allocation); Gdk.Point hwindow_right_bottom = { m_cursor_location.x + allocation.width, cursor_right_bottom.y + allocation.height }; Gdk.Point vwindow_left_bottom = { m_cursor_location.x - allocation.width, m_cursor_location.y + allocation.height }; Gdk.Window root = Gdk.get_default_root_window(); int root_width = root.get_width(); int root_height = root.get_height(); int x, y; if (!m_candidate_area.get_vertical()) { if (hwindow_right_bottom.x > root_width) x = root_width - allocation.width; else x = m_cursor_location.x; if (hwindow_right_bottom.y > root_height) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; } else { if (vwindow_left_bottom.x > root_width) x = root_width - allocation.width; else if (vwindow_left_bottom.x < 0) x = cursor_right_bottom.x; else x = vwindow_left_bottom.x; if (vwindow_left_bottom.y > root_height) y = root_height - allocation.height; else y = m_cursor_location.y; } if (x < 0) x = 0; if (y < 0) y = 0; move(x, y); } } ibus-1.5.11/ui/gtk3/ibus_ui_gtk3_vala.stamp0000644000000000000000000000000612551655046015362 00000000000000stamp ibus-1.5.11/ui/gtk3/xkblayout.vala0000644000000000000000000002077212551654124013621 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2014 Red Hat, Inc. * Copyright(c) 2014 Peng Huang * Copyright(c) 2014 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class XKBLayout { private const string XKB_COMMAND = "setxkbmap"; private const string XKB_QUERY_ARG = "-query"; private const string XKB_LAYOUT_ARG = "-layout"; private const string XMODMAP_COMMAND = "xmodmap"; private const string[] XMODMAP_KNOWN_FILES = {".xmodmap", ".xmodmaprc", ".Xmodmap", ".Xmodmaprc"}; private string[] m_xkb_latin_layouts = {}; private string m_default_layout = ""; private string m_default_variant = ""; private string m_default_option = ""; private bool m_use_xmodmap = true; public XKBLayout() { } public void set_latin_layouts(string[] xkb_latin_layouts) { m_xkb_latin_layouts = xkb_latin_layouts; } public static void get_layout(out string layout, out string variant, out string option) { string[] exec_command = {}; exec_command += XKB_COMMAND; exec_command += XKB_QUERY_ARG; string standard_output = null; string standard_error = null; int exit_status = 0; layout = ""; variant = ""; option = ""; try { GLib.Process.spawn_sync(null, exec_command, null, GLib.SpawnFlags.SEARCH_PATH, null, out standard_output, out standard_error, out exit_status); } catch (GLib.SpawnError err) { stderr.printf("IBUS_ERROR: %s\n", err.message); } if (exit_status != 0) { stderr.printf("IBUS_ERROR: %s\n", standard_error ?? ""); } if (standard_output == null) { return; } foreach (string line in standard_output.split("\n")) { string element = "layout:"; string retval = ""; if (line.has_prefix(element)) { retval = line[element.length:line.length]; if (retval != null) { retval = retval.strip(); } layout = retval; } element = "variant:"; retval = ""; if (line.has_prefix(element)) { retval = line[element.length:line.length]; if (retval != null) { retval = retval.strip(); } variant = retval; } element = "options:"; retval = ""; if (line.has_prefix(element)) { retval = line[element.length:line.length]; if (retval != null) { retval = retval.strip(); } option = retval; } } } public void set_layout(IBus.EngineDesc engine) { string layout = engine.get_layout(); string variant = engine.get_layout_variant(); string option = engine.get_layout_option(); assert (layout != null); /* If the layout is "default", return here so that the current * keymap is not changed. * Some engines do not wish to change the current keymap. */ if (layout == "default" && (variant == "default" || variant == "") && (option == "default" || option == "")) { return; } bool need_us_layout = false; if (variant != "eng") need_us_layout = layout in m_xkb_latin_layouts; if (!need_us_layout && variant != null) need_us_layout = "%s(%s)".printf(layout, variant) in m_xkb_latin_layouts; if (m_default_layout == "") { get_layout (out m_default_layout, out m_default_variant, out m_default_option); } if (layout == "default" || layout == "") { layout = m_default_layout; variant = m_default_variant; } if (layout == "") { warning("Could not get the correct layout"); return; } if (option == "default" || option == "") { option = m_default_option; } else { if (!(option in m_default_option.split(","))) { option = "%s,%s".printf(m_default_option, option); } else { option = m_default_option; } } if (need_us_layout) { layout += ",us"; if (variant != null) { variant += ","; } } string[] args = {}; args += XKB_COMMAND; args += XKB_LAYOUT_ARG; args += layout; if (variant != null && variant != "" && variant != "default") { args += "-variant"; args += variant; } if (option != null && option != "" && option != "default") { /*TODO: Need to get the session XKB options */ args += "-option"; args += "-option"; args += option; } string standard_error = null; int exit_status = 0; try { if (!GLib.Process.spawn_sync(null, args, null, GLib.SpawnFlags.SEARCH_PATH, null, null, out standard_error, out exit_status)) warning("Switch xkb layout to %s failed.", engine.get_layout()); } catch (GLib.SpawnError e) { warning("Execute setxkbmap failed: %s", e.message); return; } if (exit_status != 0) warning("Execute setxkbmap failed: %s", standard_error ?? "(null)"); run_xmodmap(); } public void run_xmodmap() { if (!m_use_xmodmap) { return; } string homedir = GLib.Environment.get_home_dir(); foreach (string xmodmap_file in XMODMAP_KNOWN_FILES) { string xmodmap_filepath = GLib.Path.build_filename(homedir, xmodmap_file); if (!GLib.FileUtils.test(xmodmap_filepath, GLib.FileTest.EXISTS)) { continue; } string[] args = {XMODMAP_COMMAND, xmodmap_filepath}; /* Call async here because if both setxkbmap and xmodmap is * sync, it seems a DBus timeout happens and xmodmap causes * a loop for a while and users would think panel icon is * frozen in case the global engine mode is disabled. * * Do not return here even if the previous async is running * so that all xmodmap can be done after setxkbmap is called. */ try { GLib.Process.spawn_async(null, args, null, GLib.SpawnFlags.SEARCH_PATH, null, null); } catch (GLib.SpawnError e) { warning("Execute xmodmap is failed: %s\n", e.message); return; } break; } } public void set_use_xmodmap(bool use_xmodmap) { m_use_xmodmap = use_xmodmap; } } ibus-1.5.11/ui/gtk3/propertypanel.c0000644000000000000000000031241512551655052014001 00000000000000/* propertypanel.c generated by valac 0.28.0, the Vala compiler * generated from propertypanel.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013-2015 Red Hat, Inc. * Copyright(c) 2013-2015 Peng Huang * Copyright(c) 2013-2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define TYPE_PANEL_SHOW (panel_show_get_type ()) #define TYPE_PROPERTY_PANEL (property_panel_get_type ()) #define PROPERTY_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROPERTY_PANEL, PropertyPanel)) #define PROPERTY_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROPERTY_PANEL, PropertyPanelClass)) #define IS_PROPERTY_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROPERTY_PANEL)) #define IS_PROPERTY_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROPERTY_PANEL)) #define PROPERTY_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROPERTY_PANEL, PropertyPanelClass)) typedef struct _PropertyPanel PropertyPanel; typedef struct _PropertyPanelClass PropertyPanelClass; typedef struct _PropertyPanelPrivate PropertyPanelPrivate; #define TYPE_IPROP_TOOL_ITEM (iprop_tool_item_get_type ()) #define IPROP_TOOL_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IPROP_TOOL_ITEM, IPropToolItem)) #define IS_IPROP_TOOL_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IPROP_TOOL_ITEM)) #define IPROP_TOOL_ITEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IPROP_TOOL_ITEM, IPropToolItemIface)) typedef struct _IPropToolItem IPropToolItem; typedef struct _IPropToolItemIface IPropToolItemIface; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define TYPE_HANDLE (handle_get_type ()) #define HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HANDLE, Handle)) #define HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HANDLE, HandleClass)) #define IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HANDLE)) #define IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HANDLE)) #define HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HANDLE, HandleClass)) typedef struct _Handle Handle; typedef struct _HandleClass HandleClass; #define TYPE_PROP_TOOL_BUTTON (prop_tool_button_get_type ()) #define PROP_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_TOOL_BUTTON, PropToolButton)) #define PROP_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_TOOL_BUTTON, PropToolButtonClass)) #define IS_PROP_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_TOOL_BUTTON)) #define IS_PROP_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_TOOL_BUTTON)) #define PROP_TOOL_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_TOOL_BUTTON, PropToolButtonClass)) typedef struct _PropToolButton PropToolButton; typedef struct _PropToolButtonClass PropToolButtonClass; #define TYPE_PROP_TOGGLE_TOOL_BUTTON (prop_toggle_tool_button_get_type ()) #define PROP_TOGGLE_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton)) #define PROP_TOGGLE_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButtonClass)) #define IS_PROP_TOGGLE_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_TOGGLE_TOOL_BUTTON)) #define IS_PROP_TOGGLE_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_TOGGLE_TOOL_BUTTON)) #define PROP_TOGGLE_TOOL_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButtonClass)) typedef struct _PropToggleToolButton PropToggleToolButton; typedef struct _PropToggleToolButtonClass PropToggleToolButtonClass; #define TYPE_PROP_MENU_TOOL_BUTTON (prop_menu_tool_button_get_type ()) #define PROP_MENU_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_MENU_TOOL_BUTTON, PropMenuToolButton)) #define PROP_MENU_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_MENU_TOOL_BUTTON, PropMenuToolButtonClass)) #define IS_PROP_MENU_TOOL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_MENU_TOOL_BUTTON)) #define IS_PROP_MENU_TOOL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_MENU_TOOL_BUTTON)) #define PROP_MENU_TOOL_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_MENU_TOOL_BUTTON, PropMenuToolButtonClass)) typedef struct _PropMenuToolButton PropMenuToolButton; typedef struct _PropMenuToolButtonClass PropMenuToolButtonClass; #define TYPE_PROP_SEPARATOR_TOOL_ITEM (prop_separator_tool_item_get_type ()) #define PROP_SEPARATOR_TOOL_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_SEPARATOR_TOOL_ITEM, PropSeparatorToolItem)) #define PROP_SEPARATOR_TOOL_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_SEPARATOR_TOOL_ITEM, PropSeparatorToolItemClass)) #define IS_PROP_SEPARATOR_TOOL_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_SEPARATOR_TOOL_ITEM)) #define IS_PROP_SEPARATOR_TOOL_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_SEPARATOR_TOOL_ITEM)) #define PROP_SEPARATOR_TOOL_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_SEPARATOR_TOOL_ITEM, PropSeparatorToolItemClass)) typedef struct _PropSeparatorToolItem PropSeparatorToolItem; typedef struct _PropSeparatorToolItemClass PropSeparatorToolItemClass; #define _g_free0(var) (var = (g_free (var), NULL)) #define TYPE_PROP_MENU (prop_menu_get_type ()) #define PROP_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_MENU, PropMenu)) #define PROP_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_MENU, PropMenuClass)) #define IS_PROP_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_MENU)) #define IS_PROP_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_MENU)) #define PROP_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_MENU, PropMenuClass)) typedef struct _PropMenu PropMenu; typedef struct _PropMenuClass PropMenuClass; typedef struct _PropMenuPrivate PropMenuPrivate; #define TYPE_IPROP_ITEM (iprop_item_get_type ()) #define IPROP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IPROP_ITEM, IPropItem)) #define IS_IPROP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IPROP_ITEM)) #define IPROP_ITEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IPROP_ITEM, IPropItemIface)) typedef struct _IPropItem IPropItem; typedef struct _IPropItemIface IPropItemIface; #define TYPE_PROP_RADIO_MENU_ITEM (prop_radio_menu_item_get_type ()) #define PROP_RADIO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItem)) #define PROP_RADIO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItemClass)) #define IS_PROP_RADIO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_RADIO_MENU_ITEM)) #define IS_PROP_RADIO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_RADIO_MENU_ITEM)) #define PROP_RADIO_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItemClass)) typedef struct _PropRadioMenuItem PropRadioMenuItem; typedef struct _PropRadioMenuItemClass PropRadioMenuItemClass; #define TYPE_PROP_IMAGE_MENU_ITEM (prop_image_menu_item_get_type ()) #define PROP_IMAGE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItem)) #define PROP_IMAGE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItemClass)) #define IS_PROP_IMAGE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_IMAGE_MENU_ITEM)) #define IS_PROP_IMAGE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_IMAGE_MENU_ITEM)) #define PROP_IMAGE_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItemClass)) typedef struct _PropImageMenuItem PropImageMenuItem; typedef struct _PropImageMenuItemClass PropImageMenuItemClass; #define TYPE_PROP_CHECK_MENU_ITEM (prop_check_menu_item_get_type ()) #define PROP_CHECK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItem)) #define PROP_CHECK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItemClass)) #define IS_PROP_CHECK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_CHECK_MENU_ITEM)) #define IS_PROP_CHECK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_CHECK_MENU_ITEM)) #define PROP_CHECK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItemClass)) typedef struct _PropCheckMenuItem PropCheckMenuItem; typedef struct _PropCheckMenuItemClass PropCheckMenuItemClass; #define TYPE_PROP_SEPARATOR_MENU_ITEM (prop_separator_menu_item_get_type ()) #define PROP_SEPARATOR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItem)) #define PROP_SEPARATOR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItemClass)) #define IS_PROP_SEPARATOR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM)) #define IS_PROP_SEPARATOR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_SEPARATOR_MENU_ITEM)) #define PROP_SEPARATOR_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItemClass)) typedef struct _PropSeparatorMenuItem PropSeparatorMenuItem; typedef struct _PropSeparatorMenuItemClass PropSeparatorMenuItemClass; typedef struct _PropToolButtonPrivate PropToolButtonPrivate; #define TYPE_ICON_WIDGET (icon_widget_get_type ()) #define ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ICON_WIDGET, IconWidget)) #define ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ICON_WIDGET, IconWidgetClass)) #define IS_ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ICON_WIDGET)) #define IS_ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ICON_WIDGET)) #define ICON_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ICON_WIDGET, IconWidgetClass)) typedef struct _IconWidget IconWidget; typedef struct _IconWidgetClass IconWidgetClass; typedef struct _PropToggleToolButtonPrivate PropToggleToolButtonPrivate; typedef struct _PropMenuToolButtonPrivate PropMenuToolButtonPrivate; typedef struct _PropSeparatorToolItemPrivate PropSeparatorToolItemPrivate; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); typedef enum { PANEL_SHOW_DO_NOT_SHOW, PANEL_SHOW_AUTO_HIDE, PANEL_SHOW_ALWAYS } PanelShow; struct _PropertyPanel { GtkBox parent_instance; PropertyPanelPrivate * priv; }; struct _PropertyPanelClass { GtkBoxClass parent_class; }; struct _IPropToolItemIface { GTypeInterface parent_iface; void (*update_property) (IPropToolItem* self, IBusProperty* prop); }; struct _PropertyPanelPrivate { GdkWindow* m_root_window; Display* m_xdisplay; GtkWindow* m_toplevel; IBusPropList* m_props; IPropToolItem** m_items; gint m_items_length1; gint _m_items_size_; GdkRectangle m_cursor_location; gint m_show; guint m_auto_hide_timeout; guint m_auto_hide_timeout_id; gboolean m_follow_input_cursor_when_always_shown; }; struct _PropMenu { GtkMenu parent_instance; PropMenuPrivate * priv; }; struct _PropMenuClass { GtkMenuClass parent_class; }; struct _IPropItemIface { GTypeInterface parent_iface; void (*update_property) (IPropItem* self, IBusProperty* prop); }; struct _PropMenuPrivate { GtkWidget* m_parent_button; IPropItem** m_items; gint m_items_length1; gint _m_items_size_; }; struct _PropToolButton { GtkToolButton parent_instance; PropToolButtonPrivate * priv; }; struct _PropToolButtonClass { GtkToolButtonClass parent_class; }; struct _PropToolButtonPrivate { IBusProperty* m_prop; }; struct _PropToggleToolButton { GtkToggleToolButton parent_instance; PropToggleToolButtonPrivate * priv; }; struct _PropToggleToolButtonClass { GtkToggleToolButtonClass parent_class; }; struct _PropToggleToolButtonPrivate { IBusProperty* m_prop; }; struct _PropMenuToolButton { PropToggleToolButton parent_instance; PropMenuToolButtonPrivate * priv; }; struct _PropMenuToolButtonClass { PropToggleToolButtonClass parent_class; }; struct _PropMenuToolButtonPrivate { PropMenu* m_menu; }; struct _PropSeparatorToolItem { GtkSeparatorToolItem parent_instance; PropSeparatorToolItemPrivate * priv; }; struct _PropSeparatorToolItemClass { GtkSeparatorToolItemClass parent_class; }; static gpointer property_panel_parent_class = NULL; static gpointer prop_menu_parent_class = NULL; static IPropToolItemIface* prop_menu_iprop_tool_item_parent_iface = NULL; static gpointer prop_tool_button_parent_class = NULL; static IPropToolItemIface* prop_tool_button_iprop_tool_item_parent_iface = NULL; static gpointer prop_toggle_tool_button_parent_class = NULL; static IPropToolItemIface* prop_toggle_tool_button_iprop_tool_item_parent_iface = NULL; static gpointer prop_menu_tool_button_parent_class = NULL; static IPropToolItemIface* prop_menu_tool_button_iprop_tool_item_parent_iface = NULL; static gpointer prop_separator_tool_item_parent_class = NULL; static IPropToolItemIface* prop_separator_tool_item_iprop_tool_item_parent_iface = NULL; GType panel_show_get_type (void) G_GNUC_CONST; GType property_panel_get_type (void) G_GNUC_CONST; GType iprop_tool_item_get_type (void) G_GNUC_CONST; #define PROPERTY_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROPERTY_PANEL, PropertyPanelPrivate)) enum { PROPERTY_PANEL_DUMMY_PROPERTY }; #define PROPERTY_PANEL_MONITOR_NET_WORKAREA_TIMEOUT ((guint) 60000) PropertyPanel* property_panel_new (void); PropertyPanel* property_panel_construct (GType object_type); GType handle_get_type (void) G_GNUC_CONST; Handle* handle_new (void); Handle* handle_construct (GType object_type); static void __lambda23_ (PropertyPanel* self, GtkWidget* w, GtkAllocation* a); static void property_panel_set_default_location (PropertyPanel* self); static void ___lambda23__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void property_panel_monitor_net_workarea_atom (PropertyPanel* self); void property_panel_set_properties (PropertyPanel* self, IBusPropList* props); static void property_panel_create_menu_items (PropertyPanel* self); static void property_panel_show_with_auto_hide_timer (PropertyPanel* self); void property_panel_update_property (PropertyPanel* self, IBusProperty* prop); void iprop_tool_item_update_property (IPropToolItem* self, IBusProperty* prop); void property_panel_set_cursor_location (PropertyPanel* self, gint x, gint y, gint width, gint height); static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t* s1, const cairo_rectangle_int_t* s2); static void property_panel_hide_if_necessary (PropertyPanel* self); static void property_panel_adjust_window_position (PropertyPanel* self); void property_panel_set_preedit_text (PropertyPanel* self, IBusText* text, guint cursor); void property_panel_set_auxiliary_text (PropertyPanel* self, IBusText* text); void property_panel_set_lookup_table (PropertyPanel* self, IBusLookupTable* table); void property_panel_show (PropertyPanel* self); void property_panel_hide (PropertyPanel* self); void property_panel_focus_in (PropertyPanel* self); void property_panel_set_show (PropertyPanel* self, gint _show); void property_panel_set_auto_hide_timeout (PropertyPanel* self, guint timeout); void property_panel_set_follow_input_cursor_when_always_shown (PropertyPanel* self, gboolean is_follow); static void property_panel_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width); static void property_panel_real_get_preferred_height (GtkWidget* base, gint* minimum_width, gint* natural_width); PropToolButton* prop_tool_button_new (IBusProperty* prop); PropToolButton* prop_tool_button_construct (GType object_type, IBusProperty* prop); GType prop_tool_button_get_type (void) G_GNUC_CONST; PropToggleToolButton* prop_toggle_tool_button_new (IBusProperty* prop); PropToggleToolButton* prop_toggle_tool_button_construct (GType object_type, IBusProperty* prop); GType prop_toggle_tool_button_get_type (void) G_GNUC_CONST; PropMenuToolButton* prop_menu_tool_button_new (IBusProperty* prop); PropMenuToolButton* prop_menu_tool_button_construct (GType object_type, IBusProperty* prop); GType prop_menu_tool_button_get_type (void) G_GNUC_CONST; PropSeparatorToolItem* prop_separator_tool_item_new (IBusProperty* prop); PropSeparatorToolItem* prop_separator_tool_item_construct (GType object_type, IBusProperty* prop); GType prop_separator_tool_item_get_type (void) G_GNUC_CONST; static void _vala_array_add20 (IPropToolItem*** array, int* length, int* size, IPropToolItem* value); static void ____lambda28_ (PropertyPanel* self, IPropToolItem* w, const gchar* k, gint s); static void _____lambda28__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self); static void property_panel_move (PropertyPanel* self, gint x, gint y); static gboolean property_panel_is_bottom_panel (PropertyPanel* self); static GdkFilterReturn property_panel_root_window_filter (PropertyPanel* self, GdkXEvent* gdkxevent, GdkEvent* event); static GdkFilterReturn _property_panel_root_window_filter_gdk_filter_func (GdkXEvent* xevent, GdkEvent* event, gpointer self); static gboolean __lambda24_ (PropertyPanel* self); static gboolean ___lambda24__gsource_func (gpointer self); static gboolean __lambda29_ (PropertyPanel* self); static gboolean ___lambda29__gsource_func (gpointer self); static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void property_panel_finalize (GObject* obj); GType prop_menu_get_type (void) G_GNUC_CONST; GType iprop_item_get_type (void) G_GNUC_CONST; #define PROP_MENU_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_MENU, PropMenuPrivate)) enum { PROP_MENU_DUMMY_PROPERTY }; PropMenu* prop_menu_new (IBusProperty* prop); PropMenu* prop_menu_construct (GType object_type, IBusProperty* prop); static void prop_menu_create_items (PropMenu* self, IBusPropList* props); static void prop_menu_real_update_property (IPropToolItem* base, IBusProperty* prop); void iprop_item_update_property (IPropItem* self, IBusProperty* prop); void prop_menu_popup (PropMenu* self, guint button, guint32 activate_time, GtkWidget* widget); static void prop_menu_menu_position (PropMenu* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); static void _prop_menu_menu_position_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self); static void prop_menu_real_destroy (GtkWidget* base); GType prop_radio_menu_item_get_type (void) G_GNUC_CONST; PropImageMenuItem* prop_image_menu_item_new (IBusProperty* property); PropImageMenuItem* prop_image_menu_item_construct (GType object_type, IBusProperty* property); GType prop_image_menu_item_get_type (void) G_GNUC_CONST; PropCheckMenuItem* prop_check_menu_item_new (IBusProperty* property); PropCheckMenuItem* prop_check_menu_item_construct (GType object_type, IBusProperty* property); GType prop_check_menu_item_get_type (void) G_GNUC_CONST; PropRadioMenuItem* prop_radio_menu_item_new (IBusProperty* property, PropRadioMenuItem* group_source); PropRadioMenuItem* prop_radio_menu_item_construct (GType object_type, IBusProperty* property, PropRadioMenuItem* group_source); PropSeparatorMenuItem* prop_separator_menu_item_new (IBusProperty* property); PropSeparatorMenuItem* prop_separator_menu_item_construct (GType object_type, IBusProperty* property); GType prop_separator_menu_item_get_type (void) G_GNUC_CONST; static void ____lambda25_ (PropMenu* self, IPropItem* w, const gchar* k, gint s); static void _____lambda25__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self); static void _vala_array_add21 (IPropItem*** array, int* length, int* size, IPropItem* value); static void prop_menu_finalize (GObject* obj); #define PROP_TOOL_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_TOOL_BUTTON, PropToolButtonPrivate)) enum { PROP_TOOL_BUTTON_DUMMY_PROPERTY }; static void prop_tool_button_sync (PropToolButton* self); static void prop_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop); void prop_tool_button_set_icon_name (PropToolButton* self, const gchar* icon_name); static void prop_tool_button_real_clicked (GtkToolButton* base); GType icon_widget_get_type (void) G_GNUC_CONST; IconWidget* icon_widget_new (const gchar* icon_name_or_path, GtkIconSize size); IconWidget* icon_widget_construct (GType object_type, const gchar* icon_name_or_path, GtkIconSize size); static void prop_tool_button_finalize (GObject* obj); #define PROP_TOGGLE_TOOL_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButtonPrivate)) enum { PROP_TOGGLE_TOOL_BUTTON_DUMMY_PROPERTY }; static void prop_toggle_tool_button_sync (PropToggleToolButton* self); void prop_toggle_tool_button_set_property (PropToggleToolButton* self, IBusProperty* prop); static void prop_toggle_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop); void prop_toggle_tool_button_set_icon_name (PropToggleToolButton* self, const gchar* icon_name); static void prop_toggle_tool_button_real_toggled (GtkToggleToolButton* base); static void prop_toggle_tool_button_finalize (GObject* obj); #define PROP_MENU_TOOL_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_MENU_TOOL_BUTTON, PropMenuToolButtonPrivate)) enum { PROP_MENU_TOOL_BUTTON_DUMMY_PROPERTY }; static void __lambda26_ (PropMenuToolButton* self, GtkMenuShell* m); static void ___lambda26__gtk_menu_shell_deactivate (GtkMenuShell* _sender, gpointer self); static void __lambda27_ (PropMenuToolButton* self, IPropToolItem* w, const gchar* k, gint s); static void ___lambda27__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self); static void prop_menu_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop); static void prop_menu_tool_button_real_toggled (GtkToggleToolButton* base); static void prop_menu_tool_button_real_destroy (GtkWidget* base); static void prop_menu_tool_button_finalize (GObject* obj); enum { PROP_SEPARATOR_TOOL_ITEM_DUMMY_PROPERTY }; static void prop_separator_tool_item_real_update_property (IPropToolItem* base, IBusProperty* prop); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); GType panel_show_get_type (void) { static volatile gsize panel_show_type_id__volatile = 0; if (g_once_init_enter (&panel_show_type_id__volatile)) { static const GEnumValue values[] = {{PANEL_SHOW_DO_NOT_SHOW, "PANEL_SHOW_DO_NOT_SHOW", "do-not-show"}, {PANEL_SHOW_AUTO_HIDE, "PANEL_SHOW_AUTO_HIDE", "auto-hide"}, {PANEL_SHOW_ALWAYS, "PANEL_SHOW_ALWAYS", "always"}, {0, NULL, NULL}}; GType panel_show_type_id; panel_show_type_id = g_enum_register_static ("PanelShow", values); g_once_init_leave (&panel_show_type_id__volatile, panel_show_type_id); } return panel_show_type_id__volatile; } static void __lambda23_ (PropertyPanel* self, GtkWidget* w, GtkAllocation* a) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); _tmp4_ = self->priv->m_follow_input_cursor_when_always_shown; if (!_tmp4_) { gint _tmp5_ = 0; _tmp5_ = self->priv->m_show; _tmp3_ = _tmp5_ == ((gint) PANEL_SHOW_ALWAYS); } else { _tmp3_ = FALSE; } if (_tmp3_) { IPropToolItem** _tmp6_ = NULL; gint _tmp6__length1 = 0; _tmp6_ = self->priv->m_items; _tmp6__length1 = self->priv->m_items_length1; _tmp2_ = _tmp6__length1 > 0; } else { _tmp2_ = FALSE; } if (_tmp2_) { GdkRectangle _tmp7_ = {0}; gint _tmp8_ = 0; _tmp7_ = self->priv->m_cursor_location; _tmp8_ = _tmp7_.x; _tmp1_ = _tmp8_ == (-1); } else { _tmp1_ = FALSE; } if (_tmp1_) { GdkRectangle _tmp9_ = {0}; gint _tmp10_ = 0; _tmp9_ = self->priv->m_cursor_location; _tmp10_ = _tmp9_.y; _tmp0_ = _tmp10_ == (-1); } else { _tmp0_ = FALSE; } if (_tmp0_) { property_panel_set_default_location (self); self->priv->m_cursor_location.x = 0; self->priv->m_cursor_location.y = 0; } } static void ___lambda23__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda23_ ((PropertyPanel*) self, _sender, allocation); } PropertyPanel* property_panel_construct (GType object_type) { PropertyPanel * self = NULL; GdkWindow* _tmp0_ = NULL; GdkDisplay* display = NULL; GdkWindow* _tmp1_ = NULL; GdkDisplay* _tmp2_ = NULL; Display* _tmp3_ = NULL; GtkWindow* _tmp4_ = NULL; GtkWindow* _tmp5_ = NULL; Handle* handle = NULL; Handle* _tmp6_ = NULL; GtkWindow* _tmp7_ = NULL; GtkWindow* _tmp8_ = NULL; self = (PropertyPanel*) g_object_new (object_type, "orientation", GTK_ORIENTATION_HORIZONTAL, "spacing", 0, NULL); gtk_widget_set_visible ((GtkWidget*) self, TRUE); _tmp0_ = gdk_get_default_root_window (); self->priv->m_root_window = _tmp0_; _tmp1_ = self->priv->m_root_window; _tmp2_ = gdk_window_get_display (_tmp1_); display = _tmp2_; _tmp3_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (display, gdk_x11_display_get_type ()) ? ((GdkX11Display*) display) : NULL); self->priv->m_xdisplay = _tmp3_; _tmp4_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_POPUP); g_object_ref_sink (_tmp4_); _g_object_unref0 (self->priv->m_toplevel); self->priv->m_toplevel = _tmp4_; _tmp5_ = self->priv->m_toplevel; gtk_widget_add_events ((GtkWidget*) _tmp5_, (gint) GDK_BUTTON_PRESS_MASK); _tmp6_ = handle_new (); g_object_ref_sink (_tmp6_); handle = _tmp6_; gtk_widget_set_visible ((GtkWidget*) handle, TRUE); gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) handle, FALSE, FALSE, (guint) 0); _tmp7_ = self->priv->m_toplevel; gtk_container_add ((GtkContainer*) _tmp7_, (GtkWidget*) self); _tmp8_ = self->priv->m_toplevel; g_signal_connect_object ((GtkWidget*) _tmp8_, "size-allocate", (GCallback) ___lambda23__gtk_widget_size_allocate, self, 0); property_panel_monitor_net_workarea_atom (self); _g_object_unref0 (handle); return self; } PropertyPanel* property_panel_new (void) { return property_panel_construct (TYPE_PROPERTY_PANEL); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } void property_panel_set_properties (PropertyPanel* self, IBusPropList* props) { IPropToolItem** _tmp0_ = NULL; gint _tmp0__length1 = 0; IPropToolItem** _tmp3_ = NULL; IBusPropList* _tmp4_ = NULL; IBusPropList* _tmp5_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); g_debug ("propertypanel.vala:85: set_properties()\n"); _tmp0_ = self->priv->m_items; _tmp0__length1 = self->priv->m_items_length1; { IPropToolItem** item_collection = NULL; gint item_collection_length1 = 0; gint _item_collection_size_ = 0; gint item_it = 0; item_collection = _tmp0_; item_collection_length1 = _tmp0__length1; for (item_it = 0; item_it < _tmp0__length1; item_it = item_it + 1) { IPropToolItem* _tmp1_ = NULL; IPropToolItem* item = NULL; _tmp1_ = _g_object_ref0 (item_collection[item_it]); item = _tmp1_; { IPropToolItem* _tmp2_ = NULL; _tmp2_ = item; gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp2_) : NULL); _g_object_unref0 (item); } } } _tmp3_ = g_new0 (IPropToolItem*, 0 + 1); self->priv->m_items = (_vala_array_free (self->priv->m_items, self->priv->m_items_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_items = _tmp3_; self->priv->m_items_length1 = 0; self->priv->_m_items_size_ = self->priv->m_items_length1; _tmp4_ = props; _tmp5_ = _g_object_ref0 (_tmp4_); _g_object_unref0 (self->priv->m_props); self->priv->m_props = _tmp5_; property_panel_create_menu_items (self); property_panel_show_with_auto_hide_timer (self); } void property_panel_update_property (PropertyPanel* self, IBusProperty* prop) { IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusPropList* _tmp3_ = NULL; IPropToolItem** _tmp6_ = NULL; gint _tmp6__length1 = 0; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = prop; _vala_assert (_tmp0_ != NULL, "prop != null"); _tmp1_ = prop; _tmp2_ = ibus_property_get_key (_tmp1_); g_debug ("propertypanel.vala:106: update_property(prop.key = %s)\n", _tmp2_); _tmp3_ = self->priv->m_props; if (_tmp3_ != NULL) { IBusPropList* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; _tmp4_ = self->priv->m_props; _tmp5_ = prop; ibus_prop_list_update_property (_tmp4_, _tmp5_); } _tmp6_ = self->priv->m_items; _tmp6__length1 = self->priv->m_items_length1; { IPropToolItem** item_collection = NULL; gint item_collection_length1 = 0; gint _item_collection_size_ = 0; gint item_it = 0; item_collection = _tmp6_; item_collection_length1 = _tmp6__length1; for (item_it = 0; item_it < _tmp6__length1; item_it = item_it + 1) { IPropToolItem* _tmp7_ = NULL; IPropToolItem* item = NULL; _tmp7_ = _g_object_ref0 (item_collection[item_it]); item = _tmp7_; { IPropToolItem* _tmp8_ = NULL; IBusProperty* _tmp9_ = NULL; _tmp8_ = item; _tmp9_ = prop; iprop_tool_item_update_property (_tmp8_, _tmp9_); _g_object_unref0 (item); } } } property_panel_show_with_auto_hide_timer (self); } static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t* s1, const cairo_rectangle_int_t* s2) { if (s1 == s2) { return TRUE; } if (s1 == NULL) { return FALSE; } if (s2 == NULL) { return FALSE; } if (s1->x != s2->x) { return FALSE; } if (s1->y != s2->y) { return FALSE; } if (s1->width != s2->width) { return FALSE; } if (s1->height != s2->height) { return FALSE; } return TRUE; } void property_panel_set_cursor_location (PropertyPanel* self, gint x, gint y, gint width, gint height) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; GdkRectangle location = {0}; gint _tmp3_ = 0; gint _tmp4_ = 0; gint _tmp5_ = 0; gint _tmp6_ = 0; GdkRectangle _tmp7_ = {0}; GdkRectangle _tmp8_ = {0}; GdkRectangle _tmp9_ = {0}; gint _tmp10_ = 0; gint _tmp11_ = 0; gint _tmp12_ = 0; gint _tmp13_ = 0; gint _tmp14_ = 0; GdkRectangle _tmp21_ = {0}; g_return_if_fail (self != NULL); _tmp1_ = self->priv->m_follow_input_cursor_when_always_shown; if (!_tmp1_) { gint _tmp2_ = 0; _tmp2_ = self->priv->m_show; _tmp0_ = _tmp2_ == ((gint) PANEL_SHOW_ALWAYS); } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } _tmp3_ = x; _tmp4_ = y; _tmp5_ = width; _tmp6_ = height; memset (&_tmp7_, 0, sizeof (GdkRectangle)); _tmp7_.x = _tmp3_; _tmp7_.y = _tmp4_; _tmp7_.width = _tmp5_; _tmp7_.height = _tmp6_; location = _tmp7_; _tmp8_ = self->priv->m_cursor_location; _tmp9_ = location; if (_cairo_rectangle_int_equal (&_tmp8_, &_tmp9_) == TRUE) { return; } _tmp10_ = x; _tmp11_ = y; _tmp12_ = width; _tmp13_ = height; g_debug ("propertypanel.vala:147: set_cursor_location(x = %d, y = %d, width = %d" \ ", height = %d)\n", _tmp10_, _tmp11_, _tmp12_, _tmp13_); _tmp14_ = self->priv->m_show; if (_tmp14_ == ((gint) PANEL_SHOW_AUTO_HIDE)) { gboolean _tmp15_ = FALSE; GdkRectangle _tmp16_ = {0}; gint _tmp17_ = 0; _tmp16_ = self->priv->m_cursor_location; _tmp17_ = _tmp16_.x; if (_tmp17_ != (-1)) { _tmp15_ = TRUE; } else { GdkRectangle _tmp18_ = {0}; gint _tmp19_ = 0; _tmp18_ = self->priv->m_cursor_location; _tmp19_ = _tmp18_.y; _tmp15_ = _tmp19_ != (-1); } if (_tmp15_) { GdkRectangle _tmp20_ = {0}; _tmp20_ = location; self->priv->m_cursor_location = _tmp20_; property_panel_hide_if_necessary (self); property_panel_adjust_window_position (self); return; } } _tmp21_ = location; self->priv->m_cursor_location = _tmp21_; property_panel_adjust_window_position (self); property_panel_show_with_auto_hide_timer (self); } void property_panel_set_preedit_text (PropertyPanel* self, IBusText* text, guint cursor) { gboolean _tmp0_ = FALSE; IBusText* _tmp1_ = NULL; guint _tmp3_ = 0U; g_return_if_fail (self != NULL); _tmp1_ = text; if (_tmp1_ == NULL) { guint _tmp2_ = 0U; _tmp2_ = cursor; _tmp0_ = _tmp2_ == ((guint) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } _tmp3_ = cursor; g_debug ("propertypanel.vala:171: set_preedit_text(text, cursor = %u)\n", _tmp3_); property_panel_hide_if_necessary (self); } void property_panel_set_auxiliary_text (PropertyPanel* self, IBusText* text) { IBusText* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = text; if (_tmp0_ == NULL) { return; } g_debug ("propertypanel.vala:183: set_auxiliary_text(text)\n"); property_panel_hide_if_necessary (self); } void property_panel_set_lookup_table (PropertyPanel* self, IBusLookupTable* table) { IBusLookupTable* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = table; if (_tmp0_ == NULL) { return; } g_debug ("propertypanel.vala:192: set_lookup_table(table)\n"); property_panel_hide_if_necessary (self); } void property_panel_show (PropertyPanel* self) { gint _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_show; if (_tmp0_ == ((gint) PANEL_SHOW_DO_NOT_SHOW)) { GtkWindow* _tmp1_ = NULL; _tmp1_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp1_); return; } else { gint _tmp2_ = 0; _tmp2_ = self->priv->m_show; if (_tmp2_ == ((gint) PANEL_SHOW_ALWAYS)) { GtkWindow* _tmp3_ = NULL; _tmp3_ = self->priv->m_toplevel; gtk_widget_show_all ((GtkWidget*) _tmp3_); return; } } } void property_panel_hide (PropertyPanel* self) { GtkWindow* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp0_); } void property_panel_focus_in (PropertyPanel* self) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; g_return_if_fail (self != NULL); g_debug ("propertypanel.vala:217: focus_in()\n"); property_panel_hide_if_necessary (self); _tmp1_ = self->priv->m_follow_input_cursor_when_always_shown; if (_tmp1_) { _tmp0_ = TRUE; } else { gint _tmp2_ = 0; _tmp2_ = self->priv->m_show; _tmp0_ = _tmp2_ != ((gint) PANEL_SHOW_ALWAYS); } if (_tmp0_) { GdkRectangle _tmp3_ = {0}; _tmp3_.x = -1; _tmp3_.y = -1; _tmp3_.width = 0; _tmp3_.height = 0; self->priv->m_cursor_location = _tmp3_; } } void property_panel_set_show (PropertyPanel* self, gint _show) { gint _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = _show; self->priv->m_show = _tmp0_; property_panel_show (self); } void property_panel_set_auto_hide_timeout (PropertyPanel* self, guint timeout) { guint _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = timeout; self->priv->m_auto_hide_timeout = _tmp0_; } void property_panel_set_follow_input_cursor_when_always_shown (PropertyPanel* self, gboolean is_follow) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = is_follow; self->priv->m_follow_input_cursor_when_always_shown = _tmp0_; } static void property_panel_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width) { PropertyPanel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gint _tmp0_ = 0; gint _tmp1_ = 0; GtkWindow* _tmp2_ = NULL; self = (PropertyPanel*) base; GTK_WIDGET_CLASS (property_panel_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), &_tmp0_, &_tmp1_); _vala_minimum_width = _tmp0_; _vala_natural_width = _tmp1_; _tmp2_ = self->priv->m_toplevel; gtk_window_resize (_tmp2_, 1, 1); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void property_panel_real_get_preferred_height (GtkWidget* base, gint* minimum_width, gint* natural_width) { PropertyPanel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gint _tmp0_ = 0; gint _tmp1_ = 0; GtkWindow* _tmp2_ = NULL; self = (PropertyPanel*) base; GTK_WIDGET_CLASS (property_panel_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), &_tmp0_, &_tmp1_); _vala_minimum_width = _tmp0_; _vala_natural_width = _tmp1_; _tmp2_ = self->priv->m_toplevel; gtk_window_resize (_tmp2_, 1, 1); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void _vala_array_add20 (IPropToolItem*** array, int* length, int* size, IPropToolItem* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IPropToolItem*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void ____lambda28_ (PropertyPanel* self, IPropToolItem* w, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; g_signal_emit_by_name (self, "property-activate", _tmp0_, _tmp1_); } static void _____lambda28__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda28_ ((PropertyPanel*) self, _sender, key, state); } static void property_panel_create_menu_items (PropertyPanel* self) { gint i = 0; g_return_if_fail (self != NULL); i = 0; while (TRUE) { IBusProperty* prop = NULL; IBusPropList* _tmp0_ = NULL; gint _tmp1_ = 0; IBusProperty* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; gint _tmp5_ = 0; IPropToolItem* item = NULL; IBusProperty* _tmp6_ = NULL; IBusPropType _tmp7_ = 0; IPropToolItem* _tmp18_ = NULL; _tmp0_ = self->priv->m_props; _tmp1_ = i; _tmp2_ = ibus_prop_list_get (_tmp0_, (guint) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); prop = _tmp3_; _tmp4_ = prop; if (_tmp4_ == NULL) { _g_object_unref0 (prop); break; } _tmp5_ = i; i = _tmp5_ + 1; item = NULL; _tmp6_ = prop; _tmp7_ = ibus_property_get_prop_type (_tmp6_); switch (_tmp7_) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp8_ = NULL; PropToolButton* _tmp9_ = NULL; _tmp8_ = prop; _tmp9_ = prop_tool_button_new (_tmp8_); g_object_ref_sink (_tmp9_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp9_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp10_ = NULL; PropToggleToolButton* _tmp11_ = NULL; _tmp10_ = prop; _tmp11_ = prop_toggle_tool_button_new (_tmp10_); g_object_ref_sink (_tmp11_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp11_; break; } case PROP_TYPE_MENU: { IBusProperty* _tmp12_ = NULL; PropMenuToolButton* _tmp13_ = NULL; _tmp12_ = prop; _tmp13_ = prop_menu_tool_button_new (_tmp12_); g_object_ref_sink (_tmp13_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp13_; break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp14_ = NULL; PropSeparatorToolItem* _tmp15_ = NULL; _tmp14_ = prop; _tmp15_ = prop_separator_tool_item_new (_tmp14_); g_object_ref_sink (_tmp15_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp15_; break; } default: { IBusProperty* _tmp16_ = NULL; IBusPropType _tmp17_ = 0; _tmp16_ = prop; _tmp17_ = ibus_property_get_prop_type (_tmp16_); g_warning ("propertypanel.vala:282: unknown property type %d", (gint) _tmp17_); break; } } _tmp18_ = item; if (_tmp18_ != NULL) { IPropToolItem* _tmp19_ = NULL; IPropToolItem** _tmp20_ = NULL; gint _tmp20__length1 = 0; IPropToolItem* _tmp21_ = NULL; IPropToolItem* _tmp22_ = NULL; IPropToolItem* _tmp23_ = NULL; _tmp19_ = item; gtk_box_pack_start ((GtkBox*) self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp19_) : NULL, FALSE, FALSE, (guint) 0); _tmp20_ = self->priv->m_items; _tmp20__length1 = self->priv->m_items_length1; _tmp21_ = item; _tmp22_ = _g_object_ref0 (_tmp21_); _vala_array_add20 (&self->priv->m_items, &self->priv->m_items_length1, &self->priv->_m_items_size_, _tmp22_); _tmp23_ = item; g_signal_connect_object (_tmp23_, "property-activate", (GCallback) _____lambda28__iprop_tool_item_property_activate, self, 0); } _g_object_unref0 (item); _g_object_unref0 (prop); } } static void property_panel_move (PropertyPanel* self, gint x, gint y) { GtkWindow* _tmp0_ = NULL; gint _tmp1_ = 0; gint _tmp2_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; _tmp1_ = x; _tmp2_ = y; gtk_window_move (_tmp0_, _tmp1_, _tmp2_); } static void property_panel_adjust_window_position (PropertyPanel* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_ = {0}; gint _tmp1_ = 0; GdkRectangle _tmp2_ = {0}; gint _tmp3_ = 0; GdkRectangle _tmp4_ = {0}; gint _tmp5_ = 0; GdkRectangle _tmp6_ = {0}; gint _tmp7_ = 0; GdkPoint _tmp8_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp9_ = NULL; GtkAllocation _tmp10_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp11_ = {0}; gint _tmp12_ = 0; GtkAllocation _tmp13_ = {0}; gint _tmp14_ = 0; GdkPoint _tmp15_ = {0}; gint _tmp16_ = 0; GtkAllocation _tmp17_ = {0}; gint _tmp18_ = 0; GdkPoint _tmp19_ = {0}; gint root_width = 0; GdkWindow* _tmp20_ = NULL; gint _tmp21_ = 0; gint root_height = 0; GdkWindow* _tmp22_ = NULL; gint _tmp23_ = 0; gint x = 0; gint y = 0; GdkPoint _tmp24_ = {0}; gint _tmp25_ = 0; gint _tmp26_ = 0; GdkPoint _tmp32_ = {0}; gint _tmp33_ = 0; gint _tmp34_ = 0; gint _tmp41_ = 0; gint _tmp42_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = _tmp0_.x; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = _tmp2_.width; _tmp4_ = self->priv->m_cursor_location; _tmp5_ = _tmp4_.y; _tmp6_ = self->priv->m_cursor_location; _tmp7_ = _tmp6_.height; _tmp8_.x = _tmp1_ + _tmp3_; _tmp8_.y = _tmp5_ + _tmp7_; cursor_right_bottom = _tmp8_; _tmp9_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp9_, &_tmp10_); allocation = _tmp10_; _tmp11_ = cursor_right_bottom; _tmp12_ = _tmp11_.x; _tmp13_ = allocation; _tmp14_ = _tmp13_.width; _tmp15_ = cursor_right_bottom; _tmp16_ = _tmp15_.y; _tmp17_ = allocation; _tmp18_ = _tmp17_.height; _tmp19_.x = _tmp12_ + _tmp14_; _tmp19_.y = _tmp16_ + _tmp18_; window_right_bottom = _tmp19_; _tmp20_ = self->priv->m_root_window; _tmp21_ = gdk_window_get_width (_tmp20_); root_width = _tmp21_; _tmp22_ = self->priv->m_root_window; _tmp23_ = gdk_window_get_height (_tmp22_); root_height = _tmp23_; _tmp24_ = window_right_bottom; _tmp25_ = _tmp24_.x; _tmp26_ = root_width; if (_tmp25_ > _tmp26_) { gint _tmp27_ = 0; GtkAllocation _tmp28_ = {0}; gint _tmp29_ = 0; _tmp27_ = root_width; _tmp28_ = allocation; _tmp29_ = _tmp28_.width; x = _tmp27_ - _tmp29_; } else { GdkPoint _tmp30_ = {0}; gint _tmp31_ = 0; _tmp30_ = cursor_right_bottom; _tmp31_ = _tmp30_.x; x = _tmp31_; } _tmp32_ = window_right_bottom; _tmp33_ = _tmp32_.y; _tmp34_ = root_height; if (_tmp33_ > _tmp34_) { GdkRectangle _tmp35_ = {0}; gint _tmp36_ = 0; GtkAllocation _tmp37_ = {0}; gint _tmp38_ = 0; _tmp35_ = self->priv->m_cursor_location; _tmp36_ = _tmp35_.y; _tmp37_ = allocation; _tmp38_ = _tmp37_.height; y = _tmp36_ - _tmp38_; } else { GdkPoint _tmp39_ = {0}; gint _tmp40_ = 0; _tmp39_ = cursor_right_bottom; _tmp40_ = _tmp39_.y; y = _tmp40_; } _tmp41_ = x; _tmp42_ = y; property_panel_move (self, _tmp41_, _tmp42_); } static gboolean property_panel_is_bottom_panel (PropertyPanel* self) { gboolean result = FALSE; gchar* desktop = NULL; const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; const gchar* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; GQuark _tmp8_ = 0U; static GQuark _tmp7_label0 = 0; static GQuark _tmp7_label1 = 0; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = g_getenv ("XDG_CURRENT_DESKTOP"); _tmp1_ = g_strdup (_tmp0_); desktop = _tmp1_; _tmp2_ = desktop; if (_tmp2_ == NULL) { const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; _tmp3_ = g_getenv ("XDG_SESSION_DESKTOP"); _tmp4_ = g_strdup (_tmp3_); _g_free0 (desktop); desktop = _tmp4_; } _tmp5_ = desktop; _tmp6_ = _tmp5_; _tmp8_ = (NULL == _tmp6_) ? 0 : g_quark_from_string (_tmp6_); if (_tmp8_ == ((0 != _tmp7_label0) ? _tmp7_label0 : (_tmp7_label0 = g_quark_from_static_string ("KDE")))) { switch (0) { default: { result = TRUE; _g_free0 (desktop); return result; } } } else if (_tmp8_ == ((0 != _tmp7_label1) ? _tmp7_label1 : (_tmp7_label1 = g_quark_from_static_string ("LXDE")))) { switch (0) { default: { result = TRUE; _g_free0 (desktop); return result; } } } else { switch (0) { default: { result = FALSE; _g_free0 (desktop); return result; } } } _g_free0 (desktop); } static void property_panel_set_default_location (PropertyPanel* self) { GtkAllocation allocation = {0}; GtkWindow* _tmp0_ = NULL; GtkAllocation _tmp1_ = {0}; gint root_width = 0; GdkWindow* _tmp2_ = NULL; gint _tmp3_ = 0; gint root_height = 0; GdkWindow* _tmp4_ = NULL; gint _tmp5_ = 0; gint root_x = 0; gint root_y = 0; gint ws_num = 0; Window xwindow = 0; GdkWindow* _tmp6_ = NULL; Window _tmp7_ = 0; Atom _net_current_desktop = {0}; Display* _tmp8_ = NULL; Atom _tmp9_ = {0}; Atom type = {0}; gint format = 0; gulong nitems = 0UL; gulong bytes_after = 0UL; void* prop = NULL; Display* _tmp10_ = NULL; Window _tmp11_ = 0; Atom _tmp12_ = {0}; Atom _tmp13_ = {0}; gint _tmp14_ = 0; gulong _tmp15_ = 0UL; gulong _tmp16_ = 0UL; void* _tmp17_ = NULL; gboolean _tmp18_ = FALSE; Atom _tmp19_ = {0}; Atom _net_workarea = {0}; Display* _tmp23_ = NULL; Atom _tmp24_ = {0}; Display* _tmp25_ = NULL; Window _tmp26_ = 0; Atom _tmp27_ = {0}; Atom _tmp28_ = {0}; gint _tmp29_ = 0; gulong _tmp30_ = 0UL; gulong _tmp31_ = 0UL; void* _tmp32_ = NULL; Atom _tmp33_ = {0}; gint x = 0; gint y = 0; gboolean _tmp48_ = FALSE; gint _tmp67_ = 0; gint _tmp68_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp0_, &_tmp1_); allocation = _tmp1_; _tmp2_ = self->priv->m_root_window; _tmp3_ = gdk_window_get_width (_tmp2_); root_width = _tmp3_; _tmp4_ = self->priv->m_root_window; _tmp5_ = gdk_window_get_height (_tmp4_); root_height = _tmp5_; root_x = 0; root_y = 0; ws_num = 0; _tmp6_ = self->priv->m_root_window; _tmp7_ = gdk_x11_window_get_xid (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, gdk_x11_window_get_type ()) ? ((GdkX11Window*) _tmp6_) : NULL); xwindow = _tmp7_; _tmp8_ = self->priv->m_xdisplay; _tmp9_ = XInternAtom (_tmp8_, "_NET_CURRENT_DESKTOP", FALSE); _net_current_desktop = _tmp9_; type = (Atom) None; nitems = (gulong) 0; _tmp10_ = self->priv->m_xdisplay; _tmp11_ = xwindow; _tmp12_ = _net_current_desktop; XGetWindowProperty (_tmp10_, _tmp11_, _tmp12_, (glong) 0, (glong) 32, FALSE, XA_CARDINAL, &_tmp13_, &_tmp14_, &_tmp15_, &_tmp16_, (unsigned char **) (&_tmp17_)); type = _tmp13_; format = _tmp14_; nitems = _tmp15_; bytes_after = _tmp16_; prop = _tmp17_; _tmp19_ = type; if (_tmp19_ != ((Atom) None)) { gulong _tmp20_ = 0UL; _tmp20_ = nitems; _tmp18_ = _tmp20_ >= ((gulong) 1); } else { _tmp18_ = FALSE; } if (_tmp18_) { void* _tmp21_ = NULL; gulong _tmp22_ = 0UL; _tmp21_ = prop; _tmp22_ = ((gulong*) _tmp21_)[0]; ws_num = (gint) _tmp22_; } _tmp23_ = self->priv->m_xdisplay; _tmp24_ = XInternAtom (_tmp23_, "_NET_WORKAREA", FALSE); _net_workarea = _tmp24_; type = (Atom) None; nitems = (gulong) 0; _tmp25_ = self->priv->m_xdisplay; _tmp26_ = xwindow; _tmp27_ = _net_workarea; XGetWindowProperty (_tmp25_, _tmp26_, _tmp27_, (glong) 0, (glong) 32, FALSE, XA_CARDINAL, &_tmp28_, &_tmp29_, &_tmp30_, &_tmp31_, (unsigned char **) (&_tmp32_)); type = _tmp28_; format = _tmp29_; nitems = _tmp30_; bytes_after = _tmp31_; prop = _tmp32_; _tmp33_ = type; if (_tmp33_ != ((Atom) None)) { gulong _tmp34_ = 0UL; gulong _tmp41_ = 0UL; _tmp34_ = nitems; if (_tmp34_ >= ((gulong) 2)) { void* _tmp35_ = NULL; gint _tmp36_ = 0; gulong _tmp37_ = 0UL; void* _tmp38_ = NULL; gint _tmp39_ = 0; gulong _tmp40_ = 0UL; _tmp35_ = prop; _tmp36_ = ws_num; _tmp37_ = ((gulong*) _tmp35_)[_tmp36_ * 4]; root_x = (gint) _tmp37_; _tmp38_ = prop; _tmp39_ = ws_num; _tmp40_ = ((gulong*) _tmp38_)[(_tmp39_ * 4) + 1]; root_y = (gint) _tmp40_; } _tmp41_ = nitems; if (_tmp41_ >= ((gulong) 4)) { void* _tmp42_ = NULL; gint _tmp43_ = 0; gulong _tmp44_ = 0UL; void* _tmp45_ = NULL; gint _tmp46_ = 0; gulong _tmp47_ = 0UL; _tmp42_ = prop; _tmp43_ = ws_num; _tmp44_ = ((gulong*) _tmp42_)[(_tmp43_ * 4) + 2]; root_width = (gint) _tmp44_; _tmp45_ = prop; _tmp46_ = ws_num; _tmp47_ = ((gulong*) _tmp45_)[(_tmp46_ * 4) + 3]; root_height = (gint) _tmp47_; } } _tmp48_ = property_panel_is_bottom_panel (self); if (_tmp48_) { const gchar* _tmp49_ = NULL; _tmp49_ = _ ("default:LTR"); if (g_strcmp0 (_tmp49_, "default:RTL") != 0) { gint _tmp50_ = 0; GtkAllocation _tmp51_ = {0}; gint _tmp52_ = 0; gint _tmp53_ = 0; GtkAllocation _tmp54_ = {0}; gint _tmp55_ = 0; _tmp50_ = root_width; _tmp51_ = allocation; _tmp52_ = _tmp51_.width; x = _tmp50_ - _tmp52_; _tmp53_ = root_height; _tmp54_ = allocation; _tmp55_ = _tmp54_.height; y = _tmp53_ - _tmp55_; } else { gint _tmp56_ = 0; gint _tmp57_ = 0; GtkAllocation _tmp58_ = {0}; gint _tmp59_ = 0; _tmp56_ = root_x; x = _tmp56_; _tmp57_ = root_height; _tmp58_ = allocation; _tmp59_ = _tmp58_.height; y = _tmp57_ - _tmp59_; } } else { const gchar* _tmp60_ = NULL; _tmp60_ = _ ("default:LTR"); if (g_strcmp0 (_tmp60_, "default:RTL") != 0) { gint _tmp61_ = 0; GtkAllocation _tmp62_ = {0}; gint _tmp63_ = 0; gint _tmp64_ = 0; _tmp61_ = root_width; _tmp62_ = allocation; _tmp63_ = _tmp62_.width; x = _tmp61_ - _tmp63_; _tmp64_ = root_y; y = _tmp64_; } else { gint _tmp65_ = 0; gint _tmp66_ = 0; _tmp65_ = root_x; x = _tmp65_; _tmp66_ = root_y; y = _tmp66_; } } _tmp67_ = x; _tmp68_ = y; property_panel_move (self, _tmp67_, _tmp68_); } static GdkFilterReturn property_panel_root_window_filter (PropertyPanel* self, GdkXEvent* gdkxevent, GdkEvent* event) { GdkFilterReturn result = 0; XEvent* xevent = NULL; GdkXEvent* _tmp0_ = NULL; XEvent* _tmp1_ = NULL; gint _tmp2_ = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (gdkxevent != NULL, 0); g_return_val_if_fail (event != NULL, 0); _tmp0_ = gdkxevent; xevent = (XEvent*) _tmp0_; _tmp1_ = xevent; _tmp2_ = (*_tmp1_).type; if (_tmp2_ == ((gint) PropertyNotify)) { gchar* aname = NULL; Display* _tmp3_ = NULL; XEvent* _tmp4_ = NULL; XPropertyEvent _tmp5_ = {0}; Atom _tmp6_ = {0}; gchar* _tmp7_ = NULL; gboolean _tmp8_ = FALSE; const gchar* _tmp9_ = NULL; _tmp3_ = self->priv->m_xdisplay; _tmp4_ = xevent; _tmp5_ = (*_tmp4_).xproperty; _tmp6_ = _tmp5_.atom; _tmp7_ = XGetAtomName (_tmp3_, _tmp6_); aname = _tmp7_; _tmp9_ = aname; if (g_strcmp0 (_tmp9_, "_NET_WORKAREA") == 0) { XEvent* _tmp10_ = NULL; XPropertyEvent _tmp11_ = {0}; gint _tmp12_ = 0; _tmp10_ = xevent; _tmp11_ = (*_tmp10_).xproperty; _tmp12_ = _tmp11_.state; _tmp8_ = _tmp12_ == 0; } else { _tmp8_ = FALSE; } if (_tmp8_) { property_panel_set_default_location (self); result = GDK_FILTER_CONTINUE; _g_free0 (aname); return result; } _g_free0 (aname); } result = GDK_FILTER_CONTINUE; return result; } static GdkFilterReturn _property_panel_root_window_filter_gdk_filter_func (GdkXEvent* xevent, GdkEvent* event, gpointer self) { GdkFilterReturn result; result = property_panel_root_window_filter ((PropertyPanel*) self, xevent, event); return result; } static gboolean __lambda24_ (PropertyPanel* self) { gboolean result = FALSE; GdkWindow* _tmp0_ = NULL; _tmp0_ = self->priv->m_root_window; gdk_window_remove_filter (_tmp0_, _property_panel_root_window_filter_gdk_filter_func, self); result = FALSE; return result; } static gboolean ___lambda24__gsource_func (gpointer self) { gboolean result; result = __lambda24_ ((PropertyPanel*) self); return result; } static void property_panel_monitor_net_workarea_atom (PropertyPanel* self) { GdkEventMask events = 0; GdkWindow* _tmp0_ = NULL; GdkEventMask _tmp1_ = 0; GdkEventMask _tmp2_ = 0; GdkWindow* _tmp5_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_root_window; _tmp1_ = gdk_window_get_events (_tmp0_); events = _tmp1_; _tmp2_ = events; if ((_tmp2_ & GDK_PROPERTY_CHANGE_MASK) == 0) { GdkWindow* _tmp3_ = NULL; GdkEventMask _tmp4_ = 0; _tmp3_ = self->priv->m_root_window; _tmp4_ = events; gdk_window_set_events (_tmp3_, _tmp4_ | GDK_PROPERTY_CHANGE_MASK); } _tmp5_ = self->priv->m_root_window; gdk_window_add_filter (_tmp5_, _property_panel_root_window_filter_gdk_filter_func, self); g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, PROPERTY_PANEL_MONITOR_NET_WORKAREA_TIMEOUT, ___lambda24__gsource_func, g_object_ref (self), g_object_unref); } static gboolean __lambda29_ (PropertyPanel* self) { gboolean result = FALSE; GtkWindow* _tmp0_ = NULL; _tmp0_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp0_); self->priv->m_auto_hide_timeout_id = (guint) 0; result = FALSE; return result; } static gboolean ___lambda29__gsource_func (gpointer self) { gboolean result; result = __lambda29_ ((PropertyPanel*) self); return result; } static void property_panel_show_with_auto_hide_timer (PropertyPanel* self) { IPropToolItem** _tmp0_ = NULL; gint _tmp0__length1 = 0; gint _tmp5_ = 0; gboolean _tmp6_ = FALSE; GdkRectangle _tmp7_ = {0}; gint _tmp8_ = 0; guint _tmp11_ = 0U; GtkWindow* _tmp13_ = NULL; guint _tmp14_ = 0U; guint _tmp15_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_items; _tmp0__length1 = self->priv->m_items_length1; if (_tmp0__length1 == 0) { gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; _tmp2_ = self->priv->m_follow_input_cursor_when_always_shown; if (_tmp2_) { _tmp1_ = TRUE; } else { gint _tmp3_ = 0; _tmp3_ = self->priv->m_show; _tmp1_ = _tmp3_ != ((gint) PANEL_SHOW_ALWAYS); } if (_tmp1_) { GtkWindow* _tmp4_ = NULL; _tmp4_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp4_); } return; } _tmp5_ = self->priv->m_show; if (_tmp5_ != ((gint) PANEL_SHOW_AUTO_HIDE)) { property_panel_show (self); return; } _tmp7_ = self->priv->m_cursor_location; _tmp8_ = _tmp7_.x; if (_tmp8_ == (-1)) { GdkRectangle _tmp9_ = {0}; gint _tmp10_ = 0; _tmp9_ = self->priv->m_cursor_location; _tmp10_ = _tmp9_.y; _tmp6_ = _tmp10_ == (-1); } else { _tmp6_ = FALSE; } if (_tmp6_) { return; } _tmp11_ = self->priv->m_auto_hide_timeout_id; if (_tmp11_ != ((guint) 0)) { guint _tmp12_ = 0U; _tmp12_ = self->priv->m_auto_hide_timeout_id; g_source_remove (_tmp12_); } _tmp13_ = self->priv->m_toplevel; gtk_widget_show_all ((GtkWidget*) _tmp13_); _tmp14_ = self->priv->m_auto_hide_timeout; _tmp15_ = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, _tmp14_, ___lambda29__gsource_func, g_object_ref (self), g_object_unref); self->priv->m_auto_hide_timeout_id = _tmp15_; } static void property_panel_hide_if_necessary (PropertyPanel* self) { gboolean _tmp0_ = FALSE; gint _tmp1_ = 0; g_return_if_fail (self != NULL); _tmp1_ = self->priv->m_show; if (_tmp1_ == ((gint) PANEL_SHOW_AUTO_HIDE)) { guint _tmp2_ = 0U; _tmp2_ = self->priv->m_auto_hide_timeout_id; _tmp0_ = _tmp2_ != ((guint) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { guint _tmp3_ = 0U; GtkWindow* _tmp4_ = NULL; _tmp3_ = self->priv->m_auto_hide_timeout_id; g_source_remove (_tmp3_); self->priv->m_auto_hide_timeout_id = (guint) 0; _tmp4_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp4_); } } static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_INT) (gpointer data1, const char* arg_1, gint arg_2, gpointer data2); register GMarshalFunc_VOID__STRING_INT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_string (param_values + 1), g_value_get_int (param_values + 2), data2); } static void property_panel_class_init (PropertyPanelClass * klass) { property_panel_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropertyPanelPrivate)); ((GtkWidgetClass *) klass)->get_preferred_width = property_panel_real_get_preferred_width; ((GtkWidgetClass *) klass)->get_preferred_height = property_panel_real_get_preferred_height; G_OBJECT_CLASS (klass)->finalize = property_panel_finalize; g_signal_new ("property_activate", TYPE_PROPERTY_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); } static void property_panel_instance_init (PropertyPanel * self) { GdkRectangle _tmp0_ = {0}; self->priv = PROPERTY_PANEL_GET_PRIVATE (self); memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = -1; _tmp0_.y = -1; _tmp0_.width = 0; _tmp0_.height = 0; self->priv->m_cursor_location = _tmp0_; self->priv->m_show = (gint) PANEL_SHOW_DO_NOT_SHOW; self->priv->m_auto_hide_timeout = (guint) 10000; self->priv->m_auto_hide_timeout_id = (guint) 0; self->priv->m_follow_input_cursor_when_always_shown = FALSE; } static void property_panel_finalize (GObject* obj) { PropertyPanel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROPERTY_PANEL, PropertyPanel); _g_object_unref0 (self->priv->m_toplevel); _g_object_unref0 (self->priv->m_props); self->priv->m_items = (_vala_array_free (self->priv->m_items, self->priv->m_items_length1, (GDestroyNotify) g_object_unref), NULL); G_OBJECT_CLASS (property_panel_parent_class)->finalize (obj); } GType property_panel_get_type (void) { static volatile gsize property_panel_type_id__volatile = 0; if (g_once_init_enter (&property_panel_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropertyPanelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) property_panel_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropertyPanel), 0, (GInstanceInitFunc) property_panel_instance_init, NULL }; GType property_panel_type_id; property_panel_type_id = g_type_register_static (gtk_box_get_type (), "PropertyPanel", &g_define_type_info, 0); g_once_init_leave (&property_panel_type_id__volatile, property_panel_type_id); } return property_panel_type_id__volatile; } void iprop_tool_item_update_property (IPropToolItem* self, IBusProperty* prop) { g_return_if_fail (self != NULL); IPROP_TOOL_ITEM_GET_INTERFACE (self)->update_property (self, prop); } static void iprop_tool_item_base_init (IPropToolItemIface * iface) { static gboolean initialized = FALSE; if (!initialized) { initialized = TRUE; g_signal_new ("property_activate", TYPE_IPROP_TOOL_ITEM, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); } } GType iprop_tool_item_get_type (void) { static volatile gsize iprop_tool_item_type_id__volatile = 0; if (g_once_init_enter (&iprop_tool_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IPropToolItemIface), (GBaseInitFunc) iprop_tool_item_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; GType iprop_tool_item_type_id; iprop_tool_item_type_id = g_type_register_static (G_TYPE_INTERFACE, "IPropToolItem", &g_define_type_info, 0); g_type_interface_add_prerequisite (iprop_tool_item_type_id, G_TYPE_OBJECT); g_once_init_leave (&iprop_tool_item_type_id__volatile, iprop_tool_item_type_id); } return iprop_tool_item_type_id__volatile; } PropMenu* prop_menu_construct (GType object_type, IBusProperty* prop) { PropMenu * self = NULL; IBusProperty* _tmp0_ = NULL; IBusPropList* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; gboolean _tmp3_ = FALSE; g_return_val_if_fail (prop != NULL, NULL); self = (PropMenu*) g_object_new (object_type, NULL); gtk_menu_shell_set_take_focus ((GtkMenuShell*) self, FALSE); _tmp0_ = prop; _tmp1_ = ibus_property_get_sub_props (_tmp0_); prop_menu_create_items (self, _tmp1_); gtk_widget_show_all ((GtkWidget*) self); _tmp2_ = prop; _tmp3_ = ibus_property_get_sensitive (_tmp2_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp3_); return self; } PropMenu* prop_menu_new (IBusProperty* prop) { return prop_menu_construct (TYPE_PROP_MENU, prop); } static void prop_menu_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropMenu * self; IPropItem** _tmp0_ = NULL; gint _tmp0__length1 = 0; self = (PropMenu*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_items; _tmp0__length1 = self->priv->m_items_length1; { IPropItem** item_collection = NULL; gint item_collection_length1 = 0; gint _item_collection_size_ = 0; gint item_it = 0; item_collection = _tmp0_; item_collection_length1 = _tmp0__length1; for (item_it = 0; item_it < _tmp0__length1; item_it = item_it + 1) { IPropItem* _tmp1_ = NULL; IPropItem* item = NULL; _tmp1_ = _g_object_ref0 (item_collection[item_it]); item = _tmp1_; { IPropItem* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; _tmp2_ = item; _tmp3_ = prop; iprop_item_update_property (_tmp2_, _tmp3_); _g_object_unref0 (item); } } } } static void _prop_menu_menu_position_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self) { prop_menu_menu_position ((PropMenu*) self, menu, x, y, push_in); } void prop_menu_popup (PropMenu* self, guint button, guint32 activate_time, GtkWidget* widget) { GtkWidget* _tmp0_ = NULL; GtkWidget* _tmp1_ = NULL; guint _tmp2_ = 0U; guint32 _tmp3_ = 0U; g_return_if_fail (self != NULL); g_return_if_fail (widget != NULL); _tmp0_ = widget; _tmp1_ = _g_object_ref0 (_tmp0_); _g_object_unref0 (self->priv->m_parent_button); self->priv->m_parent_button = _tmp1_; _tmp2_ = button; _tmp3_ = activate_time; gtk_menu_popup (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_menu_get_type (), GtkMenu), NULL, NULL, _prop_menu_menu_position_gtk_menu_position_func, self, _tmp2_, _tmp3_); } static void prop_menu_real_destroy (GtkWidget* base) { PropMenu * self; IPropItem** _tmp0_ = NULL; self = (PropMenu*) base; _g_object_unref0 (self->priv->m_parent_button); self->priv->m_parent_button = NULL; _tmp0_ = g_new0 (IPropItem*, 0 + 1); self->priv->m_items = (_vala_array_free (self->priv->m_items, self->priv->m_items_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_items = _tmp0_; self->priv->m_items_length1 = 0; self->priv->_m_items_size_ = self->priv->m_items_length1; GTK_WIDGET_CLASS (prop_menu_parent_class)->destroy ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_menu_get_type (), GtkMenu)); } static void ____lambda25_ (PropMenu* self, IPropItem* w, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; g_signal_emit_by_name ((IPropToolItem*) self, "property-activate", _tmp0_, _tmp1_); } static void _____lambda25__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda25_ ((PropMenu*) self, _sender, key, state); } static void _vala_array_add21 (IPropItem*** array, int* length, int* size, IPropItem* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IPropItem*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void prop_menu_create_items (PropMenu* self, IBusPropList* props) { gint i = 0; PropRadioMenuItem* last_radio = NULL; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); i = 0; last_radio = NULL; while (TRUE) { IBusProperty* prop = NULL; IBusPropList* _tmp0_ = NULL; gint _tmp1_ = 0; IBusProperty* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; gint _tmp5_ = 0; IPropItem* item = NULL; IBusProperty* _tmp6_ = NULL; IBusPropType _tmp7_ = 0; IBusProperty* _tmp29_ = NULL; IBusPropType _tmp30_ = 0; IPropItem* _tmp31_ = NULL; _tmp0_ = props; _tmp1_ = i; _tmp2_ = ibus_prop_list_get (_tmp0_, (guint) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); prop = _tmp3_; _tmp4_ = prop; if (_tmp4_ == NULL) { _g_object_unref0 (prop); break; } _tmp5_ = i; i = _tmp5_ + 1; item = NULL; _tmp6_ = prop; _tmp7_ = ibus_property_get_prop_type (_tmp6_); switch (_tmp7_) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp8_ = NULL; PropImageMenuItem* _tmp9_ = NULL; _tmp8_ = prop; _tmp9_ = prop_image_menu_item_new (_tmp8_); g_object_ref_sink (_tmp9_); _g_object_unref0 (item); item = (IPropItem*) _tmp9_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp10_ = NULL; PropCheckMenuItem* _tmp11_ = NULL; _tmp10_ = prop; _tmp11_ = prop_check_menu_item_new (_tmp10_); g_object_ref_sink (_tmp11_); _g_object_unref0 (item); item = (IPropItem*) _tmp11_; break; } case PROP_TYPE_RADIO: { IBusProperty* _tmp12_ = NULL; PropRadioMenuItem* _tmp13_ = NULL; PropRadioMenuItem* _tmp14_ = NULL; PropRadioMenuItem* _tmp15_ = NULL; IPropItem* _tmp16_ = NULL; _tmp12_ = prop; _tmp13_ = last_radio; _tmp14_ = prop_radio_menu_item_new (_tmp12_, _tmp13_); g_object_ref_sink (_tmp14_); _g_object_unref0 (last_radio); last_radio = _tmp14_; _tmp15_ = last_radio; _tmp16_ = _g_object_ref0 ((IPropItem*) _tmp15_); _g_object_unref0 (item); item = _tmp16_; break; } case PROP_TYPE_MENU: { { PropImageMenuItem* menuitem = NULL; IBusProperty* _tmp17_ = NULL; PropImageMenuItem* _tmp18_ = NULL; PropImageMenuItem* _tmp19_ = NULL; IBusProperty* _tmp20_ = NULL; PropMenu* _tmp21_ = NULL; PropMenu* _tmp22_ = NULL; PropImageMenuItem* _tmp23_ = NULL; IPropItem* _tmp24_ = NULL; _tmp17_ = prop; _tmp18_ = prop_image_menu_item_new (_tmp17_); g_object_ref_sink (_tmp18_); menuitem = _tmp18_; _tmp19_ = menuitem; _tmp20_ = prop; _tmp21_ = prop_menu_new (_tmp20_); g_object_ref_sink (_tmp21_); _tmp22_ = _tmp21_; gtk_menu_item_set_submenu ((GtkMenuItem*) _tmp19_, (GtkWidget*) _tmp22_); _g_object_unref0 (_tmp22_); _tmp23_ = menuitem; _tmp24_ = _g_object_ref0 ((IPropItem*) _tmp23_); _g_object_unref0 (item); item = _tmp24_; _g_object_unref0 (menuitem); } break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp25_ = NULL; PropSeparatorMenuItem* _tmp26_ = NULL; _tmp25_ = prop; _tmp26_ = prop_separator_menu_item_new (_tmp25_); g_object_ref_sink (_tmp26_); _g_object_unref0 (item); item = (IPropItem*) _tmp26_; break; } default: { IBusProperty* _tmp27_ = NULL; IBusPropType _tmp28_ = 0; _tmp27_ = prop; _tmp28_ = ibus_property_get_prop_type (_tmp27_); g_warning ("propertypanel.vala:568: Unknown property type: %d", (gint) _tmp28_); break; } } _tmp29_ = prop; _tmp30_ = ibus_property_get_prop_type (_tmp29_); if (_tmp30_ != PROP_TYPE_RADIO) { _g_object_unref0 (last_radio); last_radio = NULL; } _tmp31_ = item; if (_tmp31_ != NULL) { IPropItem* _tmp32_ = NULL; IPropItem* _tmp33_ = NULL; IPropItem** _tmp34_ = NULL; gint _tmp34__length1 = 0; IPropItem* _tmp35_ = NULL; IPropItem* _tmp36_ = NULL; _tmp32_ = item; gtk_menu_shell_append ((GtkMenuShell*) self, (GtkWidget*) (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, gtk_menu_item_get_type ()) ? ((GtkMenuItem*) _tmp32_) : NULL)); _tmp33_ = item; g_signal_connect_object (_tmp33_, "property-activate", (GCallback) _____lambda25__iprop_item_property_activate, self, 0); _tmp34_ = self->priv->m_items; _tmp34__length1 = self->priv->m_items_length1; _tmp35_ = item; _tmp36_ = _g_object_ref0 (_tmp35_); _vala_array_add21 (&self->priv->m_items, &self->priv->m_items_length1, &self->priv->_m_items_size_, _tmp36_); } _g_object_unref0 (item); _g_object_unref0 (prop); } _g_object_unref0 (last_radio); } static void prop_menu_menu_position (PropMenu* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in) { gint _vala_x = 0; gint _vala_y = 0; gboolean _vala_push_in = FALSE; GtkWidget* button = NULL; GtkWidget* _tmp0_ = NULL; GtkWidget* _tmp1_ = NULL; GdkScreen* screen = NULL; GtkWidget* _tmp2_ = NULL; GdkScreen* _tmp3_ = NULL; GdkScreen* _tmp4_ = NULL; gint monitor = 0; GdkScreen* _tmp5_ = NULL; GtkWidget* _tmp6_ = NULL; GdkWindow* _tmp7_ = NULL; gint _tmp8_ = 0; GdkRectangle monitor_location = {0}; GdkScreen* _tmp9_ = NULL; gint _tmp10_ = 0; GdkRectangle _tmp11_ = {0}; GtkWidget* _tmp12_ = NULL; GdkWindow* _tmp13_ = NULL; gint _tmp14_ = 0; gint _tmp15_ = 0; GtkAllocation button_allocation = {0}; GtkWidget* _tmp16_ = NULL; GtkAllocation _tmp17_ = {0}; gint _tmp18_ = 0; GtkAllocation _tmp19_ = {0}; gint _tmp20_ = 0; gint _tmp21_ = 0; GtkAllocation _tmp22_ = {0}; gint _tmp23_ = 0; gint menu_width = 0; gint menu_height = 0; GtkMenu* _tmp24_ = NULL; gint _tmp25_ = 0; gint _tmp26_ = 0; gint _tmp27_ = 0; gint _tmp28_ = 0; GdkRectangle _tmp29_ = {0}; gint _tmp30_ = 0; gint _tmp44_ = 0; GtkAllocation _tmp45_ = {0}; gint _tmp46_ = 0; gint _tmp47_ = 0; GdkRectangle _tmp48_ = {0}; gint _tmp49_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); _tmp0_ = self->priv->m_parent_button; _tmp1_ = _g_object_ref0 (_tmp0_); button = _tmp1_; _tmp2_ = button; _tmp3_ = gtk_widget_get_screen (_tmp2_); _tmp4_ = _g_object_ref0 (_tmp3_); screen = _tmp4_; _tmp5_ = screen; _tmp6_ = button; _tmp7_ = gtk_widget_get_window (_tmp6_); _tmp8_ = gdk_screen_get_monitor_at_window (_tmp5_, _tmp7_); monitor = _tmp8_; _tmp9_ = screen; _tmp10_ = monitor; gdk_screen_get_monitor_geometry (_tmp9_, _tmp10_, &_tmp11_); monitor_location = _tmp11_; _tmp12_ = button; _tmp13_ = gtk_widget_get_window (_tmp12_); gdk_window_get_origin (_tmp13_, &_tmp14_, &_tmp15_); _vala_x = _tmp14_; _vala_y = _tmp15_; _tmp16_ = button; gtk_widget_get_allocation (_tmp16_, &_tmp17_); button_allocation = _tmp17_; _tmp18_ = _vala_x; _tmp19_ = button_allocation; _tmp20_ = _tmp19_.x; _vala_x = _tmp18_ + _tmp20_; _tmp21_ = _vala_y; _tmp22_ = button_allocation; _tmp23_ = _tmp22_.y; _vala_y = _tmp21_ + _tmp23_; _tmp24_ = menu; gtk_widget_get_size_request ((GtkWidget*) _tmp24_, &_tmp25_, &_tmp26_); menu_width = _tmp25_; menu_height = _tmp26_; _tmp27_ = _vala_x; _tmp28_ = menu_width; _tmp29_ = monitor_location; _tmp30_ = _tmp29_.width; if ((_tmp27_ + _tmp28_) >= _tmp30_) { gint _tmp31_ = 0; gint _tmp32_ = 0; GtkAllocation _tmp33_ = {0}; gint _tmp34_ = 0; _tmp31_ = _vala_x; _tmp32_ = menu_width; _tmp33_ = button_allocation; _tmp34_ = _tmp33_.width; _vala_x = _tmp31_ - (_tmp32_ - _tmp34_); } else { gint _tmp35_ = 0; gint _tmp36_ = 0; _tmp35_ = _vala_x; _tmp36_ = menu_width; if ((_tmp35_ - _tmp36_) <= 0) { } else { gint _tmp37_ = 0; GdkRectangle _tmp38_ = {0}; gint _tmp39_ = 0; _tmp37_ = _vala_x; _tmp38_ = monitor_location; _tmp39_ = _tmp38_.width; if (_tmp37_ <= ((_tmp39_ * 3) / 4)) { } else { gint _tmp40_ = 0; gint _tmp41_ = 0; GtkAllocation _tmp42_ = {0}; gint _tmp43_ = 0; _tmp40_ = _vala_x; _tmp41_ = menu_width; _tmp42_ = button_allocation; _tmp43_ = _tmp42_.width; _vala_x = _tmp40_ - (_tmp41_ - _tmp43_); } } } _tmp44_ = _vala_y; _tmp45_ = button_allocation; _tmp46_ = _tmp45_.height; _tmp47_ = menu_width; _tmp48_ = monitor_location; _tmp49_ = _tmp48_.height; if (((_tmp44_ + _tmp46_) + _tmp47_) >= _tmp49_) { gint _tmp50_ = 0; gint _tmp51_ = 0; _tmp50_ = _vala_y; _tmp51_ = menu_height; _vala_y = _tmp50_ - _tmp51_; } else { gint _tmp52_ = 0; gint _tmp53_ = 0; _tmp52_ = _vala_y; _tmp53_ = menu_height; if ((_tmp52_ - _tmp53_) <= 0) { gint _tmp54_ = 0; GtkAllocation _tmp55_ = {0}; gint _tmp56_ = 0; _tmp54_ = _vala_y; _tmp55_ = button_allocation; _tmp56_ = _tmp55_.height; _vala_y = _tmp54_ + _tmp56_; } else { gint _tmp57_ = 0; GdkRectangle _tmp58_ = {0}; gint _tmp59_ = 0; _tmp57_ = _vala_y; _tmp58_ = monitor_location; _tmp59_ = _tmp58_.height; if (_tmp57_ <= ((_tmp59_ * 3) / 4)) { gint _tmp60_ = 0; GtkAllocation _tmp61_ = {0}; gint _tmp62_ = 0; _tmp60_ = _vala_y; _tmp61_ = button_allocation; _tmp62_ = _tmp61_.height; _vala_y = _tmp60_ + _tmp62_; } else { gint _tmp63_ = 0; gint _tmp64_ = 0; _tmp63_ = _vala_y; _tmp64_ = menu_height; _vala_y = _tmp63_ - _tmp64_; } } } _vala_push_in = FALSE; _g_object_unref0 (screen); _g_object_unref0 (button); if (x) { *x = _vala_x; } if (y) { *y = _vala_y; } if (push_in) { *push_in = _vala_push_in; } } static void prop_menu_class_init (PropMenuClass * klass) { prop_menu_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropMenuPrivate)); ((GtkWidgetClass *) klass)->destroy = prop_menu_real_destroy; G_OBJECT_CLASS (klass)->finalize = prop_menu_finalize; } static void prop_menu_iprop_tool_item_interface_init (IPropToolItemIface * iface) { prop_menu_iprop_tool_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropToolItem*, IBusProperty*)) prop_menu_real_update_property; } static void prop_menu_instance_init (PropMenu * self) { self->priv = PROP_MENU_GET_PRIVATE (self); } static void prop_menu_finalize (GObject* obj) { PropMenu * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_MENU, PropMenu); _g_object_unref0 (self->priv->m_parent_button); self->priv->m_items = (_vala_array_free (self->priv->m_items, self->priv->m_items_length1, (GDestroyNotify) g_object_unref), NULL); G_OBJECT_CLASS (prop_menu_parent_class)->finalize (obj); } GType prop_menu_get_type (void) { static volatile gsize prop_menu_type_id__volatile = 0; if (g_once_init_enter (&prop_menu_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropMenuClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_menu_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropMenu), 0, (GInstanceInitFunc) prop_menu_instance_init, NULL }; static const GInterfaceInfo iprop_tool_item_info = { (GInterfaceInitFunc) prop_menu_iprop_tool_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_menu_type_id; prop_menu_type_id = g_type_register_static (gtk_menu_get_type (), "PropMenu", &g_define_type_info, 0); g_type_add_interface_static (prop_menu_type_id, TYPE_IPROP_TOOL_ITEM, &iprop_tool_item_info); g_once_init_leave (&prop_menu_type_id__volatile, prop_menu_type_id); } return prop_menu_type_id__volatile; } PropToolButton* prop_tool_button_construct (GType object_type, IBusProperty* prop) { PropToolButton * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; g_return_val_if_fail (prop != NULL, NULL); self = (PropToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = prop; _tmp1_ = _g_object_ref0 (_tmp0_); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp1_; gtk_tool_item_set_homogeneous ((GtkToolItem*) self, FALSE); prop_tool_button_sync (self); return self; } PropToolButton* prop_tool_button_new (IBusProperty* prop) { return prop_tool_button_construct (TYPE_PROP_TOOL_BUTTON, prop); } static void prop_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropToolButton * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; IBusText* _tmp6_ = NULL; IBusProperty* _tmp7_ = NULL; IBusProperty* _tmp8_ = NULL; IBusText* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusProperty* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; IBusProperty* _tmp13_ = NULL; IBusProperty* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; IBusProperty* _tmp16_ = NULL; IBusProperty* _tmp17_ = NULL; IBusPropState _tmp18_ = 0; IBusProperty* _tmp19_ = NULL; IBusProperty* _tmp20_ = NULL; gboolean _tmp21_ = FALSE; self = (PropToolButton*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = prop; _tmp3_ = ibus_property_get_key (_tmp2_); if (g_strcmp0 (_tmp1_, _tmp3_) != 0) { return; } _tmp4_ = self->priv->m_prop; _tmp5_ = prop; _tmp6_ = ibus_property_get_symbol (_tmp5_); ibus_property_set_symbol (_tmp4_, _tmp6_); _tmp7_ = self->priv->m_prop; _tmp8_ = prop; _tmp9_ = ibus_property_get_tooltip (_tmp8_); ibus_property_set_tooltip (_tmp7_, _tmp9_); _tmp10_ = self->priv->m_prop; _tmp11_ = prop; _tmp12_ = ibus_property_get_sensitive (_tmp11_); ibus_property_set_sensitive (_tmp10_, _tmp12_); _tmp13_ = self->priv->m_prop; _tmp14_ = prop; _tmp15_ = ibus_property_get_icon (_tmp14_); ibus_property_set_icon (_tmp13_, _tmp15_); _tmp16_ = self->priv->m_prop; _tmp17_ = prop; _tmp18_ = ibus_property_get_state (_tmp17_); ibus_property_set_state (_tmp16_, _tmp18_); _tmp19_ = self->priv->m_prop; _tmp20_ = prop; _tmp21_ = ibus_property_get_visible (_tmp20_); ibus_property_set_visible (_tmp19_, _tmp21_); prop_tool_button_sync (self); } static void prop_tool_button_sync (PropToolButton* self) { IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusText* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; IBusProperty* _tmp6_ = NULL; gboolean _tmp7_ = FALSE; IBusProperty* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; gboolean _tmp11_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_symbol (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); gtk_tool_button_set_label ((GtkToolButton*) self, _tmp2_); _tmp3_ = self->priv->m_prop; _tmp4_ = ibus_property_get_tooltip (_tmp3_); _tmp5_ = ibus_text_get_text (_tmp4_); gtk_tool_item_set_tooltip_text ((GtkToolItem*) self, _tmp5_); _tmp6_ = self->priv->m_prop; _tmp7_ = ibus_property_get_sensitive (_tmp6_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp7_); _tmp8_ = self->priv->m_prop; _tmp9_ = ibus_property_get_icon (_tmp8_); prop_tool_button_set_icon_name (self, _tmp9_); _tmp10_ = self->priv->m_prop; _tmp11_ = ibus_property_get_visible (_tmp10_); if (_tmp11_) { gtk_widget_show ((GtkWidget*) self); } else { gtk_widget_hide ((GtkWidget*) self); } } static void prop_tool_button_real_clicked (GtkToolButton* base) { PropToolButton * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; IBusPropState _tmp3_ = 0; self = (PropToolButton*) base; _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = self->priv->m_prop; _tmp3_ = ibus_property_get_state (_tmp2_); g_signal_emit_by_name ((IPropToolItem*) self, "property-activate", _tmp1_, (gint) _tmp3_); } void prop_tool_button_set_icon_name (PropToolButton* self, const gchar* icon_name) { gchar* label = NULL; IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; IconWidget* icon_widget = NULL; const gchar* _tmp4_ = NULL; IconWidget* _tmp7_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (icon_name != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_symbol (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); _tmp3_ = g_strdup (_tmp2_); label = _tmp3_; icon_widget = NULL; _tmp4_ = label; if (g_strcmp0 (_tmp4_, "") == 0) { const gchar* _tmp5_ = NULL; IconWidget* _tmp6_ = NULL; _g_free0 (label); label = NULL; _tmp5_ = icon_name; _tmp6_ = icon_widget_new (_tmp5_, GTK_ICON_SIZE_BUTTON); g_object_ref_sink (_tmp6_); _g_object_unref0 (icon_widget); icon_widget = _tmp6_; gtk_tool_item_set_is_important ((GtkToolItem*) self, FALSE); } else { gtk_tool_item_set_is_important ((GtkToolItem*) self, TRUE); } _tmp7_ = icon_widget; gtk_tool_button_set_icon_widget ((GtkToolButton*) self, (GtkWidget*) _tmp7_); _g_object_unref0 (icon_widget); _g_free0 (label); } static void prop_tool_button_class_init (PropToolButtonClass * klass) { prop_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropToolButtonPrivate)); ((GtkToolButtonClass *) klass)->clicked = prop_tool_button_real_clicked; G_OBJECT_CLASS (klass)->finalize = prop_tool_button_finalize; } static void prop_tool_button_iprop_tool_item_interface_init (IPropToolItemIface * iface) { prop_tool_button_iprop_tool_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropToolItem*, IBusProperty*)) prop_tool_button_real_update_property; } static void prop_tool_button_instance_init (PropToolButton * self) { self->priv = PROP_TOOL_BUTTON_GET_PRIVATE (self); self->priv->m_prop = NULL; } static void prop_tool_button_finalize (GObject* obj) { PropToolButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_TOOL_BUTTON, PropToolButton); _g_object_unref0 (self->priv->m_prop); G_OBJECT_CLASS (prop_tool_button_parent_class)->finalize (obj); } GType prop_tool_button_get_type (void) { static volatile gsize prop_tool_button_type_id__volatile = 0; if (g_once_init_enter (&prop_tool_button_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropToolButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_tool_button_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropToolButton), 0, (GInstanceInitFunc) prop_tool_button_instance_init, NULL }; static const GInterfaceInfo iprop_tool_item_info = { (GInterfaceInitFunc) prop_tool_button_iprop_tool_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_tool_button_type_id; prop_tool_button_type_id = g_type_register_static (gtk_tool_button_get_type (), "PropToolButton", &g_define_type_info, 0); g_type_add_interface_static (prop_tool_button_type_id, TYPE_IPROP_TOOL_ITEM, &iprop_tool_item_info); g_once_init_leave (&prop_tool_button_type_id__volatile, prop_tool_button_type_id); } return prop_tool_button_type_id__volatile; } PropToggleToolButton* prop_toggle_tool_button_construct (GType object_type, IBusProperty* prop) { PropToggleToolButton * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; g_return_val_if_fail (prop != NULL, NULL); self = (PropToggleToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = prop; _tmp1_ = _g_object_ref0 (_tmp0_); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp1_; gtk_tool_item_set_homogeneous ((GtkToolItem*) self, FALSE); prop_toggle_tool_button_sync (self); return self; } PropToggleToolButton* prop_toggle_tool_button_new (IBusProperty* prop) { return prop_toggle_tool_button_construct (TYPE_PROP_TOGGLE_TOOL_BUTTON, prop); } void prop_toggle_tool_button_set_property (PropToggleToolButton* self, IBusProperty* prop) { IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = prop; _tmp1_ = _g_object_ref0 (_tmp0_); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp1_; prop_toggle_tool_button_sync (self); } static void prop_toggle_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropToggleToolButton * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; IBusText* _tmp6_ = NULL; IBusProperty* _tmp7_ = NULL; IBusProperty* _tmp8_ = NULL; IBusText* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusProperty* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; IBusProperty* _tmp13_ = NULL; IBusProperty* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; IBusProperty* _tmp16_ = NULL; IBusProperty* _tmp17_ = NULL; IBusPropState _tmp18_ = 0; IBusProperty* _tmp19_ = NULL; IBusProperty* _tmp20_ = NULL; gboolean _tmp21_ = FALSE; self = (PropToggleToolButton*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = prop; _tmp3_ = ibus_property_get_key (_tmp2_); if (g_strcmp0 (_tmp1_, _tmp3_) != 0) { return; } _tmp4_ = self->priv->m_prop; _tmp5_ = prop; _tmp6_ = ibus_property_get_symbol (_tmp5_); ibus_property_set_symbol (_tmp4_, _tmp6_); _tmp7_ = self->priv->m_prop; _tmp8_ = prop; _tmp9_ = ibus_property_get_tooltip (_tmp8_); ibus_property_set_tooltip (_tmp7_, _tmp9_); _tmp10_ = self->priv->m_prop; _tmp11_ = prop; _tmp12_ = ibus_property_get_sensitive (_tmp11_); ibus_property_set_sensitive (_tmp10_, _tmp12_); _tmp13_ = self->priv->m_prop; _tmp14_ = prop; _tmp15_ = ibus_property_get_icon (_tmp14_); ibus_property_set_icon (_tmp13_, _tmp15_); _tmp16_ = self->priv->m_prop; _tmp17_ = prop; _tmp18_ = ibus_property_get_state (_tmp17_); ibus_property_set_state (_tmp16_, _tmp18_); _tmp19_ = self->priv->m_prop; _tmp20_ = prop; _tmp21_ = ibus_property_get_visible (_tmp20_); ibus_property_set_visible (_tmp19_, _tmp21_); prop_toggle_tool_button_sync (self); } static void prop_toggle_tool_button_sync (PropToggleToolButton* self) { IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusText* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; IBusProperty* _tmp6_ = NULL; gboolean _tmp7_ = FALSE; IBusProperty* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusPropState _tmp11_ = 0; IBusProperty* _tmp12_ = NULL; gboolean _tmp13_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_symbol (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); gtk_tool_button_set_label ((GtkToolButton*) self, _tmp2_); _tmp3_ = self->priv->m_prop; _tmp4_ = ibus_property_get_tooltip (_tmp3_); _tmp5_ = ibus_text_get_text (_tmp4_); gtk_tool_item_set_tooltip_text ((GtkToolItem*) self, _tmp5_); _tmp6_ = self->priv->m_prop; _tmp7_ = ibus_property_get_sensitive (_tmp6_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp7_); _tmp8_ = self->priv->m_prop; _tmp9_ = ibus_property_get_icon (_tmp8_); prop_toggle_tool_button_set_icon_name (self, _tmp9_); _tmp10_ = self->priv->m_prop; _tmp11_ = ibus_property_get_state (_tmp10_); gtk_toggle_tool_button_set_active ((GtkToggleToolButton*) self, _tmp11_ == PROP_STATE_CHECKED); _tmp12_ = self->priv->m_prop; _tmp13_ = ibus_property_get_visible (_tmp12_); if (_tmp13_) { gtk_widget_show ((GtkWidget*) self); } else { gtk_widget_hide ((GtkWidget*) self); } } static void prop_toggle_tool_button_real_toggled (GtkToggleToolButton* base) { PropToggleToolButton * self; gboolean do_emit = FALSE; gboolean _tmp0_ = FALSE; gboolean _tmp7_ = FALSE; self = (PropToggleToolButton*) base; do_emit = FALSE; _tmp0_ = gtk_toggle_tool_button_get_active ((GtkToggleToolButton*) self); if (_tmp0_) { IBusProperty* _tmp1_ = NULL; IBusPropState _tmp2_ = 0; IBusProperty* _tmp3_ = NULL; _tmp1_ = self->priv->m_prop; _tmp2_ = ibus_property_get_state (_tmp1_); if (_tmp2_ != PROP_STATE_CHECKED) { do_emit = TRUE; } _tmp3_ = self->priv->m_prop; ibus_property_set_state (_tmp3_, PROP_STATE_CHECKED); } else { IBusProperty* _tmp4_ = NULL; IBusPropState _tmp5_ = 0; IBusProperty* _tmp6_ = NULL; _tmp4_ = self->priv->m_prop; _tmp5_ = ibus_property_get_state (_tmp4_); if (_tmp5_ != PROP_STATE_UNCHECKED) { do_emit = TRUE; } _tmp6_ = self->priv->m_prop; ibus_property_set_state (_tmp6_, PROP_STATE_UNCHECKED); } _tmp7_ = do_emit; if (_tmp7_) { IBusProperty* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusPropState _tmp11_ = 0; _tmp8_ = self->priv->m_prop; _tmp9_ = ibus_property_get_key (_tmp8_); _tmp10_ = self->priv->m_prop; _tmp11_ = ibus_property_get_state (_tmp10_); g_signal_emit_by_name ((IPropToolItem*) self, "property-activate", _tmp9_, (gint) _tmp11_); } } void prop_toggle_tool_button_set_icon_name (PropToggleToolButton* self, const gchar* icon_name) { gchar* label = NULL; IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; IconWidget* icon_widget = NULL; const gchar* _tmp4_ = NULL; IconWidget* _tmp7_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (icon_name != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_symbol (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); _tmp3_ = g_strdup (_tmp2_); label = _tmp3_; icon_widget = NULL; _tmp4_ = label; if (g_strcmp0 (_tmp4_, "") == 0) { const gchar* _tmp5_ = NULL; IconWidget* _tmp6_ = NULL; _g_free0 (label); label = NULL; _tmp5_ = icon_name; _tmp6_ = icon_widget_new (_tmp5_, GTK_ICON_SIZE_BUTTON); g_object_ref_sink (_tmp6_); _g_object_unref0 (icon_widget); icon_widget = _tmp6_; gtk_tool_item_set_is_important ((GtkToolItem*) self, FALSE); } else { gtk_tool_item_set_is_important ((GtkToolItem*) self, TRUE); } _tmp7_ = icon_widget; gtk_tool_button_set_icon_widget ((GtkToolButton*) self, (GtkWidget*) _tmp7_); _g_object_unref0 (icon_widget); _g_free0 (label); } static void prop_toggle_tool_button_class_init (PropToggleToolButtonClass * klass) { prop_toggle_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropToggleToolButtonPrivate)); ((GtkToggleToolButtonClass *) klass)->toggled = prop_toggle_tool_button_real_toggled; G_OBJECT_CLASS (klass)->finalize = prop_toggle_tool_button_finalize; } static void prop_toggle_tool_button_iprop_tool_item_interface_init (IPropToolItemIface * iface) { prop_toggle_tool_button_iprop_tool_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropToolItem*, IBusProperty*)) prop_toggle_tool_button_real_update_property; } static void prop_toggle_tool_button_instance_init (PropToggleToolButton * self) { self->priv = PROP_TOGGLE_TOOL_BUTTON_GET_PRIVATE (self); self->priv->m_prop = NULL; } static void prop_toggle_tool_button_finalize (GObject* obj) { PropToggleToolButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton); _g_object_unref0 (self->priv->m_prop); G_OBJECT_CLASS (prop_toggle_tool_button_parent_class)->finalize (obj); } GType prop_toggle_tool_button_get_type (void) { static volatile gsize prop_toggle_tool_button_type_id__volatile = 0; if (g_once_init_enter (&prop_toggle_tool_button_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropToggleToolButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_toggle_tool_button_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropToggleToolButton), 0, (GInstanceInitFunc) prop_toggle_tool_button_instance_init, NULL }; static const GInterfaceInfo iprop_tool_item_info = { (GInterfaceInitFunc) prop_toggle_tool_button_iprop_tool_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_toggle_tool_button_type_id; prop_toggle_tool_button_type_id = g_type_register_static (gtk_toggle_tool_button_get_type (), "PropToggleToolButton", &g_define_type_info, 0); g_type_add_interface_static (prop_toggle_tool_button_type_id, TYPE_IPROP_TOOL_ITEM, &iprop_tool_item_info); g_once_init_leave (&prop_toggle_tool_button_type_id__volatile, prop_toggle_tool_button_type_id); } return prop_toggle_tool_button_type_id__volatile; } static void __lambda26_ (PropMenuToolButton* self, GtkMenuShell* m) { g_return_if_fail (m != NULL); gtk_toggle_tool_button_set_active ((GtkToggleToolButton*) self, FALSE); } static void ___lambda26__gtk_menu_shell_deactivate (GtkMenuShell* _sender, gpointer self) { __lambda26_ ((PropMenuToolButton*) self, _sender); } static void __lambda27_ (PropMenuToolButton* self, IPropToolItem* w, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; g_signal_emit_by_name ((IPropToolItem*) self, "property-activate", _tmp0_, _tmp1_); } static void ___lambda27__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self) { __lambda27_ ((PropMenuToolButton*) self, _sender, key, state); } PropMenuToolButton* prop_menu_tool_button_construct (GType object_type, IBusProperty* prop) { PropMenuToolButton * self = NULL; IBusProperty* _tmp0_ = NULL; PropMenu* _tmp1_ = NULL; PropMenu* _tmp2_ = NULL; PropMenu* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; g_return_val_if_fail (prop != NULL, NULL); self = (PropMenuToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = prop; _tmp1_ = prop_menu_new (_tmp0_); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_menu); self->priv->m_menu = _tmp1_; _tmp2_ = self->priv->m_menu; g_signal_connect_object ((GtkMenuShell*) _tmp2_, "deactivate", (GCallback) ___lambda26__gtk_menu_shell_deactivate, self, 0); _tmp3_ = self->priv->m_menu; g_signal_connect_object ((IPropToolItem*) _tmp3_, "property-activate", (GCallback) ___lambda27__iprop_tool_item_property_activate, self, 0); _tmp4_ = prop; prop_toggle_tool_button_set_property (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton), _tmp4_); return self; } PropMenuToolButton* prop_menu_tool_button_new (IBusProperty* prop) { return prop_menu_tool_button_construct (TYPE_PROP_MENU_TOOL_BUTTON, prop); } static void prop_menu_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropMenuToolButton * self; IBusProperty* _tmp0_ = NULL; PropMenu* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; self = (PropMenuToolButton*) base; g_return_if_fail (prop != NULL); _tmp0_ = prop; prop_menu_tool_button_iprop_tool_item_parent_iface->update_property ((IPropToolItem*) G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton), _tmp0_); _tmp1_ = self->priv->m_menu; _tmp2_ = prop; iprop_tool_item_update_property ((IPropToolItem*) _tmp1_, _tmp2_); } static void prop_menu_tool_button_real_toggled (GtkToggleToolButton* base) { PropMenuToolButton * self; gboolean _tmp0_ = FALSE; self = (PropMenuToolButton*) base; _tmp0_ = gtk_toggle_tool_button_get_active ((GtkToggleToolButton*) self); if (_tmp0_) { PropMenu* _tmp1_ = NULL; guint32 _tmp2_ = 0U; _tmp1_ = self->priv->m_menu; _tmp2_ = gtk_get_current_event_time (); prop_menu_popup (_tmp1_, (guint) 0, _tmp2_, (GtkWidget*) self); } } static void prop_menu_tool_button_real_destroy (GtkWidget* base) { PropMenuToolButton * self; self = (PropMenuToolButton*) base; _g_object_unref0 (self->priv->m_menu); self->priv->m_menu = NULL; GTK_WIDGET_CLASS (prop_menu_tool_button_parent_class)->destroy ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton)); } static void prop_menu_tool_button_class_init (PropMenuToolButtonClass * klass) { prop_menu_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropMenuToolButtonPrivate)); ((GtkToggleToolButtonClass *) klass)->toggled = prop_menu_tool_button_real_toggled; ((GtkWidgetClass *) klass)->destroy = prop_menu_tool_button_real_destroy; G_OBJECT_CLASS (klass)->finalize = prop_menu_tool_button_finalize; } static void prop_menu_tool_button_iprop_tool_item_interface_init (IPropToolItemIface * iface) { prop_menu_tool_button_iprop_tool_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropToolItem*, IBusProperty*)) prop_menu_tool_button_real_update_property; } static void prop_menu_tool_button_instance_init (PropMenuToolButton * self) { self->priv = PROP_MENU_TOOL_BUTTON_GET_PRIVATE (self); self->priv->m_menu = NULL; } static void prop_menu_tool_button_finalize (GObject* obj) { PropMenuToolButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_MENU_TOOL_BUTTON, PropMenuToolButton); _g_object_unref0 (self->priv->m_menu); G_OBJECT_CLASS (prop_menu_tool_button_parent_class)->finalize (obj); } GType prop_menu_tool_button_get_type (void) { static volatile gsize prop_menu_tool_button_type_id__volatile = 0; if (g_once_init_enter (&prop_menu_tool_button_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropMenuToolButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_menu_tool_button_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropMenuToolButton), 0, (GInstanceInitFunc) prop_menu_tool_button_instance_init, NULL }; static const GInterfaceInfo iprop_tool_item_info = { (GInterfaceInitFunc) prop_menu_tool_button_iprop_tool_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_menu_tool_button_type_id; prop_menu_tool_button_type_id = g_type_register_static (TYPE_PROP_TOGGLE_TOOL_BUTTON, "PropMenuToolButton", &g_define_type_info, 0); g_type_add_interface_static (prop_menu_tool_button_type_id, TYPE_IPROP_TOOL_ITEM, &iprop_tool_item_info); g_once_init_leave (&prop_menu_tool_button_type_id__volatile, prop_menu_tool_button_type_id); } return prop_menu_tool_button_type_id__volatile; } PropSeparatorToolItem* prop_separator_tool_item_construct (GType object_type, IBusProperty* prop) { PropSeparatorToolItem * self = NULL; g_return_val_if_fail (prop != NULL, NULL); self = (PropSeparatorToolItem*) g_object_new (object_type, NULL); gtk_tool_item_set_homogeneous ((GtkToolItem*) self, FALSE); return self; } PropSeparatorToolItem* prop_separator_tool_item_new (IBusProperty* prop) { return prop_separator_tool_item_construct (TYPE_PROP_SEPARATOR_TOOL_ITEM, prop); } static void prop_separator_tool_item_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropSeparatorToolItem * self; self = (PropSeparatorToolItem*) base; g_return_if_fail (prop != NULL); } static void prop_separator_tool_item_class_init (PropSeparatorToolItemClass * klass) { prop_separator_tool_item_parent_class = g_type_class_peek_parent (klass); } static void prop_separator_tool_item_iprop_tool_item_interface_init (IPropToolItemIface * iface) { prop_separator_tool_item_iprop_tool_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropToolItem*, IBusProperty*)) prop_separator_tool_item_real_update_property; } static void prop_separator_tool_item_instance_init (PropSeparatorToolItem * self) { } GType prop_separator_tool_item_get_type (void) { static volatile gsize prop_separator_tool_item_type_id__volatile = 0; if (g_once_init_enter (&prop_separator_tool_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropSeparatorToolItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_separator_tool_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropSeparatorToolItem), 0, (GInstanceInitFunc) prop_separator_tool_item_instance_init, NULL }; static const GInterfaceInfo iprop_tool_item_info = { (GInterfaceInitFunc) prop_separator_tool_item_iprop_tool_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_separator_tool_item_type_id; prop_separator_tool_item_type_id = g_type_register_static (gtk_separator_tool_item_get_type (), "PropSeparatorToolItem", &g_define_type_info, 0); g_type_add_interface_static (prop_separator_tool_item_type_id, TYPE_IPROP_TOOL_ITEM, &iprop_tool_item_info); g_once_init_leave (&prop_separator_tool_item_type_id__volatile, prop_separator_tool_item_type_id); } return prop_separator_tool_item_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } ibus-1.5.11/ui/gtk3/iconwidget.c0000644000000000000000000002250212551655052013224 00000000000000/* iconwidget.c generated by valac 0.28.0, the Vala compiler * generated from iconwidget.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #define TYPE_ICON_WIDGET (icon_widget_get_type ()) #define ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ICON_WIDGET, IconWidget)) #define ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ICON_WIDGET, IconWidgetClass)) #define IS_ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ICON_WIDGET)) #define IS_ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ICON_WIDGET)) #define ICON_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ICON_WIDGET, IconWidgetClass)) typedef struct _IconWidget IconWidget; typedef struct _IconWidgetClass IconWidgetClass; typedef struct _IconWidgetPrivate IconWidgetPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) struct _IconWidget { GtkImage parent_instance; IconWidgetPrivate * priv; }; struct _IconWidgetClass { GtkImageClass parent_class; }; static gpointer icon_widget_parent_class = NULL; GType icon_widget_get_type (void) G_GNUC_CONST; enum { ICON_WIDGET_DUMMY_PROPERTY }; IconWidget* icon_widget_new (const gchar* icon_name_or_path, GtkIconSize size); IconWidget* icon_widget_construct (GType object_type, const gchar* icon_name_or_path, GtkIconSize size); /** * IconWidget: * @icon_name_or_path: Can be a name or path but not stock id * because gtk_icon_theme_load_icon() cannot fallback the * stock id to a real file name against * gtk_image_new_from_stock(). * @size: #Gtk.IconSize */ static gchar string_get (const gchar* self, glong index) { gchar result = '\0'; glong _tmp0_ = 0L; gchar _tmp1_ = '\0'; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = index; _tmp1_ = ((gchar*) self)[_tmp0_]; result = _tmp1_; return result; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } IconWidget* icon_widget_construct (GType object_type, const gchar* icon_name_or_path, GtkIconSize size) { IconWidget * self = NULL; GdkPixbuf* pixbuf = NULL; gint fixed_width = 0; gint fixed_height = 0; GtkIconSize _tmp0_ = 0; gint _tmp1_ = 0; gint _tmp2_ = 0; GdkPixbuf* _tmp25_ = NULL; gfloat width = 0.0F; GdkPixbuf* _tmp26_ = NULL; gint _tmp27_ = 0; gfloat height = 0.0F; GdkPixbuf* _tmp28_ = NULL; gint _tmp29_ = 0; gfloat _tmp30_ = 0.0F; gfloat _tmp31_ = 0.0F; gfloat _tmp32_ = 0.0F; gfloat scale = 0.0F; gint _tmp35_ = 0; gfloat _tmp36_ = 0.0F; gfloat _tmp37_ = 0.0F; gfloat _tmp38_ = 0.0F; gfloat _tmp39_ = 0.0F; GdkPixbuf* _tmp40_ = NULL; gfloat _tmp41_ = 0.0F; gfloat _tmp42_ = 0.0F; GdkPixbuf* _tmp43_ = NULL; GdkPixbuf* _tmp44_ = NULL; GError * _inner_error_ = NULL; g_return_val_if_fail (icon_name_or_path != NULL, NULL); self = (IconWidget*) g_object_new (object_type, NULL); pixbuf = NULL; _tmp0_ = size; gtk_icon_size_lookup (_tmp0_, &_tmp1_, &_tmp2_); fixed_width = _tmp1_; fixed_height = _tmp2_; { const gchar* _tmp3_ = NULL; gchar _tmp4_ = '\0'; _tmp3_ = icon_name_or_path; _tmp4_ = string_get (_tmp3_, (glong) 0); if (_tmp4_ == '/') { GdkPixbuf* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; GdkPixbuf* _tmp7_ = NULL; GdkPixbuf* _tmp8_ = NULL; _tmp6_ = icon_name_or_path; _tmp7_ = gdk_pixbuf_new_from_file (_tmp6_, &_inner_error_); _tmp5_ = _tmp7_; if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch1_g_error; } _tmp8_ = _tmp5_; _tmp5_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp8_; _g_object_unref0 (_tmp5_); } else { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp9_ = NULL; GtkIconTheme* _tmp10_ = NULL; GdkPixbuf* _tmp11_ = NULL; GtkIconTheme* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; gint _tmp14_ = 0; GdkPixbuf* _tmp15_ = NULL; GdkPixbuf* _tmp16_ = NULL; _tmp9_ = gtk_icon_theme_get_default (); _tmp10_ = _g_object_ref0 (_tmp9_); theme = _tmp10_; _tmp12_ = theme; _tmp13_ = icon_name_or_path; _tmp14_ = fixed_width; _tmp15_ = gtk_icon_theme_load_icon (_tmp12_, _tmp13_, _tmp14_, 0, &_inner_error_); _tmp11_ = _tmp15_; if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (theme); goto __catch1_g_error; } _tmp16_ = _tmp11_; _tmp11_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp16_; _g_object_unref0 (_tmp11_); _g_object_unref0 (theme); } } goto __finally1; __catch1_g_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp17_ = NULL; GtkIconTheme* _tmp18_ = NULL; GdkPixbuf* _tmp19_ = NULL; GtkIconTheme* _tmp20_ = NULL; gint _tmp21_ = 0; GdkPixbuf* _tmp22_ = NULL; GdkPixbuf* _tmp23_ = NULL; _tmp17_ = gtk_icon_theme_get_default (); _tmp18_ = _g_object_ref0 (_tmp17_); theme = _tmp18_; _tmp20_ = theme; _tmp21_ = fixed_width; _tmp22_ = gtk_icon_theme_load_icon (_tmp20_, "ibus-engine", _tmp21_, 0, &_inner_error_); _tmp19_ = _tmp22_; if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (theme); goto __catch2_g_error; } _tmp23_ = _tmp19_; _tmp19_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp23_; _g_object_unref0 (_tmp19_); _g_object_unref0 (theme); } goto __finally2; __catch2_g_error: { GError* e = NULL; GtkIconSize _tmp24_ = 0; e = _inner_error_; _inner_error_ = NULL; _tmp24_ = size; gtk_image_set_from_icon_name ((GtkImage*) self, "image-missing", _tmp24_); _g_error_free0 (e); _g_error_free0 (e); _g_object_unref0 (pixbuf); return self; } __finally2: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_error_free0 (e); _g_error_free0 (e); _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _g_error_free0 (e); } __finally1: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp25_ = pixbuf; if (_tmp25_ == NULL) { _g_object_unref0 (pixbuf); return self; } _tmp26_ = pixbuf; _tmp27_ = gdk_pixbuf_get_width (_tmp26_); width = (gfloat) _tmp27_; _tmp28_ = pixbuf; _tmp29_ = gdk_pixbuf_get_height (_tmp28_); height = (gfloat) _tmp29_; _tmp31_ = width; _tmp32_ = height; if (_tmp31_ > _tmp32_) { gfloat _tmp33_ = 0.0F; _tmp33_ = width; _tmp30_ = _tmp33_; } else { gfloat _tmp34_ = 0.0F; _tmp34_ = height; _tmp30_ = _tmp34_; } _tmp35_ = fixed_width; scale = _tmp35_ / _tmp30_; _tmp36_ = width; _tmp37_ = scale; width = _tmp36_ * _tmp37_; _tmp38_ = height; _tmp39_ = scale; height = _tmp38_ * _tmp39_; _tmp40_ = pixbuf; _tmp41_ = width; _tmp42_ = height; _tmp43_ = gdk_pixbuf_scale_simple (_tmp40_, (gint) _tmp41_, (gint) _tmp42_, GDK_INTERP_BILINEAR); _g_object_unref0 (pixbuf); pixbuf = _tmp43_; _tmp44_ = pixbuf; gtk_image_set_from_pixbuf ((GtkImage*) self, _tmp44_); gtk_widget_show ((GtkWidget*) self); _g_object_unref0 (pixbuf); return self; } IconWidget* icon_widget_new (const gchar* icon_name_or_path, GtkIconSize size) { return icon_widget_construct (TYPE_ICON_WIDGET, icon_name_or_path, size); } static void icon_widget_class_init (IconWidgetClass * klass) { icon_widget_parent_class = g_type_class_peek_parent (klass); } static void icon_widget_instance_init (IconWidget * self) { } GType icon_widget_get_type (void) { static volatile gsize icon_widget_type_id__volatile = 0; if (g_once_init_enter (&icon_widget_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IconWidgetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) icon_widget_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IconWidget), 0, (GInstanceInitFunc) icon_widget_instance_init, NULL }; GType icon_widget_type_id; icon_widget_type_id = g_type_register_static (gtk_image_get_type (), "IconWidget", &g_define_type_info, 0); g_once_init_leave (&icon_widget_type_id__volatile, icon_widget_type_id); } return icon_widget_type_id__volatile; } ibus-1.5.11/ui/gtk3/switcher.c0000644000000000000000000015536612551655052012737 00000000000000/* switcher.c generated by valac 0.28.0, the Vala compiler * generated from switcher.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #include #define TYPE_SWITCHER (switcher_get_type ()) #define SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SWITCHER, Switcher)) #define SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SWITCHER, SwitcherClass)) #define IS_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SWITCHER)) #define IS_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SWITCHER)) #define SWITCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SWITCHER, SwitcherClass)) typedef struct _Switcher Switcher; typedef struct _SwitcherClass SwitcherClass; typedef struct _SwitcherPrivate SwitcherPrivate; #define SWITCHER_TYPE_IBUS_ENGINE_BUTTON (switcher_ibus_engine_button_get_type ()) #define SWITCHER_IBUS_ENGINE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButton)) #define SWITCHER_IBUS_ENGINE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButtonClass)) #define SWITCHER_IS_IBUS_ENGINE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWITCHER_TYPE_IBUS_ENGINE_BUTTON)) #define SWITCHER_IS_IBUS_ENGINE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWITCHER_TYPE_IBUS_ENGINE_BUTTON)) #define SWITCHER_IBUS_ENGINE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButtonClass)) typedef struct _SwitcherIBusEngineButton SwitcherIBusEngineButton; typedef struct _SwitcherIBusEngineButtonClass SwitcherIBusEngineButtonClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) typedef struct _Block7Data Block7Data; #define _g_free0(var) (var = (g_free (var), NULL)) #define __vala_GdkEventKey_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventKey_free (var), NULL))) typedef struct _SwitcherIBusEngineButtonPrivate SwitcherIBusEngineButtonPrivate; #define TYPE_ICON_WIDGET (icon_widget_get_type ()) #define ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ICON_WIDGET, IconWidget)) #define ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ICON_WIDGET, IconWidgetClass)) #define IS_ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ICON_WIDGET)) #define IS_ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ICON_WIDGET)) #define ICON_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ICON_WIDGET, IconWidgetClass)) typedef struct _IconWidget IconWidget; typedef struct _IconWidgetClass IconWidgetClass; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _Switcher { GtkWindow parent_instance; SwitcherPrivate * priv; }; struct _SwitcherClass { GtkWindowClass parent_class; }; struct _SwitcherPrivate { GtkBox* m_box; GtkLabel* m_label; SwitcherIBusEngineButton** m_buttons; gint m_buttons_length1; gint _m_buttons_size_; IBusEngineDesc** m_engines; gint m_engines_length1; gint _m_engines_size_; guint m_selected_engine; guint m_keyval; guint m_modifiers; GdkModifierType m_primary_modifier; GMainLoop* m_loop; gint m_result; guint m_popup_delay_time; guint m_popup_delay_time_id; gint m_root_x; gint m_root_y; GHashTable* m_xkb_languages; }; struct _Block7Data { int _ref_count_; Switcher* self; gint index; SwitcherIBusEngineButton* button; }; struct _SwitcherIBusEngineButton { GtkButton parent_instance; SwitcherIBusEngineButtonPrivate * priv; }; struct _SwitcherIBusEngineButtonClass { GtkButtonClass parent_class; }; struct _SwitcherIBusEngineButtonPrivate { gchar* _longname; }; static gpointer switcher_parent_class = NULL; static gpointer switcher_ibus_engine_button_parent_class = NULL; GType switcher_get_type (void) G_GNUC_CONST; static GType switcher_ibus_engine_button_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define SWITCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SWITCHER, SwitcherPrivate)) enum { SWITCHER_DUMMY_PROPERTY }; static void _g_free0_ (gpointer var); Switcher* switcher_new (void); Switcher* switcher_construct (GType object_type); gint switcher_run (Switcher* self, guint keyval, guint state, GdkEvent* event, IBusEngineDesc** engines, int engines_length1, gint index); GdkModifierType keybinding_manager_get_primary_modifier (guint binding_mask); #define KEYBINDING_MANAGER_MODIFIER_FILTER ((guint) (GDK_MODIFIER_MASK & (~(((((((((GDK_LOCK_MASK | GDK_MOD2_MASK) | GDK_BUTTON1_MASK) | GDK_BUTTON2_MASK) | GDK_BUTTON3_MASK) | GDK_BUTTON4_MASK) | GDK_BUTTON5_MASK) | GDK_SUPER_MASK) | GDK_HYPER_MASK) | GDK_META_MASK)))) static void switcher_update_engines (Switcher* self, IBusEngineDesc** engines, int engines_length1); static const gchar* switcher_ibus_engine_button_get_longname (SwitcherIBusEngineButton* self); static gboolean ___lambda21_ (Switcher* self); static void switcher_restore_window_position (Switcher* self, const gchar* debug_str); static gboolean ____lambda21__gsource_func (gpointer self); static IBusEngineDesc** _vala_array_dup5 (IBusEngineDesc** self, int length); static Block7Data* block7_data_ref (Block7Data* _data7_); static void block7_data_unref (void * _userdata_); static SwitcherIBusEngineButton* switcher_ibus_engine_button_new (IBusEngineDesc* engine, Switcher* switcher); static SwitcherIBusEngineButton* switcher_ibus_engine_button_construct (GType object_type, IBusEngineDesc* engine, Switcher* switcher); static gboolean _____lambda19_ (Block7Data* _data7_, GdkEventCrossing* e); static gboolean ______lambda19__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self); static gboolean _____lambda20_ (Block7Data* _data7_, GdkEventButton* e); static gboolean ______lambda20__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void switcher_ibus_engine_button_set_longname (SwitcherIBusEngineButton* self, const gchar* value); static void _vala_array_add22 (SwitcherIBusEngineButton*** array, int* length, int* size, SwitcherIBusEngineButton* value); static void switcher_next_engine (Switcher* self); static void switcher_previous_engine (Switcher* self); static void switcher_real_show (GtkWidget* base); static gboolean switcher_real_key_press_event (GtkWidget* base, GdkEventKey* e); static GdkEventKey* _vala_GdkEventKey_copy (GdkEventKey* self); static void _vala_GdkEventKey_free (GdkEventKey* self); static gboolean switcher_real_key_release_event (GtkWidget* base, GdkEventKey* e); gboolean keybinding_manager_primary_modifier_still_pressed (GdkEvent* event, guint primary_modifier); void switcher_set_popup_delay_time (Switcher* self, guint popup_delay_time); gchar* switcher_get_xkb_language (Switcher* self, IBusEngineDesc* engine); #define SWITCHER_IBUS_ENGINE_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButtonPrivate)) enum { SWITCHER_IBUS_ENGINE_BUTTON_DUMMY_PROPERTY, SWITCHER_IBUS_ENGINE_BUTTON_LONGNAME }; GType icon_widget_get_type (void) G_GNUC_CONST; IconWidget* icon_widget_new (const gchar* icon_name_or_path, GtkIconSize size); IconWidget* icon_widget_construct (GType object_type, const gchar* icon_name_or_path, GtkIconSize size); static gboolean switcher_ibus_engine_button_real_draw (GtkWidget* base, cairo_t* cr); static void switcher_ibus_engine_button_finalize (GObject* obj); static void _vala_switcher_ibus_engine_button_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_switcher_ibus_engine_button_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); static void switcher_finalize (GObject* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } Switcher* switcher_construct (GType object_type) { Switcher * self = NULL; GtkBox* vbox = NULL; GtkBox* _tmp0_ = NULL; GtkBox* _tmp1_ = NULL; GtkBox* _tmp2_ = NULL; GtkBox* _tmp3_ = NULL; GtkBox* _tmp4_ = NULL; GtkLabel* _tmp5_ = NULL; AtkObject* obj = NULL; GtkLabel* _tmp6_ = NULL; AtkObject* _tmp7_ = NULL; AtkObject* _tmp8_ = NULL; GtkLabel* _tmp9_ = NULL; GtkLabel* _tmp10_ = NULL; self = (Switcher*) g_object_new (object_type, "type", GTK_WINDOW_POPUP, "events", GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, "window-position", GTK_WIN_POS_CENTER, "accept-focus", TRUE, "decorated", FALSE, "modal", TRUE, "focus-visible", TRUE, NULL); _tmp0_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp0_); vbox = _tmp0_; gtk_container_add ((GtkContainer*) self, (GtkWidget*) vbox); _tmp1_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_box); self->priv->m_box = _tmp1_; _tmp2_ = self->priv->m_box; gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_CENTER); _tmp3_ = self->priv->m_box; gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_CENTER); _tmp4_ = self->priv->m_box; gtk_box_pack_start (vbox, (GtkWidget*) _tmp4_, TRUE, TRUE, (guint) 0); _tmp5_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp5_); _g_object_unref0 (self->priv->m_label); self->priv->m_label = _tmp5_; _tmp6_ = self->priv->m_label; _tmp7_ = gtk_widget_get_accessible ((GtkWidget*) _tmp6_); _tmp8_ = _g_object_ref0 (_tmp7_); obj = _tmp8_; atk_object_set_role (obj, ATK_ROLE_STATUSBAR); _tmp9_ = self->priv->m_label; gtk_misc_set_padding ((GtkMisc*) _tmp9_, 3, 3); _tmp10_ = self->priv->m_label; gtk_box_pack_end (vbox, (GtkWidget*) _tmp10_, FALSE, FALSE, (guint) 0); gtk_widget_grab_focus ((GtkWidget*) self); _g_object_unref0 (obj); _g_object_unref0 (vbox); return self; } Switcher* switcher_new (void) { return switcher_construct (TYPE_SWITCHER); } static gboolean ___lambda21_ (Switcher* self) { gboolean result = FALSE; switcher_restore_window_position (self, "timeout"); result = FALSE; return result; } static gboolean ____lambda21__gsource_func (gpointer self) { gboolean result; result = ___lambda21_ ((Switcher*) self); return result; } gint switcher_run (Switcher* self, guint keyval, guint state, GdkEvent* event, IBusEngineDesc** engines, int engines_length1, gint index) { gint result = 0; GMainLoop* _tmp0_ = NULL; gint _tmp1_ = 0; IBusEngineDesc** _tmp2_ = NULL; gint _tmp2__length1 = 0; guint _tmp3_ = 0U; guint _tmp4_ = 0U; guint _tmp5_ = 0U; GdkModifierType _tmp6_ = 0; IBusEngineDesc** _tmp7_ = NULL; gint _tmp7__length1 = 0; gint _tmp8_ = 0; GtkLabel* _tmp9_ = NULL; SwitcherIBusEngineButton** _tmp10_ = NULL; gint _tmp10__length1 = 0; gint _tmp11_ = 0; SwitcherIBusEngineButton* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; SwitcherIBusEngineButton** _tmp15_ = NULL; gint _tmp15__length1 = 0; gint _tmp16_ = 0; SwitcherIBusEngineButton* _tmp17_ = NULL; GdkDevice* device = NULL; GdkEvent* _tmp18_ = NULL; GdkDevice* _tmp19_ = NULL; GdkDevice* _tmp20_ = NULL; GdkDevice* _tmp21_ = NULL; GdkDevice* keyboard = NULL; GdkDevice* pointer = NULL; GdkDevice* _tmp32_ = NULL; GdkInputSource _tmp33_ = 0; guint _tmp44_ = 0U; guint _tmp47_ = 0U; GdkGrabStatus status = 0; GdkDevice* _tmp50_ = NULL; GdkWindow* _tmp51_ = NULL; GdkGrabStatus _tmp52_ = 0; GdkGrabStatus _tmp53_ = 0; GdkDevice* _tmp55_ = NULL; GdkWindow* _tmp56_ = NULL; GdkGrabStatus _tmp57_ = 0; GdkGrabStatus _tmp58_ = 0; GMainLoop* _tmp60_ = NULL; GMainLoop* _tmp61_ = NULL; GdkDevice* _tmp62_ = NULL; GdkDevice* _tmp63_ = NULL; gint _tmp65_ = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (event != NULL, 0); _tmp0_ = self->priv->m_loop; _vala_assert (_tmp0_ == NULL, "m_loop == null"); _tmp1_ = index; _tmp2_ = engines; _tmp2__length1 = engines_length1; _vala_assert (_tmp1_ < _tmp2__length1, "index < engines.length"); _tmp3_ = keyval; self->priv->m_keyval = _tmp3_; _tmp4_ = state; self->priv->m_modifiers = _tmp4_; _tmp5_ = state; _tmp6_ = keybinding_manager_get_primary_modifier (_tmp5_ & KEYBINDING_MANAGER_MODIFIER_FILTER); self->priv->m_primary_modifier = _tmp6_; _tmp7_ = engines; _tmp7__length1 = engines_length1; switcher_update_engines (self, _tmp7_, _tmp7__length1); gtk_window_resize ((GtkWindow*) self, 1, 1); _tmp8_ = index; self->priv->m_selected_engine = (guint) _tmp8_; _tmp9_ = self->priv->m_label; _tmp10_ = self->priv->m_buttons; _tmp10__length1 = self->priv->m_buttons_length1; _tmp11_ = index; _tmp12_ = _tmp10_[_tmp11_]; _tmp13_ = switcher_ibus_engine_button_get_longname (_tmp12_); _tmp14_ = _tmp13_; gtk_label_set_text (_tmp9_, _tmp14_); _tmp15_ = self->priv->m_buttons; _tmp15__length1 = self->priv->m_buttons_length1; _tmp16_ = index; _tmp17_ = _tmp15_[_tmp16_]; gtk_widget_grab_focus ((GtkWidget*) _tmp17_); _tmp18_ = event; _tmp19_ = gdk_event_get_device (_tmp18_); _tmp20_ = _g_object_ref0 (_tmp19_); device = _tmp20_; _tmp21_ = device; if (_tmp21_ == NULL) { GdkDisplay* display = NULL; GdkDisplay* _tmp22_ = NULL; GdkDisplay* _tmp23_ = NULL; GdkDeviceManager* device_manager = NULL; GdkDisplay* _tmp24_ = NULL; GdkDeviceManager* _tmp25_ = NULL; GdkDeviceManager* _tmp26_ = NULL; GdkDeviceManager* _tmp27_ = NULL; GList* _tmp28_ = NULL; GList* _tmp29_ = NULL; gconstpointer _tmp30_ = NULL; GdkDevice* _tmp31_ = NULL; _tmp22_ = gtk_widget_get_display ((GtkWidget*) self); _tmp23_ = _g_object_ref0 (_tmp22_); display = _tmp23_; _tmp24_ = display; _tmp25_ = gdk_display_get_device_manager (_tmp24_); _tmp26_ = _g_object_ref0 (_tmp25_); device_manager = _tmp26_; _tmp27_ = device_manager; _tmp28_ = gdk_device_manager_list_devices (_tmp27_, GDK_DEVICE_TYPE_MASTER); _tmp29_ = _tmp28_; _tmp30_ = _tmp29_->data; _tmp31_ = _g_object_ref0 ((GdkDevice*) _tmp30_); _g_object_unref0 (device); device = _tmp31_; _g_list_free0 (_tmp29_); _g_object_unref0 (device_manager); _g_object_unref0 (display); } _tmp32_ = device; _tmp33_ = gdk_device_get_source (_tmp32_); if (_tmp33_ == GDK_SOURCE_KEYBOARD) { GdkDevice* _tmp34_ = NULL; GdkDevice* _tmp35_ = NULL; GdkDevice* _tmp36_ = NULL; GdkDevice* _tmp37_ = NULL; GdkDevice* _tmp38_ = NULL; _tmp34_ = device; _tmp35_ = _g_object_ref0 (_tmp34_); _g_object_unref0 (keyboard); keyboard = _tmp35_; _tmp36_ = device; _tmp37_ = gdk_device_get_associated_device (_tmp36_); _tmp38_ = _g_object_ref0 (_tmp37_); _g_object_unref0 (pointer); pointer = _tmp38_; } else { GdkDevice* _tmp39_ = NULL; GdkDevice* _tmp40_ = NULL; GdkDevice* _tmp41_ = NULL; GdkDevice* _tmp42_ = NULL; GdkDevice* _tmp43_ = NULL; _tmp39_ = device; _tmp40_ = _g_object_ref0 (_tmp39_); _g_object_unref0 (pointer); pointer = _tmp40_; _tmp41_ = device; _tmp42_ = gdk_device_get_associated_device (_tmp41_); _tmp43_ = _g_object_ref0 (_tmp42_); _g_object_unref0 (keyboard); keyboard = _tmp43_; } _tmp44_ = self->priv->m_popup_delay_time; if (_tmp44_ > ((guint) 0)) { gint _tmp45_ = 0; gint _tmp46_ = 0; gtk_window_get_position ((GtkWindow*) self, &_tmp45_, &_tmp46_); self->priv->m_root_x = _tmp45_; self->priv->m_root_y = _tmp46_; gtk_window_move ((GtkWindow*) self, -1000, -1000); } gtk_widget_show_all ((GtkWidget*) self); _tmp47_ = self->priv->m_popup_delay_time; if (_tmp47_ > ((guint) 0)) { guint _tmp48_ = 0U; guint _tmp49_ = 0U; _tmp48_ = self->priv->m_popup_delay_time; _tmp49_ = g_timeout_add_full (G_PRIORITY_DEFAULT, _tmp48_, ____lambda21__gsource_func, g_object_ref (self), g_object_unref); self->priv->m_popup_delay_time_id = _tmp49_; } _tmp50_ = keyboard; _tmp51_ = gtk_widget_get_window ((GtkWidget*) self); _tmp52_ = gdk_device_grab (_tmp50_, _tmp51_, GDK_OWNERSHIP_NONE, TRUE, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, NULL, (guint32) GDK_CURRENT_TIME); status = _tmp52_; _tmp53_ = status; if (_tmp53_ != GDK_GRAB_SUCCESS) { GdkGrabStatus _tmp54_ = 0; _tmp54_ = status; g_warning ("switcher.vala:205: Grab keyboard failed! status = %d", (gint) _tmp54_); } _tmp55_ = pointer; _tmp56_ = gtk_widget_get_window ((GtkWidget*) self); _tmp57_ = gdk_device_grab (_tmp55_, _tmp56_, GDK_OWNERSHIP_NONE, TRUE, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK, NULL, (guint32) GDK_CURRENT_TIME); status = _tmp57_; _tmp58_ = status; if (_tmp58_ != GDK_GRAB_SUCCESS) { GdkGrabStatus _tmp59_ = 0; _tmp59_ = status; g_warning ("switcher.vala:215: Grab pointer failed! status = %d", (gint) _tmp59_); } _tmp60_ = g_main_loop_new (NULL, FALSE); _g_main_loop_unref0 (self->priv->m_loop); self->priv->m_loop = _tmp60_; _tmp61_ = self->priv->m_loop; g_main_loop_run (_tmp61_); _g_main_loop_unref0 (self->priv->m_loop); self->priv->m_loop = NULL; _tmp62_ = keyboard; gdk_device_ungrab (_tmp62_, (guint32) GDK_CURRENT_TIME); _tmp63_ = pointer; gdk_device_ungrab (_tmp63_, (guint32) GDK_CURRENT_TIME); gtk_widget_hide ((GtkWidget*) self); while (TRUE) { gboolean _tmp64_ = FALSE; _tmp64_ = gtk_events_pending (); if (!_tmp64_) { break; } gtk_main_iteration (); } _tmp65_ = self->priv->m_result; result = _tmp65_; _g_object_unref0 (pointer); _g_object_unref0 (keyboard); _g_object_unref0 (device); return result; } static IBusEngineDesc** _vala_array_dup5 (IBusEngineDesc** self, int length) { IBusEngineDesc** result; int i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_ = NULL; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static Block7Data* block7_data_ref (Block7Data* _data7_) { g_atomic_int_inc (&_data7_->_ref_count_); return _data7_; } static void block7_data_unref (void * _userdata_) { Block7Data* _data7_; _data7_ = (Block7Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) { Switcher* self; self = _data7_->self; _g_object_unref0 (_data7_->button); _g_object_unref0 (self); g_slice_free (Block7Data, _data7_); } } static gboolean _____lambda19_ (Block7Data* _data7_, GdkEventCrossing* e) { Switcher* self; gboolean result = FALSE; SwitcherIBusEngineButton* _tmp0_ = NULL; gint _tmp1_ = 0; self = _data7_->self; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data7_->button; gtk_widget_grab_focus ((GtkWidget*) _tmp0_); _tmp1_ = _data7_->index; self->priv->m_selected_engine = (guint) _tmp1_; result = TRUE; return result; } static gboolean ______lambda19__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) { gboolean result; result = _____lambda19_ (self, event); return result; } static gboolean _____lambda20_ (Block7Data* _data7_, GdkEventButton* e) { Switcher* self; gboolean result = FALSE; gint _tmp0_ = 0; guint _tmp1_ = 0U; GMainLoop* _tmp2_ = NULL; self = _data7_->self; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data7_->index; self->priv->m_selected_engine = (guint) _tmp0_; _tmp1_ = self->priv->m_selected_engine; self->priv->m_result = (gint) _tmp1_; _tmp2_ = self->priv->m_loop; g_main_loop_quit (_tmp2_); result = TRUE; return result; } static gboolean ______lambda20__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = _____lambda20_ (self, event); return result; } static void _vala_array_add22 (SwitcherIBusEngineButton*** array, int* length, int* size, SwitcherIBusEngineButton* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (SwitcherIBusEngineButton*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void switcher_update_engines (Switcher* self, IBusEngineDesc** engines, int engines_length1) { SwitcherIBusEngineButton** _tmp0_ = NULL; gint _tmp0__length1 = 0; SwitcherIBusEngineButton** _tmp3_ = NULL; IBusEngineDesc** _tmp4_ = NULL; gint _tmp4__length1 = 0; IBusEngineDesc** _tmp6_ = NULL; gint _tmp6__length1 = 0; IBusEngineDesc** _tmp7_ = NULL; gint _tmp7__length1 = 0; gint max_label_width = 0; GtkLabel* _tmp40_ = NULL; SwitcherIBusEngineButton** _tmp41_ = NULL; gint _tmp41__length1 = 0; SwitcherIBusEngineButton* _tmp42_ = NULL; const gchar* _tmp43_ = NULL; const gchar* _tmp44_ = NULL; GtkLabel* _tmp45_ = NULL; GdkDisplay* display = NULL; GdkDisplay* _tmp46_ = NULL; GdkDisplay* _tmp47_ = NULL; GdkScreen* _tmp48_ = NULL; GdkDisplay* _tmp49_ = NULL; GdkScreen* screen = NULL; GdkScreen* _tmp52_ = NULL; gint screen_width = 0; GdkScreen* _tmp53_ = NULL; gboolean _tmp56_ = FALSE; gint _tmp57_ = 0; gint _tmp61_ = 0; gint _tmp62_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_buttons; _tmp0__length1 = self->priv->m_buttons_length1; { SwitcherIBusEngineButton** button_collection = NULL; gint button_collection_length1 = 0; gint _button_collection_size_ = 0; gint button_it = 0; button_collection = _tmp0_; button_collection_length1 = _tmp0__length1; for (button_it = 0; button_it < _tmp0__length1; button_it = button_it + 1) { SwitcherIBusEngineButton* _tmp1_ = NULL; SwitcherIBusEngineButton* button = NULL; _tmp1_ = _g_object_ref0 (button_collection[button_it]); button = _tmp1_; { SwitcherIBusEngineButton* _tmp2_ = NULL; _tmp2_ = button; gtk_widget_destroy ((GtkWidget*) _tmp2_); _g_object_unref0 (button); } } } _tmp3_ = g_new0 (SwitcherIBusEngineButton*, 0 + 1); self->priv->m_buttons = (_vala_array_free (self->priv->m_buttons, self->priv->m_buttons_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_buttons = _tmp3_; self->priv->m_buttons_length1 = 0; self->priv->_m_buttons_size_ = self->priv->m_buttons_length1; _tmp4_ = engines; _tmp4__length1 = engines_length1; if (_tmp4_ == NULL) { IBusEngineDesc** _tmp5_ = NULL; _tmp5_ = g_new0 (IBusEngineDesc*, 0 + 1); self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_engines = _tmp5_; self->priv->m_engines_length1 = 0; self->priv->_m_engines_size_ = self->priv->m_engines_length1; return; } _tmp6_ = engines; _tmp6__length1 = engines_length1; _tmp7_ = (_tmp6_ != NULL) ? _vala_array_dup5 (_tmp6_, _tmp6__length1) : ((gpointer) _tmp6_); _tmp7__length1 = _tmp6__length1; self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_engines = _tmp7_; self->priv->m_engines_length1 = _tmp7__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; max_label_width = 0; { gint i = 0; i = 0; { gboolean _tmp8_ = FALSE; _tmp8_ = TRUE; while (TRUE) { Block7Data* _data7_; gint _tmp10_ = 0; IBusEngineDesc** _tmp11_ = NULL; gint _tmp11__length1 = 0; gint _tmp12_ = 0; IBusEngineDesc* engine = NULL; IBusEngineDesc** _tmp13_ = NULL; gint _tmp13__length1 = 0; gint _tmp14_ = 0; IBusEngineDesc* _tmp15_ = NULL; IBusEngineDesc* _tmp16_ = NULL; IBusEngineDesc* _tmp17_ = NULL; SwitcherIBusEngineButton* _tmp18_ = NULL; gchar* longname = NULL; IBusEngineDesc* _tmp19_ = NULL; const gchar* _tmp20_ = NULL; gchar* _tmp21_ = NULL; SwitcherIBusEngineButton* _tmp22_ = NULL; SwitcherIBusEngineButton* _tmp23_ = NULL; SwitcherIBusEngineButton* _tmp24_ = NULL; SwitcherIBusEngineButton* _tmp25_ = NULL; SwitcherIBusEngineButton* _tmp26_ = NULL; const gchar* _tmp27_ = NULL; GtkLabel* _tmp28_ = NULL; const gchar* _tmp29_ = NULL; gint width = 0; GtkLabel* _tmp30_ = NULL; gint _tmp31_ = 0; gint _tmp32_ = 0; gint _tmp33_ = 0; gint _tmp34_ = 0; GtkBox* _tmp35_ = NULL; SwitcherIBusEngineButton* _tmp36_ = NULL; SwitcherIBusEngineButton** _tmp37_ = NULL; gint _tmp37__length1 = 0; SwitcherIBusEngineButton* _tmp38_ = NULL; SwitcherIBusEngineButton* _tmp39_ = NULL; _data7_ = g_slice_new0 (Block7Data); _data7_->_ref_count_ = 1; _data7_->self = g_object_ref (self); if (!_tmp8_) { gint _tmp9_ = 0; _tmp9_ = i; i = _tmp9_ + 1; } _tmp8_ = FALSE; _tmp10_ = i; _tmp11_ = self->priv->m_engines; _tmp11__length1 = self->priv->m_engines_length1; if (!(_tmp10_ < _tmp11__length1)) { block7_data_unref (_data7_); _data7_ = NULL; break; } _tmp12_ = i; _data7_->index = _tmp12_; _tmp13_ = self->priv->m_engines; _tmp13__length1 = self->priv->m_engines_length1; _tmp14_ = i; _tmp15_ = _tmp13_[_tmp14_]; _tmp16_ = _g_object_ref0 (_tmp15_); engine = _tmp16_; _tmp17_ = engine; _tmp18_ = switcher_ibus_engine_button_new (_tmp17_, self); g_object_ref_sink (_tmp18_); _data7_->button = _tmp18_; _tmp19_ = engine; _tmp20_ = ibus_engine_desc_get_longname (_tmp19_); _tmp21_ = g_strdup (_tmp20_); longname = _tmp21_; _tmp22_ = _data7_->button; gtk_button_set_relief ((GtkButton*) _tmp22_, GTK_RELIEF_NONE); _tmp23_ = _data7_->button; gtk_widget_show ((GtkWidget*) _tmp23_); _tmp24_ = _data7_->button; g_signal_connect_data ((GtkWidget*) _tmp24_, "enter-notify-event", (GCallback) ______lambda19__gtk_widget_enter_notify_event, block7_data_ref (_data7_), (GClosureNotify) block7_data_unref, 0); _tmp25_ = _data7_->button; g_signal_connect_data ((GtkWidget*) _tmp25_, "button-press-event", (GCallback) ______lambda20__gtk_widget_button_press_event, block7_data_ref (_data7_), (GClosureNotify) block7_data_unref, 0); _tmp26_ = _data7_->button; _tmp27_ = longname; switcher_ibus_engine_button_set_longname (_tmp26_, _tmp27_); _tmp28_ = self->priv->m_label; _tmp29_ = longname; gtk_label_set_label (_tmp28_, _tmp29_); _tmp30_ = self->priv->m_label; gtk_widget_get_preferred_width ((GtkWidget*) _tmp30_, NULL, &_tmp31_); width = _tmp31_; _tmp32_ = max_label_width; _tmp33_ = width; _tmp34_ = MAX (_tmp32_, _tmp33_); max_label_width = _tmp34_; _tmp35_ = self->priv->m_box; _tmp36_ = _data7_->button; gtk_box_pack_start (_tmp35_, (GtkWidget*) _tmp36_, TRUE, TRUE, (guint) 0); _tmp37_ = self->priv->m_buttons; _tmp37__length1 = self->priv->m_buttons_length1; _tmp38_ = _data7_->button; _tmp39_ = _g_object_ref0 (_tmp38_); _vala_array_add22 (&self->priv->m_buttons, &self->priv->m_buttons_length1, &self->priv->_m_buttons_size_, _tmp39_); _g_free0 (longname); _g_object_unref0 (engine); block7_data_unref (_data7_); _data7_ = NULL; } } } _tmp40_ = self->priv->m_label; _tmp41_ = self->priv->m_buttons; _tmp41__length1 = self->priv->m_buttons_length1; _tmp42_ = _tmp41_[0]; _tmp43_ = switcher_ibus_engine_button_get_longname (_tmp42_); _tmp44_ = _tmp43_; gtk_label_set_text (_tmp40_, _tmp44_); _tmp45_ = self->priv->m_label; gtk_label_set_ellipsize (_tmp45_, PANGO_ELLIPSIZE_END); _tmp46_ = gdk_display_get_default (); _tmp47_ = _g_object_ref0 (_tmp46_); display = _tmp47_; _tmp49_ = display; if (_tmp49_ != NULL) { GdkDisplay* _tmp50_ = NULL; GdkScreen* _tmp51_ = NULL; _tmp50_ = display; _tmp51_ = gdk_display_get_default_screen (_tmp50_); _tmp48_ = _tmp51_; } else { _tmp48_ = NULL; } _tmp52_ = _g_object_ref0 (_tmp48_); screen = _tmp52_; screen_width = 0; _tmp53_ = screen; if (_tmp53_ != NULL) { GdkScreen* _tmp54_ = NULL; gint _tmp55_ = 0; _tmp54_ = screen; _tmp55_ = gdk_screen_get_width (_tmp54_); screen_width = _tmp55_; } _tmp57_ = screen_width; if (_tmp57_ > 0) { gint _tmp58_ = 0; gint _tmp59_ = 0; _tmp58_ = max_label_width; _tmp59_ = screen_width; _tmp56_ = _tmp58_ > (_tmp59_ / 4); } else { _tmp56_ = FALSE; } if (_tmp56_) { gint _tmp60_ = 0; _tmp60_ = screen_width; max_label_width = _tmp60_ / 4; } _tmp61_ = max_label_width; max_label_width = _tmp61_ + 20; _tmp62_ = max_label_width; gtk_window_set_default_size ((GtkWindow*) self, _tmp62_, -1); _g_object_unref0 (screen); _g_object_unref0 (display); } static void switcher_next_engine (Switcher* self) { guint _tmp0_ = 0U; IBusEngineDesc** _tmp1_ = NULL; gint _tmp1__length1 = 0; GtkLabel* _tmp3_ = NULL; SwitcherIBusEngineButton** _tmp4_ = NULL; gint _tmp4__length1 = 0; guint _tmp5_ = 0U; SwitcherIBusEngineButton* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; SwitcherIBusEngineButton** _tmp9_ = NULL; gint _tmp9__length1 = 0; guint _tmp10_ = 0U; SwitcherIBusEngineButton* _tmp11_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_selected_engine; _tmp1_ = self->priv->m_engines; _tmp1__length1 = self->priv->m_engines_length1; if (_tmp0_ == ((guint) (_tmp1__length1 - 1))) { self->priv->m_selected_engine = (guint) 0; } else { guint _tmp2_ = 0U; _tmp2_ = self->priv->m_selected_engine; self->priv->m_selected_engine = _tmp2_ + 1; } _tmp3_ = self->priv->m_label; _tmp4_ = self->priv->m_buttons; _tmp4__length1 = self->priv->m_buttons_length1; _tmp5_ = self->priv->m_selected_engine; _tmp6_ = _tmp4_[_tmp5_]; _tmp7_ = switcher_ibus_engine_button_get_longname (_tmp6_); _tmp8_ = _tmp7_; gtk_label_set_text (_tmp3_, _tmp8_); _tmp9_ = self->priv->m_buttons; _tmp9__length1 = self->priv->m_buttons_length1; _tmp10_ = self->priv->m_selected_engine; _tmp11_ = _tmp9_[_tmp10_]; gtk_window_set_focus ((GtkWindow*) self, (GtkWidget*) _tmp11_); } static void switcher_previous_engine (Switcher* self) { guint _tmp0_ = 0U; GtkLabel* _tmp3_ = NULL; SwitcherIBusEngineButton** _tmp4_ = NULL; gint _tmp4__length1 = 0; guint _tmp5_ = 0U; SwitcherIBusEngineButton* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; SwitcherIBusEngineButton** _tmp9_ = NULL; gint _tmp9__length1 = 0; guint _tmp10_ = 0U; SwitcherIBusEngineButton* _tmp11_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_selected_engine; if (_tmp0_ == ((guint) 0)) { IBusEngineDesc** _tmp1_ = NULL; gint _tmp1__length1 = 0; _tmp1_ = self->priv->m_engines; _tmp1__length1 = self->priv->m_engines_length1; self->priv->m_selected_engine = (guint) (_tmp1__length1 - 1); } else { guint _tmp2_ = 0U; _tmp2_ = self->priv->m_selected_engine; self->priv->m_selected_engine = _tmp2_ - 1; } _tmp3_ = self->priv->m_label; _tmp4_ = self->priv->m_buttons; _tmp4__length1 = self->priv->m_buttons_length1; _tmp5_ = self->priv->m_selected_engine; _tmp6_ = _tmp4_[_tmp5_]; _tmp7_ = switcher_ibus_engine_button_get_longname (_tmp6_); _tmp8_ = _tmp7_; gtk_label_set_text (_tmp3_, _tmp8_); _tmp9_ = self->priv->m_buttons; _tmp9__length1 = self->priv->m_buttons_length1; _tmp10_ = self->priv->m_selected_engine; _tmp11_ = _tmp9_[_tmp10_]; gtk_window_set_focus ((GtkWindow*) self, (GtkWidget*) _tmp11_); } static void switcher_restore_window_position (Switcher* self, const gchar* debug_str) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; gint _tmp2_ = 0; guint _tmp3_ = 0U; guint _tmp4_ = 0U; gint _tmp5_ = 0; gint _tmp6_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (debug_str != NULL); _tmp0_ = debug_str; _tmp1_ = self->priv->m_root_x; _tmp2_ = self->priv->m_root_y; g_debug ("switcher.vala:320: restore_window_position %s: (%ld, %ld)\n", _tmp0_, (glong) _tmp1_, (glong) _tmp2_); _tmp3_ = self->priv->m_popup_delay_time_id; if (_tmp3_ == ((guint) 0)) { return; } _tmp4_ = self->priv->m_popup_delay_time_id; g_source_remove (_tmp4_); self->priv->m_popup_delay_time_id = (guint) 0; _tmp5_ = self->priv->m_root_x; _tmp6_ = self->priv->m_root_y; gtk_window_move ((GtkWindow*) self, _tmp5_, _tmp6_); } static void switcher_real_show (GtkWidget* base) { Switcher * self; self = (Switcher*) base; GTK_WIDGET_CLASS (switcher_parent_class)->show ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow)); gtk_window_set_focus_visible ((GtkWindow*) self, TRUE); } static GdkEventKey* _vala_GdkEventKey_copy (GdkEventKey* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventKey_copy0 (gpointer self) { return self ? _vala_GdkEventKey_copy (self) : NULL; } static void _vala_GdkEventKey_free (GdkEventKey* self) { g_boxed_free (gdk_event_get_type (), self); } static gboolean switcher_real_key_press_event (GtkWidget* base, GdkEventKey* e) { Switcher * self; gboolean result = FALSE; gboolean retval = FALSE; GdkEventKey* pe = NULL; GdkEventKey* _tmp0_ = NULL; GdkEventKey* _tmp1_ = NULL; guint _tmp2_ = 0U; self = (Switcher*) base; g_return_val_if_fail (e != NULL, FALSE); retval = TRUE; _tmp0_ = e; _tmp1_ = __vala_GdkEventKey_copy0 (_tmp0_); pe = _tmp1_; _tmp2_ = self->priv->m_popup_delay_time; if (_tmp2_ > ((guint) 0)) { switcher_restore_window_position (self, "pressed"); } { gboolean _tmp3_ = FALSE; _tmp3_ = TRUE; while (TRUE) { guint modifiers = 0U; GdkEventKey* _tmp4_ = NULL; GdkModifierType _tmp5_ = 0; gboolean _tmp6_ = FALSE; guint _tmp7_ = 0U; guint _tmp8_ = 0U; GdkEventKey* _tmp11_ = NULL; guint _tmp12_ = 0U; guint _tmp13_ = 0U; GdkEventKey* _tmp16_ = NULL; guint _tmp17_ = 0U; if (!_tmp3_) { if (!FALSE) { break; } } _tmp3_ = FALSE; _tmp4_ = pe; _tmp5_ = _tmp4_->state; modifiers = KEYBINDING_MANAGER_MODIFIER_FILTER & _tmp5_; _tmp7_ = modifiers; _tmp8_ = self->priv->m_modifiers; if (_tmp7_ != _tmp8_) { guint _tmp9_ = 0U; guint _tmp10_ = 0U; _tmp9_ = modifiers; _tmp10_ = self->priv->m_modifiers; _tmp6_ = _tmp9_ != (_tmp10_ | GDK_SHIFT_MASK); } else { _tmp6_ = FALSE; } if (_tmp6_) { break; } _tmp11_ = pe; _tmp12_ = _tmp11_->keyval; _tmp13_ = self->priv->m_keyval; if (_tmp12_ == _tmp13_) { guint _tmp14_ = 0U; guint _tmp15_ = 0U; _tmp14_ = modifiers; _tmp15_ = self->priv->m_modifiers; if (_tmp14_ == _tmp15_) { switcher_next_engine (self); } else { switcher_previous_engine (self); } break; } _tmp16_ = pe; _tmp17_ = _tmp16_->keyval; switch (_tmp17_) { case 0x08fb: case 0xff51: { switcher_previous_engine (self); break; } case 0x08fc: case 0xff52: { break; } case 0x08fd: case 0xff53: { switcher_next_engine (self); break; } case 0x08fe: case 0xff54: { break; } default: { GdkEventKey* _tmp18_ = NULL; guint _tmp19_ = 0U; _tmp18_ = pe; _tmp19_ = _tmp18_->keyval; g_debug ("switcher.vala:386: 0x%04x", _tmp19_); break; } } } } result = retval; __vala_GdkEventKey_free0 (pe); return result; } static gboolean switcher_real_key_release_event (GtkWidget* base, GdkEventKey* e) { Switcher * self; gboolean result = FALSE; GdkEventKey* pe = NULL; GdkEventKey* _tmp0_ = NULL; GdkEventKey* _tmp1_ = NULL; GdkEventKey* _tmp2_ = NULL; GdkModifierType _tmp3_ = 0; gboolean _tmp4_ = FALSE; GMainLoop* _tmp5_ = NULL; guint _tmp6_ = 0U; GMainLoop* _tmp9_ = NULL; guint _tmp10_ = 0U; self = (Switcher*) base; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e; _tmp1_ = __vala_GdkEventKey_copy0 (_tmp0_); pe = _tmp1_; _tmp2_ = pe; _tmp3_ = self->priv->m_primary_modifier; _tmp4_ = keybinding_manager_primary_modifier_still_pressed ((GdkEvent*) _tmp2_, (guint) _tmp3_); if (_tmp4_) { result = TRUE; __vala_GdkEventKey_free0 (pe); return result; } _tmp5_ = self->priv->m_loop; if (_tmp5_ == NULL) { result = FALSE; __vala_GdkEventKey_free0 (pe); return result; } _tmp6_ = self->priv->m_popup_delay_time; if (_tmp6_ > ((guint) 0)) { guint _tmp7_ = 0U; _tmp7_ = self->priv->m_popup_delay_time_id; if (_tmp7_ != ((guint) 0)) { guint _tmp8_ = 0U; _tmp8_ = self->priv->m_popup_delay_time_id; g_source_remove (_tmp8_); self->priv->m_popup_delay_time_id = (guint) 0; } } _tmp9_ = self->priv->m_loop; g_main_loop_quit (_tmp9_); _tmp10_ = self->priv->m_selected_engine; self->priv->m_result = (gint) _tmp10_; result = TRUE; __vala_GdkEventKey_free0 (pe); return result; } void switcher_set_popup_delay_time (Switcher* self, guint popup_delay_time) { guint _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = popup_delay_time; self->priv->m_popup_delay_time = _tmp0_; } static gchar* string_slice (const gchar* self, glong start, glong end) { gchar* result = NULL; glong string_length = 0L; gint _tmp0_ = 0; gint _tmp1_ = 0; glong _tmp2_ = 0L; glong _tmp5_ = 0L; gboolean _tmp8_ = FALSE; glong _tmp9_ = 0L; gboolean _tmp12_ = FALSE; glong _tmp13_ = 0L; glong _tmp16_ = 0L; glong _tmp17_ = 0L; glong _tmp18_ = 0L; glong _tmp19_ = 0L; glong _tmp20_ = 0L; gchar* _tmp21_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; _tmp2_ = start; if (_tmp2_ < ((glong) 0)) { glong _tmp3_ = 0L; glong _tmp4_ = 0L; _tmp3_ = string_length; _tmp4_ = start; start = _tmp3_ + _tmp4_; } _tmp5_ = end; if (_tmp5_ < ((glong) 0)) { glong _tmp6_ = 0L; glong _tmp7_ = 0L; _tmp6_ = string_length; _tmp7_ = end; end = _tmp6_ + _tmp7_; } _tmp9_ = start; if (_tmp9_ >= ((glong) 0)) { glong _tmp10_ = 0L; glong _tmp11_ = 0L; _tmp10_ = start; _tmp11_ = string_length; _tmp8_ = _tmp10_ <= _tmp11_; } else { _tmp8_ = FALSE; } g_return_val_if_fail (_tmp8_, NULL); _tmp13_ = end; if (_tmp13_ >= ((glong) 0)) { glong _tmp14_ = 0L; glong _tmp15_ = 0L; _tmp14_ = end; _tmp15_ = string_length; _tmp12_ = _tmp14_ <= _tmp15_; } else { _tmp12_ = FALSE; } g_return_val_if_fail (_tmp12_, NULL); _tmp16_ = start; _tmp17_ = end; g_return_val_if_fail (_tmp16_ <= _tmp17_, NULL); _tmp18_ = start; _tmp19_ = end; _tmp20_ = start; _tmp21_ = g_strndup (((gchar*) self) + _tmp18_, (gsize) (_tmp19_ - _tmp20_)); result = _tmp21_; return result; } static gchar* g_unichar_to_string (gunichar self) { gchar* result = NULL; gchar* str = NULL; gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; _tmp1_ = str; g_unichar_to_utf8 (self, _tmp1_); result = str; return result; } gchar* switcher_get_xkb_language (Switcher* self, IBusEngineDesc* engine) { gchar* result = NULL; gchar* name = NULL; IBusEngineDesc* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; gchar* _tmp5_ = NULL; gchar* language = NULL; GHashTable* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; gconstpointer _tmp8_ = NULL; gchar* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; IBusEngineDesc* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; gint _tmp15_ = 0; gint _tmp16_ = 0; const gchar* _tmp17_ = NULL; gchar* _tmp18_ = NULL; gchar* _tmp19_ = NULL; gchar* _tmp20_ = NULL; gint index = 0; GHashTable* _tmp21_ = NULL; GList* _tmp22_ = NULL; gint _tmp29_ = 0; GHashTable* _tmp36_ = NULL; const gchar* _tmp37_ = NULL; gchar* _tmp38_ = NULL; const gchar* _tmp39_ = NULL; gchar* _tmp40_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (engine != NULL, NULL); _tmp0_ = engine; _tmp1_ = ibus_engine_desc_get_name (_tmp0_); _tmp2_ = g_strdup (_tmp1_); name = _tmp2_; _tmp3_ = name; _tmp4_ = string_slice (_tmp3_, (glong) 0, (glong) 4); _tmp5_ = _tmp4_; _vala_assert (g_strcmp0 (_tmp5_, "xkb:") == 0, "name[0:4] == \"xkb:\""); _g_free0 (_tmp5_); _tmp6_ = self->priv->m_xkb_languages; _tmp7_ = name; _tmp8_ = g_hash_table_lookup (_tmp6_, _tmp7_); _tmp9_ = g_strdup ((const gchar*) _tmp8_); language = _tmp9_; _tmp10_ = language; if (_tmp10_ != NULL) { result = language; _g_free0 (name); return result; } _tmp11_ = engine; _tmp12_ = ibus_engine_desc_get_language (_tmp11_); _tmp13_ = g_strdup (_tmp12_); _g_free0 (language); language = _tmp13_; _tmp14_ = language; _tmp15_ = strlen (_tmp14_); _tmp16_ = _tmp15_; if (_tmp16_ < 2) { result = language; _g_free0 (name); return result; } _tmp17_ = language; _tmp18_ = string_slice (_tmp17_, (glong) 0, (glong) 2); _tmp19_ = _tmp18_; _tmp20_ = g_utf8_strup (_tmp19_, (gssize) (-1)); _g_free0 (language); language = _tmp20_; _g_free0 (_tmp19_); index = 0; _tmp21_ = self->priv->m_xkb_languages; _tmp22_ = g_hash_table_get_values (_tmp21_); { GList* saved_language_collection = NULL; GList* saved_language_it = NULL; saved_language_collection = _tmp22_; for (saved_language_it = saved_language_collection; saved_language_it != NULL; saved_language_it = saved_language_it->next) { const gchar* saved_language = NULL; saved_language = (const gchar*) saved_language_it->data; { const gchar* _tmp23_ = NULL; const gchar* _tmp24_ = NULL; gchar* _tmp25_ = NULL; gchar* _tmp26_ = NULL; gboolean _tmp27_ = FALSE; _tmp23_ = language; _tmp24_ = saved_language; _tmp25_ = string_slice (_tmp24_, (glong) 0, (glong) 2); _tmp26_ = _tmp25_; _tmp27_ = g_strcmp0 (_tmp23_, _tmp26_) == 0; _g_free0 (_tmp26_); if (_tmp27_) { gint _tmp28_ = 0; _tmp28_ = index; index = _tmp28_ + 1; } } } _g_list_free0 (saved_language_collection); } _tmp29_ = index; if (_tmp29_ > 0) { gunichar u = 0U; gint _tmp30_ = 0; const gchar* _tmp31_ = NULL; gunichar _tmp32_ = 0U; gchar* _tmp33_ = NULL; gchar* _tmp34_ = NULL; gchar* _tmp35_ = NULL; _tmp30_ = index; u = (gunichar) (0x2081 + _tmp30_); _tmp31_ = language; _tmp32_ = u; _tmp33_ = g_unichar_to_string (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = g_strdup_printf ("%s%s", _tmp31_, _tmp34_); _g_free0 (language); language = _tmp35_; _g_free0 (_tmp34_); } _tmp36_ = self->priv->m_xkb_languages; _tmp37_ = name; _tmp38_ = g_strdup (_tmp37_); _tmp39_ = language; _tmp40_ = g_strdup (_tmp39_); g_hash_table_insert (_tmp36_, _tmp38_, _tmp40_); result = language; _g_free0 (name); return result; } static SwitcherIBusEngineButton* switcher_ibus_engine_button_construct (GType object_type, IBusEngineDesc* engine, Switcher* switcher) { SwitcherIBusEngineButton * self = NULL; IBusEngineDesc* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gchar* name = NULL; IBusEngineDesc* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; gboolean _tmp5_ = FALSE; const gchar* _tmp6_ = NULL; gint _tmp7_ = 0; gint _tmp8_ = 0; g_return_val_if_fail (engine != NULL, NULL); g_return_val_if_fail (switcher != NULL, NULL); self = (SwitcherIBusEngineButton*) g_object_new (object_type, NULL); _tmp0_ = engine; _tmp1_ = ibus_engine_desc_get_longname (_tmp0_); switcher_ibus_engine_button_set_longname (self, _tmp1_); _tmp2_ = engine; _tmp3_ = ibus_engine_desc_get_name (_tmp2_); _tmp4_ = g_strdup (_tmp3_); name = _tmp4_; _tmp6_ = name; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; if (_tmp8_ < 4) { _tmp5_ = TRUE; } else { const gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; gchar* _tmp11_ = NULL; _tmp9_ = name; _tmp10_ = string_slice (_tmp9_, (glong) 0, (glong) 4); _tmp11_ = _tmp10_; _tmp5_ = g_strcmp0 (_tmp11_, "xkb:") != 0; _g_free0 (_tmp11_); } if (_tmp5_) { IconWidget* icon = NULL; IBusEngineDesc* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; IconWidget* _tmp14_ = NULL; IconWidget* _tmp15_ = NULL; IconWidget* _tmp16_ = NULL; IconWidget* _tmp17_ = NULL; _tmp12_ = engine; _tmp13_ = ibus_engine_desc_get_icon (_tmp12_); _tmp14_ = icon_widget_new (_tmp13_, GTK_ICON_SIZE_DIALOG); g_object_ref_sink (_tmp14_); icon = _tmp14_; _tmp15_ = icon; gtk_widget_set_halign ((GtkWidget*) _tmp15_, GTK_ALIGN_CENTER); _tmp16_ = icon; gtk_widget_set_valign ((GtkWidget*) _tmp16_, GTK_ALIGN_CENTER); _tmp17_ = icon; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp17_); _g_object_unref0 (icon); } else { gchar* language = NULL; Switcher* _tmp18_ = NULL; IBusEngineDesc* _tmp19_ = NULL; gchar* _tmp20_ = NULL; GtkLabel* label = NULL; const gchar* _tmp21_ = NULL; GtkLabel* _tmp22_ = NULL; GtkLabel* _tmp23_ = NULL; GtkLabel* _tmp24_ = NULL; gchar* language_font = NULL; gchar* _tmp25_ = NULL; gchar* markup = NULL; const gchar* _tmp26_ = NULL; const gchar* _tmp27_ = NULL; gchar* _tmp28_ = NULL; GtkLabel* _tmp29_ = NULL; const gchar* _tmp30_ = NULL; gint fixed_width = 0; gint fixed_height = 0; gint _tmp31_ = 0; gint _tmp32_ = 0; GtkLabel* _tmp33_ = NULL; gint _tmp34_ = 0; gint _tmp35_ = 0; GtkLabel* _tmp36_ = NULL; _tmp18_ = switcher; _tmp19_ = engine; _tmp20_ = switcher_get_xkb_language (_tmp18_, _tmp19_); language = _tmp20_; _tmp21_ = language; _tmp22_ = (GtkLabel*) gtk_label_new (_tmp21_); g_object_ref_sink (_tmp22_); label = _tmp22_; _tmp23_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp23_, GTK_ALIGN_CENTER); _tmp24_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp24_, GTK_ALIGN_CENTER); _tmp25_ = g_strdup ("Monospace Bold 16"); language_font = _tmp25_; _tmp26_ = language_font; _tmp27_ = language; _tmp28_ = g_strdup_printf ("%s", _tmp26_, _tmp27_); markup = _tmp28_; _tmp29_ = label; _tmp30_ = markup; gtk_label_set_markup (_tmp29_, _tmp30_); gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &_tmp31_, &_tmp32_); fixed_width = _tmp31_; fixed_height = _tmp32_; _tmp33_ = label; _tmp34_ = fixed_width; _tmp35_ = fixed_height; gtk_widget_set_size_request ((GtkWidget*) _tmp33_, _tmp34_, _tmp35_); _tmp36_ = label; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp36_); _g_free0 (markup); _g_free0 (language_font); _g_object_unref0 (label); _g_free0 (language); } _g_free0 (name); return self; } static SwitcherIBusEngineButton* switcher_ibus_engine_button_new (IBusEngineDesc* engine, Switcher* switcher) { return switcher_ibus_engine_button_construct (SWITCHER_TYPE_IBUS_ENGINE_BUTTON, engine, switcher); } static gboolean switcher_ibus_engine_button_real_draw (GtkWidget* base, cairo_t* cr) { SwitcherIBusEngineButton * self; gboolean result = FALSE; cairo_t* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; self = (SwitcherIBusEngineButton*) base; g_return_val_if_fail (cr != NULL, FALSE); _tmp0_ = cr; GTK_WIDGET_CLASS (switcher_ibus_engine_button_parent_class)->draw ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_button_get_type (), GtkButton), _tmp0_); g_object_get ((GtkWidget*) self, "is-focus", &_tmp1_, NULL); _tmp2_ = _tmp1_; if (_tmp2_) { cairo_t* _tmp3_ = NULL; cairo_t* _tmp4_ = NULL; gint _tmp5_ = 0; gint _tmp6_ = 0; cairo_t* _tmp7_ = NULL; cairo_t* _tmp8_ = NULL; cairo_t* _tmp9_ = NULL; _tmp3_ = cr; cairo_save (_tmp3_); _tmp4_ = cr; _tmp5_ = gtk_widget_get_allocated_width ((GtkWidget*) self); _tmp6_ = gtk_widget_get_allocated_height ((GtkWidget*) self); cairo_rectangle (_tmp4_, (gdouble) 0, (gdouble) 0, (gdouble) _tmp5_, (gdouble) _tmp6_); _tmp7_ = cr; cairo_set_source_rgba (_tmp7_, 0.0, 0.0, 1.0, 0.1); _tmp8_ = cr; cairo_fill (_tmp8_); _tmp9_ = cr; cairo_restore (_tmp9_); } result = TRUE; return result; } static const gchar* switcher_ibus_engine_button_get_longname (SwitcherIBusEngineButton* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_longname; result = _tmp0_; return result; } static void switcher_ibus_engine_button_set_longname (SwitcherIBusEngineButton* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_longname); self->priv->_longname = _tmp1_; g_object_notify ((GObject *) self, "longname"); } static void switcher_ibus_engine_button_class_init (SwitcherIBusEngineButtonClass * klass) { switcher_ibus_engine_button_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (SwitcherIBusEngineButtonPrivate)); ((GtkWidgetClass *) klass)->draw = switcher_ibus_engine_button_real_draw; G_OBJECT_CLASS (klass)->get_property = _vala_switcher_ibus_engine_button_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_switcher_ibus_engine_button_set_property; G_OBJECT_CLASS (klass)->finalize = switcher_ibus_engine_button_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), SWITCHER_IBUS_ENGINE_BUTTON_LONGNAME, g_param_spec_string ("longname", "longname", "longname", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void switcher_ibus_engine_button_instance_init (SwitcherIBusEngineButton * self) { self->priv = SWITCHER_IBUS_ENGINE_BUTTON_GET_PRIVATE (self); } static void switcher_ibus_engine_button_finalize (GObject* obj) { SwitcherIBusEngineButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButton); _g_free0 (self->priv->_longname); G_OBJECT_CLASS (switcher_ibus_engine_button_parent_class)->finalize (obj); } static GType switcher_ibus_engine_button_get_type (void) { static volatile gsize switcher_ibus_engine_button_type_id__volatile = 0; if (g_once_init_enter (&switcher_ibus_engine_button_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (SwitcherIBusEngineButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) switcher_ibus_engine_button_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SwitcherIBusEngineButton), 0, (GInstanceInitFunc) switcher_ibus_engine_button_instance_init, NULL }; GType switcher_ibus_engine_button_type_id; switcher_ibus_engine_button_type_id = g_type_register_static (gtk_button_get_type (), "SwitcherIBusEngineButton", &g_define_type_info, 0); g_once_init_leave (&switcher_ibus_engine_button_type_id__volatile, switcher_ibus_engine_button_type_id); } return switcher_ibus_engine_button_type_id__volatile; } static void _vala_switcher_ibus_engine_button_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { SwitcherIBusEngineButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButton); switch (property_id) { case SWITCHER_IBUS_ENGINE_BUTTON_LONGNAME: g_value_set_string (value, switcher_ibus_engine_button_get_longname (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_switcher_ibus_engine_button_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { SwitcherIBusEngineButton * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, SWITCHER_TYPE_IBUS_ENGINE_BUTTON, SwitcherIBusEngineButton); switch (property_id) { case SWITCHER_IBUS_ENGINE_BUTTON_LONGNAME: switcher_ibus_engine_button_set_longname (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void switcher_class_init (SwitcherClass * klass) { switcher_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (SwitcherPrivate)); ((GtkWidgetClass *) klass)->show = switcher_real_show; ((GtkWidgetClass *) klass)->key_press_event = switcher_real_key_press_event; ((GtkWidgetClass *) klass)->key_release_event = switcher_real_key_release_event; G_OBJECT_CLASS (klass)->finalize = switcher_finalize; } static void switcher_instance_init (Switcher * self) { SwitcherIBusEngineButton** _tmp0_ = NULL; GHashFunc _tmp1_ = NULL; GEqualFunc _tmp2_ = NULL; GHashTable* _tmp3_ = NULL; self->priv = SWITCHER_GET_PRIVATE (self); _tmp0_ = g_new0 (SwitcherIBusEngineButton*, 0 + 1); self->priv->m_buttons = _tmp0_; self->priv->m_buttons_length1 = 0; self->priv->_m_buttons_size_ = self->priv->m_buttons_length1; self->priv->m_popup_delay_time = (guint) 0; self->priv->m_popup_delay_time_id = (guint) 0; _tmp1_ = g_str_hash; _tmp2_ = g_str_equal; _tmp3_ = g_hash_table_new_full (_tmp1_, _tmp2_, _g_free0_, _g_free0_); self->priv->m_xkb_languages = _tmp3_; } static void switcher_finalize (GObject* obj) { Switcher * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SWITCHER, Switcher); _g_object_unref0 (self->priv->m_box); _g_object_unref0 (self->priv->m_label); self->priv->m_buttons = (_vala_array_free (self->priv->m_buttons, self->priv->m_buttons_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_engines = (_vala_array_free (self->priv->m_engines, self->priv->m_engines_length1, (GDestroyNotify) g_object_unref), NULL); _g_main_loop_unref0 (self->priv->m_loop); _g_hash_table_unref0 (self->priv->m_xkb_languages); G_OBJECT_CLASS (switcher_parent_class)->finalize (obj); } GType switcher_get_type (void) { static volatile gsize switcher_type_id__volatile = 0; if (g_once_init_enter (&switcher_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (SwitcherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) switcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Switcher), 0, (GInstanceInitFunc) switcher_instance_init, NULL }; GType switcher_type_id; switcher_type_id = g_type_register_static (gtk_window_get_type (), "Switcher", &g_define_type_info, 0); g_once_init_leave (&switcher_type_id__volatile, switcher_type_id); } return switcher_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } ibus-1.5.11/ui/gtk3/notification-item.xml0000644000000000000000000000650412551654123015072 00000000000000 ibus-1.5.11/ui/gtk3/notification-watcher.xml0000644000000000000000000000240112551654123015561 00000000000000 ibus-1.5.11/ui/gtk3/candidatearea.vala0000644000000000000000000002506712551654123014345 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class CandidateArea : Gtk.Box { private bool m_vertical; private Gtk.Label[] m_labels; private Gtk.Label[] m_candidates; private Gtk.Widget[] m_widgets; private IBus.Text[] m_ibus_candidates; private uint m_focus_candidate; private bool m_show_cursor; private const string LABELS[] = { "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "a.", "b.", "c.", "d.", "e.", "f." }; private const string PREV_PAGE_ICONS[] = { "go-previous", "go-up" }; private const string NEXT_PAGE_ICONS[] = { "go-next", "go-down" }; public signal void candidate_clicked(uint index, uint button, uint state); public signal void page_up(); public signal void page_down(); public signal void cursor_up(); public signal void cursor_down(); public CandidateArea(bool vertical) { GLib.Object(); set_vertical(vertical, true); } public bool get_vertical() { return m_vertical; } public void set_vertical(bool vertical, bool force = false) { if (!force && m_vertical == vertical) return; m_vertical = vertical; orientation = vertical ? Gtk.Orientation.VERTICAL : Gtk.Orientation.HORIZONTAL; recreate_ui(); if (m_ibus_candidates.length > 0) { // Workaround a vala issue // https://bugzilla.gnome.org/show_bug.cgi?id=661130 set_candidates((owned)m_ibus_candidates, m_focus_candidate, m_show_cursor); show_all(); } } public void set_labels(IBus.Text[] labels) { int i; for (i = 0; i < int.min(16, labels.length); i++) m_labels[i].set_text(labels[i].get_text()); for (; i < 16; i++) m_labels[i].set_text(LABELS[i]); } public void set_candidates(IBus.Text[] candidates, uint focus_candidate = 0, bool show_cursor = true) { m_ibus_candidates = candidates; m_focus_candidate = focus_candidate; m_show_cursor = show_cursor; assert(candidates.length < 16); for (int i = 0 ; i < 16 ; i++) { Gtk.Label label = m_candidates[i]; bool visible = false; if (i < candidates.length) { Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(candidates[i]); if (i == focus_candidate && show_cursor) { Gtk.StyleContext context = m_candidates[i].get_style_context(); Gdk.RGBA color = context.get_color(Gtk.StateFlags.SELECTED); Pango.Attribute pango_attr = Pango.attr_foreground_new( (uint16)(color.red * uint16.MAX), (uint16)(color.green * uint16.MAX), (uint16)(color.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); color = context.get_background_color(Gtk.StateFlags.SELECTED); pango_attr = Pango.attr_background_new( (uint16)(color.red * uint16.MAX), (uint16)(color.green * uint16.MAX), (uint16)(color.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); } label.set_text(candidates[i].get_text()); label.set_attributes(attrs); visible = true; } else { label.set_text(""); label.set_attributes(new Pango.AttrList()); } if (m_vertical) { m_widgets[i * 2].set_visible(visible); m_widgets[i * 2 +1].set_visible(visible); } else { m_widgets[i].set_visible(visible); } } } private void recreate_ui() { foreach (Gtk.Widget w in get_children()) { w.destroy(); } Gtk.Button prev_button = new Gtk.Button(); prev_button.clicked.connect((b) => page_up()); prev_button.set_image(new Gtk.Image.from_icon_name( PREV_PAGE_ICONS[orientation], Gtk.IconSize.MENU)); prev_button.set_relief(Gtk.ReliefStyle.NONE); Gtk.Button next_button = new Gtk.Button(); next_button.clicked.connect((b) => page_down()); next_button.set_image(new Gtk.Image.from_icon_name( NEXT_PAGE_ICONS[orientation], Gtk.IconSize.MENU)); next_button.set_relief(Gtk.ReliefStyle.NONE); if (m_vertical) { // Add Candidates Gtk.Box candidates_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); pack_start(candidates_hbox, false, false, 0); Gtk.Box labels_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); labels_vbox.set_homogeneous(true); Gtk.Box candidates_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); candidates_vbox.set_homogeneous(true); candidates_hbox.pack_start(labels_vbox, false, false, 4); candidates_hbox.pack_start(new VSeparator(), false, false, 0); candidates_hbox.pack_start(candidates_vbox, true, true, 4); // Add HSeparator pack_start(new HSeparator(), false, false, 0); // Add buttons Gtk.Box buttons_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); Gtk.Label state_label = new Gtk.Label(null); state_label.set_size_request(20, -1); buttons_hbox.pack_start(state_label, true, true, 0); buttons_hbox.pack_start(prev_button, false, false, 0); buttons_hbox.pack_start(next_button, false, false, 0); pack_start(buttons_hbox, false, false, 0); m_labels = {}; m_candidates = {}; m_widgets = {}; for (int i = 0; i < 16; i++) { Gtk.Label label = new Gtk.Label(LABELS[i]); label.set_halign(Gtk.Align.START); label.set_valign(Gtk.Align.CENTER); label.show(); m_labels += label; Gtk.Label candidate = new Gtk.Label("test"); candidate.set_halign(Gtk.Align.START); candidate.set_valign(Gtk.Align.CENTER); candidate.show(); m_candidates += candidate; /* Use Gtk.Widget.set_margin_start() since gtk 3.12 */ label.set_padding(8, 0); candidate.set_padding(8, 0); // Make a copy of i to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 int index = i; Gtk.EventBox label_ebox = new Gtk.EventBox(); label_ebox.set_no_show_all(true); label_ebox.button_press_event.connect((w, e) => { candidate_clicked(i, e.button, e.state); return true; }); label_ebox.add(label); labels_vbox.pack_start(label_ebox, false, false, 2); m_widgets += label_ebox; Gtk.EventBox candidate_ebox = new Gtk.EventBox(); candidate_ebox.set_no_show_all(true); candidate_ebox.button_press_event.connect((w, e) => { candidate_clicked(index, e.button, e.state); return true; }); candidate_ebox.add(candidate); candidates_vbox.pack_start(candidate_ebox, false, false, 2); m_widgets += candidate_ebox; } } else { Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); add(hbox); m_labels = {}; m_candidates = {}; m_widgets = {}; for (int i = 0; i < 16; i++) { Gtk.Label label = new Gtk.Label(LABELS[i]); label.set_halign(Gtk.Align.START); label.set_valign(Gtk.Align.CENTER); label.show(); m_labels += label; Gtk.Label candidate = new Gtk.Label("test"); candidate.set_halign(Gtk.Align.START); candidate.set_valign(Gtk.Align.CENTER); candidate.show(); m_candidates += candidate; Gtk.Box candidate_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); candidate_hbox.show(); candidate_hbox.pack_start(label, false, false, 2); candidate_hbox.pack_start(candidate, false, false, 2); // Make a copy of i to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 int index = i; Gtk.EventBox ebox = new Gtk.EventBox(); ebox.set_no_show_all(true); ebox.button_press_event.connect((w, e) => { candidate_clicked(index, e.button, e.state); return true; }); ebox.add(candidate_hbox); hbox.pack_start(ebox, false, false, 4); m_widgets += ebox; } hbox.pack_start(new VSeparator(), false, false, 0); hbox.pack_start(prev_button, false, false, 0); hbox.pack_start(next_button, false, false, 0); } } } ibus-1.5.11/ui/gtk3/handle.vala0000644000000000000000000001532012551654123013022 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class Handle : Gtk.EventBox { private bool m_move_begined; private Gdk.Rectangle m_workarea; private Gdk.Point m_press_pos; public signal void move_begin(); public signal void move_end(); public Handle() { set_size_request(6, -1); Gdk.EventMask mask = Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK; set_events(mask); m_move_begined = false; // Currently it is too hard to notice this Handle on PropertyPanel // so now this widget is drawn by the gray color for the visibility. Gtk.CssProvider css_provider = new Gtk.CssProvider(); try { css_provider.load_from_data( "GtkEventBox { background-color: gray }", -1); } catch (GLib.Error error) { warning("Parse error in Handle: %s", error.message); } Gtk.StyleContext context = get_style_context(); context.add_provider(css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } public override void realize() { base.realize(); // get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.FLEUR)); } public override bool button_press_event(Gdk.EventButton event) { if (event.button != 1) return false; m_workarea = Gdk.Rectangle(){ x = 0, y = 0, width = int.MAX, height = int.MAX}; do { Gdk.Window root = Gdk.get_default_root_window(); Gdk.Atom property = Gdk.Atom.intern("_NET_CURRENT_DESKTOP", false); Gdk.Atom type = Gdk.Atom.intern("CARDINAL", false); Gdk.Atom actual_type; int format; uchar[] data; bool result; result = Gdk.property_get(root, property, type, 0, long.MAX, 0, out actual_type, out format, out data); if (!result || actual_type != type || format != 32 || data.length != 4) break; int index = data[0] | data[1] << 8 | data[2] << 16 | data[3] << 24; property = Gdk.Atom.intern("_NET_WORKAREA", false); type = Gdk.Atom.intern("CARDINAL", false); result = Gdk.property_get(root, property, type, 0, long.MAX, 0, out actual_type, out format, out data); if (!result || actual_type != type || format != 32 || data.length < (index + 1) * 16) break; int i = index * 4 * 4; m_workarea.x = data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24; i += 4; m_workarea.y = data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24; i += 4; m_workarea.width = data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24; i += 4; m_workarea.height = data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24; } while (false); m_move_begined = true; int x, y; Gtk.Window toplevel = (Gtk.Window)get_toplevel(); toplevel.get_position(out x, out y); m_press_pos.x = (int)event.x_root - x; m_press_pos.y = (int)event.y_root - y; move_begin(); return true; } public override bool button_release_event(Gdk.EventButton event) { if (event.button != 1) return false; m_move_begined = false; m_press_pos.x = 0; m_press_pos.y = 0; get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); move_end(); return true; } public override bool motion_notify_event(Gdk.EventMotion event) { if (!m_move_begined) return false; Gtk.Window toplevel = (Gtk.Window)get_toplevel(); int x = (int)(event.x_root - m_press_pos.x); int y = (int)(event.y_root - m_press_pos.y); if (x < m_workarea.x && x > m_workarea.x - 16) x = m_workarea.x; if (y < m_workarea.y && y > m_workarea.y - 16) y = m_workarea.y; int w, h; toplevel.get_size(out w, out h); if (x + w > m_workarea.x + m_workarea.width && x + w < m_workarea.x + m_workarea.width + 16) x = m_workarea.x + m_workarea.width - w; if (y + h > m_workarea.y + m_workarea.height && y + h < m_workarea.y + m_workarea.height + 16) y = m_workarea.y + m_workarea.height - w; toplevel.move(x, y); return true; } public override bool draw(Cairo.Context cr) { if (Gtk.cairo_should_draw_window(cr, get_window())) { Gtk.StyleContext context = get_style_context(); Gtk.Allocation allocation; get_allocation(out allocation); context.render_handle(cr, allocation.x, allocation.y + (allocation.height - 40) / 2, allocation.width, 40.0); } return false; } } ibus-1.5.11/ui/gtk3/property.c0000644000000000000000000014610412551655052012761 00000000000000/* property.c generated by valac 0.28.0, the Vala compiler * generated from property.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #define TYPE_PROPERTY_MANAGER (property_manager_get_type ()) #define PROPERTY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROPERTY_MANAGER, PropertyManager)) #define PROPERTY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROPERTY_MANAGER, PropertyManagerClass)) #define IS_PROPERTY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROPERTY_MANAGER)) #define IS_PROPERTY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROPERTY_MANAGER)) #define PROPERTY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROPERTY_MANAGER, PropertyManagerClass)) typedef struct _PropertyManager PropertyManager; typedef struct _PropertyManagerClass PropertyManagerClass; typedef struct _PropertyManagerPrivate PropertyManagerPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define TYPE_PROP_RADIO_MENU_ITEM (prop_radio_menu_item_get_type ()) #define PROP_RADIO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItem)) #define PROP_RADIO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItemClass)) #define IS_PROP_RADIO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_RADIO_MENU_ITEM)) #define IS_PROP_RADIO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_RADIO_MENU_ITEM)) #define PROP_RADIO_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItemClass)) typedef struct _PropRadioMenuItem PropRadioMenuItem; typedef struct _PropRadioMenuItemClass PropRadioMenuItemClass; #define TYPE_IPROP_ITEM (iprop_item_get_type ()) #define IPROP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IPROP_ITEM, IPropItem)) #define IS_IPROP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IPROP_ITEM)) #define IPROP_ITEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IPROP_ITEM, IPropItemIface)) typedef struct _IPropItem IPropItem; typedef struct _IPropItemIface IPropItemIface; #define TYPE_PROP_IMAGE_MENU_ITEM (prop_image_menu_item_get_type ()) #define PROP_IMAGE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItem)) #define PROP_IMAGE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItemClass)) #define IS_PROP_IMAGE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_IMAGE_MENU_ITEM)) #define IS_PROP_IMAGE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_IMAGE_MENU_ITEM)) #define PROP_IMAGE_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItemClass)) typedef struct _PropImageMenuItem PropImageMenuItem; typedef struct _PropImageMenuItemClass PropImageMenuItemClass; #define TYPE_PROP_CHECK_MENU_ITEM (prop_check_menu_item_get_type ()) #define PROP_CHECK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItem)) #define PROP_CHECK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItemClass)) #define IS_PROP_CHECK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_CHECK_MENU_ITEM)) #define IS_PROP_CHECK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_CHECK_MENU_ITEM)) #define PROP_CHECK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItemClass)) typedef struct _PropCheckMenuItem PropCheckMenuItem; typedef struct _PropCheckMenuItemClass PropCheckMenuItemClass; #define TYPE_PROP_SEPARATOR_MENU_ITEM (prop_separator_menu_item_get_type ()) #define PROP_SEPARATOR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItem)) #define PROP_SEPARATOR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItemClass)) #define IS_PROP_SEPARATOR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM)) #define IS_PROP_SEPARATOR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROP_SEPARATOR_MENU_ITEM)) #define PROP_SEPARATOR_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItemClass)) typedef struct _PropSeparatorMenuItem PropSeparatorMenuItem; typedef struct _PropSeparatorMenuItemClass PropSeparatorMenuItemClass; typedef struct _ParamSpecPropertyManager ParamSpecPropertyManager; typedef struct _PropImageMenuItemPrivate PropImageMenuItemPrivate; typedef struct _PropCheckMenuItemPrivate PropCheckMenuItemPrivate; typedef struct _PropRadioMenuItemPrivate PropRadioMenuItemPrivate; typedef struct _PropSeparatorMenuItemPrivate PropSeparatorMenuItemPrivate; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _PropertyManager { GTypeInstance parent_instance; volatile int ref_count; PropertyManagerPrivate * priv; }; struct _PropertyManagerClass { GTypeClass parent_class; void (*finalize) (PropertyManager *self); }; struct _PropertyManagerPrivate { IBusPropList* m_props; }; struct _IPropItemIface { GTypeInterface parent_iface; void (*update_property) (IPropItem* self, IBusProperty* prop); }; struct _ParamSpecPropertyManager { GParamSpec parent_instance; }; struct _PropImageMenuItem { GtkMenuItem parent_instance; PropImageMenuItemPrivate * priv; }; struct _PropImageMenuItemClass { GtkMenuItemClass parent_class; }; struct _PropImageMenuItemPrivate { IBusProperty* m_property; }; struct _PropCheckMenuItem { GtkCheckMenuItem parent_instance; PropCheckMenuItemPrivate * priv; }; struct _PropCheckMenuItemClass { GtkCheckMenuItemClass parent_class; }; struct _PropCheckMenuItemPrivate { IBusProperty* m_property; }; struct _PropRadioMenuItem { GtkRadioMenuItem parent_instance; PropRadioMenuItemPrivate * priv; }; struct _PropRadioMenuItemClass { GtkRadioMenuItemClass parent_class; }; struct _PropRadioMenuItemPrivate { IBusProperty* m_property; }; struct _PropSeparatorMenuItem { GtkSeparatorMenuItem parent_instance; PropSeparatorMenuItemPrivate * priv; }; struct _PropSeparatorMenuItemClass { GtkSeparatorMenuItemClass parent_class; }; struct _PropSeparatorMenuItemPrivate { IBusProperty* m_property; }; static gpointer property_manager_parent_class = NULL; static gpointer prop_image_menu_item_parent_class = NULL; static IPropItemIface* prop_image_menu_item_iprop_item_parent_iface = NULL; static gpointer prop_check_menu_item_parent_class = NULL; static IPropItemIface* prop_check_menu_item_iprop_item_parent_iface = NULL; static gpointer prop_radio_menu_item_parent_class = NULL; static IPropItemIface* prop_radio_menu_item_iprop_item_parent_iface = NULL; static gpointer prop_separator_menu_item_parent_class = NULL; static IPropItemIface* prop_separator_menu_item_iprop_item_parent_iface = NULL; gpointer property_manager_ref (gpointer instance); void property_manager_unref (gpointer instance); GParamSpec* param_spec_property_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_property_manager (GValue* value, gpointer v_object); void value_take_property_manager (GValue* value, gpointer v_object); gpointer value_get_property_manager (const GValue* value); GType property_manager_get_type (void) G_GNUC_CONST; #define PROPERTY_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROPERTY_MANAGER, PropertyManagerPrivate)) enum { PROPERTY_MANAGER_DUMMY_PROPERTY }; void property_manager_ProperyManager (PropertyManager* self); void property_manager_set_properties (PropertyManager* self, IBusPropList* props); gint property_manager_create_menu_items (PropertyManager* self, GtkMenu* menu); static gint property_manager_create_menu_items_internal (PropertyManager* self, IBusPropList* props, GtkMenu* menu); GType prop_radio_menu_item_get_type (void) G_GNUC_CONST; GType iprop_item_get_type (void) G_GNUC_CONST; PropImageMenuItem* prop_image_menu_item_new (IBusProperty* property); PropImageMenuItem* prop_image_menu_item_construct (GType object_type, IBusProperty* property); GType prop_image_menu_item_get_type (void) G_GNUC_CONST; PropCheckMenuItem* prop_check_menu_item_new (IBusProperty* property); PropCheckMenuItem* prop_check_menu_item_construct (GType object_type, IBusProperty* property); GType prop_check_menu_item_get_type (void) G_GNUC_CONST; PropRadioMenuItem* prop_radio_menu_item_new (IBusProperty* property, PropRadioMenuItem* group_source); PropRadioMenuItem* prop_radio_menu_item_construct (GType object_type, IBusProperty* property, PropRadioMenuItem* group_source); PropSeparatorMenuItem* prop_separator_menu_item_new (IBusProperty* property); PropSeparatorMenuItem* prop_separator_menu_item_construct (GType object_type, IBusProperty* property); GType prop_separator_menu_item_get_type (void) G_GNUC_CONST; static void ____lambda22_ (PropertyManager* self, const gchar* k, gint s); static void _____lambda22__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self); void property_manager_update_property (PropertyManager* self, IBusProperty* prop); PropertyManager* property_manager_new (void); PropertyManager* property_manager_construct (GType object_type); static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void property_manager_finalize (PropertyManager* obj); void iprop_item_update_property (IPropItem* self, IBusProperty* prop); #define PROP_IMAGE_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItemPrivate)) enum { PROP_IMAGE_MENU_ITEM_DUMMY_PROPERTY }; static void prop_image_menu_item_sync (PropImageMenuItem* self); static void prop_image_menu_item_real_update_property (IPropItem* base, IBusProperty* property); static void prop_image_menu_item_real_activate (GtkMenuItem* base); static void prop_image_menu_item_finalize (GObject* obj); #define PROP_CHECK_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItemPrivate)) enum { PROP_CHECK_MENU_ITEM_DUMMY_PROPERTY }; static void prop_check_menu_item_sync (PropCheckMenuItem* self); static void prop_check_menu_item_real_update_property (IPropItem* base, IBusProperty* property); static void prop_check_menu_item_real_toggled (GtkCheckMenuItem* base); static void prop_check_menu_item_finalize (GObject* obj); #define PROP_RADIO_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItemPrivate)) enum { PROP_RADIO_MENU_ITEM_DUMMY_PROPERTY }; static void prop_radio_menu_item_sync (PropRadioMenuItem* self); static void prop_radio_menu_item_real_update_property (IPropItem* base, IBusProperty* property); static void prop_radio_menu_item_real_toggled (GtkCheckMenuItem* base); static void prop_radio_menu_item_finalize (GObject* obj); #define PROP_SEPARATOR_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItemPrivate)) enum { PROP_SEPARATOR_MENU_ITEM_DUMMY_PROPERTY }; static void prop_separator_menu_item_real_update_property (IPropItem* base, IBusProperty* property); static void prop_separator_menu_item_finalize (GObject* obj); void property_manager_ProperyManager (PropertyManager* self) { g_return_if_fail (self != NULL); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } void property_manager_set_properties (PropertyManager* self, IBusPropList* props) { IBusPropList* _tmp0_ = NULL; IBusPropList* _tmp1_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); _tmp0_ = props; _tmp1_ = _g_object_ref0 (_tmp0_); _g_object_unref0 (self->priv->m_props); self->priv->m_props = _tmp1_; } gint property_manager_create_menu_items (PropertyManager* self, GtkMenu* menu) { gint result = 0; IBusPropList* _tmp0_ = NULL; GtkMenu* _tmp1_ = NULL; gint _tmp2_ = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (menu != NULL, 0); _tmp0_ = self->priv->m_props; _tmp1_ = menu; _tmp2_ = property_manager_create_menu_items_internal (self, _tmp0_, _tmp1_); result = _tmp2_; return result; } static void ____lambda22_ (PropertyManager* self, const gchar* k, gint s) { const gchar* _tmp0_ = NULL; gint _tmp1_ = 0; g_return_if_fail (k != NULL); _tmp0_ = k; _tmp1_ = s; g_signal_emit_by_name (self, "property-activate", _tmp0_, _tmp1_); } static void _____lambda22__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda22_ ((PropertyManager*) self, key, state); } static gint property_manager_create_menu_items_internal (PropertyManager* self, IBusPropList* props, GtkMenu* menu) { gint result = 0; gint i = 0; PropRadioMenuItem* last_radio = NULL; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (props != NULL, 0); g_return_val_if_fail (menu != NULL, 0); i = 0; last_radio = NULL; while (TRUE) { IBusProperty* prop = NULL; IBusPropList* _tmp0_ = NULL; gint _tmp1_ = 0; IBusProperty* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; gint _tmp7_ = 0; IPropItem* item = NULL; IBusProperty* _tmp8_ = NULL; IBusPropType _tmp9_ = 0; IBusProperty* _tmp36_ = NULL; IBusPropType _tmp37_ = 0; IPropItem* _tmp38_ = NULL; _tmp0_ = props; _tmp1_ = i; _tmp2_ = ibus_prop_list_get (_tmp0_, (guint) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); prop = _tmp3_; _tmp4_ = prop; if (_tmp4_ == NULL) { _g_object_unref0 (prop); break; } _tmp5_ = prop; _tmp6_ = ibus_property_get_key (_tmp5_); g_debug ("property.vala:44: ins prop = %s", _tmp6_); _tmp7_ = i; i = _tmp7_ + 1; item = NULL; _tmp8_ = prop; _tmp9_ = ibus_property_get_prop_type (_tmp8_); switch (_tmp9_) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp10_ = NULL; PropImageMenuItem* _tmp11_ = NULL; _tmp10_ = prop; _tmp11_ = prop_image_menu_item_new (_tmp10_); g_object_ref_sink (_tmp11_); _g_object_unref0 (item); item = (IPropItem*) _tmp11_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp12_ = NULL; PropCheckMenuItem* _tmp13_ = NULL; _tmp12_ = prop; _tmp13_ = prop_check_menu_item_new (_tmp12_); g_object_ref_sink (_tmp13_); _g_object_unref0 (item); item = (IPropItem*) _tmp13_; break; } case PROP_TYPE_RADIO: { { PropRadioMenuItem* radio = NULL; IBusProperty* _tmp14_ = NULL; PropRadioMenuItem* _tmp15_ = NULL; PropRadioMenuItem* _tmp16_ = NULL; PropRadioMenuItem* _tmp17_ = NULL; IPropItem* _tmp18_ = NULL; PropRadioMenuItem* _tmp19_ = NULL; PropRadioMenuItem* _tmp20_ = NULL; _tmp14_ = prop; _tmp15_ = last_radio; _tmp16_ = prop_radio_menu_item_new (_tmp14_, _tmp15_); g_object_ref_sink (_tmp16_); radio = _tmp16_; _tmp17_ = radio; _tmp18_ = _g_object_ref0 ((IPropItem*) _tmp17_); _g_object_unref0 (item); item = _tmp18_; _tmp19_ = radio; _tmp20_ = _g_object_ref0 (_tmp19_); _g_object_unref0 (last_radio); last_radio = _tmp20_; _g_object_unref0 (radio); } break; } case PROP_TYPE_MENU: { { PropImageMenuItem* menuitem = NULL; IBusProperty* _tmp21_ = NULL; PropImageMenuItem* _tmp22_ = NULL; PropImageMenuItem* _tmp23_ = NULL; IPropItem* _tmp24_ = NULL; GtkMenu* submenu = NULL; GtkMenu* _tmp25_ = NULL; IBusProperty* _tmp26_ = NULL; IBusPropList* _tmp27_ = NULL; GtkMenu* _tmp28_ = NULL; gint _tmp29_ = 0; _tmp21_ = prop; _tmp22_ = prop_image_menu_item_new (_tmp21_); g_object_ref_sink (_tmp22_); menuitem = _tmp22_; _tmp23_ = menuitem; _tmp24_ = _g_object_ref0 ((IPropItem*) _tmp23_); _g_object_unref0 (item); item = _tmp24_; _tmp25_ = (GtkMenu*) gtk_menu_new (); g_object_ref_sink (_tmp25_); submenu = _tmp25_; _tmp26_ = prop; _tmp27_ = ibus_property_get_sub_props (_tmp26_); _tmp28_ = submenu; _tmp29_ = property_manager_create_menu_items_internal (self, _tmp27_, _tmp28_); if (_tmp29_ > 0) { PropImageMenuItem* _tmp30_ = NULL; GtkMenu* _tmp31_ = NULL; _tmp30_ = menuitem; _tmp31_ = submenu; gtk_menu_item_set_submenu ((GtkMenuItem*) _tmp30_, (GtkWidget*) _tmp31_); } _g_object_unref0 (submenu); _g_object_unref0 (menuitem); } break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp32_ = NULL; PropSeparatorMenuItem* _tmp33_ = NULL; _tmp32_ = prop; _tmp33_ = prop_separator_menu_item_new (_tmp32_); g_object_ref_sink (_tmp33_); _g_object_unref0 (item); item = (IPropItem*) _tmp33_; break; } default: { IBusProperty* _tmp34_ = NULL; IBusPropType _tmp35_ = 0; _tmp34_ = prop; _tmp35_ = ibus_property_get_prop_type (_tmp34_); g_warning ("property.vala:76: unknown property type %d", (gint) _tmp35_); break; } } _tmp36_ = prop; _tmp37_ = ibus_property_get_prop_type (_tmp36_); if (_tmp37_ != PROP_TYPE_RADIO) { _g_object_unref0 (last_radio); last_radio = NULL; } _tmp38_ = item; if (_tmp38_ != NULL) { GtkMenu* _tmp39_ = NULL; IPropItem* _tmp40_ = NULL; IPropItem* _tmp41_ = NULL; _tmp39_ = menu; _tmp40_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp39_, (GtkWidget*) (G_TYPE_CHECK_INSTANCE_TYPE (_tmp40_, gtk_menu_item_get_type ()) ? ((GtkMenuItem*) _tmp40_) : NULL)); _tmp41_ = item; g_signal_connect (_tmp41_, "property-activate", (GCallback) _____lambda22__iprop_item_property_activate, self); } _g_object_unref0 (item); _g_object_unref0 (prop); } result = i; _g_object_unref0 (last_radio); return result; } void property_manager_update_property (PropertyManager* self, IBusProperty* prop) { IBusProperty* _tmp0_ = NULL; IBusPropList* _tmp1_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = prop; _vala_assert (_tmp0_ != NULL, "prop != null"); _tmp1_ = self->priv->m_props; if (_tmp1_ != NULL) { IBusPropList* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; _tmp2_ = self->priv->m_props; _tmp3_ = prop; ibus_prop_list_update_property (_tmp2_, _tmp3_); } } PropertyManager* property_manager_construct (GType object_type) { PropertyManager* self = NULL; self = (PropertyManager*) g_type_create_instance (object_type); return self; } PropertyManager* property_manager_new (void) { return property_manager_construct (TYPE_PROPERTY_MANAGER); } static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_INT) (gpointer data1, const char* arg_1, gint arg_2, gpointer data2); register GMarshalFunc_VOID__STRING_INT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_string (param_values + 1), g_value_get_int (param_values + 2), data2); } static void value_property_manager_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_property_manager_free_value (GValue* value) { if (value->data[0].v_pointer) { property_manager_unref (value->data[0].v_pointer); } } static void value_property_manager_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = property_manager_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_property_manager_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_property_manager_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { PropertyManager* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = property_manager_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_property_manager_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { PropertyManager** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = property_manager_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_property_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecPropertyManager* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_PROPERTY_MANAGER), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer value_get_property_manager (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PROPERTY_MANAGER), NULL); return value->data[0].v_pointer; } void value_set_property_manager (GValue* value, gpointer v_object) { PropertyManager* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PROPERTY_MANAGER)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_PROPERTY_MANAGER)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; property_manager_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { property_manager_unref (old); } } void value_take_property_manager (GValue* value, gpointer v_object) { PropertyManager* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PROPERTY_MANAGER)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_PROPERTY_MANAGER)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { property_manager_unref (old); } } static void property_manager_class_init (PropertyManagerClass * klass) { property_manager_parent_class = g_type_class_peek_parent (klass); ((PropertyManagerClass *) klass)->finalize = property_manager_finalize; g_type_class_add_private (klass, sizeof (PropertyManagerPrivate)); g_signal_new ("property_activate", TYPE_PROPERTY_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); } static void property_manager_instance_init (PropertyManager * self) { self->priv = PROPERTY_MANAGER_GET_PRIVATE (self); self->ref_count = 1; } static void property_manager_finalize (PropertyManager* obj) { PropertyManager * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROPERTY_MANAGER, PropertyManager); g_signal_handlers_destroy (self); _g_object_unref0 (self->priv->m_props); } GType property_manager_get_type (void) { static volatile gsize property_manager_type_id__volatile = 0; if (g_once_init_enter (&property_manager_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { value_property_manager_init, value_property_manager_free_value, value_property_manager_copy_value, value_property_manager_peek_pointer, "p", value_property_manager_collect_value, "p", value_property_manager_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (PropertyManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) property_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropertyManager), 0, (GInstanceInitFunc) property_manager_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType property_manager_type_id; property_manager_type_id = g_type_register_fundamental (g_type_fundamental_next (), "PropertyManager", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&property_manager_type_id__volatile, property_manager_type_id); } return property_manager_type_id__volatile; } gpointer property_manager_ref (gpointer instance) { PropertyManager* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void property_manager_unref (gpointer instance) { PropertyManager* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { PROPERTY_MANAGER_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } void iprop_item_update_property (IPropItem* self, IBusProperty* prop) { g_return_if_fail (self != NULL); IPROP_ITEM_GET_INTERFACE (self)->update_property (self, prop); } static void iprop_item_base_init (IPropItemIface * iface) { static gboolean initialized = FALSE; if (!initialized) { initialized = TRUE; g_signal_new ("property_activate", TYPE_IPROP_ITEM, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); } } GType iprop_item_get_type (void) { static volatile gsize iprop_item_type_id__volatile = 0; if (g_once_init_enter (&iprop_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IPropItemIface), (GBaseInitFunc) iprop_item_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; GType iprop_item_type_id; iprop_item_type_id = g_type_register_static (G_TYPE_INTERFACE, "IPropItem", &g_define_type_info, 0); g_type_interface_add_prerequisite (iprop_item_type_id, G_TYPE_OBJECT); g_once_init_leave (&iprop_item_type_id__volatile, iprop_item_type_id); } return iprop_item_type_id__volatile; } PropImageMenuItem* prop_image_menu_item_construct (GType object_type, IBusProperty* property) { PropImageMenuItem * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; g_return_val_if_fail (property != NULL, NULL); self = (PropImageMenuItem*) g_object_new (object_type, NULL); _tmp0_ = property; _vala_assert (_tmp0_ != NULL, "property != null"); _tmp1_ = property; _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp2_; gtk_widget_set_no_show_all ((GtkWidget*) self, TRUE); prop_image_menu_item_sync (self); return self; } PropImageMenuItem* prop_image_menu_item_new (IBusProperty* property) { return prop_image_menu_item_construct (TYPE_PROP_IMAGE_MENU_ITEM, property); } static void prop_image_menu_item_real_update_property (IPropItem* base, IBusProperty* property) { PropImageMenuItem * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; IBusText* _tmp6_ = NULL; IBusProperty* _tmp7_ = NULL; IBusProperty* _tmp8_ = NULL; gboolean _tmp9_ = FALSE; IBusProperty* _tmp10_ = NULL; IBusProperty* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; IBusProperty* _tmp13_ = NULL; IBusProperty* _tmp14_ = NULL; IBusText* _tmp15_ = NULL; IBusProperty* _tmp16_ = NULL; IBusProperty* _tmp17_ = NULL; IBusPropState _tmp18_ = 0; self = (PropImageMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = property; _tmp3_ = ibus_property_get_key (_tmp2_); if (g_strcmp0 (_tmp1_, _tmp3_) != 0) { return; } _tmp4_ = self->priv->m_property; _tmp5_ = property; _tmp6_ = ibus_property_get_label (_tmp5_); ibus_property_set_label (_tmp4_, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = property; _tmp9_ = ibus_property_get_visible (_tmp8_); ibus_property_set_visible (_tmp7_, _tmp9_); _tmp10_ = self->priv->m_property; _tmp11_ = property; _tmp12_ = ibus_property_get_sensitive (_tmp11_); ibus_property_set_sensitive (_tmp10_, _tmp12_); _tmp13_ = self->priv->m_property; _tmp14_ = property; _tmp15_ = ibus_property_get_tooltip (_tmp14_); ibus_property_set_tooltip (_tmp13_, _tmp15_); _tmp16_ = self->priv->m_property; _tmp17_ = property; _tmp18_ = ibus_property_get_state (_tmp17_); ibus_property_set_state (_tmp16_, _tmp18_); prop_image_menu_item_sync (self); } static void prop_image_menu_item_sync (PropImageMenuItem* self) { IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; IBusProperty* _tmp5_ = NULL; gboolean _tmp6_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_label (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); gtk_menu_item_set_label ((GtkMenuItem*) self, _tmp2_); _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_visible (_tmp3_); gtk_widget_set_visible ((GtkWidget*) self, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_sensitive (_tmp5_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp6_); } static void prop_image_menu_item_real_activate (GtkMenuItem* base) { PropImageMenuItem * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; IBusPropState _tmp3_ = 0; self = (PropImageMenuItem*) base; _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = self->priv->m_property; _tmp3_ = ibus_property_get_state (_tmp2_); g_signal_emit_by_name ((IPropItem*) self, "property-activate", _tmp1_, (gint) _tmp3_); } static void prop_image_menu_item_class_init (PropImageMenuItemClass * klass) { prop_image_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropImageMenuItemPrivate)); ((GtkMenuItemClass *) klass)->activate = prop_image_menu_item_real_activate; G_OBJECT_CLASS (klass)->finalize = prop_image_menu_item_finalize; } static void prop_image_menu_item_iprop_item_interface_init (IPropItemIface * iface) { prop_image_menu_item_iprop_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropItem*, IBusProperty*)) prop_image_menu_item_real_update_property; } static void prop_image_menu_item_instance_init (PropImageMenuItem * self) { self->priv = PROP_IMAGE_MENU_ITEM_GET_PRIVATE (self); } static void prop_image_menu_item_finalize (GObject* obj) { PropImageMenuItem * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_IMAGE_MENU_ITEM, PropImageMenuItem); _g_object_unref0 (self->priv->m_property); G_OBJECT_CLASS (prop_image_menu_item_parent_class)->finalize (obj); } GType prop_image_menu_item_get_type (void) { static volatile gsize prop_image_menu_item_type_id__volatile = 0; if (g_once_init_enter (&prop_image_menu_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropImageMenuItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_image_menu_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropImageMenuItem), 0, (GInstanceInitFunc) prop_image_menu_item_instance_init, NULL }; static const GInterfaceInfo iprop_item_info = { (GInterfaceInitFunc) prop_image_menu_item_iprop_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_image_menu_item_type_id; prop_image_menu_item_type_id = g_type_register_static (gtk_menu_item_get_type (), "PropImageMenuItem", &g_define_type_info, 0); g_type_add_interface_static (prop_image_menu_item_type_id, TYPE_IPROP_ITEM, &iprop_item_info); g_once_init_leave (&prop_image_menu_item_type_id__volatile, prop_image_menu_item_type_id); } return prop_image_menu_item_type_id__volatile; } PropCheckMenuItem* prop_check_menu_item_construct (GType object_type, IBusProperty* property) { PropCheckMenuItem * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; g_return_val_if_fail (property != NULL, NULL); self = (PropCheckMenuItem*) g_object_new (object_type, NULL); _tmp0_ = property; _vala_assert (_tmp0_ != NULL, "property != null"); _tmp1_ = property; _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp2_; gtk_widget_set_no_show_all ((GtkWidget*) self, TRUE); prop_check_menu_item_sync (self); return self; } PropCheckMenuItem* prop_check_menu_item_new (IBusProperty* property) { return prop_check_menu_item_construct (TYPE_PROP_CHECK_MENU_ITEM, property); } static void prop_check_menu_item_real_update_property (IPropItem* base, IBusProperty* property) { PropCheckMenuItem * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; IBusText* _tmp6_ = NULL; IBusProperty* _tmp7_ = NULL; IBusProperty* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusProperty* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; IBusProperty* _tmp13_ = NULL; IBusProperty* _tmp14_ = NULL; gboolean _tmp15_ = FALSE; IBusProperty* _tmp16_ = NULL; IBusProperty* _tmp17_ = NULL; IBusText* _tmp18_ = NULL; IBusProperty* _tmp19_ = NULL; IBusProperty* _tmp20_ = NULL; IBusPropState _tmp21_ = 0; self = (PropCheckMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = property; _tmp3_ = ibus_property_get_key (_tmp2_); if (g_strcmp0 (_tmp1_, _tmp3_) != 0) { return; } _tmp4_ = self->priv->m_property; _tmp5_ = property; _tmp6_ = ibus_property_get_label (_tmp5_); ibus_property_set_label (_tmp4_, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = property; _tmp9_ = ibus_property_get_icon (_tmp8_); ibus_property_set_icon (_tmp7_, _tmp9_); _tmp10_ = self->priv->m_property; _tmp11_ = property; _tmp12_ = ibus_property_get_visible (_tmp11_); ibus_property_set_visible (_tmp10_, _tmp12_); _tmp13_ = self->priv->m_property; _tmp14_ = property; _tmp15_ = ibus_property_get_sensitive (_tmp14_); ibus_property_set_sensitive (_tmp13_, _tmp15_); _tmp16_ = self->priv->m_property; _tmp17_ = property; _tmp18_ = ibus_property_get_tooltip (_tmp17_); ibus_property_set_tooltip (_tmp16_, _tmp18_); _tmp19_ = self->priv->m_property; _tmp20_ = property; _tmp21_ = ibus_property_get_state (_tmp20_); ibus_property_set_state (_tmp19_, _tmp21_); prop_check_menu_item_sync (self); } static void prop_check_menu_item_sync (PropCheckMenuItem* self) { IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; IBusProperty* _tmp5_ = NULL; gboolean _tmp6_ = FALSE; IBusProperty* _tmp7_ = NULL; IBusPropState _tmp8_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_label (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); gtk_menu_item_set_label ((GtkMenuItem*) self, _tmp2_); _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_visible (_tmp3_); gtk_widget_set_visible ((GtkWidget*) self, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_sensitive (_tmp5_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = ibus_property_get_state (_tmp7_); gtk_check_menu_item_set_active ((GtkCheckMenuItem*) self, _tmp8_ == PROP_STATE_CHECKED); } static void prop_check_menu_item_real_toggled (GtkCheckMenuItem* base) { PropCheckMenuItem * self; IBusPropState _tmp0_ = 0; gboolean _tmp1_ = FALSE; IBusPropState new_state = 0; IBusProperty* _tmp2_ = NULL; IBusPropState _tmp3_ = 0; IBusPropState _tmp4_ = 0; self = (PropCheckMenuItem*) base; _tmp1_ = gtk_check_menu_item_get_active ((GtkCheckMenuItem*) self); if (_tmp1_) { _tmp0_ = PROP_STATE_CHECKED; } else { _tmp0_ = PROP_STATE_UNCHECKED; } new_state = _tmp0_; _tmp2_ = self->priv->m_property; _tmp3_ = ibus_property_get_state (_tmp2_); _tmp4_ = new_state; if (_tmp3_ != _tmp4_) { IBusProperty* _tmp5_ = NULL; IBusPropState _tmp6_ = 0; IBusProperty* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; IBusProperty* _tmp9_ = NULL; IBusPropState _tmp10_ = 0; _tmp5_ = self->priv->m_property; _tmp6_ = new_state; ibus_property_set_state (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = ibus_property_get_key (_tmp7_); _tmp9_ = self->priv->m_property; _tmp10_ = ibus_property_get_state (_tmp9_); g_signal_emit_by_name ((IPropItem*) self, "property-activate", _tmp8_, (gint) _tmp10_); } } static void prop_check_menu_item_class_init (PropCheckMenuItemClass * klass) { prop_check_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropCheckMenuItemPrivate)); ((GtkCheckMenuItemClass *) klass)->toggled = prop_check_menu_item_real_toggled; G_OBJECT_CLASS (klass)->finalize = prop_check_menu_item_finalize; } static void prop_check_menu_item_iprop_item_interface_init (IPropItemIface * iface) { prop_check_menu_item_iprop_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropItem*, IBusProperty*)) prop_check_menu_item_real_update_property; } static void prop_check_menu_item_instance_init (PropCheckMenuItem * self) { self->priv = PROP_CHECK_MENU_ITEM_GET_PRIVATE (self); } static void prop_check_menu_item_finalize (GObject* obj) { PropCheckMenuItem * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_CHECK_MENU_ITEM, PropCheckMenuItem); _g_object_unref0 (self->priv->m_property); G_OBJECT_CLASS (prop_check_menu_item_parent_class)->finalize (obj); } GType prop_check_menu_item_get_type (void) { static volatile gsize prop_check_menu_item_type_id__volatile = 0; if (g_once_init_enter (&prop_check_menu_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropCheckMenuItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_check_menu_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropCheckMenuItem), 0, (GInstanceInitFunc) prop_check_menu_item_instance_init, NULL }; static const GInterfaceInfo iprop_item_info = { (GInterfaceInitFunc) prop_check_menu_item_iprop_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_check_menu_item_type_id; prop_check_menu_item_type_id = g_type_register_static (gtk_check_menu_item_get_type (), "PropCheckMenuItem", &g_define_type_info, 0); g_type_add_interface_static (prop_check_menu_item_type_id, TYPE_IPROP_ITEM, &iprop_item_info); g_once_init_leave (&prop_check_menu_item_type_id__volatile, prop_check_menu_item_type_id); } return prop_check_menu_item_type_id__volatile; } PropRadioMenuItem* prop_radio_menu_item_construct (GType object_type, IBusProperty* property, PropRadioMenuItem* group_source) { PropRadioMenuItem * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; PropRadioMenuItem* _tmp3_ = NULL; g_return_val_if_fail (property != NULL, NULL); self = (PropRadioMenuItem*) g_object_new (object_type, NULL); _tmp0_ = property; _vala_assert (_tmp0_ != NULL, "property != null"); _tmp1_ = property; _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp2_; gtk_widget_set_no_show_all ((GtkWidget*) self, TRUE); _tmp3_ = group_source; if (_tmp3_ != NULL) { PropRadioMenuItem* _tmp4_ = NULL; GSList* _tmp5_ = NULL; _tmp4_ = group_source; _tmp5_ = gtk_radio_menu_item_get_group ((GtkRadioMenuItem*) _tmp4_); gtk_radio_menu_item_set_group ((GtkRadioMenuItem*) self, _tmp5_); } prop_radio_menu_item_sync (self); return self; } PropRadioMenuItem* prop_radio_menu_item_new (IBusProperty* property, PropRadioMenuItem* group_source) { return prop_radio_menu_item_construct (TYPE_PROP_RADIO_MENU_ITEM, property, group_source); } static void prop_radio_menu_item_real_update_property (IPropItem* base, IBusProperty* property) { PropRadioMenuItem * self; IBusProperty* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; IBusProperty* _tmp4_ = NULL; IBusProperty* _tmp5_ = NULL; IBusText* _tmp6_ = NULL; IBusProperty* _tmp7_ = NULL; IBusProperty* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; IBusProperty* _tmp10_ = NULL; IBusProperty* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; IBusProperty* _tmp13_ = NULL; IBusProperty* _tmp14_ = NULL; gboolean _tmp15_ = FALSE; IBusProperty* _tmp16_ = NULL; IBusProperty* _tmp17_ = NULL; IBusText* _tmp18_ = NULL; IBusProperty* _tmp19_ = NULL; IBusProperty* _tmp20_ = NULL; IBusPropState _tmp21_ = 0; self = (PropRadioMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = property; _tmp3_ = ibus_property_get_key (_tmp2_); if (g_strcmp0 (_tmp1_, _tmp3_) != 0) { return; } _tmp4_ = self->priv->m_property; _tmp5_ = property; _tmp6_ = ibus_property_get_label (_tmp5_); ibus_property_set_label (_tmp4_, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = property; _tmp9_ = ibus_property_get_icon (_tmp8_); ibus_property_set_icon (_tmp7_, _tmp9_); _tmp10_ = self->priv->m_property; _tmp11_ = property; _tmp12_ = ibus_property_get_visible (_tmp11_); ibus_property_set_visible (_tmp10_, _tmp12_); _tmp13_ = self->priv->m_property; _tmp14_ = property; _tmp15_ = ibus_property_get_sensitive (_tmp14_); ibus_property_set_sensitive (_tmp13_, _tmp15_); _tmp16_ = self->priv->m_property; _tmp17_ = property; _tmp18_ = ibus_property_get_tooltip (_tmp17_); ibus_property_set_tooltip (_tmp16_, _tmp18_); _tmp19_ = self->priv->m_property; _tmp20_ = property; _tmp21_ = ibus_property_get_state (_tmp20_); ibus_property_set_state (_tmp19_, _tmp21_); prop_radio_menu_item_sync (self); } static void prop_radio_menu_item_sync (PropRadioMenuItem* self) { IBusProperty* _tmp0_ = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; IBusProperty* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; IBusProperty* _tmp5_ = NULL; gboolean _tmp6_ = FALSE; IBusProperty* _tmp7_ = NULL; IBusPropState _tmp8_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_label (_tmp0_); _tmp2_ = ibus_text_get_text (_tmp1_); gtk_menu_item_set_label ((GtkMenuItem*) self, _tmp2_); _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_visible (_tmp3_); gtk_widget_set_visible ((GtkWidget*) self, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_sensitive (_tmp5_); gtk_widget_set_sensitive ((GtkWidget*) self, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = ibus_property_get_state (_tmp7_); gtk_check_menu_item_set_active ((GtkCheckMenuItem*) self, _tmp8_ == PROP_STATE_CHECKED); } static void prop_radio_menu_item_real_toggled (GtkCheckMenuItem* base) { PropRadioMenuItem * self; IBusPropState _tmp0_ = 0; gboolean _tmp1_ = FALSE; IBusPropState new_state = 0; IBusProperty* _tmp2_ = NULL; IBusPropState _tmp3_ = 0; IBusPropState _tmp4_ = 0; self = (PropRadioMenuItem*) base; _tmp1_ = gtk_check_menu_item_get_active ((GtkCheckMenuItem*) self); if (_tmp1_) { _tmp0_ = PROP_STATE_CHECKED; } else { _tmp0_ = PROP_STATE_UNCHECKED; } new_state = _tmp0_; _tmp2_ = self->priv->m_property; _tmp3_ = ibus_property_get_state (_tmp2_); _tmp4_ = new_state; if (_tmp3_ != _tmp4_) { IBusProperty* _tmp5_ = NULL; IBusPropState _tmp6_ = 0; IBusProperty* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; IBusProperty* _tmp9_ = NULL; IBusPropState _tmp10_ = 0; _tmp5_ = self->priv->m_property; _tmp6_ = new_state; ibus_property_set_state (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_property; _tmp8_ = ibus_property_get_key (_tmp7_); _tmp9_ = self->priv->m_property; _tmp10_ = ibus_property_get_state (_tmp9_); g_signal_emit_by_name ((IPropItem*) self, "property-activate", _tmp8_, (gint) _tmp10_); } } static void prop_radio_menu_item_class_init (PropRadioMenuItemClass * klass) { prop_radio_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropRadioMenuItemPrivate)); ((GtkCheckMenuItemClass *) klass)->toggled = prop_radio_menu_item_real_toggled; G_OBJECT_CLASS (klass)->finalize = prop_radio_menu_item_finalize; } static void prop_radio_menu_item_iprop_item_interface_init (IPropItemIface * iface) { prop_radio_menu_item_iprop_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropItem*, IBusProperty*)) prop_radio_menu_item_real_update_property; } static void prop_radio_menu_item_instance_init (PropRadioMenuItem * self) { self->priv = PROP_RADIO_MENU_ITEM_GET_PRIVATE (self); } static void prop_radio_menu_item_finalize (GObject* obj) { PropRadioMenuItem * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_RADIO_MENU_ITEM, PropRadioMenuItem); _g_object_unref0 (self->priv->m_property); G_OBJECT_CLASS (prop_radio_menu_item_parent_class)->finalize (obj); } GType prop_radio_menu_item_get_type (void) { static volatile gsize prop_radio_menu_item_type_id__volatile = 0; if (g_once_init_enter (&prop_radio_menu_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropRadioMenuItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_radio_menu_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropRadioMenuItem), 0, (GInstanceInitFunc) prop_radio_menu_item_instance_init, NULL }; static const GInterfaceInfo iprop_item_info = { (GInterfaceInitFunc) prop_radio_menu_item_iprop_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_radio_menu_item_type_id; prop_radio_menu_item_type_id = g_type_register_static (gtk_radio_menu_item_get_type (), "PropRadioMenuItem", &g_define_type_info, 0); g_type_add_interface_static (prop_radio_menu_item_type_id, TYPE_IPROP_ITEM, &iprop_item_info); g_once_init_leave (&prop_radio_menu_item_type_id__volatile, prop_radio_menu_item_type_id); } return prop_radio_menu_item_type_id__volatile; } PropSeparatorMenuItem* prop_separator_menu_item_construct (GType object_type, IBusProperty* property) { PropSeparatorMenuItem * self = NULL; IBusProperty* _tmp0_ = NULL; IBusProperty* _tmp1_ = NULL; IBusProperty* _tmp2_ = NULL; g_return_val_if_fail (property != NULL, NULL); self = (PropSeparatorMenuItem*) g_object_new (object_type, NULL); _tmp0_ = property; _vala_assert (_tmp0_ != NULL, "property != null"); _tmp1_ = property; _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp2_; return self; } PropSeparatorMenuItem* prop_separator_menu_item_new (IBusProperty* property) { return prop_separator_menu_item_construct (TYPE_PROP_SEPARATOR_MENU_ITEM, property); } static void prop_separator_menu_item_real_update_property (IPropItem* base, IBusProperty* property) { PropSeparatorMenuItem * self; self = (PropSeparatorMenuItem*) base; g_return_if_fail (property != NULL); } static void prop_separator_menu_item_class_init (PropSeparatorMenuItemClass * klass) { prop_separator_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (PropSeparatorMenuItemPrivate)); G_OBJECT_CLASS (klass)->finalize = prop_separator_menu_item_finalize; } static void prop_separator_menu_item_iprop_item_interface_init (IPropItemIface * iface) { prop_separator_menu_item_iprop_item_parent_iface = g_type_interface_peek_parent (iface); iface->update_property = (void (*)(IPropItem*, IBusProperty*)) prop_separator_menu_item_real_update_property; } static void prop_separator_menu_item_instance_init (PropSeparatorMenuItem * self) { self->priv = PROP_SEPARATOR_MENU_ITEM_GET_PRIVATE (self); } static void prop_separator_menu_item_finalize (GObject* obj) { PropSeparatorMenuItem * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROP_SEPARATOR_MENU_ITEM, PropSeparatorMenuItem); _g_object_unref0 (self->priv->m_property); G_OBJECT_CLASS (prop_separator_menu_item_parent_class)->finalize (obj); } GType prop_separator_menu_item_get_type (void) { static volatile gsize prop_separator_menu_item_type_id__volatile = 0; if (g_once_init_enter (&prop_separator_menu_item_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (PropSeparatorMenuItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) prop_separator_menu_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PropSeparatorMenuItem), 0, (GInstanceInitFunc) prop_separator_menu_item_instance_init, NULL }; static const GInterfaceInfo iprop_item_info = { (GInterfaceInitFunc) prop_separator_menu_item_iprop_item_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; GType prop_separator_menu_item_type_id; prop_separator_menu_item_type_id = g_type_register_static (gtk_separator_menu_item_get_type (), "PropSeparatorMenuItem", &g_define_type_info, 0); g_type_add_interface_static (prop_separator_menu_item_type_id, TYPE_IPROP_ITEM, &iprop_item_info); g_once_init_leave (&prop_separator_menu_item_type_id__volatile, prop_separator_menu_item_type_id); } return prop_separator_menu_item_type_id__volatile; } ibus-1.5.11/ui/gtk3/keybindingmanager.vala0000644000000000000000000002376412551654123015260 00000000000000/* vim:set et sts=4 sw=4: valac --pkg gtk+-2.0 --pkg x11 --pkg gdk-x11-2.0 --pkg gee-1.0 keybinding-manager.vala */ /** * This class is in charge to grab keybindings on the X11 display * and filter X11-events and passing on such events to the registed * handler methods. * * @author Oliver Sauder */ public class KeybindingManager : GLib.Object { /** * list of binded keybindings */ private GLib.List m_bindings = new GLib.List(); private static KeybindingManager m_instance = null; public static const uint MODIFIER_FILTER = Gdk.ModifierType.MODIFIER_MASK & ~( Gdk.ModifierType.LOCK_MASK | // Caps Lock // Gdk.ModifierType.MOD1_MASK | // Alt Gdk.ModifierType.MOD2_MASK | // Num Lock // Gdk.ModifierType.MOD3_MASK | // Gdk.ModifierType.MOD4_MASK | // Super, Hyper // Gdk.ModifierType.MOD5_MASK | // Gdk.ModifierType.BUTTON1_MASK | Gdk.ModifierType.BUTTON2_MASK | Gdk.ModifierType.BUTTON3_MASK | Gdk.ModifierType.BUTTON4_MASK | Gdk.ModifierType.BUTTON5_MASK | Gdk.ModifierType.SUPER_MASK | Gdk.ModifierType.HYPER_MASK | Gdk.ModifierType.META_MASK); /** * Helper class to store keybinding */ private class Keybinding { public Keybinding(uint keysym, Gdk.ModifierType modifiers, KeybindingHandlerFunc handler) { this.keysym = keysym; this.modifiers = modifiers; this.handler = handler; } public uint keysym { get; set; } public Gdk.ModifierType modifiers { get; set; } public unowned KeybindingHandlerFunc handler { get; set; } } /** * Keybinding func needed to bind key to handler * * @param event passing on gdk event */ public delegate void KeybindingHandlerFunc(Gdk.Event event); private KeybindingManager() { Gdk.Event.handler_set(event_handler); } /** * Bind accelerator to given handler * * @param keysym * @param modifiers * @param handler handler called when given accelerator is pressed */ public bool bind(uint keysym, Gdk.ModifierType modifiers, KeybindingHandlerFunc handler) { #if VALA_0_24 unowned X.Display display = Gdk.X11.get_default_xdisplay(); #else unowned X.Display display = Gdk.x11_get_default_xdisplay(); #endif int keycode = display.keysym_to_keycode(keysym); if (keycode == 0) return false; grab_keycode (Gdk.Display.get_default(), keysym, modifiers); // store binding Keybinding binding = new Keybinding(keysym, modifiers, handler); m_bindings.append(binding); return true; } /** * Unbind given accelerator. * * @param keysym * @param modifiers */ public void unbind(uint keysym, Gdk.ModifierType modifiers) { // unbind all keys with given accelerator GLib.List remove_bindings = new GLib.List(); foreach(Keybinding binding in m_bindings) { if (binding.keysym == keysym && binding.modifiers == modifiers) { ungrab_keycode (Gdk.Display.get_default(), binding.keysym, binding.modifiers); remove_bindings.append(binding); } } // remove unbinded keys foreach (Keybinding binding in remove_bindings) m_bindings.remove (binding); } public static KeybindingManager get_instance () { if (m_instance == null) m_instance = new KeybindingManager (); return m_instance; } public static Gdk.ModifierType get_primary_modifier (uint binding_mask) { const Gdk.ModifierType[] masks = { Gdk.ModifierType.MOD5_MASK, Gdk.ModifierType.MOD4_MASK, Gdk.ModifierType.MOD3_MASK, Gdk.ModifierType.MOD2_MASK, Gdk.ModifierType.MOD1_MASK, Gdk.ModifierType.CONTROL_MASK, Gdk.ModifierType.SHIFT_MASK, Gdk.ModifierType.LOCK_MASK }; for (int i = 0; i < masks.length; i++) { Gdk.ModifierType mask = masks[i]; if ((binding_mask & mask) == mask) return mask; } return 0; } public static bool primary_modifier_still_pressed(Gdk.Event event, uint primary_modifier) { Gdk.EventKey keyevent = event.key; if (primary_modifier == 0) return false; Gdk.Device device = event.get_device(); Gdk.Device pointer; if (device.get_source() == Gdk.InputSource.KEYBOARD) pointer = device.get_associated_device(); else pointer = device; double[] axes = null; uint modifier = 0; pointer.get_state(keyevent.window, axes, out modifier); if ((primary_modifier & modifier) == primary_modifier) return true; return false; } public static uint keyval_to_modifier (uint keyval) { switch(keyval) { case 0xffe3: /* Control_L */ case 0xffe4: /* Control_R */ return Gdk.ModifierType.CONTROL_MASK; case 0xffe1: /* Shift_L */ case 0xffe2: /* Shift_R */ return Gdk.ModifierType.SHIFT_MASK; case 0xffe5: /* Caps_Lock */ return Gdk.ModifierType.LOCK_MASK; case 0xffe9: /* Alt_L */ case 0xffea: /* Alt_R */ return Gdk.ModifierType.MOD1_MASK; case 0xffe7: /* Meta_L */ case 0xffe8: /* Meta_R */ return Gdk.ModifierType.META_MASK; case 0xffeb: /* Super_L */ case 0xffec: /* Super_R */ return Gdk.ModifierType.SUPER_MASK; case 0xffed: /* Hyper_L */ case 0xffee: /* Hyper_R */ return Gdk.ModifierType.HYPER_MASK; default: return 0; } } private void event_handler(Gdk.Event event) { do { if (event.any.window != Gdk.get_default_root_window()) { break; } if (event.type == Gdk.EventType.KEY_PRESS) { uint modifiers = event.key.state & MODIFIER_FILTER; foreach (var binding in m_bindings) { if (event.key.keyval != binding.keysym || modifiers != binding.modifiers) continue; binding.handler(event); return; } } } while (false); Gtk.main_do_event(event); } // Get union of given modifiers and all the combination of the // modifiers in ignored_modifiers. XI.GrabModifiers[] get_grab_modifiers(uint modifiers) { const int[] ignored_modifiers = { X.KeyMask.LockMask, X.KeyMask.Mod2Mask, X.KeyMask.Mod5Mask }; int[] masks = {}; for (int i = 0; i < ignored_modifiers.length; i++) { int modifier = ignored_modifiers[i]; masks += modifier; int length = masks.length; for (int j = 0; j < length - 1; j++) { masks += masks[j] | modifier; } } masks += 0; XI.GrabModifiers[] ximodifiers = {}; foreach (var mask in masks) { ximodifiers += XI.GrabModifiers() { modifiers = mask | modifiers, status = 0 }; } return ximodifiers; } bool grab_keycode(Gdk.Display display, uint keyval, uint modifiers) { #if VALA_0_24 unowned X.Display xdisplay = (display as Gdk.X11.Display).get_xdisplay(); #else unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(display); #endif int keycode = xdisplay.keysym_to_keycode(keyval); if (keycode == 0) { warning("Can not convert keyval=%u to keycode!", keyval); return false; } XI.EventMask evmask = XI.EventMask() { deviceid = XI.AllMasterDevices, mask = new uchar[(XI.LASTEVENT + 7) / 8] }; XI.set_mask(evmask.mask, XI.EventType.KeyPress); XI.set_mask(evmask.mask, XI.EventType.KeyRelease); int retval = XI.grab_keycode (xdisplay, XI.AllMasterDevices, keycode, xdisplay.default_root_window(), X.GrabMode.Async, X.GrabMode.Async, true, evmask, get_grab_modifiers(modifiers)); return retval == 0; } bool ungrab_keycode(Gdk.Display display, uint keyval, uint modifiers) { #if VALA_0_24 unowned X.Display xdisplay = (display as Gdk.X11.Display).get_xdisplay(); #else unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(display); #endif int keycode = xdisplay.keysym_to_keycode(keyval); if (keycode == 0) { warning("Can not convert keyval=%u to keycode!", keyval); return false; } int retval = XI.ungrab_keycode (xdisplay, XI.AllMasterDevices, keycode, xdisplay.default_root_window(), get_grab_modifiers(modifiers)); return retval == 0; } } /* public static int main (string[] args) { Gtk.init (ref args); KeybindingManager manager = new KeybindingManager(); manager.bind("V", test); Gtk.main (); return 0; } private static void test() { debug("hotkey pressed"); } */ ibus-1.5.11/ui/gtk3/separator.c0000644000000000000000000001250512551655052013072 00000000000000/* separator.c generated by valac 0.28.0, the Vala compiler * generated from separator.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #define TYPE_HSEPARATOR (hseparator_get_type ()) #define HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HSEPARATOR, HSeparator)) #define HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HSEPARATOR, HSeparatorClass)) #define IS_HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HSEPARATOR)) #define IS_HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HSEPARATOR)) #define HSEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HSEPARATOR, HSeparatorClass)) typedef struct _HSeparator HSeparator; typedef struct _HSeparatorClass HSeparatorClass; typedef struct _HSeparatorPrivate HSeparatorPrivate; #define TYPE_VSEPARATOR (vseparator_get_type ()) #define VSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VSEPARATOR, VSeparator)) #define VSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VSEPARATOR, VSeparatorClass)) #define IS_VSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VSEPARATOR)) #define IS_VSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VSEPARATOR)) #define VSEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VSEPARATOR, VSeparatorClass)) typedef struct _VSeparator VSeparator; typedef struct _VSeparatorClass VSeparatorClass; typedef struct _VSeparatorPrivate VSeparatorPrivate; struct _HSeparator { GtkSeparator parent_instance; HSeparatorPrivate * priv; }; struct _HSeparatorClass { GtkSeparatorClass parent_class; }; struct _VSeparator { GtkSeparator parent_instance; VSeparatorPrivate * priv; }; struct _VSeparatorClass { GtkSeparatorClass parent_class; }; static gpointer hseparator_parent_class = NULL; static gpointer vseparator_parent_class = NULL; GType hseparator_get_type (void) G_GNUC_CONST; enum { HSEPARATOR_DUMMY_PROPERTY }; HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); GType vseparator_get_type (void) G_GNUC_CONST; enum { VSEPARATOR_DUMMY_PROPERTY }; VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); HSeparator* hseparator_construct (GType object_type) { HSeparator * self = NULL; self = (HSeparator*) g_object_new (object_type, "orientation", GTK_ORIENTATION_HORIZONTAL, "margin", 2, NULL); return self; } HSeparator* hseparator_new (void) { return hseparator_construct (TYPE_HSEPARATOR); } static void hseparator_class_init (HSeparatorClass * klass) { hseparator_parent_class = g_type_class_peek_parent (klass); } static void hseparator_instance_init (HSeparator * self) { } GType hseparator_get_type (void) { static volatile gsize hseparator_type_id__volatile = 0; if (g_once_init_enter (&hseparator_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (HSeparatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) hseparator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (HSeparator), 0, (GInstanceInitFunc) hseparator_instance_init, NULL }; GType hseparator_type_id; hseparator_type_id = g_type_register_static (gtk_separator_get_type (), "HSeparator", &g_define_type_info, 0); g_once_init_leave (&hseparator_type_id__volatile, hseparator_type_id); } return hseparator_type_id__volatile; } VSeparator* vseparator_construct (GType object_type) { VSeparator * self = NULL; self = (VSeparator*) g_object_new (object_type, "orientation", GTK_ORIENTATION_VERTICAL, "margin", 2, NULL); return self; } VSeparator* vseparator_new (void) { return vseparator_construct (TYPE_VSEPARATOR); } static void vseparator_class_init (VSeparatorClass * klass) { vseparator_parent_class = g_type_class_peek_parent (klass); } static void vseparator_instance_init (VSeparator * self) { } GType vseparator_get_type (void) { static volatile gsize vseparator_type_id__volatile = 0; if (g_once_init_enter (&vseparator_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (VSeparatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vseparator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VSeparator), 0, (GInstanceInitFunc) vseparator_instance_init, NULL }; GType vseparator_type_id; vseparator_type_id = g_type_register_static (gtk_separator_get_type (), "VSeparator", &g_define_type_info, 0); g_once_init_leave (&vseparator_type_id__volatile, vseparator_type_id); } return vseparator_type_id__volatile; } ibus-1.5.11/ui/gtk3/indicator.c0000644000000000000000000021012612551655052013045 00000000000000/* indicator.c generated by valac 0.28.0, the Vala compiler * generated from indicator.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2015 Takao Fujiwara * Copyright(c) 2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ /* This class extends AppIndicator because * AppIndicator misses "Activate" dbus method in the definition * for left click on the indicator. */ #include #include #include #include #include #include #include #include #define TYPE_INDICATOR (indicator_get_type ()) #define INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_INDICATOR, Indicator)) #define INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_INDICATOR, IndicatorClass)) #define IS_INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_INDICATOR)) #define IS_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_INDICATOR)) #define INDICATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_INDICATOR, IndicatorClass)) typedef struct _Indicator Indicator; typedef struct _IndicatorClass IndicatorClass; typedef struct _IndicatorPrivate IndicatorPrivate; #define INDICATOR_TYPE_CATEGORY (indicator_category_get_type ()) #define INDICATOR_TYPE_STATUS (indicator_status_get_type ()) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define _g_dbus_node_info_unref0(var) ((var == NULL) ? NULL : (var = (g_dbus_node_info_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define _g_variant_type_free0(var) ((var == NULL) ? NULL : (var = (g_variant_type_free (var), NULL))) #define _g_variant_builder_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_builder_unref (var), NULL))) #define _g_bytes_unref0(var) ((var == NULL) ? NULL : (var = (g_bytes_unref (var), NULL))) struct _Indicator { IBusService parent_instance; IndicatorPrivate * priv; }; struct _IndicatorClass { IBusServiceClass parent_class; }; struct _IndicatorPrivate { gchar* _id; gchar* _category_s; gchar* _status_s; gchar* _icon_name; gchar* _icon_desc; gchar* _attention_icon_name; gchar* _attention_icon_desc; gchar* _title; gchar* _icon_theme_path; gboolean _connected; gchar* _label_s; gchar* _label_guide_s; guint32 _ordering_index; GVariant* _icon_vector; GDBusNodeInfo* m_watcher_node_info; GDBusInterfaceInfo* m_watcher_interface_info; GDBusProxy* m_proxy; gint m_context_menu_x; gint m_context_menu_y; gint m_activate_menu_x; gint m_activate_menu_y; }; typedef enum { INDICATOR_CATEGORY_APPLICATION_STATUS, INDICATOR_CATEGORY_COMMUNICATIONS, INDICATOR_CATEGORY_SYSTEM_SERVICES, INDICATOR_CATEGORY_HARDWARE, INDICATOR_CATEGORY_OTHER } IndicatorCategory; typedef enum { INDICATOR_STATUS_PASSIVE, INDICATOR_STATUS_ACTIVE, INDICATOR_STATUS_ATTENTION } IndicatorStatus; extern gchar* _notification_item; extern gchar* _notification_watcher; static gpointer indicator_parent_class = NULL; GType indicator_get_type (void) G_GNUC_CONST; #define INDICATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_INDICATOR, IndicatorPrivate)) enum { INDICATOR_DUMMY_PROPERTY, INDICATOR_ID, INDICATOR_CATEGORY_S, INDICATOR_STATUS_S, INDICATOR_ICON_NAME, INDICATOR_ICON_DESC, INDICATOR_ATTENTION_ICON_NAME, INDICATOR_ATTENTION_ICON_DESC, INDICATOR_TITLE, INDICATOR_ICON_THEME_PATH, INDICATOR_CONNECTED, INDICATOR_LABEL_S, INDICATOR_LABEL_GUIDE_S, INDICATOR_ORDERING_INDEX, INDICATOR_ICON_VECTOR }; GType indicator_category_get_type (void) G_GNUC_CONST; gchar* indicator_category_to_nick (IndicatorCategory self); GType indicator_status_get_type (void) G_GNUC_CONST; gchar* indicator_status_to_nick (IndicatorStatus self); #define INDICATOR_DEFAULT_ITEM_PATH "/org/ayatana/NotificationItem" #define INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE "org.kde.StatusNotifierItem" #define INDICATOR_NOTIFICATION_WATCHER_DBUS_IFACE "org.kde.StatusNotifierWatcher" #define INDICATOR_NOTIFICATION_WATCHER_DBUS_ADDR "org.kde.StatusNotifierWatcher" #define INDICATOR_NOTIFICATION_WATCHER_DBUS_OBJ "/StatusNotifierWatcher" Indicator* indicator_new (const gchar* id, GDBusConnection* connection, IndicatorCategory category); Indicator* indicator_construct (GType object_type, const gchar* id, GDBusConnection* connection, IndicatorCategory category); void indicator_set_status_s (Indicator* self, const gchar* value); void indicator_set_icon_name (Indicator* self, const gchar* value); void indicator_set_icon_desc (Indicator* self, const gchar* value); void indicator_set_title (Indicator* self, const gchar* value); void indicator_set_icon_theme_path (Indicator* self, const gchar* value); void indicator_set_attention_icon_name (Indicator* self, const gchar* value); void indicator_set_attention_icon_desc (Indicator* self, const gchar* value); void indicator_set_label_s (Indicator* self, const gchar* value); void indicator_set_label_guide_s (Indicator* self, const gchar* value); static void indicator_check_connect (Indicator* self); static void ___lambda4_ (Indicator* self, GObject* obj, GAsyncResult* res); static void indicator_bus_watcher_ready (Indicator* self, GObject* obj, GAsyncResult* res); static void ____lambda4__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self); static void ___lambda5_ (Indicator* self, GObject* obj, GParamSpec* pspec); static void ____lambda5__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void __lambda6_ (Indicator* self, GObject* p_obj, GAsyncResult* p_res); static void ___lambda6__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self); static void _indicator_context_menu_cb (Indicator* self, GDBusConnection* connection, GVariant* parameters, GDBusMethodInvocation* invocation); static void _indicator_activate_menu_cb (Indicator* self, GDBusConnection* connection, GVariant* parameters, GDBusMethodInvocation* invocation); static GVariant* _indicator_get_id (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_id (Indicator* self); static GVariant* _indicator_get_category (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_category_s (Indicator* self); static GVariant* _indicator_get_status (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_status_s (Indicator* self); static GVariant* _indicator_get_icon_name (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_icon_name (Indicator* self); static GVariant* _indicator_get_icon_vector (Indicator* self, GDBusConnection* connection); GVariant* indicator_get_icon_vector (Indicator* self); static GVariant* _indicator_get_icon_desc (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_icon_desc (Indicator* self); static GVariant* _indicator_get_attention_icon_name (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_attention_icon_name (Indicator* self); static GVariant* _indicator_get_attention_icon_desc (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_attention_icon_desc (Indicator* self); static GVariant* _indicator_get_title (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_title (Indicator* self); static GVariant* _indicator_get_icon_theme_path (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_icon_theme_path (Indicator* self); static GVariant* _indicator_get_menu (Indicator* self, GDBusConnection* connection); static GVariant* _indicator_get_xayatana_label (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_label_s (Indicator* self); static GVariant* _indicator_get_xayatana_label_guide (Indicator* self, GDBusConnection* connection); const gchar* indicator_get_label_guide_s (Indicator* self); static GVariant* _indicator_get_xayatana_ordering_index (Indicator* self, GDBusConnection* connection); guint32 indicator_get_ordering_index (Indicator* self); static void indicator_real_service_method_call (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation); static GVariant* indicator_real_service_get_property (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error); static gboolean indicator_real_service_set_property (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error); void indicator_set_status (Indicator* self, IndicatorStatus status); void indicator_set_icon_full (Indicator* self, const gchar* icon_name, const gchar* icon_desc); void indicator_set_icon_vector (Indicator* self, GVariant* value); void indicator_set_cairo_image_surface_full (Indicator* self, cairo_surface_t* image, const gchar* icon_desc); void indicator_position_context_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); void indicator_position_activate_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); static void indicator_set_id (Indicator* self, const gchar* value); static void indicator_set_category_s (Indicator* self, const gchar* value); gboolean indicator_get_connected (Indicator* self); void indicator_set_connected (Indicator* self, gboolean value); void indicator_set_ordering_index (Indicator* self, guint32 value); static void g_cclosure_user_marshal_VOID__UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void indicator_finalize (GObject* obj); static void _vala_indicator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_indicator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); gchar* indicator_category_to_nick (IndicatorCategory self) { gchar* result = NULL; switch (self) { case INDICATOR_CATEGORY_APPLICATION_STATUS: { gchar* _tmp0_ = NULL; _tmp0_ = g_strdup ("ApplicationStatus"); result = _tmp0_; return result; } case INDICATOR_CATEGORY_COMMUNICATIONS: { gchar* _tmp1_ = NULL; _tmp1_ = g_strdup ("Communications"); result = _tmp1_; return result; } case INDICATOR_CATEGORY_SYSTEM_SERVICES: { gchar* _tmp2_ = NULL; _tmp2_ = g_strdup ("SystemServices"); result = _tmp2_; return result; } case INDICATOR_CATEGORY_HARDWARE: { gchar* _tmp3_ = NULL; _tmp3_ = g_strdup ("Hardware"); result = _tmp3_; return result; } case INDICATOR_CATEGORY_OTHER: { gchar* _tmp4_ = NULL; _tmp4_ = g_strdup ("Other"); result = _tmp4_; return result; } default: { g_assert_not_reached (); } } } GType indicator_category_get_type (void) { static volatile gsize indicator_category_type_id__volatile = 0; if (g_once_init_enter (&indicator_category_type_id__volatile)) { static const GEnumValue values[] = {{INDICATOR_CATEGORY_APPLICATION_STATUS, "INDICATOR_CATEGORY_APPLICATION_STATUS", "application-status"}, {INDICATOR_CATEGORY_COMMUNICATIONS, "INDICATOR_CATEGORY_COMMUNICATIONS", "communications"}, {INDICATOR_CATEGORY_SYSTEM_SERVICES, "INDICATOR_CATEGORY_SYSTEM_SERVICES", "system-services"}, {INDICATOR_CATEGORY_HARDWARE, "INDICATOR_CATEGORY_HARDWARE", "hardware"}, {INDICATOR_CATEGORY_OTHER, "INDICATOR_CATEGORY_OTHER", "other"}, {0, NULL, NULL}}; GType indicator_category_type_id; indicator_category_type_id = g_enum_register_static ("IndicatorCategory", values); g_once_init_leave (&indicator_category_type_id__volatile, indicator_category_type_id); } return indicator_category_type_id__volatile; } gchar* indicator_status_to_nick (IndicatorStatus self) { gchar* result = NULL; switch (self) { case INDICATOR_STATUS_PASSIVE: { gchar* _tmp0_ = NULL; _tmp0_ = g_strdup ("Passive"); result = _tmp0_; return result; } case INDICATOR_STATUS_ACTIVE: { gchar* _tmp1_ = NULL; _tmp1_ = g_strdup ("Active"); result = _tmp1_; return result; } case INDICATOR_STATUS_ATTENTION: { gchar* _tmp2_ = NULL; _tmp2_ = g_strdup ("NeedsAttention"); result = _tmp2_; return result; } default: { g_assert_not_reached (); } } } GType indicator_status_get_type (void) { static volatile gsize indicator_status_type_id__volatile = 0; if (g_once_init_enter (&indicator_status_type_id__volatile)) { static const GEnumValue values[] = {{INDICATOR_STATUS_PASSIVE, "INDICATOR_STATUS_PASSIVE", "passive"}, {INDICATOR_STATUS_ACTIVE, "INDICATOR_STATUS_ACTIVE", "active"}, {INDICATOR_STATUS_ATTENTION, "INDICATOR_STATUS_ATTENTION", "attention"}, {0, NULL, NULL}}; GType indicator_status_type_id; indicator_status_type_id = g_enum_register_static ("IndicatorStatus", values); g_once_init_leave (&indicator_status_type_id__volatile, indicator_status_type_id); } return indicator_status_type_id__volatile; } static gchar* string_delimit (const gchar* self, const gchar* delimiters, gchar new_delimiter) { gchar* result = NULL; gchar* _result_ = NULL; gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar _tmp3_ = '\0'; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (delimiters != NULL, NULL); _tmp0_ = g_strdup (self); _result_ = _tmp0_; _tmp1_ = _result_; _tmp2_ = delimiters; _tmp3_ = new_delimiter; g_strdelimit (_tmp1_, _tmp2_, _tmp3_); result = _result_; return result; } Indicator* indicator_construct (GType object_type, const gchar* id, GDBusConnection* connection, IndicatorCategory category) { Indicator * self = NULL; gchar* path = NULL; const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; GDBusConnection* _tmp6_ = NULL; IndicatorCategory _tmp7_ = 0; gchar* _tmp8_ = NULL; gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; gchar* _tmp11_ = NULL; GDBusConnection* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; GDBusNodeInfo* _tmp29_ = NULL; GDBusInterfaceInfo* _tmp30_ = NULL; GError * _inner_error_ = NULL; g_return_val_if_fail (id != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = id; _tmp1_ = g_strconcat (INDICATOR_DEFAULT_ITEM_PATH "/", _tmp0_, NULL); path = _tmp1_; _tmp2_ = path; _tmp3_ = string_delimit (_tmp2_, "-", '_'); _g_free0 (path); path = _tmp3_; _tmp4_ = path; _tmp5_ = id; _tmp6_ = connection; _tmp7_ = category; _tmp8_ = indicator_category_to_nick (_tmp7_); _tmp9_ = _tmp8_; self = (Indicator*) g_object_new (object_type, "object-path", _tmp4_, "id", _tmp5_, "connection", _tmp6_, "category-s", _tmp9_, NULL); _g_free0 (_tmp9_); _tmp10_ = indicator_status_to_nick (INDICATOR_STATUS_PASSIVE); _tmp11_ = _tmp10_; indicator_set_status_s (self, _tmp11_); _g_free0 (_tmp11_); indicator_set_icon_name (self, ""); indicator_set_icon_desc (self, ""); indicator_set_title (self, ""); indicator_set_icon_theme_path (self, ""); indicator_set_attention_icon_name (self, ""); indicator_set_attention_icon_desc (self, ""); indicator_set_label_s (self, ""); indicator_set_label_guide_s (self, ""); _tmp12_ = connection; ibus_service_unregister ((IBusService*) self, _tmp12_); _tmp13_ = _notification_item; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (G_OBJECT_GET_CLASS (self)), _tmp13_); { gboolean _tmp14_ = FALSE; GDBusConnection* _tmp15_ = NULL; gboolean _tmp16_ = FALSE; _tmp15_ = connection; _tmp16_ = ibus_service_register ((IBusService*) self, _tmp15_, &_inner_error_); _tmp14_ = _tmp16_; if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch3_g_error; } if (!_tmp14_) { _g_free0 (path); return self; } } goto __finally3; __catch3_g_error: { GError* e = NULL; GError* _tmp17_ = NULL; const gchar* _tmp18_ = NULL; gchar* _tmp19_ = NULL; gchar* _tmp20_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp17_ = e; _tmp18_ = _tmp17_->message; _tmp19_ = g_strconcat ("Failed to register the application indicator xml: ", _tmp18_, NULL); _tmp20_ = _tmp19_; g_warning ("indicator.vala:127: %s", _tmp20_); _g_free0 (_tmp20_); _g_error_free0 (e); _g_free0 (path); return self; } __finally3: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (path); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } { GDBusNodeInfo* _tmp21_ = NULL; const gchar* _tmp22_ = NULL; GDBusNodeInfo* _tmp23_ = NULL; GDBusNodeInfo* _tmp24_ = NULL; _tmp22_ = _notification_watcher; _tmp23_ = g_dbus_node_info_new_for_xml (_tmp22_, &_inner_error_); _tmp21_ = _tmp23_; if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch4_g_error; } _tmp24_ = _tmp21_; _tmp21_ = NULL; _g_dbus_node_info_unref0 (self->priv->m_watcher_node_info); self->priv->m_watcher_node_info = _tmp24_; _g_dbus_node_info_unref0 (_tmp21_); } goto __finally4; __catch4_g_error: { GError* e = NULL; GError* _tmp25_ = NULL; const gchar* _tmp26_ = NULL; gchar* _tmp27_ = NULL; gchar* _tmp28_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp25_ = e; _tmp26_ = _tmp25_->message; _tmp27_ = g_strconcat ("Failed to create dbus node info: ", _tmp26_, NULL); _tmp28_ = _tmp27_; g_warning ("indicator.vala:136: %s", _tmp28_); _g_free0 (_tmp28_); _g_error_free0 (e); _g_free0 (path); return self; } __finally4: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (path); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp29_ = self->priv->m_watcher_node_info; _tmp30_ = g_dbus_node_info_lookup_interface (_tmp29_, INDICATOR_NOTIFICATION_WATCHER_DBUS_IFACE); self->priv->m_watcher_interface_info = _tmp30_; indicator_check_connect (self); _g_free0 (path); return self; } Indicator* indicator_new (const gchar* id, GDBusConnection* connection, IndicatorCategory category) { return indicator_construct (TYPE_INDICATOR, id, connection, category); } static void ___lambda4_ (Indicator* self, GObject* obj, GAsyncResult* res) { GObject* _tmp0_ = NULL; GAsyncResult* _tmp1_ = NULL; g_return_if_fail (res != NULL); _tmp0_ = obj; _tmp1_ = res; indicator_bus_watcher_ready (self, _tmp0_, _tmp1_); } static void ____lambda4__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) { ___lambda4_ ((Indicator*) self, source_object, res); g_object_unref (self); } static void indicator_check_connect (Indicator* self) { GDBusProxy* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_proxy; if (_tmp0_ == NULL) { GDBusConnection* _tmp1_ = NULL; GDBusConnection* _tmp2_ = NULL; GDBusInterfaceInfo* _tmp3_ = NULL; _tmp1_ = ibus_service_get_connection ((IBusService*) self); _tmp2_ = _tmp1_; _tmp3_ = self->priv->m_watcher_interface_info; g_dbus_proxy_new (_tmp2_, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, _tmp3_, INDICATOR_NOTIFICATION_WATCHER_DBUS_ADDR, INDICATOR_NOTIFICATION_WATCHER_DBUS_OBJ, INDICATOR_NOTIFICATION_WATCHER_DBUS_IFACE, NULL, ____lambda4__gasync_ready_callback, g_object_ref (self)); } else { indicator_bus_watcher_ready (self, NULL, NULL); } } static void ___lambda5_ (Indicator* self, GObject* obj, GParamSpec* pspec) { gchar* name = NULL; GDBusProxy* _tmp0_ = NULL; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; g_return_if_fail (obj != NULL); g_return_if_fail (pspec != NULL); _tmp0_ = self->priv->m_proxy; _tmp1_ = g_dbus_proxy_get_name_owner (_tmp0_); name = _tmp1_; _tmp2_ = name; if (_tmp2_ != NULL) { indicator_check_connect (self); } _g_free0 (name); } static void ____lambda5__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { ___lambda5_ ((Indicator*) self, _sender, pspec); } static void __lambda6_ (Indicator* self, GObject* p_obj, GAsyncResult* p_res) { GError * _inner_error_ = NULL; g_return_if_fail (p_res != NULL); { GDBusProxy* _tmp0_ = NULL; GAsyncResult* _tmp1_ = NULL; GVariant* _tmp2_ = NULL; GVariant* _tmp3_ = NULL; _tmp0_ = self->priv->m_proxy; _tmp1_ = p_res; _tmp2_ = g_dbus_proxy_call_finish (_tmp0_, _tmp1_, &_inner_error_); _tmp3_ = _tmp2_; _g_variant_unref0 (_tmp3_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch6_g_error; } g_signal_emit_by_name (self, "registered-status-notifier-item"); } goto __finally6; __catch6_g_error: { GError* e = NULL; GError* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; gchar* _tmp7_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp4_ = e; _tmp5_ = _tmp4_->message; _tmp6_ = g_strconcat ("Failed to call " "RegisterStatusNotifierItem: ", _tmp5_, NULL); _tmp7_ = _tmp6_; g_warning ("indicator.vala:195: %s", _tmp7_); _g_free0 (_tmp7_); _g_error_free0 (e); } __finally6: if (G_UNLIKELY (_inner_error_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } static void ___lambda6__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) { __lambda6_ ((Indicator*) self, source_object, res); g_object_unref (self); } static void indicator_bus_watcher_ready (Indicator* self, GObject* obj, GAsyncResult* res) { GAsyncResult* _tmp0_ = NULL; gchar* name = NULL; GDBusProxy* _tmp10_ = NULL; gchar* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; GDBusProxy* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; GVariant* _tmp16_ = NULL; GVariant* _tmp17_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = res; if (_tmp0_ != NULL) { GDBusProxy* _tmp9_ = NULL; { GDBusProxy* _tmp1_ = NULL; GAsyncResult* _tmp2_ = NULL; GDBusProxy* _tmp3_ = NULL; GDBusProxy* _tmp4_ = NULL; _tmp2_ = res; _tmp3_ = g_dbus_proxy_new_finish (_tmp2_, &_inner_error_); _tmp1_ = _tmp3_; if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_IO_ERROR) { goto __catch5_g_io_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp4_ = _tmp1_; _tmp1_ = NULL; _g_object_unref0 (self->priv->m_proxy); self->priv->m_proxy = _tmp4_; _g_object_unref0 (_tmp1_); } goto __finally5; __catch5_g_io_error: { GError* e = NULL; GError* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; gchar* _tmp7_ = NULL; gchar* _tmp8_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp5_ = e; _tmp6_ = _tmp5_->message; _tmp7_ = g_strconcat ("Failed to call dbus proxy: ", _tmp6_, NULL); _tmp8_ = _tmp7_; g_warning ("indicator.vala:169: %s", _tmp8_); _g_free0 (_tmp8_); _g_error_free0 (e); return; } __finally5: if (G_UNLIKELY (_inner_error_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp9_ = self->priv->m_proxy; g_signal_connect_object ((GObject*) _tmp9_, "notify::g-name-owner", (GCallback) ____lambda5__g_object_notify, self, 0); } _tmp10_ = self->priv->m_proxy; _tmp11_ = g_dbus_proxy_get_name_owner (_tmp10_); name = _tmp11_; _tmp12_ = name; if (_tmp12_ == NULL) { _g_free0 (name); return; } _tmp13_ = self->priv->m_proxy; _tmp14_ = ibus_service_get_object_path ((IBusService*) self); _tmp15_ = _tmp14_; _tmp16_ = g_variant_new ("(s)", _tmp15_, NULL); g_variant_ref_sink (_tmp16_); _tmp17_ = _tmp16_; g_dbus_proxy_call (_tmp13_, "RegisterStatusNotifierItem", _tmp17_, G_DBUS_CALL_FLAGS_NONE, -1, NULL, ___lambda6__gasync_ready_callback, g_object_ref (self)); _g_variant_unref0 (_tmp17_); _g_free0 (name); } static void _indicator_context_menu_cb (Indicator* self, GDBusConnection* connection, GVariant* parameters, GDBusMethodInvocation* invocation) { GVariant* var_x = NULL; GVariant* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; GVariant* var_y = NULL; GVariant* _tmp2_ = NULL; GVariant* _tmp3_ = NULL; gint32 _tmp4_ = 0; gint32 _tmp5_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (connection != NULL); g_return_if_fail (parameters != NULL); g_return_if_fail (invocation != NULL); _tmp0_ = parameters; _tmp1_ = g_variant_get_child_value (_tmp0_, (gsize) 0); var_x = _tmp1_; _tmp2_ = parameters; _tmp3_ = g_variant_get_child_value (_tmp2_, (gsize) 1); var_y = _tmp3_; _tmp4_ = g_variant_get_int32 (var_x); self->priv->m_context_menu_x = (gint) _tmp4_; _tmp5_ = g_variant_get_int32 (var_y); self->priv->m_context_menu_y = (gint) _tmp5_; g_signal_emit_by_name (self, "context-menu", (guint) 2, (guint) 0); _g_variant_unref0 (var_y); _g_variant_unref0 (var_x); } static void _indicator_activate_menu_cb (Indicator* self, GDBusConnection* connection, GVariant* parameters, GDBusMethodInvocation* invocation) { GVariant* var_x = NULL; GVariant* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; GVariant* var_y = NULL; GVariant* _tmp2_ = NULL; GVariant* _tmp3_ = NULL; gint32 _tmp4_ = 0; gint32 _tmp5_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (connection != NULL); g_return_if_fail (parameters != NULL); g_return_if_fail (invocation != NULL); _tmp0_ = parameters; _tmp1_ = g_variant_get_child_value (_tmp0_, (gsize) 0); var_x = _tmp1_; _tmp2_ = parameters; _tmp3_ = g_variant_get_child_value (_tmp2_, (gsize) 1); var_y = _tmp3_; _tmp4_ = g_variant_get_int32 (var_x); self->priv->m_activate_menu_x = (gint) _tmp4_; _tmp5_ = g_variant_get_int32 (var_y); self->priv->m_activate_menu_y = (gint) _tmp5_; g_signal_emit_by_name (self, "activate"); _g_variant_unref0 (var_y); _g_variant_unref0 (var_x); } static GVariant* _indicator_get_id (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_id; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_category (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_category_s; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_status (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_status_s; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_icon_name (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_icon_name; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static gpointer _g_variant_ref0 (gpointer self) { return self ? g_variant_ref (self) : NULL; } static GVariant* _indicator_get_icon_vector (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; GVariant* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_icon_vector; _tmp1_ = _g_variant_ref0 (_tmp0_); result = _tmp1_; return result; } static GVariant* _indicator_get_icon_desc (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_icon_desc; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_attention_icon_name (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_attention_icon_name; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_attention_icon_desc (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_attention_icon_desc; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_title (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_title; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_icon_theme_path (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_icon_theme_path; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_menu (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); result = NULL; return result; } static GVariant* _indicator_get_xayatana_label (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_label_s; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_xayatana_label_guide (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; const gchar* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_label_guide_s; _tmp1_ = g_variant_new_string (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static GVariant* _indicator_get_xayatana_ordering_index (Indicator* self, GDBusConnection* connection) { GVariant* result = NULL; guint32 _tmp0_ = 0U; GVariant* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = self->priv->_ordering_index; _tmp1_ = g_variant_new_uint32 (_tmp0_); g_variant_ref_sink (_tmp1_); result = _tmp1_; return result; } static void indicator_real_service_method_call (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation) { Indicator * self; const gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; const gchar* _tmp8_ = NULL; const gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; gchar* _tmp14_ = NULL; self = (Indicator*) base; g_return_if_fail (connection != NULL); g_return_if_fail (sender != NULL); g_return_if_fail (object_path != NULL); g_return_if_fail (interface_name != NULL); g_return_if_fail (method_name != NULL); g_return_if_fail (parameters != NULL); g_return_if_fail (invocation != NULL); _tmp0_ = object_path; _tmp1_ = ibus_service_get_object_path ((IBusService*) self); _tmp2_ = _tmp1_; g_return_if_fail (g_strcmp0 (_tmp0_, _tmp2_) == 0); _tmp3_ = interface_name; g_return_if_fail (g_strcmp0 (_tmp3_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE) == 0); _tmp4_ = method_name; if (g_strcmp0 (_tmp4_, "Activate") == 0) { GDBusConnection* _tmp5_ = NULL; GVariant* _tmp6_ = NULL; GDBusMethodInvocation* _tmp7_ = NULL; _tmp5_ = connection; _tmp6_ = parameters; _tmp7_ = invocation; _indicator_activate_menu_cb (self, _tmp5_, _tmp6_, _tmp7_); return; } _tmp8_ = method_name; if (g_strcmp0 (_tmp8_, "ContextMenu") == 0) { GDBusConnection* _tmp9_ = NULL; GVariant* _tmp10_ = NULL; GDBusMethodInvocation* _tmp11_ = NULL; _tmp9_ = connection; _tmp10_ = parameters; _tmp11_ = invocation; _indicator_context_menu_cb (self, _tmp9_, _tmp10_, _tmp11_); return; } _tmp12_ = method_name; _tmp13_ = g_strconcat ("service_method_call() does not handle the method: ", _tmp12_, NULL); _tmp14_ = _tmp13_; g_warning ("indicator.vala:303: %s", _tmp14_); _g_free0 (_tmp14_); } static GVariant* indicator_real_service_get_property (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error) { Indicator * self; GVariant* result = NULL; const gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; const gchar* _tmp7_ = NULL; const gchar* _tmp10_ = NULL; const gchar* _tmp13_ = NULL; const gchar* _tmp16_ = NULL; const gchar* _tmp19_ = NULL; const gchar* _tmp22_ = NULL; const gchar* _tmp25_ = NULL; const gchar* _tmp28_ = NULL; const gchar* _tmp31_ = NULL; const gchar* _tmp34_ = NULL; const gchar* _tmp37_ = NULL; const gchar* _tmp40_ = NULL; const gchar* _tmp43_ = NULL; const gchar* _tmp46_ = NULL; gchar* _tmp47_ = NULL; gchar* _tmp48_ = NULL; self = (Indicator*) base; g_return_val_if_fail (connection != NULL, NULL); g_return_val_if_fail (sender != NULL, NULL); g_return_val_if_fail (object_path != NULL, NULL); g_return_val_if_fail (interface_name != NULL, NULL); g_return_val_if_fail (property_name != NULL, NULL); _tmp0_ = object_path; _tmp1_ = ibus_service_get_object_path ((IBusService*) self); _tmp2_ = _tmp1_; g_return_val_if_fail (g_strcmp0 (_tmp0_, _tmp2_) == 0, NULL); _tmp3_ = interface_name; g_return_val_if_fail (g_strcmp0 (_tmp3_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE) == 0, NULL); _tmp4_ = property_name; if (g_strcmp0 (_tmp4_, "Id") == 0) { GDBusConnection* _tmp5_ = NULL; GVariant* _tmp6_ = NULL; _tmp5_ = connection; _tmp6_ = _indicator_get_id (self, _tmp5_); result = _tmp6_; return result; } _tmp7_ = property_name; if (g_strcmp0 (_tmp7_, "Category") == 0) { GDBusConnection* _tmp8_ = NULL; GVariant* _tmp9_ = NULL; _tmp8_ = connection; _tmp9_ = _indicator_get_category (self, _tmp8_); result = _tmp9_; return result; } _tmp10_ = property_name; if (g_strcmp0 (_tmp10_, "Status") == 0) { GDBusConnection* _tmp11_ = NULL; GVariant* _tmp12_ = NULL; _tmp11_ = connection; _tmp12_ = _indicator_get_status (self, _tmp11_); result = _tmp12_; return result; } _tmp13_ = property_name; if (g_strcmp0 (_tmp13_, "IconName") == 0) { GDBusConnection* _tmp14_ = NULL; GVariant* _tmp15_ = NULL; _tmp14_ = connection; _tmp15_ = _indicator_get_icon_name (self, _tmp14_); result = _tmp15_; return result; } _tmp16_ = property_name; if (g_strcmp0 (_tmp16_, "IconPixmap") == 0) { GDBusConnection* _tmp17_ = NULL; GVariant* _tmp18_ = NULL; _tmp17_ = connection; _tmp18_ = _indicator_get_icon_vector (self, _tmp17_); result = _tmp18_; return result; } _tmp19_ = property_name; if (g_strcmp0 (_tmp19_, "IconAccessibleDesc") == 0) { GDBusConnection* _tmp20_ = NULL; GVariant* _tmp21_ = NULL; _tmp20_ = connection; _tmp21_ = _indicator_get_icon_desc (self, _tmp20_); result = _tmp21_; return result; } _tmp22_ = property_name; if (g_strcmp0 (_tmp22_, "AttentionIconName") == 0) { GDBusConnection* _tmp23_ = NULL; GVariant* _tmp24_ = NULL; _tmp23_ = connection; _tmp24_ = _indicator_get_attention_icon_name (self, _tmp23_); result = _tmp24_; return result; } _tmp25_ = property_name; if (g_strcmp0 (_tmp25_, "AttentionAccessibleDesc") == 0) { GDBusConnection* _tmp26_ = NULL; GVariant* _tmp27_ = NULL; _tmp26_ = connection; _tmp27_ = _indicator_get_attention_icon_desc (self, _tmp26_); result = _tmp27_; return result; } _tmp28_ = property_name; if (g_strcmp0 (_tmp28_, "Title") == 0) { GDBusConnection* _tmp29_ = NULL; GVariant* _tmp30_ = NULL; _tmp29_ = connection; _tmp30_ = _indicator_get_title (self, _tmp29_); result = _tmp30_; return result; } _tmp31_ = property_name; if (g_strcmp0 (_tmp31_, "IconThemePath") == 0) { GDBusConnection* _tmp32_ = NULL; GVariant* _tmp33_ = NULL; _tmp32_ = connection; _tmp33_ = _indicator_get_icon_theme_path (self, _tmp32_); result = _tmp33_; return result; } _tmp34_ = property_name; if (g_strcmp0 (_tmp34_, "Menu") == 0) { GDBusConnection* _tmp35_ = NULL; GVariant* _tmp36_ = NULL; _tmp35_ = connection; _tmp36_ = _indicator_get_menu (self, _tmp35_); result = _tmp36_; return result; } _tmp37_ = property_name; if (g_strcmp0 (_tmp37_, "XAyatanaLabel") == 0) { GDBusConnection* _tmp38_ = NULL; GVariant* _tmp39_ = NULL; _tmp38_ = connection; _tmp39_ = _indicator_get_xayatana_label (self, _tmp38_); result = _tmp39_; return result; } _tmp40_ = property_name; if (g_strcmp0 (_tmp40_, "XAyatanaLabelGuide") == 0) { GDBusConnection* _tmp41_ = NULL; GVariant* _tmp42_ = NULL; _tmp41_ = connection; _tmp42_ = _indicator_get_xayatana_label_guide (self, _tmp41_); result = _tmp42_; return result; } _tmp43_ = property_name; if (g_strcmp0 (_tmp43_, "XAyatanaOrderingIndex") == 0) { GDBusConnection* _tmp44_ = NULL; GVariant* _tmp45_ = NULL; _tmp44_ = connection; _tmp45_ = _indicator_get_xayatana_ordering_index (self, _tmp44_); result = _tmp45_; return result; } _tmp46_ = property_name; _tmp47_ = g_strconcat ("service_get_property() does not handle the property: ", _tmp46_, NULL); _tmp48_ = _tmp47_; g_warning ("indicator.vala:347: %s", _tmp48_); _g_free0 (_tmp48_); result = NULL; return result; } static gboolean indicator_real_service_set_property (IBusService* base, GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error) { Indicator * self; gboolean result = FALSE; self = (Indicator*) base; g_return_val_if_fail (connection != NULL, FALSE); g_return_val_if_fail (sender != NULL, FALSE); g_return_val_if_fail (object_path != NULL, FALSE); g_return_val_if_fail (interface_name != NULL, FALSE); g_return_val_if_fail (property_name != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); result = FALSE; return result; } void indicator_set_status (Indicator* self, IndicatorStatus status) { gchar* status_s = NULL; IndicatorStatus _tmp0_ = 0; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; GDBusConnection* _tmp5_ = NULL; GDBusConnection* _tmp6_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = status; _tmp1_ = indicator_status_to_nick (_tmp0_); status_s = _tmp1_; _tmp2_ = self->priv->_status_s; _tmp3_ = status_s; if (g_strcmp0 (_tmp2_, _tmp3_) == 0) { _g_free0 (status_s); return; } _tmp4_ = status_s; indicator_set_status_s (self, _tmp4_); _tmp5_ = ibus_service_get_connection ((IBusService*) self); _tmp6_ = _tmp5_; if (_tmp6_ == NULL) { _g_free0 (status_s); return; } { GDBusConnection* _tmp7_ = NULL; GDBusConnection* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; GVariant* _tmp12_ = NULL; GVariant* _tmp13_ = NULL; _tmp7_ = ibus_service_get_connection ((IBusService*) self); _tmp8_ = _tmp7_; _tmp9_ = ibus_service_get_object_path ((IBusService*) self); _tmp10_ = _tmp9_; _tmp11_ = status_s; _tmp12_ = g_variant_new ("(s)", _tmp11_, NULL); g_variant_ref_sink (_tmp12_); _tmp13_ = _tmp12_; g_dbus_connection_emit_signal (_tmp8_, NULL, _tmp10_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewStatus", _tmp13_, &_inner_error_); _g_variant_unref0 (_tmp13_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch7_g_error; } } goto __finally7; __catch7_g_error: { GError* e = NULL; GError* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp14_ = e; _tmp15_ = _tmp14_->message; g_warning ("indicator.vala:384: Unable to send signal for NewIcon: %s", _tmp15_); _g_error_free0 (e); } __finally7: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (status_s); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _g_free0 (status_s); } void indicator_set_icon_full (Indicator* self, const gchar* icon_name, const gchar* icon_desc) { gboolean changed = FALSE; const gchar* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; gboolean _tmp6_ = FALSE; GDBusConnection* _tmp7_ = NULL; GDBusConnection* _tmp8_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (icon_name != NULL); changed = FALSE; _tmp0_ = self->priv->_icon_name; _tmp1_ = icon_name; if (g_strcmp0 (_tmp0_, _tmp1_) != 0) { const gchar* _tmp2_ = NULL; _tmp2_ = icon_name; indicator_set_icon_name (self, _tmp2_); indicator_set_icon_vector (self, NULL); changed = TRUE; } _tmp3_ = self->priv->_icon_desc; _tmp4_ = icon_desc; if (g_strcmp0 (_tmp3_, _tmp4_) != 0) { const gchar* _tmp5_ = NULL; _tmp5_ = icon_desc; indicator_set_icon_desc (self, _tmp5_); changed = TRUE; } _tmp6_ = changed; if (!_tmp6_) { return; } _tmp7_ = ibus_service_get_connection ((IBusService*) self); _tmp8_ = _tmp7_; if (_tmp8_ == NULL) { return; } { GDBusConnection* _tmp9_ = NULL; GDBusConnection* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; _tmp9_ = ibus_service_get_connection ((IBusService*) self); _tmp10_ = _tmp9_; _tmp11_ = ibus_service_get_object_path ((IBusService*) self); _tmp12_ = _tmp11_; g_dbus_connection_emit_signal (_tmp10_, NULL, _tmp12_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch8_g_error; } } goto __finally8; __catch8_g_error: { GError* e = NULL; GError* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp13_ = e; _tmp14_ = _tmp13_->message; g_warning ("indicator.vala:417: Unable to send signal for NewIcon: %s", _tmp14_); _g_error_free0 (e); } __finally8: if (G_UNLIKELY (_inner_error_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } } void indicator_set_cairo_image_surface_full (Indicator* self, cairo_surface_t* image, const gchar* icon_desc) { gint width = 0; cairo_surface_t* _tmp0_ = NULL; gint _tmp1_ = 0; gint height = 0; cairo_surface_t* _tmp2_ = NULL; gint _tmp3_ = 0; gint stride = 0; cairo_surface_t* _tmp4_ = NULL; gint _tmp5_ = 0; guint8* data = NULL; cairo_surface_t* _tmp6_ = NULL; guchar* _tmp7_ = NULL; gint data_length1 = 0; gint _data_size_ = 0; gint _tmp8_ = 0; gint _tmp9_ = 0; gint _tmp10_ = 0; GBytes* bytes = NULL; guint8* _tmp11_ = NULL; gint _tmp11__length1 = 0; GBytes* _tmp12_ = NULL; GVariant* bs = NULL; const GVariantType* _tmp13_ = NULL; GBytes* _tmp14_ = NULL; GVariant* _tmp15_ = NULL; GVariantBuilder* builder = NULL; GVariantType* _tmp16_ = NULL; GVariantType* _tmp17_ = NULL; GVariantBuilder* _tmp18_ = NULL; GVariantBuilder* _tmp19_ = NULL; GVariantBuilder* _tmp20_ = NULL; GVariantType* _tmp21_ = NULL; GVariantType* _tmp22_ = NULL; GVariantBuilder* _tmp23_ = NULL; gint _tmp24_ = 0; GVariantBuilder* _tmp25_ = NULL; gint _tmp26_ = 0; GVariantBuilder* _tmp27_ = NULL; GVariant* _tmp28_ = NULL; GVariantBuilder* _tmp29_ = NULL; GVariantBuilder* _tmp30_ = NULL; GVariant* _tmp31_ = NULL; GVariant* _tmp32_ = NULL; const gchar* _tmp33_ = NULL; const gchar* _tmp34_ = NULL; GDBusConnection* _tmp36_ = NULL; GDBusConnection* _tmp37_ = NULL; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (image != NULL); _tmp0_ = image; _tmp1_ = cairo_image_surface_get_width (_tmp0_); width = _tmp1_; _tmp2_ = image; _tmp3_ = cairo_image_surface_get_height (_tmp2_); height = _tmp3_; _tmp4_ = image; _tmp5_ = cairo_image_surface_get_stride (_tmp4_); stride = _tmp5_; _tmp6_ = image; _tmp7_ = cairo_image_surface_get_data (_tmp6_); data = (guint8*) _tmp7_; data_length1 = (-1 * sizeof (guchar)) / sizeof (guint8); _data_size_ = data_length1; _tmp8_ = stride; _tmp9_ = height; data_length1 = _tmp8_ * _tmp9_; _tmp10_ = data_length1; _tmp11_ = data; _tmp11__length1 = data_length1; _tmp12_ = g_bytes_new (_tmp11_, _tmp11__length1); bytes = _tmp12_; _tmp13_ = G_VARIANT_TYPE_BYTESTRING; _tmp14_ = bytes; _tmp15_ = g_variant_new_from_bytes (_tmp13_, _tmp14_, TRUE); g_variant_ref_sink (_tmp15_); bs = _tmp15_; _tmp16_ = g_variant_type_new ("a(iiay)"); _tmp17_ = _tmp16_; _tmp18_ = g_variant_builder_new (_tmp17_); _tmp19_ = _tmp18_; _g_variant_type_free0 (_tmp17_); builder = _tmp19_; _tmp20_ = builder; _tmp21_ = g_variant_type_new ("(iiay)"); _tmp22_ = _tmp21_; g_variant_builder_open (_tmp20_, _tmp22_); _g_variant_type_free0 (_tmp22_); _tmp23_ = builder; _tmp24_ = width; g_variant_builder_add (_tmp23_, "i", _tmp24_, NULL); _tmp25_ = builder; _tmp26_ = height; g_variant_builder_add (_tmp25_, "i", _tmp26_, NULL); _tmp27_ = builder; _tmp28_ = bs; g_variant_builder_add_value (_tmp27_, _tmp28_); _tmp29_ = builder; g_variant_builder_close (_tmp29_); _tmp30_ = builder; _tmp31_ = g_variant_new ("a(iiay)", _tmp30_, NULL); g_variant_ref_sink (_tmp31_); _tmp32_ = _tmp31_; indicator_set_icon_vector (self, _tmp32_); _g_variant_unref0 (_tmp32_); indicator_set_icon_name (self, ""); _tmp33_ = self->priv->_icon_desc; _tmp34_ = icon_desc; if (g_strcmp0 (_tmp33_, _tmp34_) != 0) { const gchar* _tmp35_ = NULL; _tmp35_ = icon_desc; indicator_set_icon_desc (self, _tmp35_); } _tmp36_ = ibus_service_get_connection ((IBusService*) self); _tmp37_ = _tmp36_; if (_tmp37_ == NULL) { _g_variant_builder_unref0 (builder); _g_variant_unref0 (bs); _g_bytes_unref0 (bytes); return; } { GDBusConnection* _tmp38_ = NULL; GDBusConnection* _tmp39_ = NULL; const gchar* _tmp40_ = NULL; const gchar* _tmp41_ = NULL; _tmp38_ = ibus_service_get_connection ((IBusService*) self); _tmp39_ = _tmp38_; _tmp40_ = ibus_service_get_object_path ((IBusService*) self); _tmp41_ = _tmp40_; g_dbus_connection_emit_signal (_tmp39_, NULL, _tmp41_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch9_g_error; } } goto __finally9; __catch9_g_error: { GError* e = NULL; GError* _tmp42_ = NULL; const gchar* _tmp43_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp42_ = e; _tmp43_ = _tmp42_->message; g_warning ("indicator.vala:460: Unable to send signal for NewIcon: %s", _tmp43_); _g_error_free0 (e); } __finally9: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_variant_builder_unref0 (builder); _g_variant_unref0 (bs); _g_bytes_unref0 (bytes); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _g_variant_builder_unref0 (builder); _g_variant_unref0 (bs); _g_bytes_unref0 (bytes); } void indicator_position_context_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in) { gint _vala_x = 0; gint _vala_y = 0; gboolean _vala_push_in = FALSE; gint _tmp0_ = 0; gint _tmp1_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); _tmp0_ = self->priv->m_context_menu_x; _vala_x = _tmp0_; _tmp1_ = self->priv->m_context_menu_y; _vala_y = _tmp1_; _vala_push_in = FALSE; if (x) { *x = _vala_x; } if (y) { *y = _vala_y; } if (push_in) { *push_in = _vala_push_in; } } void indicator_position_activate_menu (Indicator* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in) { gint _vala_x = 0; gint _vala_y = 0; gboolean _vala_push_in = FALSE; gint _tmp0_ = 0; gint _tmp1_ = 0; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); _tmp0_ = self->priv->m_activate_menu_x; _vala_x = _tmp0_; _tmp1_ = self->priv->m_activate_menu_y; _vala_y = _tmp1_; _vala_push_in = FALSE; if (x) { *x = _vala_x; } if (y) { *y = _vala_y; } if (push_in) { *push_in = _vala_push_in; } } const gchar* indicator_get_id (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_id; result = _tmp0_; return result; } static void indicator_set_id (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_id); self->priv->_id = _tmp1_; g_object_notify ((GObject *) self, "id"); } const gchar* indicator_get_category_s (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_category_s; result = _tmp0_; return result; } static void indicator_set_category_s (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_category_s); self->priv->_category_s = _tmp1_; g_object_notify ((GObject *) self, "category-s"); } const gchar* indicator_get_status_s (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_status_s; result = _tmp0_; return result; } void indicator_set_status_s (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_status_s); self->priv->_status_s = _tmp1_; g_object_notify ((GObject *) self, "status-s"); } const gchar* indicator_get_icon_name (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_icon_name; result = _tmp0_; return result; } void indicator_set_icon_name (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_icon_name); self->priv->_icon_name = _tmp1_; g_object_notify ((GObject *) self, "icon-name"); } const gchar* indicator_get_icon_desc (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_icon_desc; result = _tmp0_; return result; } void indicator_set_icon_desc (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_icon_desc); self->priv->_icon_desc = _tmp1_; g_object_notify ((GObject *) self, "icon-desc"); } const gchar* indicator_get_attention_icon_name (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_attention_icon_name; result = _tmp0_; return result; } void indicator_set_attention_icon_name (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_attention_icon_name); self->priv->_attention_icon_name = _tmp1_; g_object_notify ((GObject *) self, "attention-icon-name"); } const gchar* indicator_get_attention_icon_desc (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_attention_icon_desc; result = _tmp0_; return result; } void indicator_set_attention_icon_desc (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_attention_icon_desc); self->priv->_attention_icon_desc = _tmp1_; g_object_notify ((GObject *) self, "attention-icon-desc"); } const gchar* indicator_get_title (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_title; result = _tmp0_; return result; } void indicator_set_title (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_title); self->priv->_title = _tmp1_; g_object_notify ((GObject *) self, "title"); } const gchar* indicator_get_icon_theme_path (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_icon_theme_path; result = _tmp0_; return result; } void indicator_set_icon_theme_path (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_icon_theme_path); self->priv->_icon_theme_path = _tmp1_; g_object_notify ((GObject *) self, "icon-theme-path"); } gboolean indicator_get_connected (Indicator* self) { gboolean result; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->_connected; result = _tmp0_; return result; } void indicator_set_connected (Indicator* self, gboolean value) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_connected = _tmp0_; g_object_notify ((GObject *) self, "connected"); } const gchar* indicator_get_label_s (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_label_s; result = _tmp0_; return result; } void indicator_set_label_s (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_label_s); self->priv->_label_s = _tmp1_; g_object_notify ((GObject *) self, "label-s"); } const gchar* indicator_get_label_guide_s (Indicator* self) { const gchar* result; const gchar* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_label_guide_s; result = _tmp0_; return result; } void indicator_set_label_guide_s (Indicator* self, const gchar* value) { const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->_label_guide_s); self->priv->_label_guide_s = _tmp1_; g_object_notify ((GObject *) self, "label-guide-s"); } guint32 indicator_get_ordering_index (Indicator* self) { guint32 result; guint32 _tmp0_ = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->_ordering_index; result = _tmp0_; return result; } void indicator_set_ordering_index (Indicator* self, guint32 value) { guint32 _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_ordering_index = _tmp0_; g_object_notify ((GObject *) self, "ordering-index"); } GVariant* indicator_get_icon_vector (Indicator* self) { GVariant* result; GVariant* _tmp0_ = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_icon_vector; result = _tmp0_; return result; } void indicator_set_icon_vector (Indicator* self, GVariant* value) { GVariant* _tmp0_ = NULL; GVariant* _tmp1_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp1_ = _g_variant_ref0 (_tmp0_); _g_variant_unref0 (self->priv->_icon_vector); self->priv->_icon_vector = _tmp1_; g_object_notify ((GObject *) self, "icon-vector"); } static void g_cclosure_user_marshal_VOID__UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_uint (param_values + 1), g_value_get_uint (param_values + 2), data2); } static void indicator_class_init (IndicatorClass * klass) { indicator_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (IndicatorPrivate)); ((IBusServiceClass *) klass)->service_method_call = indicator_real_service_method_call; ((IBusServiceClass *) klass)->service_get_property = indicator_real_service_get_property; ((IBusServiceClass *) klass)->service_set_property = indicator_real_service_set_property; G_OBJECT_CLASS (klass)->get_property = _vala_indicator_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_indicator_set_property; G_OBJECT_CLASS (klass)->finalize = indicator_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ID, g_param_spec_string ("id", "id", "id", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_CATEGORY_S, g_param_spec_string ("category-s", "category-s", "category-s", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_STATUS_S, g_param_spec_string ("status-s", "status-s", "status-s", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_NAME, g_param_spec_string ("icon-name", "icon-name", "icon-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_DESC, g_param_spec_string ("icon-desc", "icon-desc", "icon-desc", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ATTENTION_ICON_NAME, g_param_spec_string ("attention-icon-name", "attention-icon-name", "attention-icon-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ATTENTION_ICON_DESC, g_param_spec_string ("attention-icon-desc", "attention-icon-desc", "attention-icon-desc", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_TITLE, g_param_spec_string ("title", "title", "title", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_THEME_PATH, g_param_spec_string ("icon-theme-path", "icon-theme-path", "icon-theme-path", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_CONNECTED, g_param_spec_boolean ("connected", "connected", "connected", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_LABEL_S, g_param_spec_string ("label-s", "label-s", "label-s", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_LABEL_GUIDE_S, g_param_spec_string ("label-guide-s", "label-guide-s", "label-guide-s", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ORDERING_INDEX, g_param_spec_uint ("ordering-index", "ordering-index", "ordering-index", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_VECTOR, g_param_spec_variant ("icon-vector", "icon-vector", "icon-vector", G_VARIANT_TYPE_ANY, NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_signal_new ("context_menu", TYPE_INDICATOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); g_signal_new ("activate", TYPE_INDICATOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("registered_status_notifier_item", TYPE_INDICATOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void indicator_instance_init (Indicator * self) { self->priv = INDICATOR_GET_PRIVATE (self); } static void indicator_finalize (GObject* obj) { Indicator * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_INDICATOR, Indicator); _g_free0 (self->priv->_id); _g_free0 (self->priv->_category_s); _g_free0 (self->priv->_status_s); _g_free0 (self->priv->_icon_name); _g_free0 (self->priv->_icon_desc); _g_free0 (self->priv->_attention_icon_name); _g_free0 (self->priv->_attention_icon_desc); _g_free0 (self->priv->_title); _g_free0 (self->priv->_icon_theme_path); _g_free0 (self->priv->_label_s); _g_free0 (self->priv->_label_guide_s); _g_variant_unref0 (self->priv->_icon_vector); _g_dbus_node_info_unref0 (self->priv->m_watcher_node_info); _g_object_unref0 (self->priv->m_proxy); G_OBJECT_CLASS (indicator_parent_class)->finalize (obj); } GType indicator_get_type (void) { static volatile gsize indicator_type_id__volatile = 0; if (g_once_init_enter (&indicator_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IndicatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) indicator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Indicator), 0, (GInstanceInitFunc) indicator_instance_init, NULL }; GType indicator_type_id; indicator_type_id = g_type_register_static (ibus_service_get_type (), "Indicator", &g_define_type_info, 0); g_once_init_leave (&indicator_type_id__volatile, indicator_type_id); } return indicator_type_id__volatile; } static void _vala_indicator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { Indicator * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_INDICATOR, Indicator); switch (property_id) { case INDICATOR_ID: g_value_set_string (value, indicator_get_id (self)); break; case INDICATOR_CATEGORY_S: g_value_set_string (value, indicator_get_category_s (self)); break; case INDICATOR_STATUS_S: g_value_set_string (value, indicator_get_status_s (self)); break; case INDICATOR_ICON_NAME: g_value_set_string (value, indicator_get_icon_name (self)); break; case INDICATOR_ICON_DESC: g_value_set_string (value, indicator_get_icon_desc (self)); break; case INDICATOR_ATTENTION_ICON_NAME: g_value_set_string (value, indicator_get_attention_icon_name (self)); break; case INDICATOR_ATTENTION_ICON_DESC: g_value_set_string (value, indicator_get_attention_icon_desc (self)); break; case INDICATOR_TITLE: g_value_set_string (value, indicator_get_title (self)); break; case INDICATOR_ICON_THEME_PATH: g_value_set_string (value, indicator_get_icon_theme_path (self)); break; case INDICATOR_CONNECTED: g_value_set_boolean (value, indicator_get_connected (self)); break; case INDICATOR_LABEL_S: g_value_set_string (value, indicator_get_label_s (self)); break; case INDICATOR_LABEL_GUIDE_S: g_value_set_string (value, indicator_get_label_guide_s (self)); break; case INDICATOR_ORDERING_INDEX: g_value_set_uint (value, indicator_get_ordering_index (self)); break; case INDICATOR_ICON_VECTOR: g_value_set_variant (value, indicator_get_icon_vector (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_indicator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { Indicator * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_INDICATOR, Indicator); switch (property_id) { case INDICATOR_ID: indicator_set_id (self, g_value_get_string (value)); break; case INDICATOR_CATEGORY_S: indicator_set_category_s (self, g_value_get_string (value)); break; case INDICATOR_STATUS_S: indicator_set_status_s (self, g_value_get_string (value)); break; case INDICATOR_ICON_NAME: indicator_set_icon_name (self, g_value_get_string (value)); break; case INDICATOR_ICON_DESC: indicator_set_icon_desc (self, g_value_get_string (value)); break; case INDICATOR_ATTENTION_ICON_NAME: indicator_set_attention_icon_name (self, g_value_get_string (value)); break; case INDICATOR_ATTENTION_ICON_DESC: indicator_set_attention_icon_desc (self, g_value_get_string (value)); break; case INDICATOR_TITLE: indicator_set_title (self, g_value_get_string (value)); break; case INDICATOR_ICON_THEME_PATH: indicator_set_icon_theme_path (self, g_value_get_string (value)); break; case INDICATOR_CONNECTED: indicator_set_connected (self, g_value_get_boolean (value)); break; case INDICATOR_LABEL_S: indicator_set_label_s (self, g_value_get_string (value)); break; case INDICATOR_LABEL_GUIDE_S: indicator_set_label_guide_s (self, g_value_get_string (value)); break; case INDICATOR_ORDERING_INDEX: indicator_set_ordering_index (self, g_value_get_uint (value)); break; case INDICATOR_ICON_VECTOR: indicator_set_icon_vector (self, g_value_get_variant (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } ibus-1.5.11/ui/gtk3/switcher.vala0000644000000000000000000003456312551654124013432 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class Switcher : Gtk.Window { private class IBusEngineButton : Gtk.Button { public IBusEngineButton(IBus.EngineDesc engine, Switcher switcher) { GLib.Object(); this.longname = engine.get_longname(); var name = engine.get_name(); if (name.length < 4 || name[0:4] != "xkb:") { IconWidget icon = new IconWidget(engine.get_icon(), Gtk.IconSize.DIALOG); icon.set_halign(Gtk.Align.CENTER); icon.set_valign(Gtk.Align.CENTER); add(icon); } else { var language = switcher.get_xkb_language(engine); Gtk.Label label = new Gtk.Label(language); label.set_halign(Gtk.Align.CENTER); label.set_valign(Gtk.Align.CENTER); string language_font = "Monospace Bold 16"; string markup = "%s". printf(language_font, language); label.set_markup(markup); int fixed_width, fixed_height; Gtk.icon_size_lookup(Gtk.IconSize.DIALOG, out fixed_width, out fixed_height); label.set_size_request(fixed_width, fixed_height); add(label); } } public string longname { get; set; } public override bool draw(Cairo.Context cr) { base.draw(cr); if (is_focus) { cr.save(); cr.rectangle( 0, 0, get_allocated_width(), get_allocated_height()); cr.set_source_rgba(0.0, 0.0, 1.0, 0.1); cr.fill(); cr.restore(); } return true; } } private Gtk.Box m_box; private Gtk.Label m_label; private IBusEngineButton[] m_buttons = {}; private IBus.EngineDesc[] m_engines; private uint m_selected_engine; private uint m_keyval; private uint m_modifiers; private Gdk.ModifierType m_primary_modifier; private GLib.MainLoop m_loop; private int m_result; private uint m_popup_delay_time = 0; private uint m_popup_delay_time_id = 0; private int m_root_x; private int m_root_y; private GLib.HashTable m_xkb_languages = new GLib.HashTable(GLib.str_hash, GLib.str_equal); public Switcher() { GLib.Object( type : Gtk.WindowType.POPUP, events : Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK, window_position : Gtk.WindowPosition.CENTER, accept_focus : true, decorated : false, modal : true, focus_visible : true ); Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); add(vbox); m_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); m_box.set_halign(Gtk.Align.CENTER); m_box.set_valign(Gtk.Align.CENTER); vbox.pack_start(m_box, true, true, 0); m_label = new Gtk.Label(""); /* Set the accessible role of the label to a status bar so it * will emit name changed events that can be used by screen * readers. */ Atk.Object obj = m_label.get_accessible(); obj.set_role (Atk.Role.STATUSBAR); /* Use Gtk.Widget.set_margin_start() and * Gtk.Widget.set_margin_top() since gtk 3.12 */ m_label.set_padding(3, 3); vbox.pack_end(m_label, false, false, 0); grab_focus(); } public int run(uint keyval, uint state, Gdk.Event event, IBus.EngineDesc[] engines, int index) { assert (m_loop == null); assert (index < engines.length); m_keyval = keyval; m_modifiers = state; m_primary_modifier = KeybindingManager.get_primary_modifier( state & KeybindingManager.MODIFIER_FILTER); update_engines(engines); /* Let gtk recalculate the window size. */ resize(1, 1); m_selected_engine = index; m_label.set_text(m_buttons[index].longname); m_buttons[index].grab_focus(); Gdk.Device device = event.get_device(); if (device == null) { var display = get_display(); var device_manager = display.get_device_manager(); /* The macro VALA_X_Y supports even numbers. * http://git.gnome.org/browse/vala/commit/?id=294b374af6 */ #if VALA_0_16 device = device_manager.list_devices(Gdk.DeviceType.MASTER).data; #else unowned GLib.List devices = device_manager.list_devices(Gdk.DeviceType.MASTER); device = devices.data; #endif } Gdk.Device keyboard; Gdk.Device pointer; if (device.get_source() == Gdk.InputSource.KEYBOARD) { keyboard = device; pointer = device.get_associated_device(); } else { pointer = device; keyboard = device.get_associated_device(); } // Avoid regressions. if (m_popup_delay_time > 0) { get_position(out m_root_x, out m_root_y); // Pull the window from the screen so that the window gets // the key press and release events but mouse does not select // an IME unexpectedly. move(-1000, -1000); } show_all(); if (m_popup_delay_time > 0) { // Restore the window position after m_popup_delay_time m_popup_delay_time_id = GLib.Timeout.add(m_popup_delay_time, () => { restore_window_position("timeout"); return false; }); } Gdk.GrabStatus status; // Grab all keyboard events status = keyboard.grab(get_window(), Gdk.GrabOwnership.NONE, true, Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK, null, Gdk.CURRENT_TIME); if (status != Gdk.GrabStatus.SUCCESS) warning("Grab keyboard failed! status = %d", status); // Grab all pointer events status = pointer.grab(get_window(), Gdk.GrabOwnership.NONE, true, Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK, null, Gdk.CURRENT_TIME); if (status != Gdk.GrabStatus.SUCCESS) warning("Grab pointer failed! status = %d", status); m_loop = new GLib.MainLoop(); m_loop.run(); m_loop = null; keyboard.ungrab(Gdk.CURRENT_TIME); pointer.ungrab(Gdk.CURRENT_TIME); hide(); // Make sure the switcher is hidden before returning from this function. while (Gtk.events_pending()) Gtk.main_iteration (); return m_result; } /* Based on metacity/src/ui/tabpopup.c:meta_ui_tab_popup_new */ private void update_engines(IBus.EngineDesc[] engines) { foreach (var button in m_buttons) { button.destroy(); } m_buttons = {}; if (engines == null) { m_engines = {}; return; } m_engines = engines; int max_label_width = 0; for (int i = 0; i < m_engines.length; i++) { var index = i; var engine = m_engines[i]; var button = new IBusEngineButton(engine, this); var longname = engine.get_longname(); button.set_relief(Gtk.ReliefStyle.NONE); button.show(); button.enter_notify_event.connect((e) => { button.grab_focus(); m_selected_engine = index; return true; }); button.button_press_event.connect((e) => { m_selected_engine = index; m_result = (int)m_selected_engine; m_loop.quit(); return true; }); button.longname = longname; m_label.set_label(longname); int width; m_label.get_preferred_width(null, out width); max_label_width = int.max(max_label_width, width); m_box.pack_start(button, true, true); m_buttons += button; } m_label.set_text(m_buttons[0].longname); m_label.set_ellipsize(Pango.EllipsizeMode.END); Gdk.Display display = Gdk.Display.get_default(); Gdk.Screen screen = (display != null) ? display.get_default_screen() : null; int screen_width = 0; if (screen != null) { screen_width = screen.get_width(); } if (screen_width > 0 && max_label_width > (screen_width / 4)) { max_label_width = screen_width / 4; } /* add random padding */ max_label_width += 20; set_default_size(max_label_width, -1); } private void next_engine() { if (m_selected_engine == m_engines.length - 1) m_selected_engine = 0; else m_selected_engine ++; m_label.set_text(m_buttons[m_selected_engine].longname); set_focus(m_buttons[m_selected_engine]); } private void previous_engine() { if (m_selected_engine == 0) m_selected_engine = m_engines.length - 1; else m_selected_engine --; m_label.set_text(m_buttons[m_selected_engine].longname); set_focus(m_buttons[m_selected_engine]); } private void restore_window_position(string debug_str) { debug("restore_window_position %s: (%ld, %ld)\n", debug_str, m_root_x, m_root_y); if (m_popup_delay_time_id == 0) { return; } GLib.Source.remove(m_popup_delay_time_id); m_popup_delay_time_id = 0; move(m_root_x, m_root_y); } /* override virtual functions */ public override void show() { base.show(); set_focus_visible(true); } public override bool key_press_event(Gdk.EventKey e) { bool retval = true; /* Gdk.EventKey is changed to the pointer. * https://git.gnome.org/browse/vala/commit/?id=598942f1 */ #if VALA_0_24 Gdk.EventKey pe = e; #else Gdk.EventKey *pe = &e; #endif if (m_popup_delay_time > 0) { restore_window_position("pressed"); } do { uint modifiers = KeybindingManager.MODIFIER_FILTER & pe.state; if ((modifiers != m_modifiers) && (modifiers != (m_modifiers | Gdk.ModifierType.SHIFT_MASK))) { break; } if (pe.keyval == m_keyval) { if (modifiers == m_modifiers) next_engine(); else // modififers == m_modifiers | SHIFT_MASK previous_engine(); break; } switch (pe.keyval) { case 0x08fb: /* leftarrow */ case 0xff51: /* Left */ previous_engine(); break; case 0x08fc: /* uparrow */ case 0xff52: /* Up */ break; case 0x08fd: /* rightarrow */ case 0xff53: /* Right */ next_engine(); break; case 0x08fe: /* downarrow */ case 0xff54: /* Down */ break; default: debug("0x%04x", pe.keyval); break; } } while (false); return retval; } public override bool key_release_event(Gdk.EventKey e) { #if VALA_0_24 Gdk.EventKey pe = e; #else Gdk.EventKey *pe = &e; #endif if (KeybindingManager.primary_modifier_still_pressed((Gdk.Event) pe, m_primary_modifier)) { return true; } // if e.type == Gdk.EventType.KEY_RELEASE, m_loop is already null. if (m_loop == null) { return false; } if (m_popup_delay_time > 0) { if (m_popup_delay_time_id != 0) { GLib.Source.remove(m_popup_delay_time_id); m_popup_delay_time_id = 0; } } m_loop.quit(); m_result = (int)m_selected_engine; return true; } public void set_popup_delay_time(uint popup_delay_time) { m_popup_delay_time = popup_delay_time; } public string get_xkb_language(IBus.EngineDesc engine) { var name = engine.get_name(); assert(name[0:4] == "xkb:"); var language = m_xkb_languages[name]; if (language != null) return language; language = engine.get_language(); /* Maybe invalid layout */ if (language.length < 2) return language; language = language[0:2].up(); int index = 0; foreach (var saved_language in m_xkb_languages.get_values()) { if (language == saved_language[0:2]) index++; } if (index > 0) { unichar u = 0x2081 + index; language = "%s%s".printf(language, u.to_string()); } m_xkb_languages.insert(name, language); return language; } } ibus-1.5.11/ui/gtk3/handle.c0000644000000000000000000005651612551655052012337 00000000000000/* handle.c generated by valac 0.28.0, the Vala compiler * generated from handle.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #define TYPE_HANDLE (handle_get_type ()) #define HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HANDLE, Handle)) #define HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HANDLE, HandleClass)) #define IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HANDLE)) #define IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HANDLE)) #define HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HANDLE, HandleClass)) typedef struct _Handle Handle; typedef struct _HandleClass HandleClass; typedef struct _HandlePrivate HandlePrivate; #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) struct _Handle { GtkEventBox parent_instance; HandlePrivate * priv; }; struct _HandleClass { GtkEventBoxClass parent_class; }; struct _HandlePrivate { gboolean m_move_begined; GdkRectangle m_workarea; GdkPoint m_press_pos; }; static gpointer handle_parent_class = NULL; GType handle_get_type (void) G_GNUC_CONST; #define HANDLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HANDLE, HandlePrivate)) enum { HANDLE_DUMMY_PROPERTY }; Handle* handle_new (void); Handle* handle_construct (GType object_type); static void handle_real_realize (GtkWidget* base); static gboolean handle_real_button_press_event (GtkWidget* base, GdkEventButton* event); static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event); static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event); static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr); static void handle_finalize (GObject* obj); static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } Handle* handle_construct (GType object_type) { Handle * self = NULL; GdkEventMask mask = 0; GtkCssProvider* css_provider = NULL; GtkCssProvider* _tmp0_ = NULL; GtkStyleContext* context = NULL; GtkStyleContext* _tmp3_ = NULL; GtkStyleContext* _tmp4_ = NULL; GError * _inner_error_ = NULL; self = (Handle*) g_object_new (object_type, NULL); gtk_widget_set_size_request ((GtkWidget*) self, 6, -1); mask = ((GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK) | GDK_BUTTON_RELEASE_MASK) | GDK_BUTTON1_MOTION_MASK; gtk_widget_set_events ((GtkWidget*) self, (gint) mask); self->priv->m_move_begined = FALSE; _tmp0_ = gtk_css_provider_new (); css_provider = _tmp0_; { gtk_css_provider_load_from_data (css_provider, "GtkEventBox { background-color: gray }", (gssize) (-1), &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* _error_ = NULL; GError* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; _error_ = _inner_error_; _inner_error_ = NULL; _tmp1_ = _error_; _tmp2_ = _tmp1_->message; g_warning ("handle.vala:47: Parse error in Handle: %s", _tmp2_); _g_error_free0 (_error_); } __finally0: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (css_provider); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self); _tmp4_ = _g_object_ref0 (_tmp3_); context = _tmp4_; gtk_style_context_add_provider (context, (GtkStyleProvider*) css_provider, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_object_unref0 (context); _g_object_unref0 (css_provider); return self; } Handle* handle_new (void) { return handle_construct (TYPE_HANDLE); } static void handle_real_realize (GtkWidget* base) { Handle * self; self = (Handle*) base; GTK_WIDGET_CLASS (handle_parent_class)->realize ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_event_box_get_type (), GtkEventBox)); } static gboolean handle_real_button_press_event (GtkWidget* base, GdkEventButton* event) { Handle * self; gboolean result = FALSE; GdkEventButton* _tmp0_ = NULL; guint _tmp1_ = 0U; GdkRectangle _tmp2_ = {0}; GdkRectangle _tmp3_ = {0}; gint x = 0; gint y = 0; GtkWindow* toplevel = NULL; GtkWidget* _tmp104_ = NULL; GtkWindow* _tmp105_ = NULL; GtkWindow* _tmp106_ = NULL; gint _tmp107_ = 0; gint _tmp108_ = 0; GdkEventButton* _tmp109_ = NULL; gdouble _tmp110_ = 0.0; gint _tmp111_ = 0; GdkEventButton* _tmp112_ = NULL; gdouble _tmp113_ = 0.0; gint _tmp114_ = 0; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event; _tmp1_ = _tmp0_->button; if (_tmp1_ != ((guint) 1)) { result = FALSE; return result; } memset (&_tmp2_, 0, sizeof (GdkRectangle)); _tmp2_.x = 0; _tmp2_.y = 0; _tmp2_.width = G_MAXINT; _tmp2_.height = G_MAXINT; self->priv->m_workarea = _tmp2_; _tmp3_ = self->priv->m_workarea; { gboolean _tmp4_ = FALSE; _tmp4_ = TRUE; while (TRUE) { GdkWindow* root = NULL; GdkWindow* _tmp5_ = NULL; GdkWindow* _tmp6_ = NULL; GdkAtom property = 0U; GdkAtom _tmp7_ = 0U; GdkAtom type = 0U; GdkAtom _tmp8_ = 0U; GdkAtom actual_type = 0U; gint format = 0; guchar* data = NULL; gint data_length1 = 0; gint _data_size_ = 0; gboolean _result_ = FALSE; GdkWindow* _tmp9_ = NULL; GdkAtom _tmp10_ = 0U; GdkAtom _tmp11_ = 0U; GdkAtom _tmp12_ = 0U; gint _tmp13_ = 0; guint8* _tmp14_ = NULL; gint _tmp15_ = 0; gboolean _tmp16_ = FALSE; gboolean _tmp17_ = FALSE; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; gboolean _tmp20_ = FALSE; gint index = 0; guchar* _tmp25_ = NULL; gint _tmp25__length1 = 0; guchar _tmp26_ = '\0'; guchar* _tmp27_ = NULL; gint _tmp27__length1 = 0; guchar _tmp28_ = '\0'; guchar* _tmp29_ = NULL; gint _tmp29__length1 = 0; guchar _tmp30_ = '\0'; guchar* _tmp31_ = NULL; gint _tmp31__length1 = 0; guchar _tmp32_ = '\0'; GdkAtom _tmp33_ = 0U; GdkAtom _tmp34_ = 0U; GdkWindow* _tmp35_ = NULL; GdkAtom _tmp36_ = 0U; GdkAtom _tmp37_ = 0U; GdkAtom _tmp38_ = 0U; gint _tmp39_ = 0; guint8* _tmp40_ = NULL; gint _tmp41_ = 0; gboolean _tmp42_ = FALSE; gboolean _tmp43_ = FALSE; gboolean _tmp44_ = FALSE; gboolean _tmp45_ = FALSE; gboolean _tmp46_ = FALSE; gint i = 0; gint _tmp52_ = 0; guchar* _tmp53_ = NULL; gint _tmp53__length1 = 0; gint _tmp54_ = 0; guchar _tmp55_ = '\0'; guchar* _tmp56_ = NULL; gint _tmp56__length1 = 0; gint _tmp57_ = 0; guchar _tmp58_ = '\0'; guchar* _tmp59_ = NULL; gint _tmp59__length1 = 0; gint _tmp60_ = 0; guchar _tmp61_ = '\0'; guchar* _tmp62_ = NULL; gint _tmp62__length1 = 0; gint _tmp63_ = 0; guchar _tmp64_ = '\0'; gint _tmp65_ = 0; guchar* _tmp66_ = NULL; gint _tmp66__length1 = 0; gint _tmp67_ = 0; guchar _tmp68_ = '\0'; guchar* _tmp69_ = NULL; gint _tmp69__length1 = 0; gint _tmp70_ = 0; guchar _tmp71_ = '\0'; guchar* _tmp72_ = NULL; gint _tmp72__length1 = 0; gint _tmp73_ = 0; guchar _tmp74_ = '\0'; guchar* _tmp75_ = NULL; gint _tmp75__length1 = 0; gint _tmp76_ = 0; guchar _tmp77_ = '\0'; gint _tmp78_ = 0; guchar* _tmp79_ = NULL; gint _tmp79__length1 = 0; gint _tmp80_ = 0; guchar _tmp81_ = '\0'; guchar* _tmp82_ = NULL; gint _tmp82__length1 = 0; gint _tmp83_ = 0; guchar _tmp84_ = '\0'; guchar* _tmp85_ = NULL; gint _tmp85__length1 = 0; gint _tmp86_ = 0; guchar _tmp87_ = '\0'; guchar* _tmp88_ = NULL; gint _tmp88__length1 = 0; gint _tmp89_ = 0; guchar _tmp90_ = '\0'; gint _tmp91_ = 0; guchar* _tmp92_ = NULL; gint _tmp92__length1 = 0; gint _tmp93_ = 0; guchar _tmp94_ = '\0'; guchar* _tmp95_ = NULL; gint _tmp95__length1 = 0; gint _tmp96_ = 0; guchar _tmp97_ = '\0'; guchar* _tmp98_ = NULL; gint _tmp98__length1 = 0; gint _tmp99_ = 0; guchar _tmp100_ = '\0'; guchar* _tmp101_ = NULL; gint _tmp101__length1 = 0; gint _tmp102_ = 0; guchar _tmp103_ = '\0'; if (!_tmp4_) { if (!FALSE) { break; } } _tmp4_ = FALSE; _tmp5_ = gdk_get_default_root_window (); _tmp6_ = _g_object_ref0 (_tmp5_); root = _tmp6_; _tmp7_ = gdk_atom_intern ("_NET_CURRENT_DESKTOP", FALSE); property = _tmp7_; _tmp8_ = gdk_atom_intern ("CARDINAL", FALSE); type = _tmp8_; _tmp9_ = root; _tmp10_ = property; _tmp11_ = type; _tmp16_ = gdk_property_get (_tmp9_, _tmp10_, _tmp11_, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp12_, &_tmp13_, &_tmp15_, &_tmp14_); actual_type = _tmp12_; format = _tmp13_; data = (g_free (data), NULL); data = _tmp14_; data_length1 = _tmp15_; _data_size_ = data_length1; _result_ = _tmp16_; _tmp20_ = _result_; if (!_tmp20_) { _tmp19_ = TRUE; } else { GdkAtom _tmp21_ = 0U; GdkAtom _tmp22_ = 0U; _tmp21_ = actual_type; _tmp22_ = type; _tmp19_ = _tmp21_ != _tmp22_; } if (_tmp19_) { _tmp18_ = TRUE; } else { gint _tmp23_ = 0; _tmp23_ = format; _tmp18_ = _tmp23_ != 32; } if (_tmp18_) { _tmp17_ = TRUE; } else { guchar* _tmp24_ = NULL; gint _tmp24__length1 = 0; _tmp24_ = data; _tmp24__length1 = data_length1; _tmp17_ = _tmp24__length1 != 4; } if (_tmp17_) { data = (g_free (data), NULL); _g_object_unref0 (root); break; } _tmp25_ = data; _tmp25__length1 = data_length1; _tmp26_ = _tmp25_[0]; _tmp27_ = data; _tmp27__length1 = data_length1; _tmp28_ = _tmp27_[1]; _tmp29_ = data; _tmp29__length1 = data_length1; _tmp30_ = _tmp29_[2]; _tmp31_ = data; _tmp31__length1 = data_length1; _tmp32_ = _tmp31_[3]; index = (gint) (((_tmp26_ | (_tmp28_ << 8)) | (_tmp30_ << 16)) | (_tmp32_ << 24)); _tmp33_ = gdk_atom_intern ("_NET_WORKAREA", FALSE); property = _tmp33_; _tmp34_ = gdk_atom_intern ("CARDINAL", FALSE); type = _tmp34_; _tmp35_ = root; _tmp36_ = property; _tmp37_ = type; _tmp42_ = gdk_property_get (_tmp35_, _tmp36_, _tmp37_, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp38_, &_tmp39_, &_tmp41_, &_tmp40_); actual_type = _tmp38_; format = _tmp39_; data = (g_free (data), NULL); data = _tmp40_; data_length1 = _tmp41_; _data_size_ = data_length1; _result_ = _tmp42_; _tmp46_ = _result_; if (!_tmp46_) { _tmp45_ = TRUE; } else { GdkAtom _tmp47_ = 0U; GdkAtom _tmp48_ = 0U; _tmp47_ = actual_type; _tmp48_ = type; _tmp45_ = _tmp47_ != _tmp48_; } if (_tmp45_) { _tmp44_ = TRUE; } else { gint _tmp49_ = 0; _tmp49_ = format; _tmp44_ = _tmp49_ != 32; } if (_tmp44_) { _tmp43_ = TRUE; } else { guchar* _tmp50_ = NULL; gint _tmp50__length1 = 0; gint _tmp51_ = 0; _tmp50_ = data; _tmp50__length1 = data_length1; _tmp51_ = index; _tmp43_ = _tmp50__length1 < ((_tmp51_ + 1) * 16); } if (_tmp43_) { data = (g_free (data), NULL); _g_object_unref0 (root); break; } _tmp52_ = index; i = (_tmp52_ * 4) * 4; _tmp53_ = data; _tmp53__length1 = data_length1; _tmp54_ = i; _tmp55_ = _tmp53_[_tmp54_]; _tmp56_ = data; _tmp56__length1 = data_length1; _tmp57_ = i; _tmp58_ = _tmp56_[_tmp57_ + 1]; _tmp59_ = data; _tmp59__length1 = data_length1; _tmp60_ = i; _tmp61_ = _tmp59_[_tmp60_ + 2]; _tmp62_ = data; _tmp62__length1 = data_length1; _tmp63_ = i; _tmp64_ = _tmp62_[_tmp63_ + 3]; self->priv->m_workarea.x = (gint) (((_tmp55_ | (_tmp58_ << 8)) | (_tmp61_ << 16)) | (_tmp64_ << 24)); _tmp65_ = i; i = _tmp65_ + 4; _tmp66_ = data; _tmp66__length1 = data_length1; _tmp67_ = i; _tmp68_ = _tmp66_[_tmp67_]; _tmp69_ = data; _tmp69__length1 = data_length1; _tmp70_ = i; _tmp71_ = _tmp69_[_tmp70_ + 1]; _tmp72_ = data; _tmp72__length1 = data_length1; _tmp73_ = i; _tmp74_ = _tmp72_[_tmp73_ + 2]; _tmp75_ = data; _tmp75__length1 = data_length1; _tmp76_ = i; _tmp77_ = _tmp75_[_tmp76_ + 3]; self->priv->m_workarea.y = (gint) (((_tmp68_ | (_tmp71_ << 8)) | (_tmp74_ << 16)) | (_tmp77_ << 24)); _tmp78_ = i; i = _tmp78_ + 4; _tmp79_ = data; _tmp79__length1 = data_length1; _tmp80_ = i; _tmp81_ = _tmp79_[_tmp80_]; _tmp82_ = data; _tmp82__length1 = data_length1; _tmp83_ = i; _tmp84_ = _tmp82_[_tmp83_ + 1]; _tmp85_ = data; _tmp85__length1 = data_length1; _tmp86_ = i; _tmp87_ = _tmp85_[_tmp86_ + 2]; _tmp88_ = data; _tmp88__length1 = data_length1; _tmp89_ = i; _tmp90_ = _tmp88_[_tmp89_ + 3]; self->priv->m_workarea.width = (gint) (((_tmp81_ | (_tmp84_ << 8)) | (_tmp87_ << 16)) | (_tmp90_ << 24)); _tmp91_ = i; i = _tmp91_ + 4; _tmp92_ = data; _tmp92__length1 = data_length1; _tmp93_ = i; _tmp94_ = _tmp92_[_tmp93_]; _tmp95_ = data; _tmp95__length1 = data_length1; _tmp96_ = i; _tmp97_ = _tmp95_[_tmp96_ + 1]; _tmp98_ = data; _tmp98__length1 = data_length1; _tmp99_ = i; _tmp100_ = _tmp98_[_tmp99_ + 2]; _tmp101_ = data; _tmp101__length1 = data_length1; _tmp102_ = i; _tmp103_ = _tmp101_[_tmp102_ + 3]; self->priv->m_workarea.height = (gint) (((_tmp94_ | (_tmp97_ << 8)) | (_tmp100_ << 16)) | (_tmp103_ << 24)); data = (g_free (data), NULL); _g_object_unref0 (root); } } self->priv->m_move_begined = TRUE; _tmp104_ = gtk_widget_get_toplevel ((GtkWidget*) self); _tmp105_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp104_, gtk_window_get_type (), GtkWindow)); toplevel = _tmp105_; _tmp106_ = toplevel; gtk_window_get_position (_tmp106_, &_tmp107_, &_tmp108_); x = _tmp107_; y = _tmp108_; _tmp109_ = event; _tmp110_ = _tmp109_->x_root; _tmp111_ = x; self->priv->m_press_pos.x = ((gint) _tmp110_) - _tmp111_; _tmp112_ = event; _tmp113_ = _tmp112_->y_root; _tmp114_ = y; self->priv->m_press_pos.y = ((gint) _tmp113_) - _tmp114_; g_signal_emit_by_name (self, "move-begin"); result = TRUE; _g_object_unref0 (toplevel); return result; } static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event) { Handle * self; gboolean result = FALSE; GdkEventButton* _tmp0_ = NULL; guint _tmp1_ = 0U; GdkWindow* _tmp2_ = NULL; GdkCursor* _tmp3_ = NULL; GdkCursor* _tmp4_ = NULL; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event; _tmp1_ = _tmp0_->button; if (_tmp1_ != ((guint) 1)) { result = FALSE; return result; } self->priv->m_move_begined = FALSE; self->priv->m_press_pos.x = 0; self->priv->m_press_pos.y = 0; _tmp2_ = gtk_widget_get_window ((GtkWidget*) self); _tmp3_ = gdk_cursor_new (GDK_LEFT_PTR); _tmp4_ = _tmp3_; gdk_window_set_cursor (_tmp2_, _tmp4_); _g_object_unref0 (_tmp4_); g_signal_emit_by_name (self, "move-end"); result = TRUE; return result; } static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) { Handle * self; gboolean result = FALSE; gboolean _tmp0_ = FALSE; GtkWindow* toplevel = NULL; GtkWidget* _tmp1_ = NULL; GtkWindow* _tmp2_ = NULL; gint x = 0; GdkEventMotion* _tmp3_ = NULL; gdouble _tmp4_ = 0.0; GdkPoint _tmp5_ = {0}; gint _tmp6_ = 0; gint y = 0; GdkEventMotion* _tmp7_ = NULL; gdouble _tmp8_ = 0.0; GdkPoint _tmp9_ = {0}; gint _tmp10_ = 0; gboolean _tmp11_ = FALSE; gint _tmp12_ = 0; GdkRectangle _tmp13_ = {0}; gint _tmp14_ = 0; gboolean _tmp20_ = FALSE; gint _tmp21_ = 0; GdkRectangle _tmp22_ = {0}; gint _tmp23_ = 0; gint w = 0; gint h = 0; GtkWindow* _tmp29_ = NULL; gint _tmp30_ = 0; gint _tmp31_ = 0; gboolean _tmp32_ = FALSE; gint _tmp33_ = 0; gint _tmp34_ = 0; GdkRectangle _tmp35_ = {0}; gint _tmp36_ = 0; GdkRectangle _tmp37_ = {0}; gint _tmp38_ = 0; gboolean _tmp50_ = FALSE; gint _tmp51_ = 0; gint _tmp52_ = 0; GdkRectangle _tmp53_ = {0}; gint _tmp54_ = 0; GdkRectangle _tmp55_ = {0}; gint _tmp56_ = 0; GtkWindow* _tmp68_ = NULL; gint _tmp69_ = 0; gint _tmp70_ = 0; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = self->priv->m_move_begined; if (!_tmp0_) { result = FALSE; return result; } _tmp1_ = gtk_widget_get_toplevel ((GtkWidget*) self); _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_window_get_type (), GtkWindow)); toplevel = _tmp2_; _tmp3_ = event; _tmp4_ = _tmp3_->x_root; _tmp5_ = self->priv->m_press_pos; _tmp6_ = _tmp5_.x; x = (gint) (_tmp4_ - _tmp6_); _tmp7_ = event; _tmp8_ = _tmp7_->y_root; _tmp9_ = self->priv->m_press_pos; _tmp10_ = _tmp9_.y; y = (gint) (_tmp8_ - _tmp10_); _tmp12_ = x; _tmp13_ = self->priv->m_workarea; _tmp14_ = _tmp13_.x; if (_tmp12_ < _tmp14_) { gint _tmp15_ = 0; GdkRectangle _tmp16_ = {0}; gint _tmp17_ = 0; _tmp15_ = x; _tmp16_ = self->priv->m_workarea; _tmp17_ = _tmp16_.x; _tmp11_ = _tmp15_ > (_tmp17_ - 16); } else { _tmp11_ = FALSE; } if (_tmp11_) { GdkRectangle _tmp18_ = {0}; gint _tmp19_ = 0; _tmp18_ = self->priv->m_workarea; _tmp19_ = _tmp18_.x; x = _tmp19_; } _tmp21_ = y; _tmp22_ = self->priv->m_workarea; _tmp23_ = _tmp22_.y; if (_tmp21_ < _tmp23_) { gint _tmp24_ = 0; GdkRectangle _tmp25_ = {0}; gint _tmp26_ = 0; _tmp24_ = y; _tmp25_ = self->priv->m_workarea; _tmp26_ = _tmp25_.y; _tmp20_ = _tmp24_ > (_tmp26_ - 16); } else { _tmp20_ = FALSE; } if (_tmp20_) { GdkRectangle _tmp27_ = {0}; gint _tmp28_ = 0; _tmp27_ = self->priv->m_workarea; _tmp28_ = _tmp27_.y; y = _tmp28_; } _tmp29_ = toplevel; gtk_window_get_size (_tmp29_, &_tmp30_, &_tmp31_); w = _tmp30_; h = _tmp31_; _tmp33_ = x; _tmp34_ = w; _tmp35_ = self->priv->m_workarea; _tmp36_ = _tmp35_.x; _tmp37_ = self->priv->m_workarea; _tmp38_ = _tmp37_.width; if ((_tmp33_ + _tmp34_) > (_tmp36_ + _tmp38_)) { gint _tmp39_ = 0; gint _tmp40_ = 0; GdkRectangle _tmp41_ = {0}; gint _tmp42_ = 0; GdkRectangle _tmp43_ = {0}; gint _tmp44_ = 0; _tmp39_ = x; _tmp40_ = w; _tmp41_ = self->priv->m_workarea; _tmp42_ = _tmp41_.x; _tmp43_ = self->priv->m_workarea; _tmp44_ = _tmp43_.width; _tmp32_ = (_tmp39_ + _tmp40_) < ((_tmp42_ + _tmp44_) + 16); } else { _tmp32_ = FALSE; } if (_tmp32_) { GdkRectangle _tmp45_ = {0}; gint _tmp46_ = 0; GdkRectangle _tmp47_ = {0}; gint _tmp48_ = 0; gint _tmp49_ = 0; _tmp45_ = self->priv->m_workarea; _tmp46_ = _tmp45_.x; _tmp47_ = self->priv->m_workarea; _tmp48_ = _tmp47_.width; _tmp49_ = w; x = (_tmp46_ + _tmp48_) - _tmp49_; } _tmp51_ = y; _tmp52_ = h; _tmp53_ = self->priv->m_workarea; _tmp54_ = _tmp53_.y; _tmp55_ = self->priv->m_workarea; _tmp56_ = _tmp55_.height; if ((_tmp51_ + _tmp52_) > (_tmp54_ + _tmp56_)) { gint _tmp57_ = 0; gint _tmp58_ = 0; GdkRectangle _tmp59_ = {0}; gint _tmp60_ = 0; GdkRectangle _tmp61_ = {0}; gint _tmp62_ = 0; _tmp57_ = y; _tmp58_ = h; _tmp59_ = self->priv->m_workarea; _tmp60_ = _tmp59_.y; _tmp61_ = self->priv->m_workarea; _tmp62_ = _tmp61_.height; _tmp50_ = (_tmp57_ + _tmp58_) < ((_tmp60_ + _tmp62_) + 16); } else { _tmp50_ = FALSE; } if (_tmp50_) { GdkRectangle _tmp63_ = {0}; gint _tmp64_ = 0; GdkRectangle _tmp65_ = {0}; gint _tmp66_ = 0; gint _tmp67_ = 0; _tmp63_ = self->priv->m_workarea; _tmp64_ = _tmp63_.y; _tmp65_ = self->priv->m_workarea; _tmp66_ = _tmp65_.height; _tmp67_ = w; y = (_tmp64_ + _tmp66_) - _tmp67_; } _tmp68_ = toplevel; _tmp69_ = x; _tmp70_ = y; gtk_window_move (_tmp68_, _tmp69_, _tmp70_); result = TRUE; _g_object_unref0 (toplevel); return result; } static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr) { Handle * self; gboolean result = FALSE; cairo_t* _tmp0_ = NULL; GdkWindow* _tmp1_ = NULL; gboolean _tmp2_ = FALSE; self = (Handle*) base; g_return_val_if_fail (cr != NULL, FALSE); _tmp0_ = cr; _tmp1_ = gtk_widget_get_window ((GtkWidget*) self); _tmp2_ = gtk_cairo_should_draw_window (_tmp0_, _tmp1_); if (_tmp2_) { GtkStyleContext* context = NULL; GtkStyleContext* _tmp3_ = NULL; GtkStyleContext* _tmp4_ = NULL; GtkAllocation allocation = {0}; GtkAllocation _tmp5_ = {0}; GtkStyleContext* _tmp6_ = NULL; cairo_t* _tmp7_ = NULL; GtkAllocation _tmp8_ = {0}; gint _tmp9_ = 0; GtkAllocation _tmp10_ = {0}; gint _tmp11_ = 0; GtkAllocation _tmp12_ = {0}; gint _tmp13_ = 0; GtkAllocation _tmp14_ = {0}; gint _tmp15_ = 0; _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self); _tmp4_ = _g_object_ref0 (_tmp3_); context = _tmp4_; gtk_widget_get_allocation ((GtkWidget*) self, &_tmp5_); allocation = _tmp5_; _tmp6_ = context; _tmp7_ = cr; _tmp8_ = allocation; _tmp9_ = _tmp8_.x; _tmp10_ = allocation; _tmp11_ = _tmp10_.y; _tmp12_ = allocation; _tmp13_ = _tmp12_.height; _tmp14_ = allocation; _tmp15_ = _tmp14_.width; gtk_render_handle (_tmp6_, _tmp7_, (gdouble) _tmp9_, (gdouble) (_tmp11_ + ((_tmp13_ - 40) / 2)), (gdouble) _tmp15_, 40.0); _g_object_unref0 (context); } result = FALSE; return result; } static void handle_class_init (HandleClass * klass) { handle_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (HandlePrivate)); ((GtkWidgetClass *) klass)->realize = handle_real_realize; ((GtkWidgetClass *) klass)->button_press_event = handle_real_button_press_event; ((GtkWidgetClass *) klass)->button_release_event = handle_real_button_release_event; ((GtkWidgetClass *) klass)->motion_notify_event = handle_real_motion_notify_event; ((GtkWidgetClass *) klass)->draw = handle_real_draw; G_OBJECT_CLASS (klass)->finalize = handle_finalize; g_signal_new ("move_begin", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("move_end", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void handle_instance_init (Handle * self) { self->priv = HANDLE_GET_PRIVATE (self); } static void handle_finalize (GObject* obj) { Handle * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HANDLE, Handle); G_OBJECT_CLASS (handle_parent_class)->finalize (obj); } GType handle_get_type (void) { static volatile gsize handle_type_id__volatile = 0; if (g_once_init_enter (&handle_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (HandleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) handle_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Handle), 0, (GInstanceInitFunc) handle_instance_init, NULL }; GType handle_type_id; handle_type_id = g_type_register_static (gtk_event_box_get_type (), "Handle", &g_define_type_info, 0); g_once_init_leave (&handle_type_id__volatile, handle_type_id); } return handle_type_id__volatile; } ibus-1.5.11/ui/gtk3/iconwidget.vala0000644000000000000000000000460412551654123013726 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class IconWidget: Gtk.Image { /** * IconWidget: * @icon_name_or_path: Can be a name or path but not stock id * because gtk_icon_theme_load_icon() cannot fallback the * stock id to a real file name against * gtk_image_new_from_stock(). * @size: #Gtk.IconSize */ public IconWidget(string icon_name_or_path, Gtk.IconSize size) { Gdk.Pixbuf pixbuf = null; int fixed_width, fixed_height; Gtk.icon_size_lookup(size, out fixed_width, out fixed_height); try { if (icon_name_or_path[0] == '/') { pixbuf = new Gdk.Pixbuf.from_file(icon_name_or_path); } else { var theme = Gtk.IconTheme.get_default(); pixbuf = theme.load_icon(icon_name_or_path, fixed_width, 0); } } catch (GLib.Error e) { try { var theme = Gtk.IconTheme.get_default(); pixbuf = theme.load_icon("ibus-engine", fixed_width, 0); } catch (GLib.Error e) { set_from_icon_name("image-missing", size); return; } } if (pixbuf == null) return; float width = (float)pixbuf.get_width(); float height = (float)pixbuf.get_height(); float scale = fixed_width / (width > height ? width : height); width *= scale; height *= scale; pixbuf = pixbuf.scale_simple((int)width, (int)height, Gdk.InterpType.BILINEAR); set_from_pixbuf(pixbuf); show(); } } ibus-1.5.11/ui/gtk3/panel.vala0000644000000000000000000014075112551654123012675 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * Copyright(c) 2015 Takao Fujwiara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class Panel : IBus.PanelService { private class Keybinding { public Keybinding(uint keysym, Gdk.ModifierType modifiers, bool reverse) { this.keysym = keysym; this.modifiers = modifiers; this.reverse = reverse; } public uint keysym { get; set; } public Gdk.ModifierType modifiers { get; set; } public bool reverse { get; set; } } private enum IconType { STATUS_ICON, INDICATOR, } private IBus.Bus m_bus; private GLib.Settings m_settings_general = null; private GLib.Settings m_settings_hotkey = null; private GLib.Settings m_settings_panel = null; private IconType m_icon_type = IconType.STATUS_ICON; private Indicator m_indicator; #if INDICATOR private GLib.DBusConnection m_session_bus_connection; #endif private Gtk.StatusIcon m_status_icon; private Gtk.Menu m_ime_menu; private Gtk.Menu m_sys_menu; private IBus.EngineDesc[] m_engines = {}; private GLib.HashTable m_engine_contexts = new GLib.HashTable(GLib.str_hash, GLib.str_equal); private string m_current_context_path = ""; private bool m_use_global_engine = true; private CandidatePanel m_candidate_panel; private Switcher m_switcher; private bool m_switcher_is_running = false; private PropertyManager m_property_manager; private PropertyPanel m_property_panel; private GLib.Pid m_setup_pid = 0; private Gtk.AboutDialog m_about_dialog; private Gtk.CssProvider m_css_provider; private int m_switcher_delay_time = 400; private bool m_use_system_keyboard_layout = false; private GLib.HashTable m_xkb_icon_pixbufs = new GLib.HashTable(GLib.str_hash, GLib.str_equal); private GLib.HashTable m_xkb_icon_image = new GLib.HashTable(GLib.str_hash, GLib.str_equal); private Gdk.RGBA m_xkb_icon_rgba = Gdk.RGBA(){ red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0 }; private XKBLayout m_xkblayout = new XKBLayout(); private bool inited_engines_order = true; private uint m_preload_engines_id; private const uint PRELOAD_ENGINES_DELAY_TIME = 30000; private string m_icon_prop_key = ""; private int m_property_icon_delay_time = 500; private uint m_property_icon_delay_time_id; private GLib.List m_keybindings = new GLib.List(); public Panel(IBus.Bus bus) { GLib.assert(bus.is_connected()); // Chain up base class constructor GLib.Object(connection : bus.get_connection(), object_path : "/org/freedesktop/IBus/Panel"); m_bus = bus; init_settings(); // init ui #if INDICATOR if (is_kde()) { init_indicator(); } else { init_status_icon(); } #else init_status_icon(); #endif m_candidate_panel = new CandidatePanel(); m_candidate_panel.page_up.connect((w) => this.page_up()); m_candidate_panel.page_down.connect((w) => this.page_down()); m_candidate_panel.candidate_clicked.connect( (w, i, b, s) => this.candidate_clicked(i, b, s)); m_switcher = new Switcher(); // The initial shortcut is "space" bind_switch_shortcut(); if (m_switcher_delay_time >= 0) { m_switcher.set_popup_delay_time((uint) m_switcher_delay_time); } m_property_manager = new PropertyManager(); m_property_manager.property_activate.connect((w, k, s) => { property_activate(k, s); }); m_property_panel = new PropertyPanel(); m_property_panel.property_activate.connect((w, k, s) => { property_activate(k, s); }); state_changed(); } ~Panel() { unbind_switch_shortcut(); } private void init_settings() { m_settings_general = new GLib.Settings("org.freedesktop.ibus.general"); m_settings_hotkey = new GLib.Settings("org.freedesktop.ibus.general.hotkey"); m_settings_panel = new GLib.Settings("org.freedesktop.ibus.panel"); m_settings_general.changed["preload-engines"].connect((key) => { update_engines(m_settings_general.get_strv(key), null); }); m_settings_general.changed["switcher-delay-time"].connect((key) => { set_switcher_delay_time(); }); m_settings_general.changed["use-system-keyboard-layout"].connect( (key) => { set_use_system_keyboard_layout(); }); m_settings_general.changed["embed-preedit-text"].connect((key) => { set_embed_preedit_text(); }); m_settings_general.changed["use-global-engine"].connect((key) => { set_use_global_engine(); }); m_settings_general.changed["use-xmodmap"].connect((key) => { set_use_xmodmap(); }); m_settings_hotkey.changed["triggers"].connect((key) => { unbind_switch_shortcut(); bind_switch_shortcut(); }); m_settings_panel.changed["custom-font"].connect((key) => { set_custom_font(); }); m_settings_panel.changed["use-custom-font"].connect((key) => { set_custom_font(); }); m_settings_panel.changed["show-icon-on-systray"].connect((key) => { set_show_icon_on_systray(); }); m_settings_panel.changed["lookup-table-orientation"].connect((key) => { set_lookup_table_orientation(); }); m_settings_panel.changed["show"].connect((key) => { set_show_property_panel(); }); m_settings_panel.changed["timeout"].connect((key) => { set_timeout_property_panel(); }); m_settings_panel.changed["follow-input-cursor-when-always-shown"] .connect((key) => { set_follow_input_cursor_when_always_shown_property_panel(); }); m_settings_panel.changed["xkb-icon-rgba"].connect((key) => { set_xkb_icon_rgba(); }); m_settings_panel.changed["property-icon-delay-time"].connect((key) => { set_property_icon_delay_time(); }); } #if INDICATOR private bool is_kde() { if (Environment.get_variable("XDG_CURRENT_DESKTOP") == "KDE") return true; warning ("If you launch KDE5 on xterm, " + "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); return false; } private void init_indicator() { m_icon_type = IconType.INDICATOR; GLib.Bus.get.begin(GLib.BusType.SESSION, null, (obj, res) => { try { m_session_bus_connection = GLib.Bus.get.end(res); m_indicator = new Indicator("ibus-ui-gtk3", m_session_bus_connection, Indicator.Category.APPLICATION_STATUS); m_indicator.title = _("IBus Panel"); m_indicator.registered_status_notifier_item.connect(() => { m_indicator.set_status(Indicator.Status.ACTIVE); state_changed(); }); m_indicator.context_menu.connect((b, t) => { Gtk.Menu menu = create_context_menu(); menu.popup(null, null, m_indicator.position_context_menu, 0, Gtk.get_current_event_time()); }); m_indicator.activate.connect(() => { Gtk.Menu menu = create_activate_menu(); menu.popup(null, null, m_indicator.position_activate_menu, 0, Gtk.get_current_event_time()); }); } catch (GLib.IOError e) { warning("Failed to get the session bus: %s", e.message); } }); } #endif private void init_status_icon() { m_status_icon = new Gtk.StatusIcon(); m_status_icon.set_name("ibus-ui-gtk"); m_status_icon.set_title(_("IBus Panel")); m_status_icon.popup_menu.connect((b, t) => { Gtk.Menu menu = create_context_menu(); menu.popup(null, null, m_status_icon.position_menu, 0, Gtk.get_current_event_time()); }); m_status_icon.activate.connect(() => { Gtk.Menu menu = create_activate_menu(); menu.popup(null, null, m_status_icon.position_menu, 0, Gtk.get_current_event_time()); }); m_status_icon.set_from_icon_name("ibus-keyboard"); } private void keybinding_manager_bind(KeybindingManager keybinding_manager, string? accelerator) { uint switch_keysym = 0; Gdk.ModifierType switch_modifiers = 0; Gdk.ModifierType reverse_modifier = Gdk.ModifierType.SHIFT_MASK; Keybinding keybinding; Gtk.accelerator_parse(accelerator, out switch_keysym, out switch_modifiers); // Map virtual modifiers to (i.e. Mod2, Mod3, ...) const Gdk.ModifierType VIRTUAL_MODIFIERS = ( Gdk.ModifierType.SUPER_MASK | Gdk.ModifierType.HYPER_MASK | Gdk.ModifierType.META_MASK); if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { // workaround a bug in gdk vapi vala > 0.18 // https://bugzilla.gnome.org/show_bug.cgi?id=677559 #if VALA_0_18 Gdk.Keymap.get_default().map_virtual_modifiers( ref switch_modifiers); #else if ((switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) switch_modifiers |= Gdk.ModifierType.MOD4_MASK; if ((switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) switch_modifiers |= Gdk.ModifierType.MOD4_MASK; #endif switch_modifiers &= ~VIRTUAL_MODIFIERS; } if (switch_keysym == 0 && switch_modifiers == 0) { warning("Parse accelerator '%s' failed!", accelerator); return; } keybinding = new Keybinding(switch_keysym, switch_modifiers, false); m_keybindings.append(keybinding); keybinding_manager.bind(switch_keysym, switch_modifiers, (e) => handle_engine_switch(e, false)); // accelerator already has Shift mask if ((switch_modifiers & reverse_modifier) != 0) { return; } switch_modifiers |= reverse_modifier; keybinding = new Keybinding(switch_keysym, switch_modifiers, true); m_keybindings.append(keybinding); keybinding_manager.bind(switch_keysym, switch_modifiers, (e) => handle_engine_switch(e, true)); } private void bind_switch_shortcut() { string[] accelerators = m_settings_hotkey.get_strv("triggers"); var keybinding_manager = KeybindingManager.get_instance(); foreach (var accelerator in accelerators) { keybinding_manager_bind(keybinding_manager, accelerator); } } private void unbind_switch_shortcut() { var keybinding_manager = KeybindingManager.get_instance(); unowned GLib.List keybindings = m_keybindings; while (keybindings != null) { Keybinding keybinding = keybindings.data; keybinding_manager.unbind(keybinding.keysym, keybinding.modifiers); keybindings = keybindings.next; } m_keybindings = null; } /** * panel_get_engines_from_xkb: * @self: #Panel class * @engines: all engines from ibus_bus_list_engines() * @returns: ibus xkb engines * * Made ibus engines from the current XKB keymaps. * This returns only XKB engines whose name start with "xkb:". */ private GLib.List get_engines_from_xkb(GLib.List engines) { string layouts; string variants; string option; XKBLayout.get_layout(out layouts, out variants, out option); GLib.List xkb_engines = new GLib.List(); IBus.EngineDesc us_engine = new IBus.EngineDesc("xkb:us::eng", "", "", "", "", "", "", ""); string[] layout_array = layouts.split(","); string[] variant_array = variants.split(","); for (int i = 0; i < layout_array.length; i++) { string layout = layout_array[i]; string variant = null; IBus.EngineDesc current_engine = null; if (i < variant_array.length) variant = variant_array[i]; /* If variants == "", variants.split(",") is { null }. * To meet engine.get_layout_variant(), convert null to "" * here. */ if (variant == null) variant = ""; foreach (unowned IBus.EngineDesc engine in engines) { string name = engine.get_name(); if (!name.has_prefix("xkb:")) continue; if (engine.get_layout() == layout && engine.get_layout_variant() == variant) { current_engine = engine; break; } } if (current_engine != null) { xkb_engines.append(current_engine); } else if (xkb_engines.find(us_engine) == null) { warning("Fallback %s(%s) to us layout.", layout, variant); xkb_engines.append(us_engine); } } if (xkb_engines.length() == 0) warning("Not found IBus XKB engines from the session."); return xkb_engines; } /** * panel_get_engines_from_locale: * @self: #Panel class * @engines: all engines from ibus_bus_list_engines() * @returns: ibus im engines * * Made ibus engines from the current locale and IBus.EngineDesc.lang . * This returns non-XKB engines whose name does not start "xkb:". */ private GLib.List get_engines_from_locale(GLib.List engines) { string locale = Intl.setlocale(LocaleCategory.CTYPE, null); if (locale == null) locale = "C"; string lang = locale.split(".")[0]; GLib.List im_engines = new GLib.List(); foreach (unowned IBus.EngineDesc engine in engines) { string name = engine.get_name(); if (name.has_prefix("xkb:")) continue; if (engine.get_language() == lang && engine.get_rank() > 0) im_engines.append(engine); } if (im_engines.length() == 0) { lang = lang.split("_")[0]; foreach (unowned IBus.EngineDesc engine in engines) { string name = engine.get_name(); if (name.has_prefix("xkb:")) continue; if (engine.get_language() == lang && engine.get_rank() > 0) im_engines.append(engine); } } if (im_engines.length() == 0) return im_engines; im_engines.sort((a, b) => { return (int) b.get_rank() - (int) a.get_rank(); }); return im_engines; } private void init_engines_order() { m_xkblayout.set_latin_layouts( m_settings_general.get_strv("xkb-latin-layouts")); if (inited_engines_order) return; if (m_settings_general.get_strv("preload-engines").length > 0) return; GLib.List engines = m_bus.list_engines(); GLib.List xkb_engines = get_engines_from_xkb(engines); GLib.List im_engines = get_engines_from_locale(engines); string[] names = {}; foreach (unowned IBus.EngineDesc engine in xkb_engines) names += engine.get_name(); foreach (unowned IBus.EngineDesc engine in im_engines) names += engine.get_name(); m_settings_general.set_strv("preload-engines", names); } private void set_custom_font() { Gdk.Display display = Gdk.Display.get_default(); Gdk.Screen screen = (display != null) ? display.get_default_screen() : null; if (screen == null) { warning("Could not open display."); return; } bool use_custom_font = m_settings_panel.get_boolean("use-custom-font"); if (m_css_provider != null) { Gtk.StyleContext.remove_provider_for_screen(screen, m_css_provider); m_css_provider = null; } if (use_custom_font == false) { return; } string font_name = m_settings_panel.get_string("custom-font"); if (font_name == null) { warning("No config panel:custom-font."); return; } string data_format = "GtkLabel { font: %s; }"; string data = data_format.printf(font_name); m_css_provider = new Gtk.CssProvider(); try { m_css_provider.load_from_data(data, -1); } catch (GLib.Error e) { warning("Failed css_provider_from_data: %s: %s", font_name, e.message); return; } Gtk.StyleContext.add_provider_for_screen(screen, m_css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } private void set_switcher_delay_time() { m_switcher_delay_time = m_settings_general.get_int("switcher-delay-time"); if (m_switcher != null && m_switcher_delay_time >= 0) { m_switcher.set_popup_delay_time((uint) m_switcher_delay_time); } } private void set_use_system_keyboard_layout() { m_use_system_keyboard_layout = m_settings_general.get_boolean("use-system-keyboard-layout"); } private void set_embed_preedit_text() { Variant variant = m_settings_general.get_value("embed-preedit-text"); if (variant == null) { return; } m_bus.set_ibus_property("EmbedPreeditText", variant); } private void set_use_global_engine() { m_use_global_engine = m_settings_general.get_boolean("use-global-engine"); } private void set_use_xmodmap() { m_xkblayout.set_use_xmodmap( m_settings_general.get_boolean("use-xmodmap")); } private void set_show_icon_on_systray() { if (m_icon_type == IconType.STATUS_ICON) { if (m_status_icon == null) return; m_status_icon.set_visible( m_settings_panel.get_boolean("show-icon-on-systray")); } else if (m_icon_type == IconType.INDICATOR) { if (m_indicator == null) return; if (m_settings_panel.get_boolean("show-icon-on-systray")) { m_indicator.set_status(Indicator.Status.ACTIVE); } else { m_indicator.set_status(Indicator.Status.PASSIVE); } } } private void set_lookup_table_orientation() { if (m_candidate_panel == null) return; m_candidate_panel.set_vertical( m_settings_panel.get_int("lookup-table-orientation") == IBus.Orientation.VERTICAL); } private void set_show_property_panel() { if (m_property_panel == null) return; m_property_panel.set_show(m_settings_panel.get_int("show")); } private void set_timeout_property_panel() { if (m_property_panel == null) return; m_property_panel.set_auto_hide_timeout( (uint) m_settings_panel.get_int("auto-hide-timeout")); } private void set_follow_input_cursor_when_always_shown_property_panel() { if (m_property_panel == null) return; m_property_panel.set_follow_input_cursor_when_always_shown( m_settings_panel.get_boolean( "follow-input-cursor-when-always-shown")); } private void set_xkb_icon_rgba() { string spec = m_settings_panel.get_string("xkb-icon-rgba"); Gdk.RGBA rgba = { 0, }; if (!rgba.parse(spec)) { warning("invalid format of xkb-icon-rgba: %s", spec); m_xkb_icon_rgba = Gdk.RGBA(){ red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0 }; } else m_xkb_icon_rgba = rgba; if (m_icon_type == IconType.STATUS_ICON) { if (m_xkb_icon_pixbufs.size() > 0) { m_xkb_icon_pixbufs.remove_all(); if (m_status_icon != null && m_switcher != null) state_changed(); } } else if (m_icon_type == IconType.INDICATOR) { if (m_xkb_icon_image.size() > 0) { m_xkb_icon_image.remove_all(); if (m_indicator != null && m_switcher != null) state_changed(); } } } private void set_property_icon_delay_time() { m_property_icon_delay_time = m_settings_panel.get_int("property-icon-delay-time"); } private int compare_versions(string version1, string version2) { string[] version1_list = version1.split("."); string[] version2_list = version2.split("."); int major1, minor1, micro1, major2, minor2, micro2; if (version1 == version2) { return 0; } // The initial dconf value of "version" is "". if (version1 == "") { return -1; } if (version2 == "") { return 1; } assert(version1_list.length >= 3); assert(version2_list.length >= 3); major1 = int.parse(version1_list[0]); minor1 = int.parse(version1_list[1]); micro1 = int.parse(version1_list[2]); major2 = int.parse(version2_list[0]); minor2 = int.parse(version2_list[1]); micro2 = int.parse(version2_list[2]); if (major1 == minor1 && minor1 == minor2 && micro1 == micro2) { return 0; } if ((major1 > major2) || (major1 == major2 && minor1 > minor2) || (major1 == major2 && minor1 == minor2 && micro1 > micro2)) { return 1; } return -1; } private void update_version_1_5_3() { #if ENABLE_LIBNOTIFY if (!Notify.is_initted()) { Notify.init ("ibus"); } var notification = new Notify.Notification( _("IBus Update"), _("Super+space is now the default hotkey."), "ibus"); notification.set_timeout(30 * 1000); notification.set_category("hotkey"); try { notification.show(); } catch (GLib.Error e){ warning ("Notification is failed for IBus 1.5.3: %s", e.message); } #else warning(_("Super+space is now the default hotkey.")); #endif } private void update_version_1_5_8() { inited_engines_order = false; } private void set_version() { string prev_version = m_settings_general.get_string("version"); string current_version = null; if (compare_versions(prev_version, "1.5.3") < 0) update_version_1_5_3(); if (compare_versions(prev_version, "1.5.8") < 0) update_version_1_5_8(); current_version = "%d.%d.%d".printf(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MICRO_VERSION); if (prev_version == current_version) { return; } m_settings_general.set_string("version", current_version); } public void load_settings() { set_version(); init_engines_order(); // Update m_use_system_keyboard_layout before update_engines() // is called. set_use_system_keyboard_layout(); set_use_global_engine(); set_use_xmodmap(); update_engines(m_settings_general.get_strv("preload-engines"), m_settings_general.get_strv("engines-order")); unbind_switch_shortcut(); bind_switch_shortcut(); set_switcher_delay_time(); set_embed_preedit_text(); set_custom_font(); set_show_icon_on_systray(); set_lookup_table_orientation(); set_show_property_panel(); set_timeout_property_panel(); set_follow_input_cursor_when_always_shown_property_panel(); set_xkb_icon_rgba(); set_property_icon_delay_time(); } private void engine_contexts_insert(IBus.EngineDesc engine) { if (m_use_global_engine) return; if (m_engine_contexts.size() >= 200) { warning ("Contexts by windows are too much counted!"); m_engine_contexts.remove_all(); } m_engine_contexts.replace(m_current_context_path, engine); } private void set_engine(IBus.EngineDesc engine) { if (!m_bus.set_global_engine(engine.get_name())) { warning("Switch engine to %s failed.", engine.get_name()); return; } // set xkb layout if (!m_use_system_keyboard_layout) m_xkblayout.set_layout(engine); engine_contexts_insert(engine); if (m_property_icon_delay_time_id > 0) { GLib.Source.remove(m_property_icon_delay_time_id); m_property_icon_delay_time_id = 0; } } private void switch_engine(int i, bool force = false) { GLib.assert(i >= 0 && i < m_engines.length); // Do not need switch if (i == 0 && !force) return; IBus.EngineDesc engine = m_engines[i]; set_engine(engine); } private void handle_engine_switch(Gdk.Event event, bool revert) { // Do not need switch IME if (m_engines.length <= 1) return; uint keyval = event.key.keyval; uint modifiers = KeybindingManager.MODIFIER_FILTER & event.key.state; uint primary_modifiers = KeybindingManager.get_primary_modifier(event.key.state); bool pressed = KeybindingManager.primary_modifier_still_pressed( event, primary_modifiers); if (revert) { modifiers &= ~Gdk.ModifierType.SHIFT_MASK; } if (pressed && m_switcher_delay_time >= 0) { int i = revert ? m_engines.length - 1 : 1; /* The flag of m_switcher_is_running avoids the following problem: * * When an IME is chosen on m_switcher, focus_in() is called * for the root window. If an engine is set in focus_in() * during running m_switcher when m_use_global_engine is false, * state_changed() is also called and m_engines[] is modified * in state_changed() and m_switcher.run() returns the index * for m_engines[] but m_engines[] was modified by state_changed() * and the index is not correct. */ m_switcher_is_running = true; i = m_switcher.run(keyval, modifiers, event, m_engines, i); m_switcher_is_running = false; if (i < 0) { debug("switch cancelled"); } else { GLib.assert(i < m_engines.length); switch_engine(i); } } else { int i = revert ? m_engines.length - 1 : 1; switch_engine(i); } } private void run_preload_engines(IBus.EngineDesc[] engines, int index) { string[] names = {}; if (engines.length <= index) { return; } if (m_preload_engines_id != 0) { GLib.Source.remove(m_preload_engines_id); m_preload_engines_id = 0; } names += engines[index].get_name(); m_preload_engines_id = Timeout.add( PRELOAD_ENGINES_DELAY_TIME, () => { if (!m_bus.is_connected()) return false; m_bus.preload_engines_async.begin(names, -1, null); return false; }); } private void update_engines(string[]? unowned_engine_names, string[]? order_names) { string[]? engine_names = unowned_engine_names; if (engine_names == null || engine_names.length == 0) engine_names = {"xkb:us::eng"}; string[] names = {}; foreach (var name in order_names) { if (name in engine_names) names += name; } foreach (var name in engine_names) { if (name in names) continue; names += name; } var engines = m_bus.get_engines_by_names(names); /* Fedora internal patch could save engines not in simple.xml * likes 'xkb:cn::chi'. */ if (engines.length == 0) { names = {"xkb:us::eng"}; m_settings_general.set_strv("preload-engines", names); engines = m_bus.get_engines_by_names(names); } if (m_engines.length == 0) { m_engines = engines; switch_engine(0, true); run_preload_engines(engines, 1); } else { var current_engine = m_engines[0]; m_engines = engines; int i; for (i = 0; i < m_engines.length; i++) { if (current_engine.get_name() == engines[i].get_name()) { switch_engine(i); if (i != 0) { run_preload_engines(engines, 0); } else { run_preload_engines(engines, 1); } return; } } switch_engine(0, true); run_preload_engines(engines, 1); } } private void context_render_string(Cairo.Context cr, string symbol, int image_width, int image_height) { int lwidth = 0; int lheight = 0; var desc = Pango.FontDescription.from_string("Monospace Bold 22"); var layout = Pango.cairo_create_layout(cr); if (symbol.length >= 3) desc = Pango.FontDescription.from_string("Monospace Bold 18"); layout.set_font_description(desc); layout.set_text(symbol, -1); layout.get_size(out lwidth, out lheight); cr.move_to((image_width - lwidth / Pango.SCALE) / 2, (image_height - lheight / Pango.SCALE) / 2); cr.set_source_rgba(m_xkb_icon_rgba.red, m_xkb_icon_rgba.green, m_xkb_icon_rgba.blue, m_xkb_icon_rgba.alpha); Pango.cairo_show_layout(cr, layout); } private Cairo.ImageSurface create_cairo_image_surface_with_string(string symbol, bool cache) { Cairo.ImageSurface image = null; if (cache) { image = m_xkb_icon_image[symbol]; if (image != null) return image; } image = new Cairo.ImageSurface(Cairo.Format.ARGB32, 48, 48); var cr = new Cairo.Context(image); int width = image.get_width(); int height = image.get_height(); int stride = image.get_stride(); cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); cr.set_operator(Cairo.Operator.SOURCE); cr.paint(); cr.set_operator(Cairo.Operator.OVER); context_render_string(cr, symbol, width, height); image.flush(); if (m_icon_type == IconType.INDICATOR) { if (GLib.BYTE_ORDER == GLib.ByteOrder.LITTLE_ENDIAN) { unowned uint[] data = (uint[]) image.get_data(); int length = stride * height / (int) sizeof(uint); for (int i = 0; i < length; i++) data[i] = data[i].to_big_endian(); } } if (cache) m_xkb_icon_image.insert(symbol, image); return image; } private Gdk.Pixbuf create_icon_pixbuf_with_string(string symbol) { Gdk.Pixbuf pixbuf = m_xkb_icon_pixbufs[symbol]; if (pixbuf != null) return pixbuf; var image = create_cairo_image_surface_with_string(symbol, false); int width = image.get_width(); int height = image.get_height(); pixbuf = Gdk.pixbuf_get_from_surface(image, 0, 0, width, height); m_xkb_icon_pixbufs.insert(symbol, pixbuf); return pixbuf; } private void show_setup_dialog() { if (m_setup_pid != 0) { if (Posix.kill(m_setup_pid, Posix.SIGUSR1) == 0) return; m_setup_pid = 0; } string binary = GLib.Path.build_filename(Config.BINDIR, "ibus-setup"); try { GLib.Process.spawn_async(null, {binary, "ibus-setup"}, null, GLib.SpawnFlags.DO_NOT_REAP_CHILD, null, out m_setup_pid); } catch (GLib.SpawnError e) { warning("Execute %s failed! %s", binary, e.message); m_setup_pid = 0; } GLib.ChildWatch.add(m_setup_pid, (pid, state) => { if (pid != m_setup_pid) return; m_setup_pid = 0; GLib.Process.close_pid(pid); }); } private void show_about_dialog() { if (m_about_dialog == null) { m_about_dialog = new Gtk.AboutDialog(); m_about_dialog.set_program_name("IBus"); m_about_dialog.set_version(Config.PACKAGE_VERSION); string copyright = "Copyright © 2007-2015 Peng Huang\n" + "Copyright © 2015 Takao Fujiwara\n" + "Copyright © 2007-2015 Red Hat, Inc.\n"; m_about_dialog.set_copyright(copyright); m_about_dialog.set_license("LGPL"); m_about_dialog.set_comments(_("IBus is an intelligent input bus for Linux/Unix.")); m_about_dialog.set_website("https://github.com/ibus/ibus/wiki"); m_about_dialog.set_authors({"Peng Huang "}); m_about_dialog.set_documenters({"Peng Huang "}); m_about_dialog.set_translator_credits(_("translator-credits")); m_about_dialog.set_logo_icon_name("ibus"); m_about_dialog.set_icon_name("ibus"); } if (!m_about_dialog.get_visible()) { m_about_dialog.run(); m_about_dialog.hide(); } else { m_about_dialog.present(); } } private Gtk.Menu create_context_menu() { // Show system menu if (m_sys_menu == null) { Gtk.MenuItem item; m_sys_menu = new Gtk.Menu(); item = new Gtk.MenuItem.with_label(_("Preferences")); item.activate.connect((i) => show_setup_dialog()); m_sys_menu.append(item); item = new Gtk.MenuItem.with_label(_("About")); item.activate.connect((i) => show_about_dialog()); m_sys_menu.append(item); m_sys_menu.append(new Gtk.SeparatorMenuItem()); item = new Gtk.MenuItem.with_label(_("Restart")); item.activate.connect((i) => m_bus.exit(true)); m_sys_menu.append(item); item = new Gtk.MenuItem.with_label(_("Quit")); item.activate.connect((i) => m_bus.exit(false)); m_sys_menu.append(item); m_sys_menu.show_all(); } return m_sys_menu; } private Gtk.Menu create_activate_menu() { m_ime_menu = new Gtk.Menu(); // Show properties and IME switching menu m_property_manager.create_menu_items(m_ime_menu); m_ime_menu.append(new Gtk.SeparatorMenuItem()); // Append IMEs foreach (var engine in m_engines) { var language = engine.get_language(); var longname = engine.get_longname(); var item = new Gtk.MenuItem.with_label( "%s - %s".printf (IBus.get_language_name(language), longname)); // Make a copy of engine to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 var e = engine; item.activate.connect((item) => { for (int i = 0; i < m_engines.length; i++) { if (e == m_engines[i]) { switch_engine(i); break; } } }); m_ime_menu.add(item); } m_ime_menu.show_all(); // Do not take focuse to avoid some focus related issues. m_ime_menu.set_take_focus(false); return m_ime_menu; } private void set_properties(IBus.PropList props) { int i = 0; while (true) { IBus.Property prop = props.get(i); if (prop == null) break; set_property(props.get(i), true); i++; } } private new void set_property(IBus.Property prop, bool all_update) { string symbol = prop.get_symbol().get_text(); if (m_icon_prop_key != "" && prop.get_key() == m_icon_prop_key && symbol != "") animate_icon(symbol, all_update); } private void animate_icon(string symbol, bool all_update) { if (m_property_icon_delay_time < 0) return; uint timeout = 0; if (all_update) timeout = (uint) m_property_icon_delay_time; if (m_property_icon_delay_time_id > 0) { GLib.Source.remove(m_property_icon_delay_time_id); m_property_icon_delay_time_id = 0; } m_property_icon_delay_time_id = GLib.Timeout.add(timeout, () => { m_property_icon_delay_time_id = 0; if (m_icon_type == IconType.STATUS_ICON) { Gdk.Pixbuf pixbuf = create_icon_pixbuf_with_string(symbol); m_status_icon.set_from_pixbuf(pixbuf); } else if (m_icon_type == IconType.INDICATOR) { Cairo.ImageSurface image = create_cairo_image_surface_with_string(symbol, true); m_indicator.set_cairo_image_surface_full(image, ""); } return false; }); } /* override virtual functions */ public override void set_cursor_location(int x, int y, int width, int height) { m_candidate_panel.set_cursor_location(x, y, width, height); m_property_panel.set_cursor_location(x, y, width, height); } public override void focus_in(string input_context_path) { m_property_panel.focus_in(); if (m_use_global_engine) return; /* Do not change the order of m_engines during running switcher. */ if (m_switcher_is_running) return; m_current_context_path = input_context_path; var engine = m_engine_contexts[m_current_context_path]; if (engine == null) { /* If engine == null, need to call set_engine(m_engines[0]) * here and update m_engine_contexts[] to avoid the * following problem: * * If context1 is focused and does not set an engine and * return here, the current engine1 is used for context1. * When context2 is focused and switch engine1 to engine2, * the current engine becomes engine2. * And when context1 is focused again, context1 still * does not set an engine and return here, * engine2 is used for context2 instead of engine1. */ engine = m_engines.length > 0 ? m_engines[0] : null; if (engine == null) return; } else { bool in_engines = false; foreach (var e in m_engines) { if (engine.get_name() == e.get_name()) { in_engines = true; break; } } /* The engine is deleted by ibus-setup before focus_in() * is called. */ if (!in_engines) return; } set_engine(engine); } public override void focus_out(string input_context_path) { if (m_use_global_engine) return; /* Do not change the order of m_engines during running switcher. */ if (m_switcher_is_running) return; m_current_context_path = ""; } public override void destroy_context(string input_context_path) { if (m_use_global_engine) return; m_engine_contexts.remove(input_context_path); } public override void register_properties(IBus.PropList props) { m_property_manager.set_properties(props); m_property_panel.set_properties(props); set_properties(props); } public override void update_property(IBus.Property prop) { m_property_manager.update_property(prop); m_property_panel.update_property(prop); set_property(prop, false); } public override void update_preedit_text(IBus.Text text, uint cursor_pos, bool visible) { if (visible) { m_candidate_panel.set_preedit_text(text, cursor_pos); m_property_panel.set_preedit_text(text, cursor_pos); } else { m_candidate_panel.set_preedit_text(null, 0); m_property_panel.set_preedit_text(null, 0); } } public override void hide_preedit_text() { m_candidate_panel.set_preedit_text(null, 0); } public override void update_auxiliary_text(IBus.Text text, bool visible) { m_candidate_panel.set_auxiliary_text(visible ? text : null); m_property_panel.set_auxiliary_text(visible ? text : null); } public override void hide_auxiliary_text() { m_candidate_panel.set_auxiliary_text(null); } public override void update_lookup_table(IBus.LookupTable table, bool visible) { m_candidate_panel.set_lookup_table(visible ? table : null); m_property_panel.set_lookup_table(visible ? table : null); } public override void hide_lookup_table() { m_candidate_panel.set_lookup_table(null); } public override void set_content_type(uint purpose, uint hints) { m_candidate_panel.set_content_type(purpose, hints); } public override void state_changed() { /* Do not change the order of m_engines during running switcher. */ if (m_switcher_is_running) return; if (m_icon_type == IconType.INDICATOR) { // Wait for the callback of the session bus. if (m_indicator == null) return; } var icon_name = "ibus-keyboard"; var engine = m_bus.get_global_engine(); if (engine != null) { icon_name = engine.get_icon(); m_icon_prop_key = engine.get_icon_prop_key(); } else { m_icon_prop_key = ""; } if (icon_name[0] == '/') { if (m_icon_type == IconType.STATUS_ICON) { m_status_icon.set_from_file(icon_name); } else if (m_icon_type == IconType.INDICATOR) { #if INDICATOR_ENGINE_ICON m_indicator.set_icon_full(icon_name, ""); #else warning("plasma-workspace 5.2 or later is required to " + "show the absolute path icon %s. Currently check " + "qtbase 5.4 since there is no way to check " + "the version of plasma-workspace.", icon_name); m_indicator.set_icon_full("ibus-engine", ""); #endif } } else { string language = null; if (engine != null) { var name = engine.get_name(); if (name.length >= 4 && name[0:4] == "xkb:") language = m_switcher.get_xkb_language(engine); } if (language != null) { if (m_icon_type == IconType.STATUS_ICON) { Gdk.Pixbuf pixbuf = create_icon_pixbuf_with_string(language); m_status_icon.set_from_pixbuf(pixbuf); } else if (m_icon_type == IconType.INDICATOR) { Cairo.ImageSurface image = create_cairo_image_surface_with_string(language, true); m_indicator.set_cairo_image_surface_full(image, ""); } } else { var theme = Gtk.IconTheme.get_default(); if (theme.lookup_icon(icon_name, 48, 0) != null) { if (m_icon_type == IconType.STATUS_ICON) { m_status_icon.set_from_icon_name(icon_name); } else if (m_icon_type == IconType.INDICATOR) { m_indicator.set_icon_full(icon_name, ""); } } else { if (m_icon_type == IconType.STATUS_ICON) { m_status_icon.set_from_icon_name("ibus-engine"); } else if (m_icon_type == IconType.INDICATOR) { m_indicator.set_icon_full("ibus-engine", ""); } } } } if (engine == null) return; int i; for (i = 0; i < m_engines.length; i++) { if (m_engines[i].get_name() == engine.get_name()) break; } // engine is first engine in m_engines. if (i == 0) return; // engine is not in m_engines. if (i >= m_engines.length) return; for (int j = i; j > 0; j--) { m_engines[j] = m_engines[j - 1]; } m_engines[0] = engine; string[] names = {}; foreach(var desc in m_engines) { names += desc.get_name(); } m_settings_general.set_strv("engines-order", names); } } ibus-1.5.11/ui/gtk3/keybindingmanager.c0000644000000000000000000012730312551655052014553 00000000000000/* keybindingmanager.c generated by valac 0.28.0, the Vala compiler * generated from keybindingmanager.vala, do not modify */ /* vim:set et sts=4 sw=4: valac --pkg gtk+-2.0 --pkg x11 --pkg gdk-x11-2.0 --pkg gee-1.0 keybinding-manager.vala */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define TYPE_KEYBINDING_MANAGER (keybinding_manager_get_type ()) #define KEYBINDING_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_KEYBINDING_MANAGER, KeybindingManager)) #define KEYBINDING_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_KEYBINDING_MANAGER, KeybindingManagerClass)) #define IS_KEYBINDING_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_KEYBINDING_MANAGER)) #define IS_KEYBINDING_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_KEYBINDING_MANAGER)) #define KEYBINDING_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_KEYBINDING_MANAGER, KeybindingManagerClass)) typedef struct _KeybindingManager KeybindingManager; typedef struct _KeybindingManagerClass KeybindingManagerClass; typedef struct _KeybindingManagerPrivate KeybindingManagerPrivate; #define KEYBINDING_MANAGER_TYPE_KEYBINDING (keybinding_manager_keybinding_get_type ()) #define KEYBINDING_MANAGER_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), KEYBINDING_MANAGER_TYPE_KEYBINDING, KeybindingManagerKeybinding)) #define KEYBINDING_MANAGER_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), KEYBINDING_MANAGER_TYPE_KEYBINDING, KeybindingManagerKeybindingClass)) #define KEYBINDING_MANAGER_IS_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), KEYBINDING_MANAGER_TYPE_KEYBINDING)) #define KEYBINDING_MANAGER_IS_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), KEYBINDING_MANAGER_TYPE_KEYBINDING)) #define KEYBINDING_MANAGER_KEYBINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), KEYBINDING_MANAGER_TYPE_KEYBINDING, KeybindingManagerKeybindingClass)) typedef struct _KeybindingManagerKeybinding KeybindingManagerKeybinding; typedef struct _KeybindingManagerKeybindingClass KeybindingManagerKeybindingClass; #define __g_list_free__keybinding_manager_keybinding_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__keybinding_manager_keybinding_unref0_ (var), NULL))) #define _keybinding_manager_keybinding_unref0(var) ((var == NULL) ? NULL : (var = (keybinding_manager_keybinding_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define __vala_GdkEventKey_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventKey_free (var), NULL))) typedef struct _KeybindingManagerKeybindingPrivate KeybindingManagerKeybindingPrivate; typedef struct _KeybindingManagerParamSpecKeybinding KeybindingManagerParamSpecKeybinding; struct _KeybindingManager { GObject parent_instance; KeybindingManagerPrivate * priv; }; struct _KeybindingManagerClass { GObjectClass parent_class; }; struct _KeybindingManagerPrivate { GList* m_bindings; }; typedef void (*KeybindingManagerKeybindingHandlerFunc) (GdkEvent* event, void* user_data); struct _KeybindingManagerKeybinding { GTypeInstance parent_instance; volatile int ref_count; KeybindingManagerKeybindingPrivate * priv; }; struct _KeybindingManagerKeybindingClass { GTypeClass parent_class; void (*finalize) (KeybindingManagerKeybinding *self); }; struct _KeybindingManagerKeybindingPrivate { guint _keysym; GdkModifierType _modifiers; KeybindingManagerKeybindingHandlerFunc _handler; gpointer _handler_target; }; struct _KeybindingManagerParamSpecKeybinding { GParamSpec parent_instance; }; static gpointer keybinding_manager_parent_class = NULL; static KeybindingManager* keybinding_manager_m_instance; static KeybindingManager* keybinding_manager_m_instance = NULL; static gpointer keybinding_manager_keybinding_parent_class = NULL; GType keybinding_manager_get_type (void) G_GNUC_CONST; static gpointer keybinding_manager_keybinding_ref (gpointer instance); static void keybinding_manager_keybinding_unref (gpointer instance); static GParamSpec* keybinding_manager_param_spec_keybinding (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) G_GNUC_UNUSED; static void keybinding_manager_value_set_keybinding (GValue* value, gpointer v_object) G_GNUC_UNUSED; static void keybinding_manager_value_take_keybinding (GValue* value, gpointer v_object) G_GNUC_UNUSED; static gpointer keybinding_manager_value_get_keybinding (const GValue* value) G_GNUC_UNUSED; static GType keybinding_manager_keybinding_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define KEYBINDING_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_KEYBINDING_MANAGER, KeybindingManagerPrivate)) enum { KEYBINDING_MANAGER_DUMMY_PROPERTY }; static void _keybinding_manager_keybinding_unref0_ (gpointer var); static void _g_list_free__keybinding_manager_keybinding_unref0_ (GList* self); #define KEYBINDING_MANAGER_MODIFIER_FILTER ((guint) (GDK_MODIFIER_MASK & (~(((((((((GDK_LOCK_MASK | GDK_MOD2_MASK) | GDK_BUTTON1_MASK) | GDK_BUTTON2_MASK) | GDK_BUTTON3_MASK) | GDK_BUTTON4_MASK) | GDK_BUTTON5_MASK) | GDK_SUPER_MASK) | GDK_HYPER_MASK) | GDK_META_MASK)))) static KeybindingManager* keybinding_manager_new (void); static KeybindingManager* keybinding_manager_construct (GType object_type); static void keybinding_manager_event_handler (KeybindingManager* self, GdkEvent* event); static void _keybinding_manager_event_handler_gdk_event_func (GdkEvent* event, gpointer self); gboolean keybinding_manager_bind (KeybindingManager* self, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target); static gboolean keybinding_manager_grab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers); static KeybindingManagerKeybinding* keybinding_manager_keybinding_new (guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target); static KeybindingManagerKeybinding* keybinding_manager_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target); void keybinding_manager_unbind (KeybindingManager* self, guint keysym, GdkModifierType modifiers); static guint keybinding_manager_keybinding_get_keysym (KeybindingManagerKeybinding* self); static GdkModifierType keybinding_manager_keybinding_get_modifiers (KeybindingManagerKeybinding* self); static gboolean keybinding_manager_ungrab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers); KeybindingManager* keybinding_manager_get_instance (void); GdkModifierType keybinding_manager_get_primary_modifier (guint binding_mask); gboolean keybinding_manager_primary_modifier_still_pressed (GdkEvent* event, guint primary_modifier); static GdkEventKey* _vala_GdkEventKey_copy (GdkEventKey* self); static void _vala_GdkEventKey_free (GdkEventKey* self); guint keybinding_manager_keyval_to_modifier (guint keyval); static KeybindingManagerKeybindingHandlerFunc keybinding_manager_keybinding_get_handler (KeybindingManagerKeybinding* self, gpointer* result_target); static XIGrabModifiers* keybinding_manager_get_grab_modifiers (KeybindingManager* self, guint modifiers, int* result_length1); static void _vala_array_add10 (gint** array, int* length, int* size, gint value); static void _vala_array_add11 (gint** array, int* length, int* size, gint value); static void _vala_array_add12 (gint** array, int* length, int* size, gint value); static void _vala_array_add13 (XIGrabModifiers** array, int* length, int* size, const XIGrabModifiers* value); static void _vala_XIGrabModifiers_array_free (XIGrabModifiers* array, gint array_length); #define KEYBINDING_MANAGER_KEYBINDING_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), KEYBINDING_MANAGER_TYPE_KEYBINDING, KeybindingManagerKeybindingPrivate)) enum { KEYBINDING_MANAGER_KEYBINDING_DUMMY_PROPERTY }; static void keybinding_manager_keybinding_set_keysym (KeybindingManagerKeybinding* self, guint value); static void keybinding_manager_keybinding_set_modifiers (KeybindingManagerKeybinding* self, GdkModifierType value); static void keybinding_manager_keybinding_set_handler (KeybindingManagerKeybinding* self, KeybindingManagerKeybindingHandlerFunc value, gpointer value_target); static void keybinding_manager_keybinding_finalize (KeybindingManagerKeybinding* obj); static void keybinding_manager_finalize (GObject* obj); static void _keybinding_manager_keybinding_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (keybinding_manager_keybinding_unref (var), NULL)); } static void _g_list_free__keybinding_manager_keybinding_unref0_ (GList* self) { g_list_foreach (self, (GFunc) _keybinding_manager_keybinding_unref0_, NULL); g_list_free (self); } static void _keybinding_manager_event_handler_gdk_event_func (GdkEvent* event, gpointer self) { keybinding_manager_event_handler ((KeybindingManager*) self, event); } static KeybindingManager* keybinding_manager_construct (GType object_type) { KeybindingManager * self = NULL; self = (KeybindingManager*) g_object_new (object_type, NULL); gdk_event_handler_set (_keybinding_manager_event_handler_gdk_event_func, g_object_ref (self), g_object_unref); return self; } static KeybindingManager* keybinding_manager_new (void) { return keybinding_manager_construct (TYPE_KEYBINDING_MANAGER); } /** * Bind accelerator to given handler * * @param keysym * @param modifiers * @param handler handler called when given accelerator is pressed */ static gpointer _keybinding_manager_keybinding_ref0 (gpointer self) { return self ? keybinding_manager_keybinding_ref (self) : NULL; } gboolean keybinding_manager_bind (KeybindingManager* self, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target) { gboolean result = FALSE; Display* display = NULL; Display* _tmp0_ = NULL; gint keycode = 0; Display* _tmp1_ = NULL; guint _tmp2_ = 0U; guchar _tmp3_ = '\0'; gint _tmp4_ = 0; GdkDisplay* _tmp5_ = NULL; guint _tmp6_ = 0U; GdkModifierType _tmp7_ = 0; KeybindingManagerKeybinding* binding = NULL; guint _tmp8_ = 0U; GdkModifierType _tmp9_ = 0; KeybindingManagerKeybindingHandlerFunc _tmp10_ = NULL; void* _tmp10__target = NULL; KeybindingManagerKeybinding* _tmp11_ = NULL; KeybindingManagerKeybinding* _tmp12_ = NULL; KeybindingManagerKeybinding* _tmp13_ = NULL; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = gdk_x11_get_default_xdisplay (); display = _tmp0_; _tmp1_ = display; _tmp2_ = keysym; _tmp3_ = XKeysymToKeycode (_tmp1_, (gulong) _tmp2_); keycode = (gint) _tmp3_; _tmp4_ = keycode; if (_tmp4_ == 0) { result = FALSE; return result; } _tmp5_ = gdk_display_get_default (); _tmp6_ = keysym; _tmp7_ = modifiers; keybinding_manager_grab_keycode (self, _tmp5_, _tmp6_, (guint) _tmp7_); _tmp8_ = keysym; _tmp9_ = modifiers; _tmp10_ = handler; _tmp10__target = handler_target; _tmp11_ = keybinding_manager_keybinding_new (_tmp8_, _tmp9_, _tmp10_, _tmp10__target); binding = _tmp11_; _tmp12_ = binding; _tmp13_ = _keybinding_manager_keybinding_ref0 (_tmp12_); self->priv->m_bindings = g_list_append (self->priv->m_bindings, _tmp13_); result = TRUE; _keybinding_manager_keybinding_unref0 (binding); return result; } /** * Unbind given accelerator. * * @param keysym * @param modifiers */ void keybinding_manager_unbind (KeybindingManager* self, guint keysym, GdkModifierType modifiers) { GList* remove_bindings = NULL; GList* _tmp0_ = NULL; GList* _tmp20_ = NULL; g_return_if_fail (self != NULL); remove_bindings = NULL; _tmp0_ = self->priv->m_bindings; { GList* binding_collection = NULL; GList* binding_it = NULL; binding_collection = _tmp0_; for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { KeybindingManagerKeybinding* _tmp1_ = NULL; KeybindingManagerKeybinding* binding = NULL; _tmp1_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp1_; { gboolean _tmp2_ = FALSE; KeybindingManagerKeybinding* _tmp3_ = NULL; guint _tmp4_ = 0U; guint _tmp5_ = 0U; guint _tmp6_ = 0U; _tmp3_ = binding; _tmp4_ = keybinding_manager_keybinding_get_keysym (_tmp3_); _tmp5_ = _tmp4_; _tmp6_ = keysym; if (_tmp5_ == _tmp6_) { KeybindingManagerKeybinding* _tmp7_ = NULL; GdkModifierType _tmp8_ = 0; GdkModifierType _tmp9_ = 0; GdkModifierType _tmp10_ = 0; _tmp7_ = binding; _tmp8_ = keybinding_manager_keybinding_get_modifiers (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = modifiers; _tmp2_ = _tmp9_ == _tmp10_; } else { _tmp2_ = FALSE; } if (_tmp2_) { GdkDisplay* _tmp11_ = NULL; KeybindingManagerKeybinding* _tmp12_ = NULL; guint _tmp13_ = 0U; guint _tmp14_ = 0U; KeybindingManagerKeybinding* _tmp15_ = NULL; GdkModifierType _tmp16_ = 0; GdkModifierType _tmp17_ = 0; KeybindingManagerKeybinding* _tmp18_ = NULL; KeybindingManagerKeybinding* _tmp19_ = NULL; _tmp11_ = gdk_display_get_default (); _tmp12_ = binding; _tmp13_ = keybinding_manager_keybinding_get_keysym (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = binding; _tmp16_ = keybinding_manager_keybinding_get_modifiers (_tmp15_); _tmp17_ = _tmp16_; keybinding_manager_ungrab_keycode (self, _tmp11_, _tmp14_, (guint) _tmp17_); _tmp18_ = binding; _tmp19_ = _keybinding_manager_keybinding_ref0 (_tmp18_); remove_bindings = g_list_append (remove_bindings, _tmp19_); } _keybinding_manager_keybinding_unref0 (binding); } } } _tmp20_ = remove_bindings; { GList* binding_collection = NULL; GList* binding_it = NULL; binding_collection = _tmp20_; for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { KeybindingManagerKeybinding* _tmp21_ = NULL; KeybindingManagerKeybinding* binding = NULL; _tmp21_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp21_; { KeybindingManagerKeybinding* _tmp22_ = NULL; _tmp22_ = binding; self->priv->m_bindings = g_list_remove (self->priv->m_bindings, _tmp22_); _keybinding_manager_keybinding_unref0 (binding); } } } __g_list_free__keybinding_manager_keybinding_unref0_0 (remove_bindings); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } KeybindingManager* keybinding_manager_get_instance (void) { KeybindingManager* result = NULL; KeybindingManager* _tmp0_ = NULL; KeybindingManager* _tmp2_ = NULL; KeybindingManager* _tmp3_ = NULL; _tmp0_ = keybinding_manager_m_instance; if (_tmp0_ == NULL) { KeybindingManager* _tmp1_ = NULL; _tmp1_ = keybinding_manager_new (); _g_object_unref0 (keybinding_manager_m_instance); keybinding_manager_m_instance = _tmp1_; } _tmp2_ = keybinding_manager_m_instance; _tmp3_ = _g_object_ref0 (_tmp2_); result = _tmp3_; return result; } GdkModifierType keybinding_manager_get_primary_modifier (guint binding_mask) { GdkModifierType result = 0; static const GdkModifierType masks[] = {GDK_MOD5_MASK, GDK_MOD4_MASK, GDK_MOD3_MASK, GDK_MOD2_MASK, GDK_MOD1_MASK, GDK_CONTROL_MASK, GDK_SHIFT_MASK, GDK_LOCK_MASK}; { gint i = 0; i = 0; { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { gint _tmp2_ = 0; GdkModifierType mask = 0; gint _tmp3_ = 0; GdkModifierType _tmp4_ = 0; guint _tmp5_ = 0U; GdkModifierType _tmp6_ = 0; GdkModifierType _tmp7_ = 0; if (!_tmp0_) { gint _tmp1_ = 0; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; _tmp2_ = i; if (!(_tmp2_ < G_N_ELEMENTS (masks))) { break; } _tmp3_ = i; _tmp4_ = masks[_tmp3_]; mask = _tmp4_; _tmp5_ = binding_mask; _tmp6_ = mask; _tmp7_ = mask; if ((_tmp5_ & _tmp6_) == ((guint) _tmp7_)) { result = mask; return result; } } } } result = 0; return result; } static GdkEventKey* _vala_GdkEventKey_copy (GdkEventKey* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventKey_copy0 (gpointer self) { return self ? _vala_GdkEventKey_copy (self) : NULL; } static void _vala_GdkEventKey_free (GdkEventKey* self) { g_boxed_free (gdk_event_get_type (), self); } gboolean keybinding_manager_primary_modifier_still_pressed (GdkEvent* event, guint primary_modifier) { gboolean result = FALSE; GdkEventKey* keyevent = NULL; GdkEvent* _tmp0_ = NULL; GdkEventKey* _tmp1_ = NULL; GdkEventKey* _tmp2_ = NULL; GdkEventKey* _tmp3_ = NULL; guint _tmp4_ = 0U; GdkDevice* device = NULL; GdkEvent* _tmp5_ = NULL; GdkDevice* _tmp6_ = NULL; GdkDevice* _tmp7_ = NULL; GdkDevice* pointer = NULL; GdkDevice* _tmp8_ = NULL; GdkInputSource _tmp9_ = 0; gdouble* axes = NULL; gint axes_length1 = 0; gint _axes_size_ = 0; guint modifier = 0U; GdkDevice* _tmp15_ = NULL; GdkEventKey* _tmp16_ = NULL; GdkWindow* _tmp17_ = NULL; gdouble* _tmp18_ = NULL; gint _tmp18__length1 = 0; GdkModifierType _tmp19_ = 0; guint _tmp20_ = 0U; guint _tmp21_ = 0U; guint _tmp22_ = 0U; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event; _tmp1_ = (GdkEventKey *) (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = __vala_GdkEventKey_copy0 (_tmp2_); keyevent = _tmp3_; _tmp4_ = primary_modifier; if (_tmp4_ == ((guint) 0)) { result = FALSE; __vala_GdkEventKey_free0 (keyevent); return result; } _tmp5_ = event; _tmp6_ = gdk_event_get_device (_tmp5_); _tmp7_ = _g_object_ref0 (_tmp6_); device = _tmp7_; _tmp8_ = device; _tmp9_ = gdk_device_get_source (_tmp8_); if (_tmp9_ == GDK_SOURCE_KEYBOARD) { GdkDevice* _tmp10_ = NULL; GdkDevice* _tmp11_ = NULL; GdkDevice* _tmp12_ = NULL; _tmp10_ = device; _tmp11_ = gdk_device_get_associated_device (_tmp10_); _tmp12_ = _g_object_ref0 (_tmp11_); _g_object_unref0 (pointer); pointer = _tmp12_; } else { GdkDevice* _tmp13_ = NULL; GdkDevice* _tmp14_ = NULL; _tmp13_ = device; _tmp14_ = _g_object_ref0 (_tmp13_); _g_object_unref0 (pointer); pointer = _tmp14_; } axes = NULL; axes_length1 = 0; _axes_size_ = axes_length1; modifier = (guint) 0; _tmp15_ = pointer; _tmp16_ = keyevent; _tmp17_ = _tmp16_->window; _tmp18_ = axes; _tmp18__length1 = axes_length1; gdk_device_get_state (_tmp15_, _tmp17_, _tmp18_, &_tmp19_); modifier = (guint) _tmp19_; _tmp20_ = primary_modifier; _tmp21_ = modifier; _tmp22_ = primary_modifier; if ((_tmp20_ & _tmp21_) == _tmp22_) { result = TRUE; axes = (g_free (axes), NULL); _g_object_unref0 (pointer); _g_object_unref0 (device); __vala_GdkEventKey_free0 (keyevent); return result; } result = FALSE; axes = (g_free (axes), NULL); _g_object_unref0 (pointer); _g_object_unref0 (device); __vala_GdkEventKey_free0 (keyevent); return result; } guint keybinding_manager_keyval_to_modifier (guint keyval) { guint result = 0U; guint _tmp0_ = 0U; _tmp0_ = keyval; switch (_tmp0_) { case 0xffe3: case 0xffe4: { result = (guint) GDK_CONTROL_MASK; return result; } case 0xffe1: case 0xffe2: { result = (guint) GDK_SHIFT_MASK; return result; } case 0xffe5: { result = (guint) GDK_LOCK_MASK; return result; } case 0xffe9: case 0xffea: { result = (guint) GDK_MOD1_MASK; return result; } case 0xffe7: case 0xffe8: { result = (guint) GDK_META_MASK; return result; } case 0xffeb: case 0xffec: { result = (guint) GDK_SUPER_MASK; return result; } case 0xffed: case 0xffee: { result = (guint) GDK_HYPER_MASK; return result; } default: { result = (guint) 0; return result; } } } static void keybinding_manager_event_handler (KeybindingManager* self, GdkEvent* event) { GdkEvent* _tmp30_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { GdkEvent* _tmp1_ = NULL; GdkEventAny* _tmp2_ = NULL; GdkEventAny* _tmp3_ = NULL; GdkWindow* _tmp4_ = NULL; GdkWindow* _tmp5_ = NULL; GdkEvent* _tmp6_ = NULL; GdkEventType _tmp7_ = 0; if (!_tmp0_) { if (!FALSE) { break; } } _tmp0_ = FALSE; _tmp1_ = event; _tmp2_ = (GdkEventAny *) (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = _tmp3_->window; _tmp5_ = gdk_get_default_root_window (); if (_tmp4_ != _tmp5_) { break; } _tmp6_ = event; _tmp7_ = _tmp6_->type; if (_tmp7_ == GDK_KEY_PRESS) { guint modifiers = 0U; GdkEvent* _tmp8_ = NULL; GdkEventKey* _tmp9_ = NULL; GdkEventKey* _tmp10_ = NULL; GdkModifierType _tmp11_ = 0; GList* _tmp12_ = NULL; _tmp8_ = event; _tmp9_ = (GdkEventKey *) (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = _tmp10_->state; modifiers = (guint) (_tmp11_ & KEYBINDING_MANAGER_MODIFIER_FILTER); _tmp12_ = self->priv->m_bindings; { GList* binding_collection = NULL; GList* binding_it = NULL; binding_collection = _tmp12_; for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { KeybindingManagerKeybinding* _tmp13_ = NULL; KeybindingManagerKeybinding* binding = NULL; _tmp13_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp13_; { gboolean _tmp14_ = FALSE; GdkEvent* _tmp15_ = NULL; GdkEventKey* _tmp16_ = NULL; GdkEventKey* _tmp17_ = NULL; guint _tmp18_ = 0U; KeybindingManagerKeybinding* _tmp19_ = NULL; guint _tmp20_ = 0U; guint _tmp21_ = 0U; KeybindingManagerKeybinding* _tmp26_ = NULL; KeybindingManagerKeybindingHandlerFunc _tmp27_ = NULL; void* _tmp27__target = NULL; KeybindingManagerKeybindingHandlerFunc _tmp28_ = NULL; void* _tmp28__target = NULL; GdkEvent* _tmp29_ = NULL; _tmp15_ = event; _tmp16_ = (GdkEventKey *) (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = _tmp17_->keyval; _tmp19_ = binding; _tmp20_ = keybinding_manager_keybinding_get_keysym (_tmp19_); _tmp21_ = _tmp20_; if (_tmp18_ != _tmp21_) { _tmp14_ = TRUE; } else { guint _tmp22_ = 0U; KeybindingManagerKeybinding* _tmp23_ = NULL; GdkModifierType _tmp24_ = 0; GdkModifierType _tmp25_ = 0; _tmp22_ = modifiers; _tmp23_ = binding; _tmp24_ = keybinding_manager_keybinding_get_modifiers (_tmp23_); _tmp25_ = _tmp24_; _tmp14_ = _tmp22_ != ((guint) _tmp25_); } if (_tmp14_) { _keybinding_manager_keybinding_unref0 (binding); continue; } _tmp26_ = binding; _tmp27_ = keybinding_manager_keybinding_get_handler (_tmp26_, &_tmp27__target); _tmp28_ = _tmp27_; _tmp28__target = _tmp27__target; _tmp29_ = event; _tmp28_ (_tmp29_, _tmp28__target); _keybinding_manager_keybinding_unref0 (binding); return; } } } } } } _tmp30_ = event; gtk_main_do_event (_tmp30_); } static void _vala_array_add10 (gint** array, int* length, int* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add11 (gint** array, int* length, int* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add12 (gint** array, int* length, int* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add13 (XIGrabModifiers** array, int* length, int* size, const XIGrabModifiers* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (XIGrabModifiers, *array, *size); } (*array)[(*length)++] = *value; } static void _vala_XIGrabModifiers_array_free (XIGrabModifiers* array, gint array_length) { if (array != NULL) { int i; for (i = 0; i < array_length; i = i + 1) { (&array[i]); } } g_free (array); } static XIGrabModifiers* keybinding_manager_get_grab_modifiers (KeybindingManager* self, guint modifiers, int* result_length1) { XIGrabModifiers* result = NULL; static const gint ignored_modifiers[] = {(gint) LockMask, (gint) Mod2Mask, (gint) Mod5Mask}; gint* masks = NULL; gint* _tmp0_ = NULL; gint masks_length1 = 0; gint _masks_size_ = 0; gint* _tmp18_ = NULL; gint _tmp18__length1 = 0; XIGrabModifiers* ximodifiers = NULL; XIGrabModifiers* _tmp19_ = NULL; gint ximodifiers_length1 = 0; gint _ximodifiers_size_ = 0; gint* _tmp20_ = NULL; gint _tmp20__length1 = 0; XIGrabModifiers* _tmp25_ = NULL; gint _tmp25__length1 = 0; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = g_new0 (gint, 0); masks = _tmp0_; masks_length1 = 0; _masks_size_ = masks_length1; { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { gint _tmp3_ = 0; gint modifier = 0; gint _tmp4_ = 0; gint _tmp5_ = 0; gint* _tmp6_ = NULL; gint _tmp6__length1 = 0; gint _tmp7_ = 0; gint length = 0; gint* _tmp8_ = NULL; gint _tmp8__length1 = 0; if (!_tmp1_) { gint _tmp2_ = 0; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = i; if (!(_tmp3_ < G_N_ELEMENTS (ignored_modifiers))) { break; } _tmp4_ = i; _tmp5_ = ignored_modifiers[_tmp4_]; modifier = _tmp5_; _tmp6_ = masks; _tmp6__length1 = masks_length1; _tmp7_ = modifier; _vala_array_add10 (&masks, &masks_length1, &_masks_size_, _tmp7_); _tmp8_ = masks; _tmp8__length1 = masks_length1; length = _tmp8__length1; { gint j = 0; j = 0; { gboolean _tmp9_ = FALSE; _tmp9_ = TRUE; while (TRUE) { gint _tmp11_ = 0; gint _tmp12_ = 0; gint* _tmp13_ = NULL; gint _tmp13__length1 = 0; gint* _tmp14_ = NULL; gint _tmp14__length1 = 0; gint _tmp15_ = 0; gint _tmp16_ = 0; gint _tmp17_ = 0; if (!_tmp9_) { gint _tmp10_ = 0; _tmp10_ = j; j = _tmp10_ + 1; } _tmp9_ = FALSE; _tmp11_ = j; _tmp12_ = length; if (!(_tmp11_ < (_tmp12_ - 1))) { break; } _tmp13_ = masks; _tmp13__length1 = masks_length1; _tmp14_ = masks; _tmp14__length1 = masks_length1; _tmp15_ = j; _tmp16_ = _tmp14_[_tmp15_]; _tmp17_ = modifier; _vala_array_add11 (&masks, &masks_length1, &_masks_size_, _tmp16_ | _tmp17_); } } } } } } _tmp18_ = masks; _tmp18__length1 = masks_length1; _vala_array_add12 (&masks, &masks_length1, &_masks_size_, 0); _tmp19_ = g_new0 (XIGrabModifiers, 0); ximodifiers = _tmp19_; ximodifiers_length1 = 0; _ximodifiers_size_ = ximodifiers_length1; _tmp20_ = masks; _tmp20__length1 = masks_length1; { gint* mask_collection = NULL; gint mask_collection_length1 = 0; gint _mask_collection_size_ = 0; gint mask_it = 0; mask_collection = _tmp20_; mask_collection_length1 = _tmp20__length1; for (mask_it = 0; mask_it < _tmp20__length1; mask_it = mask_it + 1) { gint mask = 0; mask = mask_collection[mask_it]; { XIGrabModifiers* _tmp21_ = NULL; gint _tmp21__length1 = 0; gint _tmp22_ = 0; guint _tmp23_ = 0U; XIGrabModifiers _tmp24_ = {0}; _tmp21_ = ximodifiers; _tmp21__length1 = ximodifiers_length1; _tmp22_ = mask; _tmp23_ = modifiers; memset (&_tmp24_, 0, sizeof (XIGrabModifiers)); _tmp24_.modifiers = _tmp22_ | _tmp23_; _tmp24_.status = 0; _vala_array_add13 (&ximodifiers, &ximodifiers_length1, &_ximodifiers_size_, &_tmp24_); } } } _tmp25_ = ximodifiers; _tmp25__length1 = ximodifiers_length1; if (result_length1) { *result_length1 = _tmp25__length1; } result = _tmp25_; masks = (g_free (masks), NULL); return result; } static gboolean keybinding_manager_grab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers) { gboolean result = FALSE; Display* xdisplay = NULL; GdkDisplay* _tmp0_ = NULL; Display* _tmp1_ = NULL; gint keycode = 0; Display* _tmp2_ = NULL; guint _tmp3_ = 0U; guchar _tmp4_ = '\0'; gint _tmp5_ = 0; XIEventMask evmask = {0}; guchar* _tmp7_ = NULL; XIEventMask _tmp8_ = {0}; XIEventMask _tmp9_ = {0}; guchar* _tmp10_ = NULL; gint _tmp10__length1 = 0; XIEventMask _tmp11_ = {0}; guchar* _tmp12_ = NULL; gint _tmp12__length1 = 0; gint retval = 0; Display* _tmp13_ = NULL; gint _tmp14_ = 0; Display* _tmp15_ = NULL; Window _tmp16_ = 0; XIEventMask _tmp17_ = {0}; guint _tmp18_ = 0U; gint _tmp19_ = 0; XIGrabModifiers* _tmp20_ = NULL; XIGrabModifiers* _tmp21_ = NULL; gint _tmp21__length1 = 0; gint _tmp22_ = 0; gint _tmp23_ = 0; gint _tmp24_ = 0; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (display != NULL, FALSE); _tmp0_ = display; _tmp1_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp0_) : NULL); xdisplay = _tmp1_; _tmp2_ = xdisplay; _tmp3_ = keyval; _tmp4_ = XKeysymToKeycode (_tmp2_, (gulong) _tmp3_); keycode = (gint) _tmp4_; _tmp5_ = keycode; if (_tmp5_ == 0) { guint _tmp6_ = 0U; _tmp6_ = keyval; g_warning ("keybindingmanager.vala:255: Can not convert keyval=%u to keycode!", _tmp6_); result = FALSE; return result; } _tmp7_ = g_new0 (guchar, (XI_LASTEVENT + 7) / 8); memset (&_tmp8_, 0, sizeof (XIEventMask)); _tmp8_.deviceid = XIAllMasterDevices; _tmp8_.mask = (g_free (_tmp8_.mask), NULL); _tmp8_.mask = _tmp7_; _tmp8_.mask_len = (XI_LASTEVENT + 7) / 8; evmask = _tmp8_; _tmp9_ = evmask; _tmp10_ = _tmp9_.mask; _tmp10__length1 = _tmp9_.mask_len; XISetMask (_tmp10_, XI_KeyPress); _tmp11_ = evmask; _tmp12_ = _tmp11_.mask; _tmp12__length1 = _tmp11_.mask_len; XISetMask (_tmp12_, XI_KeyRelease); _tmp13_ = xdisplay; _tmp14_ = keycode; _tmp15_ = xdisplay; _tmp16_ = DefaultRootWindow (_tmp15_); _tmp17_ = evmask; _tmp18_ = modifiers; _tmp20_ = keybinding_manager_get_grab_modifiers (self, _tmp18_, &_tmp19_); _tmp21_ = _tmp20_; _tmp21__length1 = _tmp19_; _tmp22_ = XIGrabKeycode (_tmp13_, XIAllMasterDevices, _tmp14_, _tmp16_, (gint) GrabModeAsync, (gint) GrabModeAsync, TRUE, &_tmp17_, _tmp19_, _tmp21_); _tmp23_ = _tmp22_; _tmp21_ = (_vala_XIGrabModifiers_array_free (_tmp21_, _tmp21__length1), NULL); retval = _tmp23_; _tmp24_ = retval; result = _tmp24_ == 0; (&evmask); return result; } static gboolean keybinding_manager_ungrab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers) { gboolean result = FALSE; Display* xdisplay = NULL; GdkDisplay* _tmp0_ = NULL; Display* _tmp1_ = NULL; gint keycode = 0; Display* _tmp2_ = NULL; guint _tmp3_ = 0U; guchar _tmp4_ = '\0'; gint _tmp5_ = 0; gint retval = 0; Display* _tmp7_ = NULL; gint _tmp8_ = 0; Display* _tmp9_ = NULL; Window _tmp10_ = 0; guint _tmp11_ = 0U; gint _tmp12_ = 0; XIGrabModifiers* _tmp13_ = NULL; XIGrabModifiers* _tmp14_ = NULL; gint _tmp14__length1 = 0; gint _tmp15_ = 0; gint _tmp16_ = 0; gint _tmp17_ = 0; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (display != NULL, FALSE); _tmp0_ = display; _tmp1_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp0_) : NULL); xdisplay = _tmp1_; _tmp2_ = xdisplay; _tmp3_ = keyval; _tmp4_ = XKeysymToKeycode (_tmp2_, (gulong) _tmp3_); keycode = (gint) _tmp4_; _tmp5_ = keycode; if (_tmp5_ == 0) { guint _tmp6_ = 0U; _tmp6_ = keyval; g_warning ("keybindingmanager.vala:288: Can not convert keyval=%u to keycode!", _tmp6_); result = FALSE; return result; } _tmp7_ = xdisplay; _tmp8_ = keycode; _tmp9_ = xdisplay; _tmp10_ = DefaultRootWindow (_tmp9_); _tmp11_ = modifiers; _tmp13_ = keybinding_manager_get_grab_modifiers (self, _tmp11_, &_tmp12_); _tmp14_ = _tmp13_; _tmp14__length1 = _tmp12_; _tmp15_ = XIUngrabKeycode (_tmp7_, XIAllMasterDevices, _tmp8_, _tmp10_, _tmp12_, _tmp14_); _tmp16_ = _tmp15_; _tmp14_ = (_vala_XIGrabModifiers_array_free (_tmp14_, _tmp14__length1), NULL); retval = _tmp16_; _tmp17_ = retval; result = _tmp17_ == 0; return result; } static KeybindingManagerKeybinding* keybinding_manager_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target) { KeybindingManagerKeybinding* self = NULL; guint _tmp0_ = 0U; GdkModifierType _tmp1_ = 0; KeybindingManagerKeybindingHandlerFunc _tmp2_ = NULL; void* _tmp2__target = NULL; self = (KeybindingManagerKeybinding*) g_type_create_instance (object_type); _tmp0_ = keysym; keybinding_manager_keybinding_set_keysym (self, _tmp0_); _tmp1_ = modifiers; keybinding_manager_keybinding_set_modifiers (self, _tmp1_); _tmp2_ = handler; _tmp2__target = handler_target; keybinding_manager_keybinding_set_handler (self, _tmp2_, _tmp2__target); return self; } static KeybindingManagerKeybinding* keybinding_manager_keybinding_new (guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, void* handler_target) { return keybinding_manager_keybinding_construct (KEYBINDING_MANAGER_TYPE_KEYBINDING, keysym, modifiers, handler, handler_target); } static guint keybinding_manager_keybinding_get_keysym (KeybindingManagerKeybinding* self) { guint result; guint _tmp0_ = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->_keysym; result = _tmp0_; return result; } static void keybinding_manager_keybinding_set_keysym (KeybindingManagerKeybinding* self, guint value) { guint _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_keysym = _tmp0_; } static GdkModifierType keybinding_manager_keybinding_get_modifiers (KeybindingManagerKeybinding* self) { GdkModifierType result; GdkModifierType _tmp0_ = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->_modifiers; result = _tmp0_; return result; } static void keybinding_manager_keybinding_set_modifiers (KeybindingManagerKeybinding* self, GdkModifierType value) { GdkModifierType _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = value; self->priv->_modifiers = _tmp0_; } static KeybindingManagerKeybindingHandlerFunc keybinding_manager_keybinding_get_handler (KeybindingManagerKeybinding* self, gpointer* result_target) { KeybindingManagerKeybindingHandlerFunc result; KeybindingManagerKeybindingHandlerFunc _tmp0_ = NULL; void* _tmp0__target = NULL; KeybindingManagerKeybindingHandlerFunc _tmp1_ = NULL; void* _tmp1__target = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_handler; _tmp0__target = self->priv->_handler_target; _tmp1_ = _tmp0_; _tmp1__target = _tmp0__target; *result_target = _tmp1__target; result = _tmp1_; return result; } static void keybinding_manager_keybinding_set_handler (KeybindingManagerKeybinding* self, KeybindingManagerKeybindingHandlerFunc value, gpointer value_target) { KeybindingManagerKeybindingHandlerFunc _tmp0_ = NULL; void* _tmp0__target = NULL; g_return_if_fail (self != NULL); _tmp0_ = value; _tmp0__target = value_target; self->priv->_handler = _tmp0_; self->priv->_handler_target = _tmp0__target; } static void keybinding_manager_value_keybinding_init (GValue* value) { value->data[0].v_pointer = NULL; } static void keybinding_manager_value_keybinding_free_value (GValue* value) { if (value->data[0].v_pointer) { keybinding_manager_keybinding_unref (value->data[0].v_pointer); } } static void keybinding_manager_value_keybinding_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = keybinding_manager_keybinding_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer keybinding_manager_value_keybinding_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* keybinding_manager_value_keybinding_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { KeybindingManagerKeybinding* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = keybinding_manager_keybinding_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* keybinding_manager_value_keybinding_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { KeybindingManagerKeybinding** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = keybinding_manager_keybinding_ref (value->data[0].v_pointer); } return NULL; } static GParamSpec* keybinding_manager_param_spec_keybinding (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { KeybindingManagerParamSpecKeybinding* spec; g_return_val_if_fail (g_type_is_a (object_type, KEYBINDING_MANAGER_TYPE_KEYBINDING), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } static gpointer keybinding_manager_value_get_keybinding (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, KEYBINDING_MANAGER_TYPE_KEYBINDING), NULL); return value->data[0].v_pointer; } static void keybinding_manager_value_set_keybinding (GValue* value, gpointer v_object) { KeybindingManagerKeybinding* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, KEYBINDING_MANAGER_TYPE_KEYBINDING)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, KEYBINDING_MANAGER_TYPE_KEYBINDING)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; keybinding_manager_keybinding_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { keybinding_manager_keybinding_unref (old); } } static void keybinding_manager_value_take_keybinding (GValue* value, gpointer v_object) { KeybindingManagerKeybinding* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, KEYBINDING_MANAGER_TYPE_KEYBINDING)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, KEYBINDING_MANAGER_TYPE_KEYBINDING)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { keybinding_manager_keybinding_unref (old); } } static void keybinding_manager_keybinding_class_init (KeybindingManagerKeybindingClass * klass) { keybinding_manager_keybinding_parent_class = g_type_class_peek_parent (klass); ((KeybindingManagerKeybindingClass *) klass)->finalize = keybinding_manager_keybinding_finalize; g_type_class_add_private (klass, sizeof (KeybindingManagerKeybindingPrivate)); } static void keybinding_manager_keybinding_instance_init (KeybindingManagerKeybinding * self) { self->priv = KEYBINDING_MANAGER_KEYBINDING_GET_PRIVATE (self); self->ref_count = 1; } static void keybinding_manager_keybinding_finalize (KeybindingManagerKeybinding* obj) { KeybindingManagerKeybinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, KEYBINDING_MANAGER_TYPE_KEYBINDING, KeybindingManagerKeybinding); g_signal_handlers_destroy (self); } /** * Helper class to store keybinding */ static GType keybinding_manager_keybinding_get_type (void) { static volatile gsize keybinding_manager_keybinding_type_id__volatile = 0; if (g_once_init_enter (&keybinding_manager_keybinding_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { keybinding_manager_value_keybinding_init, keybinding_manager_value_keybinding_free_value, keybinding_manager_value_keybinding_copy_value, keybinding_manager_value_keybinding_peek_pointer, "p", keybinding_manager_value_keybinding_collect_value, "p", keybinding_manager_value_keybinding_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (KeybindingManagerKeybindingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) keybinding_manager_keybinding_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (KeybindingManagerKeybinding), 0, (GInstanceInitFunc) keybinding_manager_keybinding_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType keybinding_manager_keybinding_type_id; keybinding_manager_keybinding_type_id = g_type_register_fundamental (g_type_fundamental_next (), "KeybindingManagerKeybinding", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&keybinding_manager_keybinding_type_id__volatile, keybinding_manager_keybinding_type_id); } return keybinding_manager_keybinding_type_id__volatile; } static gpointer keybinding_manager_keybinding_ref (gpointer instance) { KeybindingManagerKeybinding* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } static void keybinding_manager_keybinding_unref (gpointer instance) { KeybindingManagerKeybinding* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { KEYBINDING_MANAGER_KEYBINDING_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static void keybinding_manager_class_init (KeybindingManagerClass * klass) { keybinding_manager_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (KeybindingManagerPrivate)); G_OBJECT_CLASS (klass)->finalize = keybinding_manager_finalize; } static void keybinding_manager_instance_init (KeybindingManager * self) { self->priv = KEYBINDING_MANAGER_GET_PRIVATE (self); self->priv->m_bindings = NULL; } static void keybinding_manager_finalize (GObject* obj) { KeybindingManager * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_KEYBINDING_MANAGER, KeybindingManager); __g_list_free__keybinding_manager_keybinding_unref0_0 (self->priv->m_bindings); G_OBJECT_CLASS (keybinding_manager_parent_class)->finalize (obj); } /** * This class is in charge to grab keybindings on the X11 display * and filter X11-events and passing on such events to the registed * handler methods. * * @author Oliver Sauder */ GType keybinding_manager_get_type (void) { static volatile gsize keybinding_manager_type_id__volatile = 0; if (g_once_init_enter (&keybinding_manager_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (KeybindingManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) keybinding_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (KeybindingManager), 0, (GInstanceInitFunc) keybinding_manager_instance_init, NULL }; GType keybinding_manager_type_id; keybinding_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "KeybindingManager", &g_define_type_info, 0); g_once_init_leave (&keybinding_manager_type_id__volatile, keybinding_manager_type_id); } return keybinding_manager_type_id__volatile; } ibus-1.5.11/ui/gtk3/gen-notification-item.xml.c0000644000000000000000000000750112551655052016062 00000000000000const char * _notification_item = "\n" "\n" " \n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" " \n" "\n" ; ibus-1.5.11/ui/gtk3/indicator.vala0000644000000000000000000004475312551654123013557 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2015 Takao Fujiwara * Copyright(c) 2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ /* This class extends AppIndicator because * AppIndicator misses "Activate" dbus method in the definition * for left click on the indicator. */ public extern string _notification_item; public extern string _notification_watcher; class Indicator : IBus.Service { public string id { get; construct; } public string category_s { get; construct; } public string status_s { get; set; } public string icon_name { get; set; } public string icon_desc { get; set; } public string attention_icon_name { get; set; } public string attention_icon_desc { get; set; } public string title { get; set; } public string icon_theme_path { get; set; } public bool connected { get; set; } public string label_s { get; set; } public string label_guide_s { get; set; } public uint32 ordering_index { get; set; } public GLib.Variant icon_vector { get; set; } public enum Category { APPLICATION_STATUS, COMMUNICATIONS, SYSTEM_SERVICES, HARDWARE, OTHER; public string to_nick() { switch(this) { case APPLICATION_STATUS: return "ApplicationStatus"; case COMMUNICATIONS: return "Communications"; case SYSTEM_SERVICES: return "SystemServices"; case HARDWARE: return "Hardware"; case OTHER: return "Other"; default: assert_not_reached(); } } } public enum Status { PASSIVE, ACTIVE, ATTENTION; public string to_nick() { switch(this) { case PASSIVE: return "Passive"; case ACTIVE: return "Active"; case ATTENTION: return "NeedsAttention"; default: assert_not_reached(); } } } private const string DEFAULT_ITEM_PATH = "/org/ayatana/NotificationItem"; private const string NOTIFICATION_ITEM_DBUS_IFACE = "org.kde.StatusNotifierItem"; private const string NOTIFICATION_WATCHER_DBUS_IFACE = "org.kde.StatusNotifierWatcher"; private const string NOTIFICATION_WATCHER_DBUS_ADDR = "org.kde.StatusNotifierWatcher"; private const string NOTIFICATION_WATCHER_DBUS_OBJ = "/StatusNotifierWatcher"; private GLib.DBusNodeInfo m_watcher_node_info; private unowned GLib.DBusInterfaceInfo m_watcher_interface_info; private GLib.DBusProxy m_proxy; private int m_context_menu_x; private int m_context_menu_y; private int m_activate_menu_x; private int m_activate_menu_y; public Indicator(string id, GLib.DBusConnection connection, Category category = Category.OTHER) { string path = DEFAULT_ITEM_PATH + "/" + id; path = path.delimit("-", '_'); // AppIndicator.set_category() converts enum value to string internally. GLib.Object(object_path: path, id: id, connection: connection, category_s: category.to_nick()); this.status_s = Status.PASSIVE.to_nick(); this.icon_name = ""; this.icon_desc = ""; this.title = ""; this.icon_theme_path = ""; this.attention_icon_name = ""; this.attention_icon_desc = ""; this.label_s = ""; this.label_guide_s = ""; unregister(connection); add_interfaces(_notification_item); try { if (!register(connection)) return; } catch (GLib.Error e) { warning("Failed to register the application indicator xml: " + e.message); return; } try { m_watcher_node_info = new GLib.DBusNodeInfo.for_xml(_notification_watcher); } catch (GLib.Error e) { warning("Failed to create dbus node info: " + e.message); return; } m_watcher_interface_info = m_watcher_node_info.lookup_interface( NOTIFICATION_WATCHER_DBUS_IFACE); check_connect(); } private void check_connect() { if (m_proxy == null) { GLib.DBusProxy.new.begin( connection, GLib.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES | GLib.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS, m_watcher_interface_info, NOTIFICATION_WATCHER_DBUS_ADDR, NOTIFICATION_WATCHER_DBUS_OBJ, NOTIFICATION_WATCHER_DBUS_IFACE, null, (obj, res) => { bus_watcher_ready(obj, res); }); } else { bus_watcher_ready(null, null); } } private void bus_watcher_ready(GLib.Object? obj, GLib.AsyncResult? res) { if (res != null) { try { m_proxy = GLib.DBusProxy.new.end(res); } catch (GLib.IOError e) { warning("Failed to call dbus proxy: " + e.message); return; } m_proxy.notify["g-name-owner"].connect((obj, pspec) => { var name = m_proxy.get_name_owner(); if (name != null) check_connect(); }); } var name = m_proxy.get_name_owner(); // KDE panel does not run yet if name == null if (name == null) return; m_proxy.call.begin("RegisterStatusNotifierItem", new GLib.Variant("(s)", this.object_path), GLib.DBusCallFlags.NONE, -1, null, (p_obj, p_res) => { try { m_proxy.call.end(p_res); registered_status_notifier_item(); } catch (GLib.Error e) { warning("Failed to call " + "RegisterStatusNotifierItem: " + e.message); } }); } private void _context_menu_cb(GLib.DBusConnection connection, GLib.Variant parameters, GLib.DBusMethodInvocation invocation) { GLib.Variant var_x = parameters.get_child_value(0); GLib.Variant var_y = parameters.get_child_value(1); m_context_menu_x = var_x.get_int32(); m_context_menu_y = var_y.get_int32(); context_menu(2, 0); } private void _activate_menu_cb(GLib.DBusConnection connection, GLib.Variant parameters, GLib.DBusMethodInvocation invocation) { GLib.Variant var_x = parameters.get_child_value(0); GLib.Variant var_y = parameters.get_child_value(1); m_activate_menu_x = var_x.get_int32(); m_activate_menu_y = var_y.get_int32(); activate(); } private GLib.Variant? _get_id(GLib.DBusConnection connection) { return new GLib.Variant.string(this.id); } private GLib.Variant? _get_category(GLib.DBusConnection connection) { return new GLib.Variant.string(this.category_s); } private GLib.Variant? _get_status(GLib.DBusConnection connection) { return new GLib.Variant.string(this.status_s); } private GLib.Variant? _get_icon_name(GLib.DBusConnection connection) { return new GLib.Variant.string(this.icon_name); } private GLib.Variant? _get_icon_vector(GLib.DBusConnection connection) { return this.icon_vector; } private GLib.Variant? _get_icon_desc(GLib.DBusConnection connection) { return new GLib.Variant.string(this.icon_desc); } private GLib.Variant? _get_attention_icon_name(GLib.DBusConnection connection) { return new GLib.Variant.string(this.attention_icon_name); } private GLib.Variant? _get_attention_icon_desc(GLib.DBusConnection connection) { return new GLib.Variant.string(this.attention_icon_desc); } private GLib.Variant? _get_title(GLib.DBusConnection connection) { return new GLib.Variant.string(this.title); } private GLib.Variant? _get_icon_theme_path(GLib.DBusConnection connection) { return new GLib.Variant.string(this.icon_theme_path); } private GLib.Variant? _get_menu(GLib.DBusConnection connection) { return null; } private GLib.Variant? _get_xayatana_label(GLib.DBusConnection connection) { return new GLib.Variant.string(this.label_s); } private GLib.Variant? _get_xayatana_label_guide(GLib.DBusConnection connection) { return new GLib.Variant.string(this.label_guide_s); } private GLib.Variant? _get_xayatana_ordering_index(GLib.DBusConnection connection) { return new GLib.Variant.uint32(this.ordering_index); } public override void service_method_call(GLib.DBusConnection connection, string sender, string object_path, string interface_name, string method_name, GLib.Variant parameters, GLib.DBusMethodInvocation invocation) { GLib.return_if_fail (object_path == this.object_path); GLib.return_if_fail (interface_name == NOTIFICATION_ITEM_DBUS_IFACE); if (method_name == "Activate") { _activate_menu_cb(connection, parameters, invocation); return; } if (method_name == "ContextMenu") { _context_menu_cb(connection, parameters, invocation); return; } warning("service_method_call() does not handle the method: " + method_name); } public override GLib.Variant? service_get_property(GLib.DBusConnection connection, string sender, string object_path, string interface_name, string property_name) { GLib.return_val_if_fail (object_path == this.object_path, null); GLib.return_val_if_fail ( interface_name == NOTIFICATION_ITEM_DBUS_IFACE, null); if (property_name == "Id") return _get_id(connection); if (property_name == "Category") return _get_category(connection); if (property_name == "Status") return _get_status(connection); if (property_name == "IconName") return _get_icon_name(connection); if (property_name == "IconPixmap") return _get_icon_vector(connection); if (property_name == "IconAccessibleDesc") return _get_icon_desc(connection); if (property_name == "AttentionIconName") return _get_attention_icon_name(connection); if (property_name == "AttentionAccessibleDesc") return _get_attention_icon_desc(connection); if (property_name == "Title") return _get_title(connection); if (property_name == "IconThemePath") return _get_icon_theme_path(connection); if (property_name == "Menu") return _get_menu(connection); if (property_name == "XAyatanaLabel") return _get_xayatana_label(connection); if (property_name == "XAyatanaLabelGuide") return _get_xayatana_label_guide(connection); if (property_name == "XAyatanaOrderingIndex") return _get_xayatana_ordering_index(connection); warning("service_get_property() does not handle the property: " + property_name); return null; } public override bool service_set_property(GLib.DBusConnection connection, string sender, string object_path, string interface_name, string property_name, GLib.Variant value) { return false; } // AppIndicator.set_status() converts enum value to string internally. public void set_status(Status status) { string status_s = status.to_nick(); if (this.status_s == status_s) return; this.status_s = status_s; /* This API does not require (this.connection != null) * because service_get_property() can be called when * this.connection emits the "NewStatus" signal or * or m_proxy calls the "RegisterStatusNotifierItem" signal. */ if (this.connection == null) return; try { this.connection.emit_signal(null, this.object_path, NOTIFICATION_ITEM_DBUS_IFACE, "NewStatus", new GLib.Variant("(s)", status_s)); } catch(GLib.Error e) { warning("Unable to send signal for NewIcon: %s", e.message); } } // AppIndicator.set_icon() is deprecated. public void set_icon_full(string icon_name, string? icon_desc) { bool changed = false; if (this.icon_name != icon_name) { this.icon_name = icon_name; this.icon_vector = null; changed = true; } if (this.icon_desc != icon_desc) { this.icon_desc = icon_desc; changed = true; } if (!changed) return; /* This API does not require (this.connection != null) * because service_get_property() can be called when * this.connection emits the "NewIcon" signal or * or m_proxy calls the "RegisterStatusNotifierItem" signal. */ if (this.connection == null) return; try { this.connection.emit_signal(null, this.object_path, NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", null); } catch(GLib.Error e) { warning("Unable to send signal for NewIcon: %s", e.message); } } public void set_cairo_image_surface_full(Cairo.ImageSurface image, string? icon_desc) { int width = image.get_width(); int height = image.get_height(); int stride = image.get_stride(); unowned uint8[] data = (uint8[]) image.get_data(); data.length = stride * height; GLib.Bytes bytes = new GLib.Bytes(data); GLib.Variant bs = new GLib.Variant.from_bytes(GLib.VariantType.BYTESTRING, bytes, true); GLib.VariantBuilder builder = new GLib.VariantBuilder( new GLib.VariantType("a(iiay)")); builder.open(new GLib.VariantType("(iiay)")); builder.add("i", width); builder.add("i", height); builder.add_value(bs); builder.close(); this.icon_vector = new GLib.Variant("a(iiay)", builder); this.icon_name = ""; if (this.icon_desc != icon_desc) this.icon_desc = icon_desc; /* This API does not require (this.connection != null) * because service_get_property() can be called when * this.connection emits the "NewIcon" signal or * or m_proxy calls the "RegisterStatusNotifierItem" signal. */ if (this.connection == null) return; try { this.connection.emit_signal(null, this.object_path, NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", null); } catch(GLib.Error e) { warning("Unable to send signal for NewIcon: %s", e.message); } } public void position_context_menu(Gtk.Menu menu, out int x, out int y, out bool push_in) { x = m_context_menu_x; y = m_context_menu_y; push_in = false; } public void position_activate_menu(Gtk.Menu menu, out int x, out int y, out bool push_in) { x = m_activate_menu_x; y = m_activate_menu_y; push_in = false; } public signal void context_menu(uint button, uint activate_time); public signal void activate(); public signal void registered_status_notifier_item(); } ibus-1.5.11/ui/gtk3/separator.vala0000644000000000000000000000231112551654124013564 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ class HSeparator : Gtk.Separator { public HSeparator() { GLib.Object( orientation : Gtk.Orientation.HORIZONTAL, margin : 2 ); } } class VSeparator : Gtk.Separator { public VSeparator() { GLib.Object( orientation : Gtk.Orientation.VERTICAL, margin : 2 ); } } ibus-1.5.11/ui/gtk3/candidatepanel.c0000644000000000000000000014141612551655052014032 00000000000000/* candidatepanel.c generated by valac 0.28.0, the Vala compiler * generated from candidatepanel.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #define TYPE_CANDIDATE_PANEL (candidate_panel_get_type ()) #define CANDIDATE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CANDIDATE_PANEL, CandidatePanel)) #define CANDIDATE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CANDIDATE_PANEL, CandidatePanelClass)) #define IS_CANDIDATE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CANDIDATE_PANEL)) #define IS_CANDIDATE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CANDIDATE_PANEL)) #define CANDIDATE_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CANDIDATE_PANEL, CandidatePanelClass)) typedef struct _CandidatePanel CandidatePanel; typedef struct _CandidatePanelClass CandidatePanelClass; typedef struct _CandidatePanelPrivate CandidatePanelPrivate; #define TYPE_CANDIDATE_AREA (candidate_area_get_type ()) #define CANDIDATE_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CANDIDATE_AREA, CandidateArea)) #define CANDIDATE_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CANDIDATE_AREA, CandidateAreaClass)) #define IS_CANDIDATE_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CANDIDATE_AREA)) #define IS_CANDIDATE_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CANDIDATE_AREA)) #define CANDIDATE_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CANDIDATE_AREA, CandidateAreaClass)) typedef struct _CandidateArea CandidateArea; typedef struct _CandidateAreaClass CandidateAreaClass; #define TYPE_HSEPARATOR (hseparator_get_type ()) #define HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HSEPARATOR, HSeparator)) #define HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HSEPARATOR, HSeparatorClass)) #define IS_HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HSEPARATOR)) #define IS_HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HSEPARATOR)) #define HSEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HSEPARATOR, HSeparatorClass)) typedef struct _HSeparator HSeparator; typedef struct _HSeparatorClass HSeparatorClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define TYPE_HANDLE (handle_get_type ()) #define HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HANDLE, Handle)) #define HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HANDLE, HandleClass)) #define IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HANDLE)) #define IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HANDLE)) #define HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HANDLE, HandleClass)) typedef struct _Handle Handle; typedef struct _HandleClass HandleClass; #define _pango_attribute_destroy0(var) ((var == NULL) ? NULL : (var = (pango_attribute_destroy (var), NULL))) #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) struct _CandidatePanel { GtkBox parent_instance; CandidatePanelPrivate * priv; }; struct _CandidatePanelClass { GtkBoxClass parent_class; }; struct _CandidatePanelPrivate { gboolean m_vertical_panel_system; gboolean m_vertical_writing; GtkWindow* m_toplevel; GtkBox* m_vbox; GtkLabel* m_preedit_label; GtkLabel* m_aux_label; CandidateArea* m_candidate_area; HSeparator* m_hseparator; GdkRectangle m_cursor_location; }; static gpointer candidate_panel_parent_class = NULL; GType candidate_panel_get_type (void) G_GNUC_CONST; GType candidate_area_get_type (void) G_GNUC_CONST; GType hseparator_get_type (void) G_GNUC_CONST; #define CANDIDATE_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CANDIDATE_PANEL, CandidatePanelPrivate)) enum { CANDIDATE_PANEL_DUMMY_PROPERTY }; CandidatePanel* candidate_panel_new (void); CandidatePanel* candidate_panel_construct (GType object_type); static gboolean __lambda12_ (CandidatePanel* self, GtkWidget* w, GdkEventButton* e); void candidate_panel_set_vertical (CandidatePanel* self, gboolean vertical); static gboolean ___lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void __lambda13_ (CandidatePanel* self, GtkWidget* w, GtkAllocation* a); static void candidate_panel_adjust_window_position (CandidatePanel* self); static void ___lambda13__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); GType handle_get_type (void) G_GNUC_CONST; Handle* handle_new (void); Handle* handle_construct (GType object_type); static void candidate_panel_create_ui (CandidatePanel* self); void candidate_area_set_vertical (CandidateArea* self, gboolean vertical, gboolean force); static void candidate_panel_set_orientation (CandidatePanel* self, IBusOrientation orientation); void candidate_panel_set_cursor_location (CandidatePanel* self, gint x, gint y, gint width, gint height); static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t* s1, const cairo_rectangle_int_t* s2); static void candidate_panel_set_labels (CandidatePanel* self, IBusText** labels, int labels_length1); void candidate_area_set_labels (CandidateArea* self, IBusText** labels, int labels_length1); static void candidate_panel_set_attributes (CandidatePanel* self, GtkLabel* label, IBusText* text); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); void candidate_panel_set_preedit_text (CandidatePanel* self, IBusText* text, guint cursor); static void candidate_panel_update (CandidatePanel* self); void candidate_panel_set_auxiliary_text (CandidatePanel* self, IBusText* text); void candidate_panel_set_lookup_table (CandidatePanel* self, IBusLookupTable* table); static void _vala_array_add8 (IBusText*** array, int* length, int* size, IBusText* value); static void _vala_array_add9 (IBusText*** array, int* length, int* size, IBusText* value); void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, int candidates_length1, guint focus_candidate, gboolean show_cursor); void candidate_panel_set_content_type (CandidatePanel* self, guint purpose, guint hints); static void candidate_panel_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width); static void candidate_panel_real_get_preferred_height (GtkWidget* base, gint* minimum_width, gint* natural_width); CandidateArea* candidate_area_new (gboolean vertical); CandidateArea* candidate_area_construct (GType object_type, gboolean vertical); static void __lambda14_ (CandidatePanel* self, CandidateArea* w, guint i, guint b, guint s); static void ___lambda14__candidate_area_candidate_clicked (CandidateArea* _sender, guint index, guint button, guint state, gpointer self); static void __lambda15_ (CandidatePanel* self, CandidateArea* c); static void ___lambda15__candidate_area_page_up (CandidateArea* _sender, gpointer self); static void __lambda16_ (CandidatePanel* self, CandidateArea* c); static void ___lambda16__candidate_area_page_down (CandidateArea* _sender, gpointer self); static void __lambda17_ (CandidatePanel* self, CandidateArea* c); static void ___lambda17__candidate_area_cursor_up (CandidateArea* _sender, gpointer self); static void __lambda18_ (CandidatePanel* self, CandidateArea* c); static void ___lambda18__candidate_area_cursor_down (CandidateArea* _sender, gpointer self); HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); static void candidate_panel_pack_all_widgets (CandidatePanel* self); void candidate_panel_show (CandidatePanel* self); void candidate_panel_hide (CandidatePanel* self); static void candidate_panel_move (CandidatePanel* self, gint x, gint y); static void candidate_panel_adjust_window_position_horizontal (CandidatePanel* self); static void candidate_panel_adjust_window_position_vertical (CandidatePanel* self); gboolean candidate_area_get_vertical (CandidateArea* self); static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void candidate_panel_finalize (GObject* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gboolean __lambda12_ (CandidatePanel* self, GtkWidget* w, GdkEventButton* e) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; GdkEventButton* _tmp1_ = NULL; guint _tmp2_ = 0U; gboolean _tmp5_ = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp1_ = e; _tmp2_ = _tmp1_->button; if (_tmp2_ != ((guint) 1)) { _tmp0_ = TRUE; } else { GdkEventButton* _tmp3_ = NULL; GdkModifierType _tmp4_ = 0; _tmp3_ = e; _tmp4_ = _tmp3_->state; _tmp0_ = (_tmp4_ & GDK_CONTROL_MASK) == 0; } if (_tmp0_) { result = FALSE; return result; } _tmp5_ = self->priv->m_vertical_panel_system; candidate_panel_set_vertical (self, !_tmp5_); result = TRUE; return result; } static gboolean ___lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = __lambda12_ ((CandidatePanel*) self, _sender, event); return result; } static void __lambda13_ (CandidatePanel* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); candidate_panel_adjust_window_position (self); } static void ___lambda13__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda13_ ((CandidatePanel*) self, _sender, allocation); } CandidatePanel* candidate_panel_construct (GType object_type) { CandidatePanel * self = NULL; GtkWindow* _tmp0_ = NULL; GtkWindow* _tmp1_ = NULL; GtkWindow* _tmp2_ = NULL; GtkWindow* _tmp3_ = NULL; Handle* handle = NULL; Handle* _tmp4_ = NULL; GtkBox* _tmp5_ = NULL; GtkBox* _tmp6_ = NULL; GtkBox* _tmp7_ = NULL; GtkWindow* _tmp8_ = NULL; self = (CandidatePanel*) g_object_new (object_type, "name", "IBusCandidate", "orientation", GTK_ORIENTATION_HORIZONTAL, "visible", TRUE, NULL); _tmp0_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_POPUP); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_toplevel); self->priv->m_toplevel = _tmp0_; _tmp1_ = self->priv->m_toplevel; gtk_widget_add_events ((GtkWidget*) _tmp1_, (gint) GDK_BUTTON_PRESS_MASK); _tmp2_ = self->priv->m_toplevel; g_signal_connect_object ((GtkWidget*) _tmp2_, "button-press-event", (GCallback) ___lambda12__gtk_widget_button_press_event, self, 0); _tmp3_ = self->priv->m_toplevel; g_signal_connect_object ((GtkWidget*) _tmp3_, "size-allocate", (GCallback) ___lambda13__gtk_widget_size_allocate, self, 0); _tmp4_ = handle_new (); g_object_ref_sink (_tmp4_); handle = _tmp4_; gtk_widget_set_visible ((GtkWidget*) handle, TRUE); gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) handle, FALSE, FALSE, (guint) 0); _tmp5_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp5_); _g_object_unref0 (self->priv->m_vbox); self->priv->m_vbox = _tmp5_; _tmp6_ = self->priv->m_vbox; gtk_widget_set_visible ((GtkWidget*) _tmp6_, TRUE); _tmp7_ = self->priv->m_vbox; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp7_, FALSE, FALSE, (guint) 0); _tmp8_ = self->priv->m_toplevel; gtk_container_add ((GtkContainer*) _tmp8_, (GtkWidget*) self); candidate_panel_create_ui (self); _g_object_unref0 (handle); return self; } CandidatePanel* candidate_panel_new (void) { return candidate_panel_construct (TYPE_CANDIDATE_PANEL); } void candidate_panel_set_vertical (CandidatePanel* self, gboolean vertical) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; CandidateArea* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_vertical_panel_system; _tmp1_ = vertical; if (_tmp0_ == _tmp1_) { return; } _tmp2_ = vertical; self->priv->m_vertical_panel_system = _tmp2_; _tmp3_ = self->priv->m_candidate_area; _tmp4_ = vertical; candidate_area_set_vertical (_tmp3_, _tmp4_, FALSE); } static void candidate_panel_set_orientation (CandidatePanel* self, IBusOrientation orientation) { IBusOrientation _tmp0_ = 0; g_return_if_fail (self != NULL); _tmp0_ = orientation; switch (_tmp0_) { case IBUS_ORIENTATION_VERTICAL: { CandidateArea* _tmp1_ = NULL; _tmp1_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp1_, TRUE, FALSE); break; } case IBUS_ORIENTATION_HORIZONTAL: { CandidateArea* _tmp2_ = NULL; _tmp2_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp2_, FALSE, FALSE); break; } case IBUS_ORIENTATION_SYSTEM: { CandidateArea* _tmp3_ = NULL; gboolean _tmp4_ = FALSE; _tmp3_ = self->priv->m_candidate_area; _tmp4_ = self->priv->m_vertical_panel_system; candidate_area_set_vertical (_tmp3_, _tmp4_, FALSE); break; } default: break; } } static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t* s1, const cairo_rectangle_int_t* s2) { if (s1 == s2) { return TRUE; } if (s1 == NULL) { return FALSE; } if (s2 == NULL) { return FALSE; } if (s1->x != s2->x) { return FALSE; } if (s1->y != s2->y) { return FALSE; } if (s1->width != s2->width) { return FALSE; } if (s1->height != s2->height) { return FALSE; } return TRUE; } void candidate_panel_set_cursor_location (CandidatePanel* self, gint x, gint y, gint width, gint height) { GdkRectangle location = {0}; gint _tmp0_ = 0; gint _tmp1_ = 0; gint _tmp2_ = 0; gint _tmp3_ = 0; GdkRectangle _tmp4_ = {0}; GdkRectangle _tmp5_ = {0}; GdkRectangle _tmp6_ = {0}; GdkRectangle _tmp7_ = {0}; g_return_if_fail (self != NULL); _tmp0_ = x; _tmp1_ = y; _tmp2_ = width; _tmp3_ = height; memset (&_tmp4_, 0, sizeof (GdkRectangle)); _tmp4_.x = _tmp0_; _tmp4_.y = _tmp1_; _tmp4_.width = _tmp2_; _tmp4_.height = _tmp3_; location = _tmp4_; _tmp5_ = self->priv->m_cursor_location; _tmp6_ = location; if (_cairo_rectangle_int_equal (&_tmp5_, &_tmp6_) == TRUE) { return; } _tmp7_ = location; self->priv->m_cursor_location = _tmp7_; } static void candidate_panel_set_labels (CandidatePanel* self, IBusText** labels, int labels_length1) { CandidateArea* _tmp0_ = NULL; IBusText** _tmp1_ = NULL; gint _tmp1__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_candidate_area; _tmp1_ = labels; _tmp1__length1 = labels_length1; candidate_area_set_labels (_tmp0_, _tmp1_, _tmp1__length1); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void candidate_panel_set_attributes (CandidatePanel* self, GtkLabel* label, IBusText* text) { PangoAttrList* attrs = NULL; IBusText* _tmp0_ = NULL; PangoAttrList* _tmp1_ = NULL; GtkStyleContext* context = NULL; GtkLabel* _tmp2_ = NULL; GtkStyleContext* _tmp3_ = NULL; GtkStyleContext* _tmp4_ = NULL; GdkRGBA color = {0}; GtkStyleContext* _tmp5_ = NULL; GdkRGBA _tmp6_ = {0}; gboolean _tmp7_ = FALSE; GtkLabel* _tmp23_ = NULL; PangoAttrList* _tmp24_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (label != NULL); g_return_if_fail (text != NULL); _tmp0_ = text; _tmp1_ = get_pango_attr_list_from_ibus_text (_tmp0_); attrs = _tmp1_; _tmp2_ = label; _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) _tmp2_); _tmp4_ = _g_object_ref0 (_tmp3_); context = _tmp4_; _tmp5_ = context; _tmp7_ = gtk_style_context_lookup_color (_tmp5_, "placeholder_text_color", &_tmp6_); color = _tmp6_; if (_tmp7_) { PangoAttribute* pango_attr = NULL; GdkRGBA _tmp8_ = {0}; gdouble _tmp9_ = 0.0; GdkRGBA _tmp10_ = {0}; gdouble _tmp11_ = 0.0; GdkRGBA _tmp12_ = {0}; gdouble _tmp13_ = 0.0; PangoAttribute* _tmp14_ = NULL; PangoAttribute* _tmp15_ = NULL; PangoAttribute* _tmp16_ = NULL; GtkLabel* _tmp17_ = NULL; const gchar* _tmp18_ = NULL; gint _tmp19_ = 0; gint _tmp20_ = 0; PangoAttrList* _tmp21_ = NULL; PangoAttribute* _tmp22_ = NULL; _tmp8_ = color; _tmp9_ = _tmp8_.red; _tmp10_ = color; _tmp11_ = _tmp10_.green; _tmp12_ = color; _tmp13_ = _tmp12_.blue; _tmp14_ = pango_attr_foreground_new ((guint16) (_tmp9_ * G_MAXUINT16), (guint16) (_tmp11_ * G_MAXUINT16), (guint16) (_tmp13_ * G_MAXUINT16)); pango_attr = _tmp14_; _tmp15_ = pango_attr; _tmp15_->start_index = (guint) 0; _tmp16_ = pango_attr; _tmp17_ = label; _tmp18_ = gtk_label_get_text (_tmp17_); _tmp19_ = strlen (_tmp18_); _tmp20_ = _tmp19_; _tmp16_->end_index = (guint) _tmp20_; _tmp21_ = attrs; _tmp22_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp21_, _tmp22_); _pango_attribute_destroy0 (pango_attr); } _tmp23_ = label; _tmp24_ = attrs; gtk_label_set_attributes (_tmp23_, _tmp24_); _g_object_unref0 (context); _pango_attr_list_unref0 (attrs); } void candidate_panel_set_preedit_text (CandidatePanel* self, IBusText* text, guint cursor) { IBusText* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = text; if (_tmp0_ != NULL) { gchar* str = NULL; IBusText* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; gchar* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; gint _tmp5_ = 0; gint _tmp6_ = 0; _tmp1_ = text; _tmp2_ = ibus_text_get_text (_tmp1_); _tmp3_ = g_strdup (_tmp2_); str = _tmp3_; _tmp4_ = str; _tmp5_ = strlen (_tmp4_); _tmp6_ = _tmp5_; if (_tmp6_ > 0) { GtkLabel* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; GtkLabel* _tmp9_ = NULL; GtkLabel* _tmp10_ = NULL; IBusText* _tmp11_ = NULL; _tmp7_ = self->priv->m_preedit_label; _tmp8_ = str; gtk_label_set_text (_tmp7_, _tmp8_); _tmp9_ = self->priv->m_preedit_label; gtk_widget_show ((GtkWidget*) _tmp9_); _tmp10_ = self->priv->m_preedit_label; _tmp11_ = text; candidate_panel_set_attributes (self, _tmp10_, _tmp11_); } else { GtkLabel* _tmp12_ = NULL; GtkLabel* _tmp13_ = NULL; _tmp12_ = self->priv->m_preedit_label; gtk_label_set_text (_tmp12_, ""); _tmp13_ = self->priv->m_preedit_label; gtk_widget_hide ((GtkWidget*) _tmp13_); } _g_free0 (str); } else { GtkLabel* _tmp14_ = NULL; GtkLabel* _tmp15_ = NULL; _tmp14_ = self->priv->m_preedit_label; gtk_label_set_text (_tmp14_, ""); _tmp15_ = self->priv->m_preedit_label; gtk_widget_hide ((GtkWidget*) _tmp15_); } candidate_panel_update (self); } void candidate_panel_set_auxiliary_text (CandidatePanel* self, IBusText* text) { IBusText* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = text; if (_tmp0_ != NULL) { GtkLabel* _tmp1_ = NULL; IBusText* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; GtkLabel* _tmp4_ = NULL; _tmp1_ = self->priv->m_aux_label; _tmp2_ = text; _tmp3_ = ibus_text_get_text (_tmp2_); gtk_label_set_text (_tmp1_, _tmp3_); _tmp4_ = self->priv->m_aux_label; gtk_widget_show ((GtkWidget*) _tmp4_); } else { GtkLabel* _tmp5_ = NULL; GtkLabel* _tmp6_ = NULL; _tmp5_ = self->priv->m_aux_label; gtk_label_set_text (_tmp5_, ""); _tmp6_ = self->priv->m_aux_label; gtk_widget_hide ((GtkWidget*) _tmp6_); } candidate_panel_update (self); } static void _vala_array_add8 (IBusText*** array, int* length, int* size, IBusText* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusText*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add9 (IBusText*** array, int* length, int* size, IBusText* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusText*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } void candidate_panel_set_lookup_table (CandidatePanel* self, IBusLookupTable* table) { IBusText** candidates = NULL; IBusText** _tmp0_ = NULL; gint candidates_length1 = 0; gint _candidates_size_ = 0; guint cursor_in_page = 0U; gboolean show_cursor = FALSE; IBusText** labels = NULL; IBusText** _tmp1_ = NULL; gint labels_length1 = 0; gint _labels_size_ = 0; IBusOrientation orientation = 0; IBusLookupTable* _tmp2_ = NULL; CandidateArea* _tmp44_ = NULL; IBusText** _tmp45_ = NULL; gint _tmp45__length1 = 0; guint _tmp46_ = 0U; gboolean _tmp47_ = FALSE; IBusText** _tmp48_ = NULL; gint _tmp48__length1 = 0; IBusLookupTable* _tmp49_ = NULL; IBusText** _tmp51_ = NULL; gint _tmp51__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = g_new0 (IBusText*, 0 + 1); candidates = _tmp0_; candidates_length1 = 0; _candidates_size_ = candidates_length1; cursor_in_page = (guint) 0; show_cursor = TRUE; _tmp1_ = g_new0 (IBusText*, 0 + 1); labels = _tmp1_; labels_length1 = 0; _labels_size_ = labels_length1; orientation = IBUS_ORIENTATION_SYSTEM; _tmp2_ = table; if (_tmp2_ != NULL) { guint page_size = 0U; IBusLookupTable* _tmp3_ = NULL; guint _tmp4_ = 0U; guint ncandidates = 0U; IBusLookupTable* _tmp5_ = NULL; guint _tmp6_ = 0U; guint cursor = 0U; IBusLookupTable* _tmp7_ = NULL; guint _tmp8_ = 0U; IBusLookupTable* _tmp9_ = NULL; guint _tmp10_ = 0U; IBusLookupTable* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; guint page_start_pos = 0U; guint _tmp13_ = 0U; guint _tmp14_ = 0U; guint _tmp15_ = 0U; guint page_end_pos = 0U; guint _tmp16_ = 0U; guint _tmp17_ = 0U; guint _tmp18_ = 0U; guint _tmp19_ = 0U; IBusLookupTable* _tmp42_ = NULL; gint _tmp43_ = 0; _tmp3_ = table; _tmp4_ = ibus_lookup_table_get_page_size (_tmp3_); page_size = _tmp4_; _tmp5_ = table; _tmp6_ = ibus_lookup_table_get_number_of_candidates (_tmp5_); ncandidates = _tmp6_; _tmp7_ = table; _tmp8_ = ibus_lookup_table_get_cursor_pos (_tmp7_); cursor = _tmp8_; _tmp9_ = table; _tmp10_ = ibus_lookup_table_get_cursor_in_page (_tmp9_); cursor_in_page = _tmp10_; _tmp11_ = table; _tmp12_ = ibus_lookup_table_is_cursor_visible (_tmp11_); show_cursor = _tmp12_; _tmp13_ = cursor; _tmp14_ = page_size; _tmp15_ = page_size; page_start_pos = (_tmp13_ / _tmp14_) * _tmp15_; _tmp16_ = page_start_pos; _tmp17_ = page_size; _tmp18_ = ncandidates; _tmp19_ = MIN (_tmp16_ + _tmp17_, _tmp18_); page_end_pos = _tmp19_; { guint i = 0U; guint _tmp20_ = 0U; _tmp20_ = page_start_pos; i = _tmp20_; { gboolean _tmp21_ = FALSE; _tmp21_ = TRUE; while (TRUE) { guint _tmp23_ = 0U; guint _tmp24_ = 0U; IBusText** _tmp25_ = NULL; gint _tmp25__length1 = 0; IBusLookupTable* _tmp26_ = NULL; guint _tmp27_ = 0U; IBusText* _tmp28_ = NULL; IBusText* _tmp29_ = NULL; if (!_tmp21_) { guint _tmp22_ = 0U; _tmp22_ = i; i = _tmp22_ + 1; } _tmp21_ = FALSE; _tmp23_ = i; _tmp24_ = page_end_pos; if (!(_tmp23_ < _tmp24_)) { break; } _tmp25_ = candidates; _tmp25__length1 = candidates_length1; _tmp26_ = table; _tmp27_ = i; _tmp28_ = ibus_lookup_table_get_candidate (_tmp26_, _tmp27_); _tmp29_ = _g_object_ref0 (_tmp28_); _vala_array_add8 (&candidates, &candidates_length1, &_candidates_size_, _tmp29_); } } } { guint i = 0U; i = (guint) 0; { gboolean _tmp30_ = FALSE; _tmp30_ = TRUE; while (TRUE) { guint _tmp32_ = 0U; guint _tmp33_ = 0U; IBusText* label = NULL; IBusLookupTable* _tmp34_ = NULL; guint _tmp35_ = 0U; IBusText* _tmp36_ = NULL; IBusText* _tmp37_ = NULL; IBusText* _tmp38_ = NULL; if (!_tmp30_) { guint _tmp31_ = 0U; _tmp31_ = i; i = _tmp31_ + 1; } _tmp30_ = FALSE; _tmp32_ = i; _tmp33_ = page_size; if (!(_tmp32_ < _tmp33_)) { break; } _tmp34_ = table; _tmp35_ = i; _tmp36_ = ibus_lookup_table_get_label (_tmp34_, _tmp35_); _tmp37_ = _g_object_ref0 (_tmp36_); label = _tmp37_; _tmp38_ = label; if (_tmp38_ != NULL) { IBusText** _tmp39_ = NULL; gint _tmp39__length1 = 0; IBusText* _tmp40_ = NULL; IBusText* _tmp41_ = NULL; _tmp39_ = labels; _tmp39__length1 = labels_length1; _tmp40_ = label; _tmp41_ = _g_object_ref0 (_tmp40_); _vala_array_add9 (&labels, &labels_length1, &_labels_size_, _tmp41_); } _g_object_unref0 (label); } } } _tmp42_ = table; _tmp43_ = ibus_lookup_table_get_orientation (_tmp42_); orientation = (IBusOrientation) _tmp43_; } _tmp44_ = self->priv->m_candidate_area; _tmp45_ = candidates; _tmp45__length1 = candidates_length1; _tmp46_ = cursor_in_page; _tmp47_ = show_cursor; candidate_area_set_candidates (_tmp44_, _tmp45_, _tmp45__length1, _tmp46_, _tmp47_); _tmp48_ = labels; _tmp48__length1 = labels_length1; candidate_panel_set_labels (self, _tmp48_, _tmp48__length1); _tmp49_ = table; if (_tmp49_ != NULL) { IBusOrientation _tmp50_ = 0; _tmp50_ = orientation; candidate_panel_set_orientation (self, _tmp50_); } _tmp51_ = candidates; _tmp51__length1 = candidates_length1; if (_tmp51__length1 != 0) { CandidateArea* _tmp52_ = NULL; _tmp52_ = self->priv->m_candidate_area; gtk_widget_show_all ((GtkWidget*) _tmp52_); } else { CandidateArea* _tmp53_ = NULL; _tmp53_ = self->priv->m_candidate_area; gtk_widget_hide ((GtkWidget*) _tmp53_); } candidate_panel_update (self); labels = (_vala_array_free (labels, labels_length1, (GDestroyNotify) g_object_unref), NULL); candidates = (_vala_array_free (candidates, candidates_length1, (GDestroyNotify) g_object_unref), NULL); } void candidate_panel_set_content_type (CandidatePanel* self, guint purpose, guint hints) { guint _tmp0_ = 0U; g_return_if_fail (self != NULL); _tmp0_ = hints; self->priv->m_vertical_writing = (_tmp0_ & IBUS_INPUT_HINT_VERTICAL_WRITING) != ((guint) 0); } static void candidate_panel_update (CandidatePanel* self) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; CandidateArea* _tmp2_ = NULL; gboolean _tmp3_ = FALSE; gboolean _tmp10_ = FALSE; GtkLabel* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; g_return_if_fail (self != NULL); _tmp2_ = self->priv->m_candidate_area; _tmp3_ = gtk_widget_get_visible ((GtkWidget*) _tmp2_); if (_tmp3_) { _tmp1_ = TRUE; } else { GtkLabel* _tmp4_ = NULL; gboolean _tmp5_ = FALSE; _tmp4_ = self->priv->m_preedit_label; _tmp5_ = gtk_widget_get_visible ((GtkWidget*) _tmp4_); _tmp1_ = _tmp5_; } if (_tmp1_) { _tmp0_ = TRUE; } else { GtkLabel* _tmp6_ = NULL; gboolean _tmp7_ = FALSE; _tmp6_ = self->priv->m_aux_label; _tmp7_ = gtk_widget_get_visible ((GtkWidget*) _tmp6_); _tmp0_ = _tmp7_; } if (_tmp0_) { GtkWindow* _tmp8_ = NULL; _tmp8_ = self->priv->m_toplevel; gtk_widget_show ((GtkWidget*) _tmp8_); } else { GtkWindow* _tmp9_ = NULL; _tmp9_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp9_); } _tmp11_ = self->priv->m_aux_label; _tmp12_ = gtk_widget_get_visible ((GtkWidget*) _tmp11_); if (_tmp12_) { gboolean _tmp13_ = FALSE; CandidateArea* _tmp14_ = NULL; gboolean _tmp15_ = FALSE; _tmp14_ = self->priv->m_candidate_area; _tmp15_ = gtk_widget_get_visible ((GtkWidget*) _tmp14_); if (_tmp15_) { _tmp13_ = TRUE; } else { GtkLabel* _tmp16_ = NULL; gboolean _tmp17_ = FALSE; _tmp16_ = self->priv->m_preedit_label; _tmp17_ = gtk_widget_get_visible ((GtkWidget*) _tmp16_); _tmp13_ = _tmp17_; } _tmp10_ = _tmp13_; } else { _tmp10_ = FALSE; } if (_tmp10_) { HSeparator* _tmp18_ = NULL; _tmp18_ = self->priv->m_hseparator; gtk_widget_show ((GtkWidget*) _tmp18_); } else { HSeparator* _tmp19_ = NULL; _tmp19_ = self->priv->m_hseparator; gtk_widget_hide ((GtkWidget*) _tmp19_); } } static void candidate_panel_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width) { CandidatePanel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gint _tmp0_ = 0; gint _tmp1_ = 0; GtkWindow* _tmp2_ = NULL; self = (CandidatePanel*) base; GTK_WIDGET_CLASS (candidate_panel_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), &_tmp0_, &_tmp1_); _vala_minimum_width = _tmp0_; _vala_natural_width = _tmp1_; _tmp2_ = self->priv->m_toplevel; gtk_window_resize (_tmp2_, 1, 1); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void candidate_panel_real_get_preferred_height (GtkWidget* base, gint* minimum_width, gint* natural_width) { CandidatePanel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gint _tmp0_ = 0; gint _tmp1_ = 0; GtkWindow* _tmp2_ = NULL; self = (CandidatePanel*) base; GTK_WIDGET_CLASS (candidate_panel_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), &_tmp0_, &_tmp1_); _vala_minimum_width = _tmp0_; _vala_natural_width = _tmp1_; _tmp2_ = self->priv->m_toplevel; gtk_window_resize (_tmp2_, 1, 1); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void __lambda14_ (CandidatePanel* self, CandidateArea* w, guint i, guint b, guint s) { guint _tmp0_ = 0U; guint _tmp1_ = 0U; guint _tmp2_ = 0U; g_return_if_fail (w != NULL); _tmp0_ = i; _tmp1_ = b; _tmp2_ = s; g_signal_emit_by_name (self, "candidate-clicked", _tmp0_, _tmp1_, _tmp2_); } static void ___lambda14__candidate_area_candidate_clicked (CandidateArea* _sender, guint index, guint button, guint state, gpointer self) { __lambda14_ ((CandidatePanel*) self, _sender, index, button, state); } static void __lambda15_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit_by_name (self, "page-up"); } static void ___lambda15__candidate_area_page_up (CandidateArea* _sender, gpointer self) { __lambda15_ ((CandidatePanel*) self, _sender); } static void __lambda16_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit_by_name (self, "page-down"); } static void ___lambda16__candidate_area_page_down (CandidateArea* _sender, gpointer self) { __lambda16_ ((CandidatePanel*) self, _sender); } static void __lambda17_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit_by_name (self, "cursor-up"); } static void ___lambda17__candidate_area_cursor_up (CandidateArea* _sender, gpointer self) { __lambda17_ ((CandidatePanel*) self, _sender); } static void __lambda18_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit_by_name (self, "cursor-down"); } static void ___lambda18__candidate_area_cursor_down (CandidateArea* _sender, gpointer self) { __lambda18_ ((CandidatePanel*) self, _sender); } static void candidate_panel_create_ui (CandidatePanel* self) { GtkLabel* _tmp0_ = NULL; GtkLabel* _tmp1_ = NULL; GtkLabel* _tmp2_ = NULL; GtkLabel* _tmp3_ = NULL; GtkLabel* _tmp4_ = NULL; GtkLabel* _tmp5_ = NULL; GtkLabel* _tmp6_ = NULL; GtkLabel* _tmp7_ = NULL; GtkLabel* _tmp8_ = NULL; GtkLabel* _tmp9_ = NULL; GtkLabel* _tmp10_ = NULL; GtkLabel* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; CandidateArea* _tmp13_ = NULL; CandidateArea* _tmp14_ = NULL; CandidateArea* _tmp15_ = NULL; CandidateArea* _tmp16_ = NULL; CandidateArea* _tmp17_ = NULL; CandidateArea* _tmp18_ = NULL; HSeparator* _tmp19_ = NULL; HSeparator* _tmp20_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_preedit_label); self->priv->m_preedit_label = _tmp0_; _tmp1_ = self->priv->m_preedit_label; gtk_widget_set_size_request ((GtkWidget*) _tmp1_, 20, -1); _tmp2_ = self->priv->m_preedit_label; gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_START); _tmp3_ = self->priv->m_preedit_label; gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_CENTER); _tmp4_ = self->priv->m_preedit_label; gtk_misc_set_padding ((GtkMisc*) _tmp4_, 8, 0); _tmp5_ = self->priv->m_preedit_label; gtk_widget_set_no_show_all ((GtkWidget*) _tmp5_, TRUE); _tmp6_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp6_); _g_object_unref0 (self->priv->m_aux_label); self->priv->m_aux_label = _tmp6_; _tmp7_ = self->priv->m_aux_label; gtk_widget_set_size_request ((GtkWidget*) _tmp7_, 20, -1); _tmp8_ = self->priv->m_aux_label; gtk_widget_set_halign ((GtkWidget*) _tmp8_, GTK_ALIGN_START); _tmp9_ = self->priv->m_aux_label; gtk_widget_set_valign ((GtkWidget*) _tmp9_, GTK_ALIGN_CENTER); _tmp10_ = self->priv->m_aux_label; gtk_misc_set_padding ((GtkMisc*) _tmp10_, 8, 0); _tmp11_ = self->priv->m_aux_label; gtk_widget_set_no_show_all ((GtkWidget*) _tmp11_, TRUE); _tmp12_ = self->priv->m_vertical_panel_system; _tmp13_ = candidate_area_new (_tmp12_); g_object_ref_sink (_tmp13_); _g_object_unref0 (self->priv->m_candidate_area); self->priv->m_candidate_area = _tmp13_; _tmp14_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp14_, "candidate-clicked", (GCallback) ___lambda14__candidate_area_candidate_clicked, self, 0); _tmp15_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp15_, "page-up", (GCallback) ___lambda15__candidate_area_page_up, self, 0); _tmp16_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp16_, "page-down", (GCallback) ___lambda16__candidate_area_page_down, self, 0); _tmp17_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp17_, "cursor-up", (GCallback) ___lambda17__candidate_area_cursor_up, self, 0); _tmp18_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp18_, "cursor-down", (GCallback) ___lambda18__candidate_area_cursor_down, self, 0); _tmp19_ = hseparator_new (); g_object_ref_sink (_tmp19_); _g_object_unref0 (self->priv->m_hseparator); self->priv->m_hseparator = _tmp19_; _tmp20_ = self->priv->m_hseparator; gtk_widget_set_visible ((GtkWidget*) _tmp20_, TRUE); candidate_panel_pack_all_widgets (self); } static void candidate_panel_pack_all_widgets (CandidatePanel* self) { GtkBox* _tmp0_ = NULL; GtkLabel* _tmp1_ = NULL; GtkBox* _tmp2_ = NULL; GtkLabel* _tmp3_ = NULL; GtkBox* _tmp4_ = NULL; HSeparator* _tmp5_ = NULL; GtkBox* _tmp6_ = NULL; CandidateArea* _tmp7_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_vbox; _tmp1_ = self->priv->m_preedit_label; gtk_box_pack_start (_tmp0_, (GtkWidget*) _tmp1_, FALSE, FALSE, (guint) 4); _tmp2_ = self->priv->m_vbox; _tmp3_ = self->priv->m_aux_label; gtk_box_pack_start (_tmp2_, (GtkWidget*) _tmp3_, FALSE, FALSE, (guint) 4); _tmp4_ = self->priv->m_vbox; _tmp5_ = self->priv->m_hseparator; gtk_box_pack_start (_tmp4_, (GtkWidget*) _tmp5_, FALSE, FALSE, (guint) 0); _tmp6_ = self->priv->m_vbox; _tmp7_ = self->priv->m_candidate_area; gtk_box_pack_start (_tmp6_, (GtkWidget*) _tmp7_, FALSE, FALSE, (guint) 0); } void candidate_panel_show (CandidatePanel* self) { GtkWindow* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_widget_show_all ((GtkWidget*) _tmp0_); } void candidate_panel_hide (CandidatePanel* self) { GtkWindow* _tmp0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp0_); } static void candidate_panel_move (CandidatePanel* self, gint x, gint y) { GtkWindow* _tmp0_ = NULL; gint _tmp1_ = 0; gint _tmp2_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; _tmp1_ = x; _tmp2_ = y; gtk_window_move (_tmp0_, _tmp1_, _tmp2_); } static void candidate_panel_adjust_window_position (CandidatePanel* self) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_vertical_writing; if (!_tmp0_) { candidate_panel_adjust_window_position_horizontal (self); } else { candidate_panel_adjust_window_position_vertical (self); } } static void candidate_panel_adjust_window_position_horizontal (CandidatePanel* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_ = {0}; gint _tmp1_ = 0; GdkRectangle _tmp2_ = {0}; gint _tmp3_ = 0; GdkRectangle _tmp4_ = {0}; gint _tmp5_ = 0; GdkRectangle _tmp6_ = {0}; gint _tmp7_ = 0; GdkPoint _tmp8_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp9_ = NULL; GtkAllocation _tmp10_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp11_ = {0}; gint _tmp12_ = 0; GtkAllocation _tmp13_ = {0}; gint _tmp14_ = 0; GdkPoint _tmp15_ = {0}; gint _tmp16_ = 0; GtkAllocation _tmp17_ = {0}; gint _tmp18_ = 0; GdkPoint _tmp19_ = {0}; GdkWindow* root = NULL; GdkWindow* _tmp20_ = NULL; GdkWindow* _tmp21_ = NULL; gint root_width = 0; GdkWindow* _tmp22_ = NULL; gint _tmp23_ = 0; gint root_height = 0; GdkWindow* _tmp24_ = NULL; gint _tmp25_ = 0; gint x = 0; gint y = 0; GdkPoint _tmp26_ = {0}; gint _tmp27_ = 0; gint _tmp28_ = 0; gint _tmp34_ = 0; GdkPoint _tmp35_ = {0}; gint _tmp36_ = 0; gint _tmp37_ = 0; gint _tmp44_ = 0; gint _tmp45_ = 0; gint _tmp46_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = _tmp0_.x; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = _tmp2_.width; _tmp4_ = self->priv->m_cursor_location; _tmp5_ = _tmp4_.y; _tmp6_ = self->priv->m_cursor_location; _tmp7_ = _tmp6_.height; _tmp8_.x = _tmp1_ + _tmp3_; _tmp8_.y = _tmp5_ + _tmp7_; cursor_right_bottom = _tmp8_; _tmp9_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp9_, &_tmp10_); allocation = _tmp10_; _tmp11_ = cursor_right_bottom; _tmp12_ = _tmp11_.x; _tmp13_ = allocation; _tmp14_ = _tmp13_.width; _tmp15_ = cursor_right_bottom; _tmp16_ = _tmp15_.y; _tmp17_ = allocation; _tmp18_ = _tmp17_.height; _tmp19_.x = _tmp12_ + _tmp14_; _tmp19_.y = _tmp16_ + _tmp18_; window_right_bottom = _tmp19_; _tmp20_ = gdk_get_default_root_window (); _tmp21_ = _g_object_ref0 (_tmp20_); root = _tmp21_; _tmp22_ = root; _tmp23_ = gdk_window_get_width (_tmp22_); root_width = _tmp23_; _tmp24_ = root; _tmp25_ = gdk_window_get_height (_tmp24_); root_height = _tmp25_; _tmp26_ = window_right_bottom; _tmp27_ = _tmp26_.x; _tmp28_ = root_width; if (_tmp27_ > _tmp28_) { gint _tmp29_ = 0; GtkAllocation _tmp30_ = {0}; gint _tmp31_ = 0; _tmp29_ = root_width; _tmp30_ = allocation; _tmp31_ = _tmp30_.width; x = _tmp29_ - _tmp31_; } else { GdkPoint _tmp32_ = {0}; gint _tmp33_ = 0; _tmp32_ = cursor_right_bottom; _tmp33_ = _tmp32_.x; x = _tmp33_; } _tmp34_ = x; if (_tmp34_ < 0) { x = 0; } _tmp35_ = window_right_bottom; _tmp36_ = _tmp35_.y; _tmp37_ = root_height; if (_tmp36_ > _tmp37_) { GdkRectangle _tmp38_ = {0}; gint _tmp39_ = 0; GtkAllocation _tmp40_ = {0}; gint _tmp41_ = 0; _tmp38_ = self->priv->m_cursor_location; _tmp39_ = _tmp38_.y; _tmp40_ = allocation; _tmp41_ = _tmp40_.height; y = _tmp39_ - _tmp41_; } else { GdkPoint _tmp42_ = {0}; gint _tmp43_ = 0; _tmp42_ = cursor_right_bottom; _tmp43_ = _tmp42_.y; y = _tmp43_; } _tmp44_ = y; if (_tmp44_ < 0) { y = 0; } _tmp45_ = x; _tmp46_ = y; candidate_panel_move (self, _tmp45_, _tmp46_); _g_object_unref0 (root); } static void candidate_panel_adjust_window_position_vertical (CandidatePanel* self) { gint char_size = 0; GdkRectangle _tmp0_ = {0}; gint _tmp1_ = 0; GdkRectangle _tmp2_ = {0}; gint _tmp3_ = 0; gint _tmp4_ = 0; GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp5_ = {0}; gint _tmp6_ = 0; gint _tmp7_ = 0; GdkRectangle _tmp8_ = {0}; gint _tmp9_ = 0; gint _tmp10_ = 0; GdkPoint _tmp11_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp12_ = NULL; GtkAllocation _tmp13_ = {0}; GdkPoint hwindow_right_bottom = {0}; GdkRectangle _tmp14_ = {0}; gint _tmp15_ = 0; GtkAllocation _tmp16_ = {0}; gint _tmp17_ = 0; GdkPoint _tmp18_ = {0}; gint _tmp19_ = 0; GtkAllocation _tmp20_ = {0}; gint _tmp21_ = 0; GdkPoint _tmp22_ = {0}; GdkPoint vwindow_left_bottom = {0}; GdkRectangle _tmp23_ = {0}; gint _tmp24_ = 0; GtkAllocation _tmp25_ = {0}; gint _tmp26_ = 0; GdkRectangle _tmp27_ = {0}; gint _tmp28_ = 0; GtkAllocation _tmp29_ = {0}; gint _tmp30_ = 0; GdkPoint _tmp31_ = {0}; GdkWindow* root = NULL; GdkWindow* _tmp32_ = NULL; GdkWindow* _tmp33_ = NULL; gint root_width = 0; GdkWindow* _tmp34_ = NULL; gint _tmp35_ = 0; gint root_height = 0; GdkWindow* _tmp36_ = NULL; gint _tmp37_ = 0; gint x = 0; gint y = 0; CandidateArea* _tmp38_ = NULL; gboolean _tmp39_ = FALSE; gint _tmp77_ = 0; gint _tmp78_ = 0; gint _tmp79_ = 0; gint _tmp80_ = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = _tmp0_.width; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = _tmp2_.height; _tmp4_ = MAX (_tmp1_, _tmp3_); char_size = _tmp4_; _tmp5_ = self->priv->m_cursor_location; _tmp6_ = _tmp5_.x; _tmp7_ = char_size; _tmp8_ = self->priv->m_cursor_location; _tmp9_ = _tmp8_.y; _tmp10_ = char_size; _tmp11_.x = _tmp6_ + _tmp7_; _tmp11_.y = _tmp9_ + _tmp10_; cursor_right_bottom = _tmp11_; _tmp12_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp12_, &_tmp13_); allocation = _tmp13_; _tmp14_ = self->priv->m_cursor_location; _tmp15_ = _tmp14_.x; _tmp16_ = allocation; _tmp17_ = _tmp16_.width; _tmp18_ = cursor_right_bottom; _tmp19_ = _tmp18_.y; _tmp20_ = allocation; _tmp21_ = _tmp20_.height; _tmp22_.x = _tmp15_ + _tmp17_; _tmp22_.y = _tmp19_ + _tmp21_; hwindow_right_bottom = _tmp22_; _tmp23_ = self->priv->m_cursor_location; _tmp24_ = _tmp23_.x; _tmp25_ = allocation; _tmp26_ = _tmp25_.width; _tmp27_ = self->priv->m_cursor_location; _tmp28_ = _tmp27_.y; _tmp29_ = allocation; _tmp30_ = _tmp29_.height; _tmp31_.x = _tmp24_ - _tmp26_; _tmp31_.y = _tmp28_ + _tmp30_; vwindow_left_bottom = _tmp31_; _tmp32_ = gdk_get_default_root_window (); _tmp33_ = _g_object_ref0 (_tmp32_); root = _tmp33_; _tmp34_ = root; _tmp35_ = gdk_window_get_width (_tmp34_); root_width = _tmp35_; _tmp36_ = root; _tmp37_ = gdk_window_get_height (_tmp36_); root_height = _tmp37_; _tmp38_ = self->priv->m_candidate_area; _tmp39_ = candidate_area_get_vertical (_tmp38_); if (!_tmp39_) { GdkPoint _tmp40_ = {0}; gint _tmp41_ = 0; gint _tmp42_ = 0; GdkPoint _tmp48_ = {0}; gint _tmp49_ = 0; gint _tmp50_ = 0; _tmp40_ = hwindow_right_bottom; _tmp41_ = _tmp40_.x; _tmp42_ = root_width; if (_tmp41_ > _tmp42_) { gint _tmp43_ = 0; GtkAllocation _tmp44_ = {0}; gint _tmp45_ = 0; _tmp43_ = root_width; _tmp44_ = allocation; _tmp45_ = _tmp44_.width; x = _tmp43_ - _tmp45_; } else { GdkRectangle _tmp46_ = {0}; gint _tmp47_ = 0; _tmp46_ = self->priv->m_cursor_location; _tmp47_ = _tmp46_.x; x = _tmp47_; } _tmp48_ = hwindow_right_bottom; _tmp49_ = _tmp48_.y; _tmp50_ = root_height; if (_tmp49_ > _tmp50_) { GdkRectangle _tmp51_ = {0}; gint _tmp52_ = 0; GtkAllocation _tmp53_ = {0}; gint _tmp54_ = 0; _tmp51_ = self->priv->m_cursor_location; _tmp52_ = _tmp51_.y; _tmp53_ = allocation; _tmp54_ = _tmp53_.height; y = _tmp52_ - _tmp54_; } else { GdkPoint _tmp55_ = {0}; gint _tmp56_ = 0; _tmp55_ = cursor_right_bottom; _tmp56_ = _tmp55_.y; y = _tmp56_; } } else { GdkPoint _tmp57_ = {0}; gint _tmp58_ = 0; gint _tmp59_ = 0; GdkPoint _tmp69_ = {0}; gint _tmp70_ = 0; gint _tmp71_ = 0; _tmp57_ = vwindow_left_bottom; _tmp58_ = _tmp57_.x; _tmp59_ = root_width; if (_tmp58_ > _tmp59_) { gint _tmp60_ = 0; GtkAllocation _tmp61_ = {0}; gint _tmp62_ = 0; _tmp60_ = root_width; _tmp61_ = allocation; _tmp62_ = _tmp61_.width; x = _tmp60_ - _tmp62_; } else { GdkPoint _tmp63_ = {0}; gint _tmp64_ = 0; _tmp63_ = vwindow_left_bottom; _tmp64_ = _tmp63_.x; if (_tmp64_ < 0) { GdkPoint _tmp65_ = {0}; gint _tmp66_ = 0; _tmp65_ = cursor_right_bottom; _tmp66_ = _tmp65_.x; x = _tmp66_; } else { GdkPoint _tmp67_ = {0}; gint _tmp68_ = 0; _tmp67_ = vwindow_left_bottom; _tmp68_ = _tmp67_.x; x = _tmp68_; } } _tmp69_ = vwindow_left_bottom; _tmp70_ = _tmp69_.y; _tmp71_ = root_height; if (_tmp70_ > _tmp71_) { gint _tmp72_ = 0; GtkAllocation _tmp73_ = {0}; gint _tmp74_ = 0; _tmp72_ = root_height; _tmp73_ = allocation; _tmp74_ = _tmp73_.height; y = _tmp72_ - _tmp74_; } else { GdkRectangle _tmp75_ = {0}; gint _tmp76_ = 0; _tmp75_ = self->priv->m_cursor_location; _tmp76_ = _tmp75_.y; y = _tmp76_; } } _tmp77_ = x; if (_tmp77_ < 0) { x = 0; } _tmp78_ = y; if (_tmp78_ < 0) { y = 0; } _tmp79_ = x; _tmp80_ = y; candidate_panel_move (self, _tmp79_, _tmp80_); _g_object_unref0 (root); } static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__UINT_UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_uint (param_values + 1), g_value_get_uint (param_values + 2), g_value_get_uint (param_values + 3), data2); } static void candidate_panel_class_init (CandidatePanelClass * klass) { candidate_panel_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (CandidatePanelPrivate)); ((GtkWidgetClass *) klass)->get_preferred_width = candidate_panel_real_get_preferred_width; ((GtkWidgetClass *) klass)->get_preferred_height = candidate_panel_real_get_preferred_height; G_OBJECT_CLASS (klass)->finalize = candidate_panel_finalize; g_signal_new ("cursor_up", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("cursor_down", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("page_up", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("page_down", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("candidate_clicked", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); } static void candidate_panel_instance_init (CandidatePanel * self) { self->priv = CANDIDATE_PANEL_GET_PRIVATE (self); self->priv->m_vertical_panel_system = TRUE; } static void candidate_panel_finalize (GObject* obj) { CandidatePanel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_CANDIDATE_PANEL, CandidatePanel); _g_object_unref0 (self->priv->m_toplevel); _g_object_unref0 (self->priv->m_vbox); _g_object_unref0 (self->priv->m_preedit_label); _g_object_unref0 (self->priv->m_aux_label); _g_object_unref0 (self->priv->m_candidate_area); _g_object_unref0 (self->priv->m_hseparator); G_OBJECT_CLASS (candidate_panel_parent_class)->finalize (obj); } GType candidate_panel_get_type (void) { static volatile gsize candidate_panel_type_id__volatile = 0; if (g_once_init_enter (&candidate_panel_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (CandidatePanelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) candidate_panel_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CandidatePanel), 0, (GInstanceInitFunc) candidate_panel_instance_init, NULL }; GType candidate_panel_type_id; candidate_panel_type_id = g_type_register_static (gtk_box_get_type (), "CandidatePanel", &g_define_type_info, 0); g_once_init_leave (&candidate_panel_type_id__volatile, candidate_panel_type_id); } return candidate_panel_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } ibus-1.5.11/ui/gtk3/propertypanel.vala0000644000000000000000000006405112551654124014501 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013-2015 Red Hat, Inc. * Copyright(c) 2013-2015 Peng Huang * Copyright(c) 2013-2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ enum PanelShow { DO_NOT_SHOW, AUTO_HIDE, ALWAYS } public class PropertyPanel : Gtk.Box { private unowned Gdk.Window m_root_window; private unowned X.Display m_xdisplay; private Gtk.Window m_toplevel; private IBus.PropList m_props; private IPropToolItem[] m_items; private Gdk.Rectangle m_cursor_location = Gdk.Rectangle(){ x = -1, y = -1, width = 0, height = 0 }; private int m_show = PanelShow.DO_NOT_SHOW; private uint m_auto_hide_timeout = 10000; private uint m_auto_hide_timeout_id = 0; private bool m_follow_input_cursor_when_always_shown = false; private const uint MONITOR_NET_WORKAREA_TIMEOUT = 60000; public PropertyPanel() { /* Chain up base class constructor */ GLib.Object(orientation: Gtk.Orientation.HORIZONTAL, spacing: 0); set_visible(true); m_root_window = Gdk.get_default_root_window(); unowned Gdk.Display display = m_root_window.get_display(); #if VALA_0_24 m_xdisplay = (display as Gdk.X11.Display).get_xdisplay(); #else m_xdisplay = Gdk.X11Display.get_xdisplay(display); #endif m_toplevel = new Gtk.Window(Gtk.WindowType.POPUP); m_toplevel.add_events(Gdk.EventMask.BUTTON_PRESS_MASK); Handle handle = new Handle(); handle.set_visible(true); pack_start(handle, false, false, 0); m_toplevel.add(this); m_toplevel.size_allocate.connect((w, a) => { if (!m_follow_input_cursor_when_always_shown && m_show == PanelShow.ALWAYS && m_items.length > 0 && m_cursor_location.x == -1 && m_cursor_location.y == -1) { set_default_location(); m_cursor_location.x = 0; m_cursor_location.y = 0; } }); // PropertyPanel runs before KDE5 panel runs and // monitor the desktop size. monitor_net_workarea_atom(); } public void set_properties(IBus.PropList props) { debug("set_properties()\n"); foreach (var item in m_items) (item as Gtk.Widget).destroy(); m_items = {}; m_props = props; create_menu_items(); /* show_with_auto_hide_timer() needs to call here because * if the event order is, focus_in(), set_cursor_location() and * set_properties(), m_items.length can be 0 when * set_cursor_location() is called and Property Panel is not shown. */ show_with_auto_hide_timer(); } public void update_property(IBus.Property prop) { GLib.assert(prop != null); debug("update_property(prop.key = %s)\n", prop.get_key()); if (m_props != null) m_props.update_property(prop); /* Need to update GUI since panel buttons are not redrawn. */ foreach (var item in m_items) item.update_property(prop); show_with_auto_hide_timer(); } public void set_cursor_location(int x, int y, int width, int height) { if (!m_follow_input_cursor_when_always_shown && m_show == PanelShow.ALWAYS) return; /* FIXME: set_cursor_location() has a different behavior * in embedded preedit by applications. * GtkTextView applications, e.g. gedit, always call * set_cursor_location() with and without preedit * but VTE applications, e.g. gnome-terminal, and xterm * do not call set_cursor_location() with preedit. * firefox and thunderbird do not call set_cursor_location() * without preedit. * This may treat GtkIMContext and XIM with different ways. * Maybe get_preedit_string() class method. */ /* FIXME: When the cursor is at the bottom of the screen, * gedit returns the right cursor position but terminal applications * such as gnome-terminal, xfce4-terminal and etc, the position is * not accurate and the cursor and panel could be overlapped slightly. * Maybe it's a bug in vte. */ Gdk.Rectangle location = Gdk.Rectangle(){ x = x, y = y, width = width, height = height }; if (m_cursor_location == location) return; debug("set_cursor_location(x = %d, y = %d, width = %d, height = %d)\n", x, y, width, height); /* Hide the panel in AUTO_HIDE mode when the cursor position is * chagned on the same input context by typing keyboard or * clicking mouse. (But not focus change or property change) */ if (m_show == PanelShow.AUTO_HIDE) if (m_cursor_location.x != -1 || m_cursor_location.y != -1) { m_cursor_location = location; hide_if_necessary(); adjust_window_position(); return; } m_cursor_location = location; adjust_window_position(); show_with_auto_hide_timer(); } public void set_preedit_text(IBus.Text? text, uint cursor) { if (text == null && cursor == 0) return; debug("set_preedit_text(text, cursor = %u)\n", cursor); /* Hide the panel in AUTO_HIDE mode when embed-preedit-text value * is disabled and the preedit is changed on the same input context. */ hide_if_necessary(); } public void set_auxiliary_text(IBus.Text? text) { if (text == null) return; debug("set_auxiliary_text(text)\n"); hide_if_necessary(); } public void set_lookup_table(IBus.LookupTable? table) { if (table == null) return; debug("set_lookup_table(table)\n"); hide_if_necessary(); } public new void show() { /* m_items.length is not checked here because set_properties() * is not called yet when set_show() is called. */ if (m_show == PanelShow.DO_NOT_SHOW) { m_toplevel.hide(); return; } else if (m_show == PanelShow.ALWAYS) { m_toplevel.show_all(); return; } /* Do not change the state here if m_show == AUTO_HIDE. */ } public new void hide() { m_toplevel.hide(); } public void focus_in() { debug("focus_in()\n"); /* Reset m_auto_hide_timeout_id in previous focus-in */ hide_if_necessary(); /* Invalidate m_cursor_location before set_cursor_location() * is called because the position can be same even if the input * focus is changed. * E.g. Two tabs on gnome-terminal can keep the cursor position. */ if (m_follow_input_cursor_when_always_shown || m_show != PanelShow.ALWAYS) m_cursor_location = { -1, -1, 0, 0 }; /* set_cursor_location() will be called later. */ } public void set_show(int _show) { m_show = _show; show(); } public void set_auto_hide_timeout(uint timeout) { m_auto_hide_timeout = timeout; } public void set_follow_input_cursor_when_always_shown(bool is_follow) { m_follow_input_cursor_when_always_shown = is_follow; } public override void get_preferred_width(out int minimum_width, out int natural_width) { base.get_preferred_width(out minimum_width, out natural_width); m_toplevel.resize(1, 1); } public override void get_preferred_height(out int minimum_width, out int natural_width) { base.get_preferred_height(out minimum_width, out natural_width); m_toplevel.resize(1, 1); } private void create_menu_items() { int i = 0; while (true) { IBus.Property prop = m_props.get(i); if (prop == null) break; i++; IPropToolItem item = null; switch(prop.get_prop_type()) { case IBus.PropType.NORMAL: item = new PropToolButton(prop); break; case IBus.PropType.TOGGLE: item = new PropToggleToolButton(prop); break; case IBus.PropType.MENU: item = new PropMenuToolButton(prop); break; case IBus.PropType.SEPARATOR: item = new PropSeparatorToolItem(prop); break; default: warning("unknown property type %d", (int) prop.get_prop_type()); break; } if (item != null) { pack_start(item as Gtk.Widget, false, false, 0); m_items += item; item.property_activate.connect((w, k, s) => property_activate(k, s)); } } } private void move(int x, int y) { m_toplevel.move(x, y); } private void adjust_window_position() { Gdk.Point cursor_right_bottom = { m_cursor_location.x + m_cursor_location.width, m_cursor_location.y + m_cursor_location.height }; Gtk.Allocation allocation; m_toplevel.get_allocation(out allocation); Gdk.Point window_right_bottom = { cursor_right_bottom.x + allocation.width, cursor_right_bottom.y + allocation.height }; int root_width = m_root_window.get_width(); int root_height = m_root_window.get_height(); int x, y; if (window_right_bottom.x > root_width) x = root_width - allocation.width; else x = cursor_right_bottom.x; if (window_right_bottom.y > root_height) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; move(x, y); } private bool is_bottom_panel() { string desktop = Environment.get_variable("XDG_CURRENT_DESKTOP"); // LXDE has not implemented DesktopNames yet. if (desktop == null) desktop = Environment.get_variable("XDG_SESSION_DESKTOP"); switch (desktop) { case "KDE": return true; case "LXDE": return true; default: return false; } } private void set_default_location() { Gtk.Allocation allocation; m_toplevel.get_allocation(out allocation); int root_width = m_root_window.get_width(); int root_height = m_root_window.get_height(); int root_x = 0; int root_y = 0; int ws_num = 0; #if VALA_0_24 X.Window xwindow = (m_root_window as Gdk.X11.Window).get_xid(); #else X.Window xwindow = Gdk.X11Window.get_xid(m_root_window); #endif X.Atom _net_current_desktop = m_xdisplay.intern_atom("_NET_CURRENT_DESKTOP", false); X.Atom type = X.None; int format; ulong nitems = 0; ulong bytes_after; void *prop; m_xdisplay.get_window_property(xwindow, _net_current_desktop, 0, 32, false, X.XA_CARDINAL, out type, out format, out nitems, out bytes_after, out prop); if (type != X.None && nitems >= 1) ws_num = (int) ((ulong *)prop)[0]; X.Atom _net_workarea = m_xdisplay.intern_atom("_NET_WORKAREA", false); type = X.None; nitems = 0; m_xdisplay.get_window_property(xwindow, _net_workarea, 0, 32, false, X.XA_CARDINAL, out type, out format, out nitems, out bytes_after, out prop); if (type != X.None) { if (nitems >= 2) { root_x = (int) ((ulong *)prop)[ws_num * 4]; root_y = (int) ((ulong *)prop)[ws_num * 4 + 1]; } if (nitems >= 4) { root_width = (int) ((ulong *)prop)[ws_num * 4 + 2]; root_height = (int) ((ulong *)prop)[ws_num * 4 + 3]; } } int x, y; if (is_bottom_panel()) { /* Translators: If your locale is RTL, the msgstr is "default:RTL". * Otherwise the msgstr is "default:LTR". */ if (_("default:LTR") != "default:RTL") { x = root_width - allocation.width; y = root_height - allocation.height; } else { x = root_x; y = root_height - allocation.height; } } else { if (_("default:LTR") != "default:RTL") { x = root_width - allocation.width; y = root_y; } else { x = root_x; y = root_y; } } move(x, y); } private Gdk.FilterReturn root_window_filter(Gdk.XEvent gdkxevent, Gdk.Event event) { X.Event *xevent = (X.Event*) gdkxevent; if (xevent.type == X.EventType.PropertyNotify) { string aname = m_xdisplay.get_atom_name(xevent.xproperty.atom); if (aname == "_NET_WORKAREA" && xevent.xproperty.state == 0) { set_default_location(); return Gdk.FilterReturn.CONTINUE; } } return Gdk.FilterReturn.CONTINUE; } private void monitor_net_workarea_atom() { Gdk.EventMask events = m_root_window.get_events(); if ((events & Gdk.EventMask.PROPERTY_CHANGE_MASK) == 0) m_root_window.set_events (events | Gdk.EventMask.PROPERTY_CHANGE_MASK); m_root_window.add_filter(root_window_filter); GLib.Timeout.add(MONITOR_NET_WORKAREA_TIMEOUT, () => { m_root_window.remove_filter(root_window_filter); return false; }, GLib.Priority.DEFAULT_IDLE); } private void show_with_auto_hide_timer() { if (m_items.length == 0) { /* Do not blink the panel with focus-in in case the panel * is always shown. */ if (m_follow_input_cursor_when_always_shown || m_show != PanelShow.ALWAYS) m_toplevel.hide(); return; } if (m_show != PanelShow.AUTO_HIDE) { show(); return; } /* If all windows are closed, desktop background is focused and * focus_in() and set_properties() are called but * set_cursor_location() is not called. * Then we should not show Property panel when m_cursor_location * is (-1, -1) because of no windows. */ if (m_cursor_location.x == -1 && m_cursor_location.y == -1) return; if (m_auto_hide_timeout_id != 0) GLib.Source.remove(m_auto_hide_timeout_id); m_toplevel.show_all(); /* Change the priority because IME typing sometimes freezes. */ m_auto_hide_timeout_id = GLib.Timeout.add(m_auto_hide_timeout, () => { m_toplevel.hide(); m_auto_hide_timeout_id = 0; return false; }, GLib.Priority.DEFAULT_IDLE); } private void hide_if_necessary() { if (m_show == PanelShow.AUTO_HIDE && m_auto_hide_timeout_id != 0) { GLib.Source.remove(m_auto_hide_timeout_id); m_auto_hide_timeout_id = 0; m_toplevel.hide(); } } public signal void property_activate(string key, int state); } public interface IPropToolItem : GLib.Object { public abstract void update_property(IBus.Property prop); public signal void property_activate(string key, int state); } public class PropMenu : Gtk.Menu, IPropToolItem { private Gtk.Widget m_parent_button; private IPropItem[] m_items; public PropMenu(IBus.Property prop) { /* Chain up base class constructor */ GLib.Object(); set_take_focus(false); create_items(prop.get_sub_props()); show_all(); set_sensitive(prop.get_sensitive()); } public void update_property(IBus.Property prop) { foreach (var item in m_items) item.update_property(prop); } public new void popup(uint button, uint32 activate_time, Gtk.Widget widget) { m_parent_button = widget; base.popup(null, null, menu_position, button, activate_time); } public override void destroy() { m_parent_button = null; m_items = {}; base.destroy(); } private void create_items(IBus.PropList props) { int i = 0; PropRadioMenuItem last_radio = null; while (true) { IBus.Property prop = props.get(i); if (prop == null) break; i++; IPropItem item = null; switch(prop.get_prop_type()) { case IBus.PropType.NORMAL: item = new PropImageMenuItem(prop); break; case IBus.PropType.TOGGLE: item = new PropCheckMenuItem(prop); break; case IBus.PropType.RADIO: last_radio = new PropRadioMenuItem(prop, last_radio); item = last_radio; break; case IBus.PropType.MENU: { var menuitem = new PropImageMenuItem(prop); menuitem.set_submenu(new PropMenu(prop)); item = menuitem; } break; case IBus.PropType.SEPARATOR: item = new PropSeparatorMenuItem(prop); break; default: warning("Unknown property type: %d", (int) prop.get_prop_type()); break; } if (prop.get_prop_type() != IBus.PropType.RADIO) last_radio = null; if (item != null) { append(item as Gtk.MenuItem); item.property_activate.connect((w, k, s) => property_activate(k, s)); m_items += item; } } } private void menu_position(Gtk.Menu menu, out int x, out int y, out bool push_in) { var button = m_parent_button; var screen = button.get_screen(); var monitor = screen.get_monitor_at_window(button.get_window()); Gdk.Rectangle monitor_location; screen.get_monitor_geometry(monitor, out monitor_location); button.get_window().get_origin(out x, out y); Gtk.Allocation button_allocation; button.get_allocation(out button_allocation); x += button_allocation.x; y += button_allocation.y; int menu_width; int menu_height; menu.get_size_request(out menu_width, out menu_height); if (x + menu_width >= monitor_location.width) x -= menu_width - button_allocation.width; else if (x - menu_width <= 0) ; else { if (x <= monitor_location.width * 3 / 4) ; else x -= menu_width - button_allocation.width; } if (y + button_allocation.height + menu_width >= monitor_location.height) y -= menu_height; else if (y - menu_height <= 0) y += button_allocation.height; else { if (y <= monitor_location.height * 3 / 4) y += button_allocation.height; else y -= menu_height; } push_in = false; } } public class PropToolButton : Gtk.ToolButton, IPropToolItem { private IBus.Property m_prop = null; public PropToolButton(IBus.Property prop) { /* Chain up base class constructor * * If the constructor sets "label" property, "halign" property * does not work in KDE5 so use sync() for the label. */ GLib.Object(halign: Gtk.Align.START); m_prop = prop; set_homogeneous(false); sync(); } public void update_property(IBus.Property prop) { if (m_prop.get_key() != prop.get_key()) return; m_prop.set_symbol(prop.get_symbol()); m_prop.set_tooltip(prop.get_tooltip()); m_prop.set_sensitive(prop.get_sensitive()); m_prop.set_icon(prop.get_icon()); m_prop.set_state(prop.get_state()); m_prop.set_visible(prop.get_visible()); sync(); } private void sync() { set_label(m_prop.get_symbol().get_text()); set_tooltip_text(m_prop.get_tooltip().get_text()); set_sensitive(m_prop.get_sensitive()); set_icon_name(m_prop.get_icon()); if (m_prop.get_visible()) show(); else hide(); } public override void clicked() { property_activate(m_prop.get_key(), m_prop.get_state()); } public new void set_icon_name(string icon_name) { string label = m_prop.get_symbol().get_text(); IconWidget icon_widget = null; if (label == "") { label = null; icon_widget = new IconWidget(icon_name, Gtk.IconSize.BUTTON); set_is_important(false); } else { set_is_important(true); } set_icon_widget(icon_widget); } } public class PropToggleToolButton : Gtk.ToggleToolButton, IPropToolItem { private IBus.Property m_prop = null; public PropToggleToolButton(IBus.Property prop) { /* Chain up base class constructor * * Need to set halign for KDE5 */ GLib.Object(halign: Gtk.Align.START); m_prop = prop; set_homogeneous(false); sync(); } public new void set_property(IBus.Property prop) { m_prop = prop; sync(); } public void update_property(IBus.Property prop) { if (m_prop.get_key() != prop.get_key()) return; m_prop.set_symbol(prop.get_symbol()); m_prop.set_tooltip(prop.get_tooltip()); m_prop.set_sensitive(prop.get_sensitive()); m_prop.set_icon(prop.get_icon()); m_prop.set_state(prop.get_state()); m_prop.set_visible(prop.get_visible()); sync(); } private void sync() { set_label(m_prop.get_symbol().get_text()); set_tooltip_text(m_prop.get_tooltip().get_text()); set_sensitive(m_prop.get_sensitive()); set_icon_name(m_prop.get_icon()); set_active(m_prop.get_state() == IBus.PropState.CHECKED); if (m_prop.get_visible()) show(); else hide(); } public override void toggled() { /* Do not send property-activate to engine in case the event is * sent from engine. */ bool do_emit = false; if (get_active()) { if (m_prop.get_state() != IBus.PropState.CHECKED) do_emit = true; m_prop.set_state(IBus.PropState.CHECKED); } else { if (m_prop.get_state() != IBus.PropState.UNCHECKED) do_emit = true; m_prop.set_state(IBus.PropState.UNCHECKED); } if (do_emit) property_activate(m_prop.get_key(), m_prop.get_state()); } public new void set_icon_name(string icon_name) { string label = m_prop.get_symbol().get_text(); IconWidget icon_widget = null; if (label == "") { label = null; icon_widget = new IconWidget(icon_name, Gtk.IconSize.BUTTON); set_is_important(false); } else { set_is_important(true); } set_icon_widget(icon_widget); } } public class PropMenuToolButton : PropToggleToolButton, IPropToolItem { private PropMenu m_menu = null; public PropMenuToolButton(IBus.Property prop) { /* Chain up base class constructor * * Need to set halign for KDE5 */ GLib.Object(halign: Gtk.Align.START); m_menu = new PropMenu(prop); m_menu.deactivate.connect((m) => set_active(false)); m_menu.property_activate.connect((w, k, s) => property_activate(k, s)); base.set_property(prop); } public new void update_property(IBus.Property prop) { base.update_property(prop); m_menu.update_property(prop); } public override void toggled() { if (get_active()) m_menu.popup(0, Gtk.get_current_event_time(), this); } public override void destroy() { m_menu = null; base.destroy(); } } public class PropSeparatorToolItem : Gtk.SeparatorToolItem, IPropToolItem { public PropSeparatorToolItem(IBus.Property prop) { /* Chain up base class constructor */ GLib.Object(); set_homogeneous(false); } public void update_property(IBus.Property prop) { } } ibus-1.5.11/ui/gtk3/gtkpanel.xml.in0000644000000000000000000000065312551654123013661 00000000000000 org.freedesktop.IBus.Panel Gtk Panel Component @libexecdir@/ibus-ui-gtk3 @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus ibus-1.5.11/ui/gtk3/Makefile.in0000644000000000000000000010750412551654262013001 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_LIBNOTIFY_TRUE@am__append_1 = \ @ENABLE_LIBNOTIFY_TRUE@ @LIBNOTIFY_CFLAGS@ \ @ENABLE_LIBNOTIFY_TRUE@ $(NULL) @ENABLE_LIBNOTIFY_TRUE@am__append_2 = \ @ENABLE_LIBNOTIFY_TRUE@ @LIBNOTIFY_LIBS@ \ @ENABLE_LIBNOTIFY_TRUE@ $(NULL) @ENABLE_LIBNOTIFY_TRUE@am__append_3 = \ @ENABLE_LIBNOTIFY_TRUE@ --pkg=libnotify \ @ENABLE_LIBNOTIFY_TRUE@ -D ENABLE_LIBNOTIFY \ @ENABLE_LIBNOTIFY_TRUE@ $(NULL) @ENABLE_APPINDICATOR_TRUE@am__append_4 = --define=INDICATOR @ENABLE_APPINDICATOR_ENGINE_ICON_TRUE@am__append_5 = --define=INDICATOR_ENGINE_ICON libexec_PROGRAMS = ibus-ui-gtk3$(EXEEXT) subdir = ui/gtk3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" PROGRAMS = $(libexec_PROGRAMS) am__objects_1 = am_ibus_ui_gtk3_OBJECTS = application.$(OBJEXT) \ candidatearea.$(OBJEXT) candidatepanel.$(OBJEXT) \ handle.$(OBJEXT) iconwidget.$(OBJEXT) indicator.$(OBJEXT) \ keybindingmanager.$(OBJEXT) panel.$(OBJEXT) pango.$(OBJEXT) \ property.$(OBJEXT) propertypanel.$(OBJEXT) separator.$(OBJEXT) \ switcher.$(OBJEXT) xkblayout.$(OBJEXT) \ gen-notification-item.xml.$(OBJEXT) \ gen-notification-watcher.xml.$(OBJEXT) $(am__objects_1) ibus_ui_gtk3_OBJECTS = $(am_ibus_ui_gtk3_OBJECTS) am__DEPENDENCIES_1 = @ENABLE_LIBNOTIFY_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) am__DEPENDENCIES_3 = $(libibus) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) ibus_ui_gtk3_DEPENDENCIES = $(am__DEPENDENCIES_3) \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = VALACOMPILE = $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) LTVALACOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) AM_V_VALAC = $(am__v_VALAC_@AM_V@) am__v_VALAC_ = $(am__v_VALAC_@AM_DEFAULT_V@) am__v_VALAC_0 = @echo " VALAC " $@; am__v_VALAC_1 = SOURCES = $(ibus_ui_gtk3_SOURCES) DIST_SOURCES = $(ibus_ui_gtk3_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(component_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/ibus_ui_gtk3_vala.stamp $(top_srcdir)/depcomp \ application.c candidatearea.c candidatepanel.c handle.c \ iconwidget.c indicator.c keybindingmanager.c panel.c pango.c \ property.c propertypanel.c separator.c switcher.c xkblayout.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la component_DATA = \ gtkpanel.xml \ $(NULL) componentdir = $(pkgdatadir)/component # force include config.h before gi18n.h. AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = @GLIB2_CFLAGS@ @GIO2_CFLAGS@ @GTHREAD2_CFLAGS@ \ @GTK3_CFLAGS@ @X11_CFLAGS@ -DG_LOG_DOMAIN=\"IBUS\" \ -DBINDIR=\"$(bindir)\" -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable -Wno-unused-but-set-variable \ -Wno-unused-function $(NULL) $(am__append_1) AM_LDADD = @GOBJECT2_LIBS@ @GLIB2_LIBS@ @GIO2_LIBS@ @GTHREAD2_LIBS@ \ @GTK3_LIBS@ @X11_LIBS@ -lXi $(libibus) $(NULL) $(am__append_2) AM_VALAFLAGS = --vapidir=$(top_builddir)/bindings/vala \ --vapidir=$(top_srcdir)/bindings/vala --pkg=posix \ --pkg=gtk+-3.0 --pkg=gdk-x11-3.0 --pkg=ibus-1.0 --pkg=config \ --pkg=xi --target-glib="$(VALA_TARGET_GLIB_VERSION)" $(NULL) \ $(am__append_3) $(am__append_4) $(am__append_5) ibus_ui_gtk3_SOURCES = \ application.vala \ candidatearea.vala \ candidatepanel.vala \ handle.vala \ iconwidget.vala \ indicator.vala \ keybindingmanager.vala \ panel.vala \ pango.vala \ property.vala \ propertypanel.vala \ separator.vala \ switcher.vala \ xkblayout.vala \ gen-notification-item.xml.c \ gen-notification-watcher.xml.c \ $(NULL) ibus_ui_gtk3_LDADD = \ $(AM_LDADD) \ $(NULL) CLEANFILES = \ gtkpanel.xml \ $(NULL) # References: # libappindicator/src/notification-item.xml # libappindicator/src/notification-watcher.xml # kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierItem.xml # kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierWatcher.xml EXTRA_DIST = \ gtkpanel.xml.in \ notification-item.xml \ notification-watcher.xml \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ui/gtk3/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ui/gtk3/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-ui-gtk3$(EXEEXT): $(ibus_ui_gtk3_OBJECTS) $(ibus_ui_gtk3_DEPENDENCIES) $(EXTRA_ibus_ui_gtk3_DEPENDENCIES) @rm -f ibus-ui-gtk3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_ui_gtk3_OBJECTS) $(ibus_ui_gtk3_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/application.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/candidatearea.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/candidatepanel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-notification-item.xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-notification-watcher.xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/handle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconwidget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keybindingmanager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pango.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/property.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propertypanel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/separator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/switcher.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xkblayout.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< $(srcdir)/application.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/candidatearea.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/candidatepanel.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/handle.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/iconwidget.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/indicator.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/keybindingmanager.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/panel.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/pango.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/property.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/propertypanel.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/separator.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/switcher.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/xkblayout.c: $(srcdir)/ibus_ui_gtk3_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_ui_gtk3_vala.stamp; \ fi $(srcdir)/ibus_ui_gtk3_vala.stamp: application.vala candidatearea.vala candidatepanel.vala handle.vala iconwidget.vala indicator.vala keybindingmanager.vala panel.vala pango.vala property.vala propertypanel.vala separator.vala switcher.vala xkblayout.vala $(AM_V_at)rm -f $@ && echo stamp > $@-t $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) -C application.vala candidatearea.vala candidatepanel.vala handle.vala iconwidget.vala indicator.vala keybindingmanager.vala panel.vala pango.vala property.vala propertypanel.vala separator.vala switcher.vala xkblayout.vala $(AM_V_at)mv -f $@-t $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-componentDATA: $(component_DATA) @$(NORMAL_INSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(componentdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(componentdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(componentdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(componentdir)" || exit $$?; \ done uninstall-componentDATA: @$(NORMAL_UNINSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(componentdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(componentdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f $(srcdir)/application.c -rm -f $(srcdir)/candidatearea.c -rm -f $(srcdir)/candidatepanel.c -rm -f $(srcdir)/handle.c -rm -f $(srcdir)/ibus_ui_gtk3_vala.stamp -rm -f $(srcdir)/iconwidget.c -rm -f $(srcdir)/indicator.c -rm -f $(srcdir)/keybindingmanager.c -rm -f $(srcdir)/panel.c -rm -f $(srcdir)/pango.c -rm -f $(srcdir)/property.c -rm -f $(srcdir)/propertypanel.c -rm -f $(srcdir)/separator.c -rm -f $(srcdir)/switcher.c -rm -f $(srcdir)/xkblayout.c -rm -f application.c -rm -f candidatearea.c -rm -f candidatepanel.c -rm -f handle.c -rm -f iconwidget.c -rm -f indicator.c -rm -f keybindingmanager.c -rm -f panel.c -rm -f pango.c -rm -f property.c -rm -f propertypanel.c -rm -f separator.c -rm -f switcher.c -rm -f xkblayout.c clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-componentDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-componentDATA uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-componentDATA \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libexecPROGRAMS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-componentDATA uninstall-libexecPROGRAMS .PRECIOUS: Makefile gtkpanel.xml: gtkpanel.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ gen-%.xml.c: %.xml echo "Building $@ from $<" echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@ sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@ echo ";" >> $@ -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/ui/gtk3/gen-notification-watcher.xml.c0000644000000000000000000000274112551655052016562 00000000000000const char * _notification_watcher = "\n" "\n" " \n" "\n" "\n" " \n" " \n" " \n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" " \n" "\n" ; ibus-1.5.11/ui/gtk3/Makefile.am0000644000000000000000000000652712551654123012767 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la component_DATA = \ gtkpanel.xml \ $(NULL) componentdir = $(pkgdatadir)/component gtkpanel.xml: gtkpanel.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ # force include config.h before gi18n.h. AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ @GTK3_CFLAGS@ \ @X11_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DBINDIR=\"$(bindir)\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ @GTK3_LIBS@ \ @X11_LIBS@ \ -lXi \ $(libibus) \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --vapidir=$(top_srcdir)/bindings/vala \ --pkg=posix \ --pkg=gtk+-3.0 \ --pkg=gdk-x11-3.0 \ --pkg=ibus-1.0 \ --pkg=config \ --pkg=xi \ --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) if ENABLE_LIBNOTIFY AM_CFLAGS += \ @LIBNOTIFY_CFLAGS@ \ $(NULL) AM_LDADD += \ @LIBNOTIFY_LIBS@ \ $(NULL) AM_VALAFLAGS += \ --pkg=libnotify \ -D ENABLE_LIBNOTIFY \ $(NULL) endif if ENABLE_APPINDICATOR AM_VALAFLAGS += --define=INDICATOR endif if ENABLE_APPINDICATOR_ENGINE_ICON AM_VALAFLAGS += --define=INDICATOR_ENGINE_ICON endif libexec_PROGRAMS = ibus-ui-gtk3 ibus_ui_gtk3_SOURCES = \ application.vala \ candidatearea.vala \ candidatepanel.vala \ handle.vala \ iconwidget.vala \ indicator.vala \ keybindingmanager.vala \ panel.vala \ pango.vala \ property.vala \ propertypanel.vala \ separator.vala \ switcher.vala \ xkblayout.vala \ gen-notification-item.xml.c \ gen-notification-watcher.xml.c \ $(NULL) ibus_ui_gtk3_LDADD = \ $(AM_LDADD) \ $(NULL) gen-%.xml.c: %.xml echo "Building $@ from $<" echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@ sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@ echo ";" >> $@ CLEANFILES = \ gtkpanel.xml \ $(NULL) # References: # libappindicator/src/notification-item.xml # libappindicator/src/notification-watcher.xml # kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierItem.xml # kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierWatcher.xml EXTRA_DIST = \ gtkpanel.xml.in \ notification-item.xml \ notification-watcher.xml \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/ui/gtk3/pango.c0000644000000000000000000002154212551655052012177 00000000000000/* pango.c generated by valac 0.28.0, the Vala compiler * generated from pango.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _pango_attribute_destroy0(var) ((var == NULL) ? NULL : (var = (pango_attribute_destroy (var), NULL))) #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); static gint string_index_of_nth_char (const gchar* self, glong c) { gint result = 0; glong _tmp0_ = 0L; gchar* _tmp1_ = NULL; g_return_val_if_fail (self != NULL, 0); _tmp0_ = c; _tmp1_ = g_utf8_offset_to_pointer (self, _tmp0_); result = (gint) (_tmp1_ - ((gchar*) self)); return result; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text) { PangoAttrList* result = NULL; PangoAttrList* pango_attrs = NULL; PangoAttrList* _tmp0_ = NULL; IBusAttrList* attrs = NULL; IBusText* _tmp1_ = NULL; IBusAttrList* _tmp2_ = NULL; IBusAttrList* _tmp3_ = NULL; const gchar* str = NULL; IBusText* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; glong nchars = 0L; const gchar* _tmp6_ = NULL; gint _tmp7_ = 0; glong* offsets = NULL; glong _tmp8_ = 0L; glong* _tmp9_ = NULL; gint offsets_length1 = 0; gint _offsets_size_ = 0; IBusAttribute* attr = NULL; gint i = 0; g_return_val_if_fail (text != NULL, NULL); _tmp0_ = pango_attr_list_new (); pango_attrs = _tmp0_; _tmp1_ = text; _tmp2_ = ibus_text_get_attributes (_tmp1_); attrs = _tmp2_; _tmp3_ = attrs; if (_tmp3_ == NULL) { result = pango_attrs; return result; } _tmp4_ = text; _tmp5_ = ibus_text_get_text (_tmp4_); str = _tmp5_; _tmp6_ = str; _tmp7_ = g_utf8_strlen (_tmp6_, (gssize) (-1)); nchars = (glong) _tmp7_; _tmp8_ = nchars; _tmp9_ = g_new0 (glong, _tmp8_ + 1); offsets = _tmp9_; offsets_length1 = _tmp8_ + 1; _offsets_size_ = offsets_length1; { gint i = 0; i = 0; { gboolean _tmp10_ = FALSE; _tmp10_ = TRUE; while (TRUE) { gint _tmp12_ = 0; glong _tmp13_ = 0L; glong* _tmp14_ = NULL; gint _tmp14__length1 = 0; gint _tmp15_ = 0; const gchar* _tmp16_ = NULL; gint _tmp17_ = 0; gint _tmp18_ = 0; glong _tmp19_ = 0L; if (!_tmp10_) { gint _tmp11_ = 0; _tmp11_ = i; i = _tmp11_ + 1; } _tmp10_ = FALSE; _tmp12_ = i; _tmp13_ = nchars; if (!(((glong) _tmp12_) <= _tmp13_)) { break; } _tmp14_ = offsets; _tmp14__length1 = offsets_length1; _tmp15_ = i; _tmp16_ = str; _tmp17_ = i; _tmp18_ = string_index_of_nth_char (_tmp16_, (glong) _tmp17_); _tmp14_[_tmp15_] = (glong) _tmp18_; _tmp19_ = _tmp14_[_tmp15_]; } } } i = 0; while (TRUE) { IBusAttrList* _tmp20_ = NULL; gint _tmp21_ = 0; IBusAttribute* _tmp22_ = NULL; IBusAttribute* _tmp23_ = NULL; IBusAttribute* _tmp24_ = NULL; glong start_index = 0L; IBusAttribute* _tmp25_ = NULL; guint _tmp26_ = 0U; glong _tmp27_ = 0L; glong _tmp28_ = 0L; glong _tmp29_ = 0L; glong _tmp30_ = 0L; glong end_index = 0L; IBusAttribute* _tmp36_ = NULL; guint _tmp37_ = 0U; glong _tmp38_ = 0L; glong _tmp39_ = 0L; glong _tmp40_ = 0L; glong _tmp41_ = 0L; PangoAttribute* pango_attr = NULL; IBusAttribute* _tmp47_ = NULL; guint _tmp48_ = 0U; PangoAttribute* _tmp72_ = NULL; glong _tmp73_ = 0L; PangoAttribute* _tmp74_ = NULL; glong _tmp75_ = 0L; PangoAttrList* _tmp76_ = NULL; PangoAttribute* _tmp77_ = NULL; _tmp20_ = attrs; _tmp21_ = i; i = _tmp21_ + 1; _tmp22_ = ibus_attr_list_get (_tmp20_, (guint) _tmp21_); _tmp23_ = _g_object_ref0 (_tmp22_); _g_object_unref0 (attr); attr = _tmp23_; _tmp24_ = attr; if (_tmp24_ == NULL) { break; } _tmp25_ = attr; _tmp26_ = _tmp25_->start_index; start_index = (glong) _tmp26_; _tmp27_ = start_index; if (_tmp27_ <= ((glong) 0)) { start_index = (glong) 0; } _tmp29_ = start_index; _tmp30_ = nchars; if (_tmp29_ <= _tmp30_) { glong* _tmp31_ = NULL; gint _tmp31__length1 = 0; glong _tmp32_ = 0L; glong _tmp33_ = 0L; _tmp31_ = offsets; _tmp31__length1 = offsets_length1; _tmp32_ = start_index; _tmp33_ = _tmp31_[_tmp32_]; _tmp28_ = _tmp33_; } else { glong* _tmp34_ = NULL; gint _tmp34__length1 = 0; glong _tmp35_ = 0L; _tmp34_ = offsets; _tmp34__length1 = offsets_length1; _tmp35_ = _tmp34_[-1]; _tmp28_ = _tmp35_; } start_index = _tmp28_; _tmp36_ = attr; _tmp37_ = _tmp36_->end_index; end_index = (glong) _tmp37_; _tmp38_ = end_index; if (_tmp38_ <= ((glong) 0)) { end_index = (glong) 0; } _tmp40_ = end_index; _tmp41_ = nchars; if (_tmp40_ <= _tmp41_) { glong* _tmp42_ = NULL; gint _tmp42__length1 = 0; glong _tmp43_ = 0L; glong _tmp44_ = 0L; _tmp42_ = offsets; _tmp42__length1 = offsets_length1; _tmp43_ = end_index; _tmp44_ = _tmp42_[_tmp43_]; _tmp39_ = _tmp44_; } else { glong* _tmp45_ = NULL; gint _tmp45__length1 = 0; glong _tmp46_ = 0L; _tmp45_ = offsets; _tmp45__length1 = offsets_length1; _tmp46_ = _tmp45_[-1]; _tmp39_ = _tmp46_; } end_index = _tmp39_; pango_attr = NULL; _tmp47_ = attr; _tmp48_ = _tmp47_->type; switch (_tmp48_) { case IBUS_ATTR_TYPE_FOREGROUND: { { guint16 r = 0U; IBusAttribute* _tmp49_ = NULL; guint _tmp50_ = 0U; guint16 g = 0U; IBusAttribute* _tmp51_ = NULL; guint _tmp52_ = 0U; guint16 b = 0U; IBusAttribute* _tmp53_ = NULL; guint _tmp54_ = 0U; guint16 _tmp55_ = 0U; guint16 _tmp56_ = 0U; guint16 _tmp57_ = 0U; PangoAttribute* _tmp58_ = NULL; _tmp49_ = attr; _tmp50_ = _tmp49_->value; r = (guint16) ((_tmp50_ & 0x00ff0000) >> 8); _tmp51_ = attr; _tmp52_ = _tmp51_->value; g = (guint16) (_tmp52_ & 0x0000ff00); _tmp53_ = attr; _tmp54_ = _tmp53_->value; b = (guint16) ((_tmp54_ & 0x000000ff) << 8); _tmp55_ = r; _tmp56_ = g; _tmp57_ = b; _tmp58_ = pango_attr_foreground_new (_tmp55_, _tmp56_, _tmp57_); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp58_; break; } } case IBUS_ATTR_TYPE_BACKGROUND: { { guint16 r = 0U; IBusAttribute* _tmp59_ = NULL; guint _tmp60_ = 0U; guint16 g = 0U; IBusAttribute* _tmp61_ = NULL; guint _tmp62_ = 0U; guint16 b = 0U; IBusAttribute* _tmp63_ = NULL; guint _tmp64_ = 0U; guint16 _tmp65_ = 0U; guint16 _tmp66_ = 0U; guint16 _tmp67_ = 0U; PangoAttribute* _tmp68_ = NULL; _tmp59_ = attr; _tmp60_ = _tmp59_->value; r = (guint16) ((_tmp60_ & 0x00ff0000) >> 8); _tmp61_ = attr; _tmp62_ = _tmp61_->value; g = (guint16) (_tmp62_ & 0x0000ff00); _tmp63_ = attr; _tmp64_ = _tmp63_->value; b = (guint16) ((_tmp64_ & 0x000000ff) << 8); _tmp65_ = r; _tmp66_ = g; _tmp67_ = b; _tmp68_ = pango_attr_background_new (_tmp65_, _tmp66_, _tmp67_); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp68_; break; } } case IBUS_ATTR_TYPE_UNDERLINE: { { IBusAttribute* _tmp69_ = NULL; guint _tmp70_ = 0U; PangoAttribute* _tmp71_ = NULL; _tmp69_ = attr; _tmp70_ = _tmp69_->value; _tmp71_ = pango_attr_underline_new ((PangoUnderline) _tmp70_); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp71_; break; } } default: { continue; } } _tmp72_ = pango_attr; _tmp73_ = start_index; _tmp72_->start_index = (guint) _tmp73_; _tmp74_ = pango_attr; _tmp75_ = end_index; _tmp74_->end_index = (guint) _tmp75_; _tmp76_ = pango_attrs; _tmp77_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp76_, _tmp77_); _pango_attribute_destroy0 (pango_attr); } result = pango_attrs; _g_object_unref0 (attr); offsets = (g_free (offsets), NULL); return result; } ibus-1.5.11/ui/gtk3/candidatearea.c0000644000000000000000000014650112551655051013642 00000000000000/* candidatearea.c generated by valac 0.28.0, the Vala compiler * generated from candidatearea.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #define TYPE_CANDIDATE_AREA (candidate_area_get_type ()) #define CANDIDATE_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CANDIDATE_AREA, CandidateArea)) #define CANDIDATE_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CANDIDATE_AREA, CandidateAreaClass)) #define IS_CANDIDATE_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CANDIDATE_AREA)) #define IS_CANDIDATE_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CANDIDATE_AREA)) #define CANDIDATE_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CANDIDATE_AREA, CandidateAreaClass)) typedef struct _CandidateArea CandidateArea; typedef struct _CandidateAreaClass CandidateAreaClass; typedef struct _CandidateAreaPrivate CandidateAreaPrivate; #define _pango_attribute_destroy0(var) ((var == NULL) ? NULL : (var = (pango_attribute_destroy (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) #define TYPE_VSEPARATOR (vseparator_get_type ()) #define VSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VSEPARATOR, VSeparator)) #define VSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VSEPARATOR, VSeparatorClass)) #define IS_VSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VSEPARATOR)) #define IS_VSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VSEPARATOR)) #define VSEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VSEPARATOR, VSeparatorClass)) typedef struct _VSeparator VSeparator; typedef struct _VSeparatorClass VSeparatorClass; #define TYPE_HSEPARATOR (hseparator_get_type ()) #define HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HSEPARATOR, HSeparator)) #define HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HSEPARATOR, HSeparatorClass)) #define IS_HSEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HSEPARATOR)) #define IS_HSEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HSEPARATOR)) #define HSEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HSEPARATOR, HSeparatorClass)) typedef struct _HSeparator HSeparator; typedef struct _HSeparatorClass HSeparatorClass; typedef struct _Block1Data Block1Data; typedef struct _Block2Data Block2Data; typedef struct _Block3Data Block3Data; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _CandidateArea { GtkBox parent_instance; CandidateAreaPrivate * priv; }; struct _CandidateAreaClass { GtkBoxClass parent_class; }; struct _CandidateAreaPrivate { gboolean m_vertical; GtkLabel** m_labels; gint m_labels_length1; gint _m_labels_size_; GtkLabel** m_candidates; gint m_candidates_length1; gint _m_candidates_size_; GtkWidget** m_widgets; gint m_widgets_length1; gint _m_widgets_size_; IBusText** m_ibus_candidates; gint m_ibus_candidates_length1; gint _m_ibus_candidates_size_; guint m_focus_candidate; gboolean m_show_cursor; }; struct _Block1Data { int _ref_count_; CandidateArea* self; gint i; }; struct _Block2Data { int _ref_count_; Block1Data * _data1_; gint index; }; struct _Block3Data { int _ref_count_; CandidateArea* self; gint index; }; static gpointer candidate_area_parent_class = NULL; GType candidate_area_get_type (void) G_GNUC_CONST; #define CANDIDATE_AREA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CANDIDATE_AREA, CandidateAreaPrivate)) enum { CANDIDATE_AREA_DUMMY_PROPERTY }; CandidateArea* candidate_area_new (gboolean vertical); CandidateArea* candidate_area_construct (GType object_type, gboolean vertical); void candidate_area_set_vertical (CandidateArea* self, gboolean vertical, gboolean force); gboolean candidate_area_get_vertical (CandidateArea* self); static void candidate_area_recreate_ui (CandidateArea* self); void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, int candidates_length1, guint focus_candidate, gboolean show_cursor); void candidate_area_set_labels (CandidateArea* self, IBusText** labels, int labels_length1); static IBusText** _vala_array_dup1 (IBusText** self, int length); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); static void __lambda7_ (CandidateArea* self, GtkButton* b); static void ___lambda7__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda8_ (CandidateArea* self, GtkButton* b); static void ___lambda8__gtk_button_clicked (GtkButton* _sender, gpointer self); VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); GType vseparator_get_type (void) G_GNUC_CONST; HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); GType hseparator_get_type (void) G_GNUC_CONST; static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static Block2Data* block2_data_ref (Block2Data* _data2_); static void block2_data_unref (void * _userdata_); static void _vala_array_add1 (GtkLabel*** array, int* length, int* size, GtkLabel* value); static void _vala_array_add2 (GtkLabel*** array, int* length, int* size, GtkLabel* value); static gboolean ______lambda9_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda9__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add3 (GtkWidget*** array, int* length, int* size, GtkWidget* value); static gboolean ______lambda10_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda10__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add4 (GtkWidget*** array, int* length, int* size, GtkWidget* value); static Block3Data* block3_data_ref (Block3Data* _data3_); static void block3_data_unref (void * _userdata_); static void _vala_array_add5 (GtkLabel*** array, int* length, int* size, GtkLabel* value); static void _vala_array_add6 (GtkLabel*** array, int* length, int* size, GtkLabel* value); static gboolean ______lambda11_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda11__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add7 (GtkWidget*** array, int* length, int* size, GtkWidget* value); static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void candidate_area_finalize (GObject* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static const gchar* CANDIDATE_AREA_LABELS[16] = {"1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "a.", "b.", "c.", "d.", "e.", "f."}; static const gchar* CANDIDATE_AREA_PREV_PAGE_ICONS[2] = {"go-previous", "go-up"}; static const gchar* CANDIDATE_AREA_NEXT_PAGE_ICONS[2] = {"go-next", "go-down"}; CandidateArea* candidate_area_construct (GType object_type, gboolean vertical) { CandidateArea * self = NULL; gboolean _tmp0_ = FALSE; self = (CandidateArea*) g_object_new (object_type, NULL); _tmp0_ = vertical; candidate_area_set_vertical (self, _tmp0_, TRUE); return self; } CandidateArea* candidate_area_new (gboolean vertical) { return candidate_area_construct (TYPE_CANDIDATE_AREA, vertical); } gboolean candidate_area_get_vertical (CandidateArea* self) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_vertical; result = _tmp0_; return result; } void candidate_area_set_vertical (CandidateArea* self, gboolean vertical, gboolean force) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp4_ = FALSE; GtkOrientation _tmp5_ = 0; gboolean _tmp6_ = FALSE; IBusText** _tmp7_ = NULL; gint _tmp7__length1 = 0; g_return_if_fail (self != NULL); _tmp1_ = force; if (!_tmp1_) { gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; _tmp2_ = self->priv->m_vertical; _tmp3_ = vertical; _tmp0_ = _tmp2_ == _tmp3_; } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } _tmp4_ = vertical; self->priv->m_vertical = _tmp4_; _tmp6_ = vertical; if (_tmp6_) { _tmp5_ = GTK_ORIENTATION_VERTICAL; } else { _tmp5_ = GTK_ORIENTATION_HORIZONTAL; } gtk_orientable_set_orientation ((GtkOrientable*) self, _tmp5_); candidate_area_recreate_ui (self); _tmp7_ = self->priv->m_ibus_candidates; _tmp7__length1 = self->priv->m_ibus_candidates_length1; if (_tmp7__length1 > 0) { IBusText** _tmp8_ = NULL; gint _tmp8__length1 = 0; IBusText** _tmp9_ = NULL; gint _tmp9__length1 = 0; guint _tmp10_ = 0U; gboolean _tmp11_ = FALSE; _tmp8_ = self->priv->m_ibus_candidates; _tmp8__length1 = self->priv->m_ibus_candidates_length1; self->priv->m_ibus_candidates = NULL; self->priv->m_ibus_candidates_length1 = 0; _tmp9_ = _tmp8_; _tmp9__length1 = _tmp8__length1; _tmp10_ = self->priv->m_focus_candidate; _tmp11_ = self->priv->m_show_cursor; candidate_area_set_candidates (self, _tmp9_, _tmp8__length1, _tmp10_, _tmp11_); _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_object_unref), NULL); gtk_widget_show_all ((GtkWidget*) self); } } void candidate_area_set_labels (CandidateArea* self, IBusText** labels, int labels_length1) { gint i = 0; g_return_if_fail (self != NULL); { gboolean _tmp0_ = FALSE; i = 0; _tmp0_ = TRUE; while (TRUE) { gint _tmp2_ = 0; IBusText** _tmp3_ = NULL; gint _tmp3__length1 = 0; gint _tmp4_ = 0; GtkLabel** _tmp5_ = NULL; gint _tmp5__length1 = 0; gint _tmp6_ = 0; GtkLabel* _tmp7_ = NULL; IBusText** _tmp8_ = NULL; gint _tmp8__length1 = 0; gint _tmp9_ = 0; IBusText* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; if (!_tmp0_) { gint _tmp1_ = 0; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; _tmp2_ = i; _tmp3_ = labels; _tmp3__length1 = labels_length1; _tmp4_ = MIN (16, _tmp3__length1); if (!(_tmp2_ < _tmp4_)) { break; } _tmp5_ = self->priv->m_labels; _tmp5__length1 = self->priv->m_labels_length1; _tmp6_ = i; _tmp7_ = _tmp5_[_tmp6_]; _tmp8_ = labels; _tmp8__length1 = labels_length1; _tmp9_ = i; _tmp10_ = _tmp8_[_tmp9_]; _tmp11_ = ibus_text_get_text (_tmp10_); gtk_label_set_text (_tmp7_, _tmp11_); } } { gboolean _tmp12_ = FALSE; _tmp12_ = TRUE; while (TRUE) { gint _tmp14_ = 0; GtkLabel** _tmp15_ = NULL; gint _tmp15__length1 = 0; gint _tmp16_ = 0; GtkLabel* _tmp17_ = NULL; gint _tmp18_ = 0; const gchar* _tmp19_ = NULL; if (!_tmp12_) { gint _tmp13_ = 0; _tmp13_ = i; i = _tmp13_ + 1; } _tmp12_ = FALSE; _tmp14_ = i; if (!(_tmp14_ < 16)) { break; } _tmp15_ = self->priv->m_labels; _tmp15__length1 = self->priv->m_labels_length1; _tmp16_ = i; _tmp17_ = _tmp15_[_tmp16_]; _tmp18_ = i; _tmp19_ = CANDIDATE_AREA_LABELS[_tmp18_]; gtk_label_set_text (_tmp17_, _tmp19_); } } } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static IBusText** _vala_array_dup1 (IBusText** self, int length) { IBusText** result; int i; result = g_new0 (IBusText*, length + 1); for (i = 0; i < length; i++) { IBusText* _tmp0_ = NULL; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, int candidates_length1, guint focus_candidate, gboolean show_cursor) { IBusText** _tmp0_ = NULL; gint _tmp0__length1 = 0; IBusText** _tmp1_ = NULL; gint _tmp1__length1 = 0; guint _tmp2_ = 0U; gboolean _tmp3_ = FALSE; IBusText** _tmp4_ = NULL; gint _tmp4__length1 = 0; g_return_if_fail (self != NULL); _tmp0_ = candidates; _tmp0__length1 = candidates_length1; _tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup1 (_tmp0_, _tmp0__length1) : ((gpointer) _tmp0_); _tmp1__length1 = _tmp0__length1; self->priv->m_ibus_candidates = (_vala_array_free (self->priv->m_ibus_candidates, self->priv->m_ibus_candidates_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_ibus_candidates = _tmp1_; self->priv->m_ibus_candidates_length1 = _tmp1__length1; self->priv->_m_ibus_candidates_size_ = self->priv->m_ibus_candidates_length1; _tmp2_ = focus_candidate; self->priv->m_focus_candidate = _tmp2_; _tmp3_ = show_cursor; self->priv->m_show_cursor = _tmp3_; _tmp4_ = candidates; _tmp4__length1 = candidates_length1; _vala_assert (_tmp4__length1 < 16, "candidates.length < 16"); { gint i = 0; i = 0; { gboolean _tmp5_ = FALSE; _tmp5_ = TRUE; while (TRUE) { gint _tmp7_ = 0; GtkLabel* label = NULL; GtkLabel** _tmp8_ = NULL; gint _tmp8__length1 = 0; gint _tmp9_ = 0; GtkLabel* _tmp10_ = NULL; GtkLabel* _tmp11_ = NULL; gboolean visible = FALSE; gint _tmp12_ = 0; IBusText** _tmp13_ = NULL; gint _tmp13__length1 = 0; gboolean _tmp76_ = FALSE; if (!_tmp5_) { gint _tmp6_ = 0; _tmp6_ = i; i = _tmp6_ + 1; } _tmp5_ = FALSE; _tmp7_ = i; if (!(_tmp7_ < 16)) { break; } _tmp8_ = self->priv->m_candidates; _tmp8__length1 = self->priv->m_candidates_length1; _tmp9_ = i; _tmp10_ = _tmp8_[_tmp9_]; _tmp11_ = _g_object_ref0 (_tmp10_); label = _tmp11_; visible = FALSE; _tmp12_ = i; _tmp13_ = candidates; _tmp13__length1 = candidates_length1; if (_tmp12_ < _tmp13__length1) { PangoAttrList* attrs = NULL; IBusText** _tmp14_ = NULL; gint _tmp14__length1 = 0; gint _tmp15_ = 0; IBusText* _tmp16_ = NULL; PangoAttrList* _tmp17_ = NULL; gboolean _tmp18_ = FALSE; gint _tmp19_ = 0; guint _tmp20_ = 0U; GtkLabel* _tmp65_ = NULL; IBusText** _tmp66_ = NULL; gint _tmp66__length1 = 0; gint _tmp67_ = 0; IBusText* _tmp68_ = NULL; const gchar* _tmp69_ = NULL; GtkLabel* _tmp70_ = NULL; PangoAttrList* _tmp71_ = NULL; _tmp14_ = candidates; _tmp14__length1 = candidates_length1; _tmp15_ = i; _tmp16_ = _tmp14_[_tmp15_]; _tmp17_ = get_pango_attr_list_from_ibus_text (_tmp16_); attrs = _tmp17_; _tmp19_ = i; _tmp20_ = focus_candidate; if (((guint) _tmp19_) == _tmp20_) { gboolean _tmp21_ = FALSE; _tmp21_ = show_cursor; _tmp18_ = _tmp21_; } else { _tmp18_ = FALSE; } if (_tmp18_) { GtkStyleContext* context = NULL; GtkLabel** _tmp22_ = NULL; gint _tmp22__length1 = 0; gint _tmp23_ = 0; GtkLabel* _tmp24_ = NULL; GtkStyleContext* _tmp25_ = NULL; GtkStyleContext* _tmp26_ = NULL; GdkRGBA color = {0}; GtkStyleContext* _tmp27_ = NULL; GdkRGBA _tmp28_ = {0}; PangoAttribute* pango_attr = NULL; GdkRGBA _tmp29_ = {0}; gdouble _tmp30_ = 0.0; GdkRGBA _tmp31_ = {0}; gdouble _tmp32_ = 0.0; GdkRGBA _tmp33_ = {0}; gdouble _tmp34_ = 0.0; PangoAttribute* _tmp35_ = NULL; PangoAttribute* _tmp36_ = NULL; PangoAttribute* _tmp37_ = NULL; IBusText** _tmp38_ = NULL; gint _tmp38__length1 = 0; gint _tmp39_ = 0; IBusText* _tmp40_ = NULL; const gchar* _tmp41_ = NULL; gint _tmp42_ = 0; gint _tmp43_ = 0; PangoAttrList* _tmp44_ = NULL; PangoAttribute* _tmp45_ = NULL; GtkStyleContext* _tmp46_ = NULL; GdkRGBA _tmp47_ = {0}; GdkRGBA _tmp48_ = {0}; gdouble _tmp49_ = 0.0; GdkRGBA _tmp50_ = {0}; gdouble _tmp51_ = 0.0; GdkRGBA _tmp52_ = {0}; gdouble _tmp53_ = 0.0; PangoAttribute* _tmp54_ = NULL; PangoAttribute* _tmp55_ = NULL; PangoAttribute* _tmp56_ = NULL; IBusText** _tmp57_ = NULL; gint _tmp57__length1 = 0; gint _tmp58_ = 0; IBusText* _tmp59_ = NULL; const gchar* _tmp60_ = NULL; gint _tmp61_ = 0; gint _tmp62_ = 0; PangoAttrList* _tmp63_ = NULL; PangoAttribute* _tmp64_ = NULL; _tmp22_ = self->priv->m_candidates; _tmp22__length1 = self->priv->m_candidates_length1; _tmp23_ = i; _tmp24_ = _tmp22_[_tmp23_]; _tmp25_ = gtk_widget_get_style_context ((GtkWidget*) _tmp24_); _tmp26_ = _g_object_ref0 (_tmp25_); context = _tmp26_; _tmp27_ = context; gtk_style_context_get_color (_tmp27_, GTK_STATE_FLAG_SELECTED, &_tmp28_); color = _tmp28_; _tmp29_ = color; _tmp30_ = _tmp29_.red; _tmp31_ = color; _tmp32_ = _tmp31_.green; _tmp33_ = color; _tmp34_ = _tmp33_.blue; _tmp35_ = pango_attr_foreground_new ((guint16) (_tmp30_ * G_MAXUINT16), (guint16) (_tmp32_ * G_MAXUINT16), (guint16) (_tmp34_ * G_MAXUINT16)); pango_attr = _tmp35_; _tmp36_ = pango_attr; _tmp36_->start_index = (guint) 0; _tmp37_ = pango_attr; _tmp38_ = candidates; _tmp38__length1 = candidates_length1; _tmp39_ = i; _tmp40_ = _tmp38_[_tmp39_]; _tmp41_ = ibus_text_get_text (_tmp40_); _tmp42_ = strlen (_tmp41_); _tmp43_ = _tmp42_; _tmp37_->end_index = (guint) _tmp43_; _tmp44_ = attrs; _tmp45_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp44_, _tmp45_); _tmp46_ = context; gtk_style_context_get_background_color (_tmp46_, GTK_STATE_FLAG_SELECTED, &_tmp47_); color = _tmp47_; _tmp48_ = color; _tmp49_ = _tmp48_.red; _tmp50_ = color; _tmp51_ = _tmp50_.green; _tmp52_ = color; _tmp53_ = _tmp52_.blue; _tmp54_ = pango_attr_background_new ((guint16) (_tmp49_ * G_MAXUINT16), (guint16) (_tmp51_ * G_MAXUINT16), (guint16) (_tmp53_ * G_MAXUINT16)); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp54_; _tmp55_ = pango_attr; _tmp55_->start_index = (guint) 0; _tmp56_ = pango_attr; _tmp57_ = candidates; _tmp57__length1 = candidates_length1; _tmp58_ = i; _tmp59_ = _tmp57_[_tmp58_]; _tmp60_ = ibus_text_get_text (_tmp59_); _tmp61_ = strlen (_tmp60_); _tmp62_ = _tmp61_; _tmp56_->end_index = (guint) _tmp62_; _tmp63_ = attrs; _tmp64_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp63_, _tmp64_); _pango_attribute_destroy0 (pango_attr); _g_object_unref0 (context); } _tmp65_ = label; _tmp66_ = candidates; _tmp66__length1 = candidates_length1; _tmp67_ = i; _tmp68_ = _tmp66_[_tmp67_]; _tmp69_ = ibus_text_get_text (_tmp68_); gtk_label_set_text (_tmp65_, _tmp69_); _tmp70_ = label; _tmp71_ = attrs; gtk_label_set_attributes (_tmp70_, _tmp71_); visible = TRUE; _pango_attr_list_unref0 (attrs); } else { GtkLabel* _tmp72_ = NULL; GtkLabel* _tmp73_ = NULL; PangoAttrList* _tmp74_ = NULL; PangoAttrList* _tmp75_ = NULL; _tmp72_ = label; gtk_label_set_text (_tmp72_, ""); _tmp73_ = label; _tmp74_ = pango_attr_list_new (); _tmp75_ = _tmp74_; gtk_label_set_attributes (_tmp73_, _tmp75_); _pango_attr_list_unref0 (_tmp75_); } _tmp76_ = self->priv->m_vertical; if (_tmp76_) { GtkWidget** _tmp77_ = NULL; gint _tmp77__length1 = 0; gint _tmp78_ = 0; GtkWidget* _tmp79_ = NULL; gboolean _tmp80_ = FALSE; GtkWidget** _tmp81_ = NULL; gint _tmp81__length1 = 0; gint _tmp82_ = 0; GtkWidget* _tmp83_ = NULL; gboolean _tmp84_ = FALSE; _tmp77_ = self->priv->m_widgets; _tmp77__length1 = self->priv->m_widgets_length1; _tmp78_ = i; _tmp79_ = _tmp77_[_tmp78_ * 2]; _tmp80_ = visible; gtk_widget_set_visible (_tmp79_, _tmp80_); _tmp81_ = self->priv->m_widgets; _tmp81__length1 = self->priv->m_widgets_length1; _tmp82_ = i; _tmp83_ = _tmp81_[(_tmp82_ * 2) + 1]; _tmp84_ = visible; gtk_widget_set_visible (_tmp83_, _tmp84_); } else { GtkWidget** _tmp85_ = NULL; gint _tmp85__length1 = 0; gint _tmp86_ = 0; GtkWidget* _tmp87_ = NULL; gboolean _tmp88_ = FALSE; _tmp85_ = self->priv->m_widgets; _tmp85__length1 = self->priv->m_widgets_length1; _tmp86_ = i; _tmp87_ = _tmp85_[_tmp86_]; _tmp88_ = visible; gtk_widget_set_visible (_tmp87_, _tmp88_); } _g_object_unref0 (label); } } } } static void __lambda7_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit_by_name (self, "page-up"); } static void ___lambda7__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda7_ ((CandidateArea*) self, _sender); } static void __lambda8_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit_by_name (self, "page-down"); } static void ___lambda8__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda8_ ((CandidateArea*) self, _sender); } static Block1Data* block1_data_ref (Block1Data* _data1_) { g_atomic_int_inc (&_data1_->_ref_count_); return _data1_; } static void block1_data_unref (void * _userdata_) { Block1Data* _data1_; _data1_ = (Block1Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { CandidateArea* self; self = _data1_->self; _g_object_unref0 (self); g_slice_free (Block1Data, _data1_); } } static Block2Data* block2_data_ref (Block2Data* _data2_) { g_atomic_int_inc (&_data2_->_ref_count_); return _data2_; } static void block2_data_unref (void * _userdata_) { Block2Data* _data2_; _data2_ = (Block2Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { CandidateArea* self; self = _data2_->_data1_->self; block1_data_unref (_data2_->_data1_); _data2_->_data1_ = NULL; g_slice_free (Block2Data, _data2_); } } static void _vala_array_add1 (GtkLabel*** array, int* length, int* size, GtkLabel* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkLabel*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add2 (GtkLabel*** array, int* length, int* size, GtkLabel* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkLabel*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static gboolean ______lambda9_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; gboolean result = FALSE; gint _tmp0_ = 0; GdkEventButton* _tmp1_ = NULL; guint _tmp2_ = 0U; GdkEventButton* _tmp3_ = NULL; GdkModifierType _tmp4_ = 0; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data1_->i; _tmp1_ = e; _tmp2_ = _tmp1_->button; _tmp3_ = e; _tmp4_ = _tmp3_->state; g_signal_emit_by_name (self, "candidate-clicked", (guint) _tmp0_, _tmp2_, (guint) _tmp4_); result = TRUE; return result; } static gboolean _______lambda9__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda9_ (self, _sender, event); return result; } static void _vala_array_add3 (GtkWidget*** array, int* length, int* size, GtkWidget* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkWidget*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static gboolean ______lambda10_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; gboolean result = FALSE; gint _tmp0_ = 0; GdkEventButton* _tmp1_ = NULL; guint _tmp2_ = 0U; GdkEventButton* _tmp3_ = NULL; GdkModifierType _tmp4_ = 0; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data2_->index; _tmp1_ = e; _tmp2_ = _tmp1_->button; _tmp3_ = e; _tmp4_ = _tmp3_->state; g_signal_emit_by_name (self, "candidate-clicked", (guint) _tmp0_, _tmp2_, (guint) _tmp4_); result = TRUE; return result; } static gboolean _______lambda10__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda10_ (self, _sender, event); return result; } static void _vala_array_add4 (GtkWidget*** array, int* length, int* size, GtkWidget* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkWidget*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static Block3Data* block3_data_ref (Block3Data* _data3_) { g_atomic_int_inc (&_data3_->_ref_count_); return _data3_; } static void block3_data_unref (void * _userdata_) { Block3Data* _data3_; _data3_ = (Block3Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) { CandidateArea* self; self = _data3_->self; _g_object_unref0 (self); g_slice_free (Block3Data, _data3_); } } static void _vala_array_add5 (GtkLabel*** array, int* length, int* size, GtkLabel* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkLabel*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add6 (GtkLabel*** array, int* length, int* size, GtkLabel* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkLabel*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static gboolean ______lambda11_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e) { CandidateArea* self; gboolean result = FALSE; gint _tmp0_ = 0; GdkEventButton* _tmp1_ = NULL; guint _tmp2_ = 0U; GdkEventButton* _tmp3_ = NULL; GdkModifierType _tmp4_ = 0; self = _data3_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data3_->index; _tmp1_ = e; _tmp2_ = _tmp1_->button; _tmp3_ = e; _tmp4_ = _tmp3_->state; g_signal_emit_by_name (self, "candidate-clicked", (guint) _tmp0_, _tmp2_, (guint) _tmp4_); result = TRUE; return result; } static gboolean _______lambda11__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda11_ (self, _sender, event); return result; } static void _vala_array_add7 (GtkWidget*** array, int* length, int* size, GtkWidget* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkWidget*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void candidate_area_recreate_ui (CandidateArea* self) { GList* _tmp0_ = NULL; GtkButton* prev_button = NULL; GtkButton* _tmp3_ = NULL; GtkButton* _tmp4_ = NULL; GtkButton* _tmp5_ = NULL; GtkOrientation _tmp6_ = 0; GtkOrientation _tmp7_ = 0; const gchar* _tmp8_ = NULL; GtkImage* _tmp9_ = NULL; GtkImage* _tmp10_ = NULL; GtkButton* _tmp11_ = NULL; GtkButton* next_button = NULL; GtkButton* _tmp12_ = NULL; GtkButton* _tmp13_ = NULL; GtkButton* _tmp14_ = NULL; GtkOrientation _tmp15_ = 0; GtkOrientation _tmp16_ = 0; const gchar* _tmp17_ = NULL; GtkImage* _tmp18_ = NULL; GtkImage* _tmp19_ = NULL; GtkButton* _tmp20_ = NULL; gboolean _tmp21_ = FALSE; g_return_if_fail (self != NULL); _tmp0_ = gtk_container_get_children ((GtkContainer*) self); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp0_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp1_ = NULL; GtkWidget* w = NULL; _tmp1_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp1_; { GtkWidget* _tmp2_ = NULL; _tmp2_ = w; gtk_widget_destroy (_tmp2_); _g_object_unref0 (w); } } _g_list_free0 (w_collection); } _tmp3_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp3_); prev_button = _tmp3_; _tmp4_ = prev_button; g_signal_connect_object (_tmp4_, "clicked", (GCallback) ___lambda7__gtk_button_clicked, self, 0); _tmp5_ = prev_button; _tmp6_ = gtk_orientable_get_orientation ((GtkOrientable*) self); _tmp7_ = _tmp6_; _tmp8_ = CANDIDATE_AREA_PREV_PAGE_ICONS[_tmp7_]; _tmp9_ = (GtkImage*) gtk_image_new_from_icon_name (_tmp8_, GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp9_); _tmp10_ = _tmp9_; gtk_button_set_image (_tmp5_, (GtkWidget*) _tmp10_); _g_object_unref0 (_tmp10_); _tmp11_ = prev_button; gtk_button_set_relief (_tmp11_, GTK_RELIEF_NONE); _tmp12_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp12_); next_button = _tmp12_; _tmp13_ = next_button; g_signal_connect_object (_tmp13_, "clicked", (GCallback) ___lambda8__gtk_button_clicked, self, 0); _tmp14_ = next_button; _tmp15_ = gtk_orientable_get_orientation ((GtkOrientable*) self); _tmp16_ = _tmp15_; _tmp17_ = CANDIDATE_AREA_NEXT_PAGE_ICONS[_tmp16_]; _tmp18_ = (GtkImage*) gtk_image_new_from_icon_name (_tmp17_, GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp18_); _tmp19_ = _tmp18_; gtk_button_set_image (_tmp14_, (GtkWidget*) _tmp19_); _g_object_unref0 (_tmp19_); _tmp20_ = next_button; gtk_button_set_relief (_tmp20_, GTK_RELIEF_NONE); _tmp21_ = self->priv->m_vertical; if (_tmp21_) { GtkBox* candidates_hbox = NULL; GtkBox* _tmp22_ = NULL; GtkBox* _tmp23_ = NULL; GtkBox* labels_vbox = NULL; GtkBox* _tmp24_ = NULL; GtkBox* _tmp25_ = NULL; GtkBox* candidates_vbox = NULL; GtkBox* _tmp26_ = NULL; GtkBox* _tmp27_ = NULL; GtkBox* _tmp28_ = NULL; GtkBox* _tmp29_ = NULL; GtkBox* _tmp30_ = NULL; VSeparator* _tmp31_ = NULL; VSeparator* _tmp32_ = NULL; GtkBox* _tmp33_ = NULL; GtkBox* _tmp34_ = NULL; HSeparator* _tmp35_ = NULL; HSeparator* _tmp36_ = NULL; GtkBox* buttons_hbox = NULL; GtkBox* _tmp37_ = NULL; GtkLabel* state_label = NULL; GtkLabel* _tmp38_ = NULL; GtkLabel* _tmp39_ = NULL; GtkBox* _tmp40_ = NULL; GtkLabel* _tmp41_ = NULL; GtkBox* _tmp42_ = NULL; GtkButton* _tmp43_ = NULL; GtkBox* _tmp44_ = NULL; GtkButton* _tmp45_ = NULL; GtkBox* _tmp46_ = NULL; GtkLabel** _tmp47_ = NULL; GtkLabel** _tmp48_ = NULL; GtkWidget** _tmp49_ = NULL; _tmp22_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp22_); candidates_hbox = _tmp22_; _tmp23_ = candidates_hbox; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp23_, FALSE, FALSE, (guint) 0); _tmp24_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp24_); labels_vbox = _tmp24_; _tmp25_ = labels_vbox; gtk_box_set_homogeneous (_tmp25_, TRUE); _tmp26_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp26_); candidates_vbox = _tmp26_; _tmp27_ = candidates_vbox; gtk_box_set_homogeneous (_tmp27_, TRUE); _tmp28_ = candidates_hbox; _tmp29_ = labels_vbox; gtk_box_pack_start (_tmp28_, (GtkWidget*) _tmp29_, FALSE, FALSE, (guint) 4); _tmp30_ = candidates_hbox; _tmp31_ = vseparator_new (); g_object_ref_sink (_tmp31_); _tmp32_ = _tmp31_; gtk_box_pack_start (_tmp30_, (GtkWidget*) _tmp32_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp32_); _tmp33_ = candidates_hbox; _tmp34_ = candidates_vbox; gtk_box_pack_start (_tmp33_, (GtkWidget*) _tmp34_, TRUE, TRUE, (guint) 4); _tmp35_ = hseparator_new (); g_object_ref_sink (_tmp35_); _tmp36_ = _tmp35_; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp36_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp36_); _tmp37_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp37_); buttons_hbox = _tmp37_; _tmp38_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp38_); state_label = _tmp38_; _tmp39_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp39_, 20, -1); _tmp40_ = buttons_hbox; _tmp41_ = state_label; gtk_box_pack_start (_tmp40_, (GtkWidget*) _tmp41_, TRUE, TRUE, (guint) 0); _tmp42_ = buttons_hbox; _tmp43_ = prev_button; gtk_box_pack_start (_tmp42_, (GtkWidget*) _tmp43_, FALSE, FALSE, (guint) 0); _tmp44_ = buttons_hbox; _tmp45_ = next_button; gtk_box_pack_start (_tmp44_, (GtkWidget*) _tmp45_, FALSE, FALSE, (guint) 0); _tmp46_ = buttons_hbox; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp46_, FALSE, FALSE, (guint) 0); _tmp47_ = g_new0 (GtkLabel*, 0 + 1); self->priv->m_labels = (_vala_array_free (self->priv->m_labels, self->priv->m_labels_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_labels = _tmp47_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp48_ = g_new0 (GtkLabel*, 0 + 1); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_candidates = _tmp48_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp49_ = g_new0 (GtkWidget*, 0 + 1); self->priv->m_widgets = (_vala_array_free (self->priv->m_widgets, self->priv->m_widgets_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_widgets = _tmp49_; self->priv->m_widgets_length1 = 0; self->priv->_m_widgets_size_ = self->priv->m_widgets_length1; { Block1Data* _data1_; _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; _data1_->self = g_object_ref (self); _data1_->i = 0; { gboolean _tmp50_ = FALSE; _tmp50_ = TRUE; while (TRUE) { Block2Data* _data2_; gint _tmp52_ = 0; GtkLabel* label = NULL; gint _tmp53_ = 0; const gchar* _tmp54_ = NULL; GtkLabel* _tmp55_ = NULL; GtkLabel* _tmp56_ = NULL; GtkLabel* _tmp57_ = NULL; GtkLabel* _tmp58_ = NULL; GtkLabel** _tmp59_ = NULL; gint _tmp59__length1 = 0; GtkLabel* _tmp60_ = NULL; GtkLabel* _tmp61_ = NULL; GtkLabel* candidate = NULL; GtkLabel* _tmp62_ = NULL; GtkLabel* _tmp63_ = NULL; GtkLabel* _tmp64_ = NULL; GtkLabel* _tmp65_ = NULL; GtkLabel** _tmp66_ = NULL; gint _tmp66__length1 = 0; GtkLabel* _tmp67_ = NULL; GtkLabel* _tmp68_ = NULL; GtkLabel* _tmp69_ = NULL; GtkLabel* _tmp70_ = NULL; gint _tmp71_ = 0; GtkEventBox* label_ebox = NULL; GtkEventBox* _tmp72_ = NULL; GtkEventBox* _tmp73_ = NULL; GtkEventBox* _tmp74_ = NULL; GtkEventBox* _tmp75_ = NULL; GtkLabel* _tmp76_ = NULL; GtkBox* _tmp77_ = NULL; GtkEventBox* _tmp78_ = NULL; GtkWidget** _tmp79_ = NULL; gint _tmp79__length1 = 0; GtkEventBox* _tmp80_ = NULL; GtkWidget* _tmp81_ = NULL; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp82_ = NULL; GtkEventBox* _tmp83_ = NULL; GtkEventBox* _tmp84_ = NULL; GtkEventBox* _tmp85_ = NULL; GtkLabel* _tmp86_ = NULL; GtkBox* _tmp87_ = NULL; GtkEventBox* _tmp88_ = NULL; GtkWidget** _tmp89_ = NULL; gint _tmp89__length1 = 0; GtkEventBox* _tmp90_ = NULL; GtkWidget* _tmp91_ = NULL; _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->_data1_ = block1_data_ref (_data1_); if (!_tmp50_) { gint _tmp51_ = 0; _tmp51_ = _data1_->i; _data1_->i = _tmp51_ + 1; } _tmp50_ = FALSE; _tmp52_ = _data1_->i; if (!(_tmp52_ < 16)) { block2_data_unref (_data2_); _data2_ = NULL; break; } _tmp53_ = _data1_->i; _tmp54_ = CANDIDATE_AREA_LABELS[_tmp53_]; _tmp55_ = (GtkLabel*) gtk_label_new (_tmp54_); g_object_ref_sink (_tmp55_); label = _tmp55_; _tmp56_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp56_, GTK_ALIGN_START); _tmp57_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp57_, GTK_ALIGN_CENTER); _tmp58_ = label; gtk_widget_show ((GtkWidget*) _tmp58_); _tmp59_ = self->priv->m_labels; _tmp59__length1 = self->priv->m_labels_length1; _tmp60_ = label; _tmp61_ = _g_object_ref0 (_tmp60_); _vala_array_add1 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp61_); _tmp62_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp62_); candidate = _tmp62_; _tmp63_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp63_, GTK_ALIGN_START); _tmp64_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp64_, GTK_ALIGN_CENTER); _tmp65_ = candidate; gtk_widget_show ((GtkWidget*) _tmp65_); _tmp66_ = self->priv->m_candidates; _tmp66__length1 = self->priv->m_candidates_length1; _tmp67_ = candidate; _tmp68_ = _g_object_ref0 (_tmp67_); _vala_array_add2 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp68_); _tmp69_ = label; gtk_misc_set_padding ((GtkMisc*) _tmp69_, 8, 0); _tmp70_ = candidate; gtk_misc_set_padding ((GtkMisc*) _tmp70_, 8, 0); _tmp71_ = _data1_->i; _data2_->index = _tmp71_; _tmp72_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp72_); label_ebox = _tmp72_; _tmp73_ = label_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp73_, TRUE); _tmp74_ = label_ebox; g_signal_connect_data ((GtkWidget*) _tmp74_, "button-press-event", (GCallback) _______lambda9__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp75_ = label_ebox; _tmp76_ = label; gtk_container_add ((GtkContainer*) _tmp75_, (GtkWidget*) _tmp76_); _tmp77_ = labels_vbox; _tmp78_ = label_ebox; gtk_box_pack_start (_tmp77_, (GtkWidget*) _tmp78_, FALSE, FALSE, (guint) 2); _tmp79_ = self->priv->m_widgets; _tmp79__length1 = self->priv->m_widgets_length1; _tmp80_ = label_ebox; _tmp81_ = _g_object_ref0 ((GtkWidget*) _tmp80_); _vala_array_add3 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp81_); _tmp82_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp82_); candidate_ebox = _tmp82_; _tmp83_ = candidate_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp83_, TRUE); _tmp84_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp84_, "button-press-event", (GCallback) _______lambda10__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp85_ = candidate_ebox; _tmp86_ = candidate; gtk_container_add ((GtkContainer*) _tmp85_, (GtkWidget*) _tmp86_); _tmp87_ = candidates_vbox; _tmp88_ = candidate_ebox; gtk_box_pack_start (_tmp87_, (GtkWidget*) _tmp88_, FALSE, FALSE, (guint) 2); _tmp89_ = self->priv->m_widgets; _tmp89__length1 = self->priv->m_widgets_length1; _tmp90_ = candidate_ebox; _tmp91_ = _g_object_ref0 ((GtkWidget*) _tmp90_); _vala_array_add4 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp91_); _g_object_unref0 (candidate_ebox); _g_object_unref0 (label_ebox); _g_object_unref0 (candidate); _g_object_unref0 (label); block2_data_unref (_data2_); _data2_ = NULL; } } block1_data_unref (_data1_); _data1_ = NULL; } _g_object_unref0 (state_label); _g_object_unref0 (buttons_hbox); _g_object_unref0 (candidates_vbox); _g_object_unref0 (labels_vbox); _g_object_unref0 (candidates_hbox); } else { GtkBox* hbox = NULL; GtkBox* _tmp92_ = NULL; GtkBox* _tmp93_ = NULL; GtkLabel** _tmp94_ = NULL; GtkLabel** _tmp95_ = NULL; GtkWidget** _tmp96_ = NULL; GtkBox* _tmp133_ = NULL; VSeparator* _tmp134_ = NULL; VSeparator* _tmp135_ = NULL; GtkBox* _tmp136_ = NULL; GtkButton* _tmp137_ = NULL; GtkBox* _tmp138_ = NULL; GtkButton* _tmp139_ = NULL; _tmp92_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp92_); hbox = _tmp92_; _tmp93_ = hbox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp93_); _tmp94_ = g_new0 (GtkLabel*, 0 + 1); self->priv->m_labels = (_vala_array_free (self->priv->m_labels, self->priv->m_labels_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_labels = _tmp94_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp95_ = g_new0 (GtkLabel*, 0 + 1); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_candidates = _tmp95_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp96_ = g_new0 (GtkWidget*, 0 + 1); self->priv->m_widgets = (_vala_array_free (self->priv->m_widgets, self->priv->m_widgets_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_widgets = _tmp96_; self->priv->m_widgets_length1 = 0; self->priv->_m_widgets_size_ = self->priv->m_widgets_length1; { gint i = 0; i = 0; { gboolean _tmp97_ = FALSE; _tmp97_ = TRUE; while (TRUE) { Block3Data* _data3_; gint _tmp99_ = 0; GtkLabel* label = NULL; gint _tmp100_ = 0; const gchar* _tmp101_ = NULL; GtkLabel* _tmp102_ = NULL; GtkLabel* _tmp103_ = NULL; GtkLabel* _tmp104_ = NULL; GtkLabel* _tmp105_ = NULL; GtkLabel** _tmp106_ = NULL; gint _tmp106__length1 = 0; GtkLabel* _tmp107_ = NULL; GtkLabel* _tmp108_ = NULL; GtkLabel* candidate = NULL; GtkLabel* _tmp109_ = NULL; GtkLabel* _tmp110_ = NULL; GtkLabel* _tmp111_ = NULL; GtkLabel* _tmp112_ = NULL; GtkLabel** _tmp113_ = NULL; gint _tmp113__length1 = 0; GtkLabel* _tmp114_ = NULL; GtkLabel* _tmp115_ = NULL; GtkBox* candidate_hbox = NULL; GtkBox* _tmp116_ = NULL; GtkBox* _tmp117_ = NULL; GtkBox* _tmp118_ = NULL; GtkLabel* _tmp119_ = NULL; GtkBox* _tmp120_ = NULL; GtkLabel* _tmp121_ = NULL; gint _tmp122_ = 0; GtkEventBox* ebox = NULL; GtkEventBox* _tmp123_ = NULL; GtkEventBox* _tmp124_ = NULL; GtkEventBox* _tmp125_ = NULL; GtkEventBox* _tmp126_ = NULL; GtkBox* _tmp127_ = NULL; GtkBox* _tmp128_ = NULL; GtkEventBox* _tmp129_ = NULL; GtkWidget** _tmp130_ = NULL; gint _tmp130__length1 = 0; GtkEventBox* _tmp131_ = NULL; GtkWidget* _tmp132_ = NULL; _data3_ = g_slice_new0 (Block3Data); _data3_->_ref_count_ = 1; _data3_->self = g_object_ref (self); if (!_tmp97_) { gint _tmp98_ = 0; _tmp98_ = i; i = _tmp98_ + 1; } _tmp97_ = FALSE; _tmp99_ = i; if (!(_tmp99_ < 16)) { block3_data_unref (_data3_); _data3_ = NULL; break; } _tmp100_ = i; _tmp101_ = CANDIDATE_AREA_LABELS[_tmp100_]; _tmp102_ = (GtkLabel*) gtk_label_new (_tmp101_); g_object_ref_sink (_tmp102_); label = _tmp102_; _tmp103_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp103_, GTK_ALIGN_START); _tmp104_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp104_, GTK_ALIGN_CENTER); _tmp105_ = label; gtk_widget_show ((GtkWidget*) _tmp105_); _tmp106_ = self->priv->m_labels; _tmp106__length1 = self->priv->m_labels_length1; _tmp107_ = label; _tmp108_ = _g_object_ref0 (_tmp107_); _vala_array_add5 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp108_); _tmp109_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp109_); candidate = _tmp109_; _tmp110_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp110_, GTK_ALIGN_START); _tmp111_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp111_, GTK_ALIGN_CENTER); _tmp112_ = candidate; gtk_widget_show ((GtkWidget*) _tmp112_); _tmp113_ = self->priv->m_candidates; _tmp113__length1 = self->priv->m_candidates_length1; _tmp114_ = candidate; _tmp115_ = _g_object_ref0 (_tmp114_); _vala_array_add6 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp115_); _tmp116_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp116_); candidate_hbox = _tmp116_; _tmp117_ = candidate_hbox; gtk_widget_show ((GtkWidget*) _tmp117_); _tmp118_ = candidate_hbox; _tmp119_ = label; gtk_box_pack_start (_tmp118_, (GtkWidget*) _tmp119_, FALSE, FALSE, (guint) 2); _tmp120_ = candidate_hbox; _tmp121_ = candidate; gtk_box_pack_start (_tmp120_, (GtkWidget*) _tmp121_, FALSE, FALSE, (guint) 2); _tmp122_ = i; _data3_->index = _tmp122_; _tmp123_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp123_); ebox = _tmp123_; _tmp124_ = ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp124_, TRUE); _tmp125_ = ebox; g_signal_connect_data ((GtkWidget*) _tmp125_, "button-press-event", (GCallback) _______lambda11__gtk_widget_button_press_event, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0); _tmp126_ = ebox; _tmp127_ = candidate_hbox; gtk_container_add ((GtkContainer*) _tmp126_, (GtkWidget*) _tmp127_); _tmp128_ = hbox; _tmp129_ = ebox; gtk_box_pack_start (_tmp128_, (GtkWidget*) _tmp129_, FALSE, FALSE, (guint) 4); _tmp130_ = self->priv->m_widgets; _tmp130__length1 = self->priv->m_widgets_length1; _tmp131_ = ebox; _tmp132_ = _g_object_ref0 ((GtkWidget*) _tmp131_); _vala_array_add7 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp132_); _g_object_unref0 (ebox); _g_object_unref0 (candidate_hbox); _g_object_unref0 (candidate); _g_object_unref0 (label); block3_data_unref (_data3_); _data3_ = NULL; } } } _tmp133_ = hbox; _tmp134_ = vseparator_new (); g_object_ref_sink (_tmp134_); _tmp135_ = _tmp134_; gtk_box_pack_start (_tmp133_, (GtkWidget*) _tmp135_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp135_); _tmp136_ = hbox; _tmp137_ = prev_button; gtk_box_pack_start (_tmp136_, (GtkWidget*) _tmp137_, FALSE, FALSE, (guint) 0); _tmp138_ = hbox; _tmp139_ = next_button; gtk_box_pack_start (_tmp138_, (GtkWidget*) _tmp139_, FALSE, FALSE, (guint) 0); _g_object_unref0 (hbox); } _g_object_unref0 (next_button); _g_object_unref0 (prev_button); } static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__UINT_UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_uint (param_values + 1), g_value_get_uint (param_values + 2), g_value_get_uint (param_values + 3), data2); } static void candidate_area_class_init (CandidateAreaClass * klass) { candidate_area_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (CandidateAreaPrivate)); G_OBJECT_CLASS (klass)->finalize = candidate_area_finalize; g_signal_new ("candidate_clicked", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); g_signal_new ("page_up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("page_down", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("cursor_up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("cursor_down", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void candidate_area_instance_init (CandidateArea * self) { self->priv = CANDIDATE_AREA_GET_PRIVATE (self); } static void candidate_area_finalize (GObject* obj) { CandidateArea * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_CANDIDATE_AREA, CandidateArea); self->priv->m_labels = (_vala_array_free (self->priv->m_labels, self->priv->m_labels_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_widgets = (_vala_array_free (self->priv->m_widgets, self->priv->m_widgets_length1, (GDestroyNotify) g_object_unref), NULL); self->priv->m_ibus_candidates = (_vala_array_free (self->priv->m_ibus_candidates, self->priv->m_ibus_candidates_length1, (GDestroyNotify) g_object_unref), NULL); G_OBJECT_CLASS (candidate_area_parent_class)->finalize (obj); } GType candidate_area_get_type (void) { static volatile gsize candidate_area_type_id__volatile = 0; if (g_once_init_enter (&candidate_area_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (CandidateAreaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) candidate_area_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CandidateArea), 0, (GInstanceInitFunc) candidate_area_instance_init, NULL }; GType candidate_area_type_id; candidate_area_type_id = g_type_register_static (gtk_box_get_type (), "CandidateArea", &g_define_type_info, 0); g_once_init_leave (&candidate_area_type_id__volatile, candidate_area_type_id); } return candidate_area_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } ibus-1.5.11/ui/Makefile.in0000644000000000000000000005641412551654261012133 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = ui ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = gtk3 am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ENABLE_GTK3_TRUE@GTK3_UI = gtk3 SUBDIRS = \ $(GTK3_UI) \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ui/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ui/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/ui/Makefile.am0000644000000000000000000000173212551654123012110 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ENABLE_GTK3 GTK3_UI = gtk3 endif SUBDIRS = \ $(GTK3_UI) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/README0000644000000000000000000000101612551654123010312 00000000000000IBus - Input Bus Introduction === IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. It also may help developers to develop input method easily. How to build & test IBus === ibus-setup: It is a gtk program to enable and configure ibus. ibus: It is ibus daemon. hotkeys: Super + Space: Change input method. For more detail please refer to https://github.com/ibus/ibus/wiki/ReadMe . Peng Huang ibus-1.5.11/py-compile0000755000000000000000000001107612551654260011447 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2011-06-08.12; # UTC # Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if [ -z "$PYTHON" ]; then PYTHON=python fi me=py-compile usage_error () { echo "$me: $*" >&2 echo "Try '$me --help' for more information." >&2 exit 1 } basedir= destdir= while test $# -ne 0; do case "$1" in --basedir) if test $# -lt 2; then usage_error "option '--basedir' requires an argument" else basedir=$2 fi shift ;; --destdir) if test $# -lt 2; then usage_error "option '--destdir' requires an argument" else destdir=$2 fi shift ;; -h|--help) cat <<\EOF Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..." Byte compile some python scripts FILES. Use --destdir to specify any leading directory path to the FILES that you don't want to include in the byte compiled file. Specify --basedir for any additional path information you do want to be shown in the byte compiled file. Example: py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py Report bugs to . EOF exit $? ;; -v|--version) echo "$me $scriptversion" exit $? ;; --) shift break ;; -*) usage_error "unrecognized option '$1'" ;; *) break ;; esac shift done files=$* if test -z "$files"; then usage_error "no files given" fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then pathtrans="path = file" else pathtrans="path = os.path.join('$basedir', file)" fi # if destdir was given, then it needs to be prepended to the filename to # byte compile but not go into the compiled file. if [ -z "$destdir" ]; then filetrans="filepath = path" else filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)" fi $PYTHON -c " import sys, os, py_compile, imp files = '''$files''' sys.stdout.write('Byte-compiling python modules...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath), path) else: py_compile.compile(filepath, filepath + 'c', path) sys.stdout.write('\n')" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, py_compile, imp # pypy does not use .pyo optimization if hasattr(sys, 'pypy_translation_info'): sys.exit(0) files = '''$files''' sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) else: py_compile.compile(filepath, filepath + 'o', path) sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/conf/0000755000000000000000000000000012551654526010450 500000000000000ibus-1.5.11/conf/dconf/0000755000000000000000000000000012551654526011541 500000000000000ibus-1.5.11/conf/dconf/main.c0000644000000000000000000000466712551654123012557 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "config-private.h" static IBusBus *bus = NULL; static IBusConfigDConf *config = NULL; /* options */ static gboolean ibus = FALSE; static gboolean verbose = FALSE; static const GOptionEntry entries[] = { { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus", NULL }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL }, { NULL }, }; static void ibus_disconnected_cb (IBusBus *bus, gpointer user_data) { ibus_quit (); } static void ibus_dconf_start (void) { ibus_init (); bus = ibus_bus_new (); if (!ibus_bus_is_connected (bus)) { exit (1); } g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL); config = ibus_config_dconf_new (ibus_bus_get_connection (bus)); ibus_bus_request_name (bus, IBUS_SERVICE_CONFIG, 0); ibus_main (); } gint main (gint argc, gchar **argv) { GError *error = NULL; GOptionContext *context; setlocale (LC_ALL, ""); g_setenv ("DCONF_PROFILE", "ibus", FALSE); context = g_option_context_new ("- ibus dconf component"); g_option_context_add_main_entries (context, entries, "ibus-dconf"); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("Option parsing failed: %s\n", error->message); exit (-1); } ibus_set_log_handler (verbose); ibus_dconf_start (); return 0; } ibus-1.5.11/conf/dconf/config-private.h0000644000000000000000000000415212551654123014542 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __CONFIG_DCONF_H__ #define __CONFIG_DCONF_H__ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef DCONF_0_13_4 # include # include #else # include #endif #define IBUS_TYPE_CONFIG_DCONF \ (ibus_config_dconf_get_type ()) #define IBUS_CONFIG_DCONF(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConf)) #define IBUS_CONFIG_DCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) #define IBUS_IS_CONFIG_DCONF(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_DCONF)) #define IBUS_IS_CONFIG_DCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_DCONF)) #define IBUS_CONFIG_DCONF_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) typedef struct _IBusConfigDConf IBusConfigDConf; typedef struct _IBusConfigDConfClass IBusConfigDConfClass; GType ibus_config_dconf_get_type (void); IBusConfigDConf *ibus_config_dconf_new (GDBusConnection *connection); #endif ibus-1.5.11/conf/dconf/config.c0000644000000000000000000003465712551654123013102 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2011 Daiki Ueno * Copyright (C) 2008-2011 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include "config-private.h" #define DCONF_PREFIX "/desktop/ibus" #define DCONF_PRESERVE_NAME_PREFIXES_KEY \ DCONF_PREFIX"/general/dconf-preserve-name-prefixes" struct _IBusConfigDConf { IBusConfigService parent; DConfClient *client; /* if a dconf path matches one of preserve_name_prefixes, don't convert key names from/to GSettings key names (see _to_gsettings_name and _from_gsettings_name) */ GSList *preserve_name_prefixes; }; struct _IBusConfigDConfClass { IBusConfigServiceClass parent; }; /* functions prototype */ static void ibus_config_dconf_class_init (IBusConfigDConfClass *class); static void ibus_config_dconf_init (IBusConfigDConf *config); static void ibus_config_dconf_destroy (IBusConfigDConf *config); static gboolean ibus_config_dconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error); static GVariant *ibus_config_dconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); static GVariant *ibus_config_dconf_get_values (IBusConfigService *config, const gchar *section, GError **error); static gboolean ibus_config_dconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); G_DEFINE_TYPE (IBusConfigDConf, ibus_config_dconf, IBUS_TYPE_CONFIG_SERVICE) static void ibus_config_dconf_class_init (IBusConfigDConfClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusConfigServiceClass *config_class = IBUS_CONFIG_SERVICE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_config_dconf_destroy; config_class->set_value = ibus_config_dconf_set_value; config_class->get_value = ibus_config_dconf_get_value; config_class->get_values = ibus_config_dconf_get_values; config_class->unset_value = ibus_config_dconf_unset_value; } static gboolean _has_prefixes (const gchar *path, GSList *prefixes) { GSList *head = prefixes; for (; head; head = head->next) { if (g_str_has_prefix (path, head->data)) { return TRUE; } } return FALSE; } /* Convert key names from/to GSettings names. While GSettings only * accepts lowercase letters / numbers / and dash ('-'), IBus uses * underscore ('_') and some engines even use uppercase letters. * * To minimize the gap, we do the following conversion: * * - when converting from IBus names to GSettings names, first convert * all letters to lowercase and then replace underscores with dashes. * - when converting from GSettings names to IBus names, simply * replace dashes with underscores. * * Note that though the conversion does not always roundtrip, it does * in most cases. */ static gchar * _to_gsettings_name (const gchar *name) { return g_strcanon (g_ascii_strdown (name, -1), "abcdefghijklmnopqrstuvwxyz0123456789-", '-'); } static gchar * _from_gsettings_name (const gchar *name) { gchar *retval = g_strdup (name), *p; for (p = retval; *p != '\0'; p++) if (*p == '-') *p = '_'; return retval; } typedef gchar *(* NameConvFunc) (const gchar *); static gchar * _conv_path (const gchar *path, NameConvFunc conv_func) { gchar **strv = g_strsplit (path, "/", -1), **p; gchar *retval; for (p = strv; *p; p++) { gchar *canon; canon = (*conv_func) (*p); g_free (*p); *p = canon; } retval = g_strjoinv ("/", strv); g_strfreev (strv); return retval; } static gchar * _to_gsettings_path (const gchar *path) { return _conv_path (path, _to_gsettings_name); } static gchar * _from_gsettings_path (const gchar *gpath) { return _conv_path (gpath, _from_gsettings_name); } static void _watch_func (DConfClient *client, const gchar *gpath, const gchar * const *items, #ifndef DCONF_0_13_4 gint n_items, #endif const gchar *tag, IBusConfigDConf *config) { gchar **gkeys = NULL; gint i; #ifdef DCONF_0_13_4 gint n_items; n_items = g_strv_length ((gchar **)items); #endif g_return_if_fail (gpath != NULL); g_return_if_fail (n_items >= 0); if (dconf_is_key (gpath, NULL)) { /* If path is a key, the notification should be taken to mean that one key may have changed. */ n_items = 1; gkeys = g_malloc0_n (n_items + 1, sizeof (gchar *)); gkeys[0] = g_strdup (gpath); } else { if (n_items == 0) { /* If path is a dir and items is empty then it is an indication that any key under path may have changed. */ gkeys = dconf_client_list (config->client, gpath, &n_items); } else { gkeys = g_boxed_copy (G_TYPE_STRV, items); } for (i = 0; i < n_items; i++) { gchar *gname = gkeys[i]; gkeys[i] = g_strdup_printf ("%s/%s", gpath, gname); g_free (gname); } } for (i = 0; i < n_items; i++) { gchar *gname, *path, *name; GVariant *variant = dconf_client_read (config->client, gkeys[i]); if (variant == NULL) { /* Use a empty tuple for a unset value */ variant = g_variant_new_tuple (NULL, 0); g_variant_ref_sink (variant); } gname = strrchr (gkeys[i], '/'); g_assert (gname); *gname++ = '\0'; if (_has_prefixes (gkeys[i], config->preserve_name_prefixes)) { path = gkeys[i]; name = gname; } else { path = _from_gsettings_path (gkeys[i]); name = _from_gsettings_name (gname); } ibus_config_service_value_changed ((IBusConfigService *) config, path + sizeof (DCONF_PREFIX), name, variant); if (path != gkeys[i]) { g_free (path); } if (name != gname) { g_free (name); } g_variant_unref (variant); } g_strfreev (gkeys); } static void ibus_config_dconf_init (IBusConfigDConf *config) { GVariant *variant; #ifdef DCONF_0_13_4 config->client = dconf_client_new (); g_signal_connect (config->client, "changed", G_CALLBACK (_watch_func), config); dconf_client_watch_fast (config->client, DCONF_PREFIX"/"); #else GError *error; config->client = dconf_client_new ("ibus", (DConfWatchFunc)_watch_func, config, NULL); error = NULL; if (!dconf_client_watch (config->client, DCONF_PREFIX"/", NULL, &error)) { g_warning ("Can not watch dconf path %s: %s", DCONF_PREFIX"/", error->message); g_error_free (error); } #endif config->preserve_name_prefixes = NULL; variant = dconf_client_read (config->client, DCONF_PRESERVE_NAME_PREFIXES_KEY); if (variant != NULL) { GVariantIter iter; GVariant *child; g_variant_iter_init (&iter, variant); while ((child = g_variant_iter_next_value (&iter))) { char *prefix = g_variant_dup_string (child, NULL); config->preserve_name_prefixes = g_slist_prepend (config->preserve_name_prefixes, prefix); g_variant_unref (child); } g_variant_unref (variant); } } static void ibus_config_dconf_destroy (IBusConfigDConf *config) { if (config->client) { #ifdef DCONF_0_13_4 dconf_client_unwatch_fast (config->client, DCONF_PREFIX"/"); #else GError *error = NULL; if (!dconf_client_unwatch (config->client, DCONF_PREFIX"/", NULL, &error)) { g_warning ("Can not unwatch dconf path %s: %s", DCONF_PREFIX"/", error->message); g_error_free (error); } #endif g_object_unref (config->client); config->client = NULL; } g_slist_free_full (config->preserve_name_prefixes, (GDestroyNotify) g_free); config->preserve_name_prefixes = NULL; IBUS_OBJECT_CLASS (ibus_config_dconf_parent_class)-> destroy ((IBusObject *)config); } static gboolean ibus_config_dconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error) { IBusConfigDConf *dconf = IBUS_CONFIG_DCONF (config); DConfClient *client = dconf->client; gchar *path, *gpath, *gname, *gkey; gboolean retval; path = g_strdup_printf (DCONF_PREFIX"/%s", section); gpath = _to_gsettings_path (path); g_free (path); if (_has_prefixes (gpath, dconf->preserve_name_prefixes)) { gname = (char *) name; } else { gname = _to_gsettings_name (name); } gkey = g_strconcat (gpath, "/", gname, NULL); g_free (gpath); if (gname != name) { g_free (gname); } #ifdef DCONF_0_13_4 retval = dconf_client_write_fast (client, gkey, value, error); #else retval = dconf_client_write (client, gkey, value, NULL, /* tag */ NULL, /* cancellable */ error); #endif g_free (gkey); return retval; } static GVariant * ibus_config_dconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { IBusConfigDConf *dconf = IBUS_CONFIG_DCONF (config); DConfClient *client = dconf->client; gchar *path, *gpath, *gname, *gkey; GVariant *variant; path = g_strdup_printf (DCONF_PREFIX"/%s", section); gpath = _to_gsettings_path (path); g_free (path); if (_has_prefixes (gpath, dconf->preserve_name_prefixes)) { gname = (char *) name; } else { gname = _to_gsettings_name (name); } gkey = g_strconcat (gpath, "/", gname, NULL); g_free (gpath); if (gname != name) { g_free (gname); } variant = dconf_client_read (client, gkey); g_free (gkey); if (variant == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Config value [%s:%s] does not exist.", section, name); return NULL; } return variant; } static GVariant * ibus_config_dconf_get_values (IBusConfigService *config, const gchar *section, GError **error) { IBusConfigDConf *dconf = IBUS_CONFIG_DCONF (config); DConfClient *client = dconf->client; gchar *dir, *gdir; gint len; gchar **entries, **p; GVariantBuilder builder; gboolean preserve_name; dir = g_strdup_printf (DCONF_PREFIX"/%s/", section); gdir = _to_gsettings_path (dir); g_free (dir); preserve_name = _has_prefixes (gdir, dconf->preserve_name_prefixes); entries = dconf_client_list (client, gdir, &len); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); for (p = entries; *p != NULL; p++) { gchar *gkey = g_strconcat (gdir, *p, NULL); GVariant *value = dconf_client_read (client, gkey); g_free (gkey); if (value) { gchar *name = *p; if (!preserve_name) { name = _from_gsettings_name (*p); } g_variant_builder_add (&builder, "{sv}", name, value); if (name != *p) { g_free (name); } g_variant_unref (value); } } g_strfreev (entries); g_free (gdir); return g_variant_builder_end (&builder); } static gboolean ibus_config_dconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { return ibus_config_dconf_set_value (config, section, name, NULL, error); } IBusConfigDConf * ibus_config_dconf_new (GDBusConnection *connection) { IBusConfigDConf *config; config = (IBusConfigDConf *) g_object_new (IBUS_TYPE_CONFIG_DCONF, "object-path", IBUS_PATH_CONFIG, "connection", connection, NULL); return config; } ibus-1.5.11/conf/dconf/dconf.xml.in0000644000000000000000000000064412551654123013676 00000000000000 org.freedesktop.IBus.Config Dconf Config Component @libexecdir@/ibus-dconf @VERSION@ Daiki Ueno <ueno@unixuser.org> GPL https://github.com/ibus/ibus/wiki ibus ibus-1.5.11/conf/dconf/Makefile.in0000644000000000000000000007607612551654256013546 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ libexec_PROGRAMS = ibus-dconf$(EXEEXT) subdir = conf/dconf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" PROGRAMS = $(libexec_PROGRAMS) am_ibus_dconf_OBJECTS = ibus_dconf-main.$(OBJEXT) \ ibus_dconf-config.$(OBJEXT) ibus_dconf_OBJECTS = $(am_ibus_dconf_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_dconf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_dconf_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_dconf_SOURCES) DIST_SOURCES = $(ibus_dconf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(component_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la ibus_dconf_SOURCES = \ main.c \ config.c \ config-private.h \ $(NULL) ibus_dconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @DCONF_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_dconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @DCONF_LIBS@ \ $(libibus) \ $(NULL) ibus_dconf_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ dconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ dconf.xml \ *.pyc \ $(NULL) DISTCLEANFILES = \ dconf-override-db \ $(NULL) EXTRA_DIST = \ dconf.xml.in \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/dconf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu conf/dconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-dconf$(EXEEXT): $(ibus_dconf_OBJECTS) $(ibus_dconf_DEPENDENCIES) $(EXTRA_ibus_dconf_DEPENDENCIES) @rm -f ibus-dconf$(EXEEXT) $(AM_V_CCLD)$(ibus_dconf_LINK) $(ibus_dconf_OBJECTS) $(ibus_dconf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_dconf-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_dconf-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_dconf-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -MT ibus_dconf-main.o -MD -MP -MF $(DEPDIR)/ibus_dconf-main.Tpo -c -o ibus_dconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_dconf-main.Tpo $(DEPDIR)/ibus_dconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_dconf-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -c -o ibus_dconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_dconf-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -MT ibus_dconf-main.obj -MD -MP -MF $(DEPDIR)/ibus_dconf-main.Tpo -c -o ibus_dconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_dconf-main.Tpo $(DEPDIR)/ibus_dconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_dconf-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -c -o ibus_dconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` ibus_dconf-config.o: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -MT ibus_dconf-config.o -MD -MP -MF $(DEPDIR)/ibus_dconf-config.Tpo -c -o ibus_dconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_dconf-config.Tpo $(DEPDIR)/ibus_dconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_dconf-config.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -c -o ibus_dconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c ibus_dconf-config.obj: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -MT ibus_dconf-config.obj -MD -MP -MF $(DEPDIR)/ibus_dconf-config.Tpo -c -o ibus_dconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_dconf-config.Tpo $(DEPDIR)/ibus_dconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_dconf-config.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_dconf_CFLAGS) $(CFLAGS) -c -o ibus_dconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-componentDATA: $(component_DATA) @$(NORMAL_INSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(componentdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(componentdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(componentdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(componentdir)" || exit $$?; \ done uninstall-componentDATA: @$(NORMAL_UNINSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(componentdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(componentdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-componentDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-componentDATA uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-componentDATA \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libexecPROGRAMS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-componentDATA uninstall-libexecPROGRAMS .PRECIOUS: Makefile dconf.xml: dconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/conf/dconf/Makefile.am0000644000000000000000000000344712551654123013516 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libexec_PROGRAMS = \ ibus-dconf \ $(NULL) ibus_dconf_SOURCES = \ main.c \ config.c \ config-private.h \ $(NULL) ibus_dconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @DCONF_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_dconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @DCONF_LIBS@ \ $(libibus) \ $(NULL) ibus_dconf_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ dconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ dconf.xml \ *.pyc \ $(NULL) DISTCLEANFILES = \ dconf-override-db \ $(NULL) EXTRA_DIST = \ dconf.xml.in \ $(NULL) dconf.xml: dconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk ibus-1.5.11/conf/gconf/0000755000000000000000000000000012551654526011544 500000000000000ibus-1.5.11/conf/gconf/config.h0000644000000000000000000000214712551654123013077 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ #ifndef __CONFIG_GCONF_H__ #define __CONFIG_GCONF_H__ #include #include #define IBUS_TYPE_CONFIG_GCONF \ (ibus_config_gconf_get_type ()) #define IBUS_CONFIG_GCONF(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_GCONF, IBusConfigGConf)) #define IBUS_CONFIG_GCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_GCONF, IBusConfigGConfClass)) #define IBUS_IS_CONFIG_GCONF(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_GCONF)) #define IBUS_IS_CONFIG_GCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_GCONF)) #define IBUS_CONFIG_GCONF_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_GCONF, IBusConfigGConfClass)) typedef struct _IBusConfigGConf IBusConfigGConf; typedef struct _IBusConfigGConfClass IBusConfigGConfClass; GType ibus_config_gconf_get_type (void); IBusConfigGConf *ibus_config_gconf_new (GDBusConnection *connection); #endif ibus-1.5.11/conf/gconf/main.c0000644000000000000000000000276012551654123012552 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ #include #include #include #include "config.h" static IBusBus *bus = NULL; static IBusConfigGConf *config = NULL; /* options */ static gboolean ibus = FALSE; static gboolean verbose = FALSE; static const GOptionEntry entries[] = { { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus", NULL }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL }, { NULL }, }; static void ibus_disconnected_cb (IBusBus *bus, gpointer user_data) { ibus_quit (); } static void ibus_gconf_start (void) { ibus_init (); bus = ibus_bus_new (); if (!ibus_bus_is_connected (bus)) { exit (-1); } g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL); config = ibus_config_gconf_new (ibus_bus_get_connection (bus)); ibus_bus_request_name (bus, IBUS_SERVICE_CONFIG, 0); ibus_main (); } gint main (gint argc, gchar **argv) { GError *error = NULL; GOptionContext *context; setlocale (LC_ALL, ""); context = g_option_context_new ("- ibus gconf component"); g_option_context_add_main_entries (context, entries, "ibus-gconf"); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("Option parsing failed: %s\n", error->message); g_error_free (error); exit (-1); } ibus_gconf_start (); return 0; } ibus-1.5.11/conf/gconf/gconf.xml.in0000644000000000000000000000065312551654123013704 00000000000000 org.freedesktop.IBus.Config GConf Config Component @libexecdir@/ibus-gconf @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus ibus-1.5.11/conf/gconf/config.c0000644000000000000000000003051612551654123013073 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ #include #include #include "config.h" #define GCONF_PREFIX "/desktop/ibus" struct _IBusConfigGConf { IBusConfigService parent; GConfClient *client; }; struct _IBusConfigGConfClass { IBusConfigServiceClass parent; }; /* functions prototype */ static void ibus_config_gconf_class_init (IBusConfigGConfClass *class); static void ibus_config_gconf_init (IBusConfigGConf *config); static void ibus_config_gconf_destroy (IBusConfigGConf *config); static gboolean ibus_config_gconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error); static GVariant *ibus_config_gconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); static GVariant *ibus_config_gconf_get_values (IBusConfigService *config, const gchar *section, GError **error); static gboolean ibus_config_gconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); static GConfValue *_to_gconf_value (GVariant *value); static GVariant *_from_gconf_value (const GConfValue *gvalue); G_DEFINE_TYPE (IBusConfigGConf, ibus_config_gconf, IBUS_TYPE_CONFIG_SERVICE) static void ibus_config_gconf_class_init (IBusConfigGConfClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); IBUS_OBJECT_CLASS (object_class)->destroy = (IBusObjectDestroyFunc) ibus_config_gconf_destroy; IBUS_CONFIG_SERVICE_CLASS (object_class)->set_value = ibus_config_gconf_set_value; IBUS_CONFIG_SERVICE_CLASS (object_class)->get_value = ibus_config_gconf_get_value; IBUS_CONFIG_SERVICE_CLASS (object_class)->get_values = ibus_config_gconf_get_values; IBUS_CONFIG_SERVICE_CLASS (object_class)->unset_value = ibus_config_gconf_unset_value; } static void _value_changed_cb (GConfClient *client, const gchar *key, GConfValue *value, IBusConfigGConf *config) { gchar *p, *section, *name; g_return_if_fail (key != NULL); p = g_strdup (key); section = p + sizeof (GCONF_PREFIX); name = rindex (p, '/') + 1; *(name - 1) = '\0'; GVariant *variant; if (value) { variant = _from_gconf_value (value); } else { /* Use a empty typle for a unset value */ variant = g_variant_new_tuple (NULL, 0); } g_return_if_fail (variant != NULL); ibus_config_service_value_changed ((IBusConfigService *) config, section, name, variant); g_variant_unref (variant); g_free (p); } static void ibus_config_gconf_init (IBusConfigGConf *config) { config->client = gconf_client_get_default (); gconf_client_add_dir (config->client, GCONF_PREFIX, GCONF_CLIENT_PRELOAD_RECURSIVE, NULL); g_signal_connect (config->client, "value-changed", G_CALLBACK (_value_changed_cb), config); } static void ibus_config_gconf_destroy (IBusConfigGConf *config) { if (config->client) { g_signal_handlers_disconnect_by_func (config->client, G_CALLBACK (_value_changed_cb), config); g_object_unref (config->client); config->client = NULL; } IBUS_OBJECT_CLASS (ibus_config_gconf_parent_class)->destroy ((IBusObject *)config); } static GConfValue * _to_gconf_value (GVariant *value) { GConfValue *gv = NULL; switch (g_variant_classify (value)) { case G_VARIANT_CLASS_STRING: { gv = gconf_value_new (GCONF_VALUE_STRING); gconf_value_set_string (gv, g_variant_get_string (value, NULL)); } break; case G_VARIANT_CLASS_INT32: { gv = gconf_value_new (GCONF_VALUE_INT); gconf_value_set_int (gv, g_variant_get_int32 (value)); } break; case G_VARIANT_CLASS_BOOLEAN: { gv = gconf_value_new (GCONF_VALUE_BOOL); gconf_value_set_bool (gv, g_variant_get_boolean (value)); } break; case G_VARIANT_CLASS_DOUBLE: { gv = gconf_value_new (GCONF_VALUE_FLOAT); gconf_value_set_float (gv, g_variant_get_double (value)); } break; case G_VARIANT_CLASS_ARRAY: { const GVariantType *element_type = g_variant_type_element (g_variant_get_type (value)); GConfValueType type = GCONF_VALUE_INVALID; if (g_variant_type_equal (element_type, G_VARIANT_TYPE_STRING)) type = GCONF_VALUE_STRING; else if (g_variant_type_equal (element_type, G_VARIANT_TYPE_INT32)) type = GCONF_VALUE_INT; else if (g_variant_type_equal (element_type, G_VARIANT_TYPE_BOOLEAN)) type = GCONF_VALUE_BOOL; else if (g_variant_type_equal (element_type, G_VARIANT_TYPE_DOUBLE)) type = GCONF_VALUE_FLOAT; else g_return_val_if_reached (NULL); gv = gconf_value_new (GCONF_VALUE_LIST); gconf_value_set_list_type (gv, type); GSList *elements = NULL; GVariantIter iter; GVariant *child; g_variant_iter_init (&iter, value); while ((child = g_variant_iter_next_value (&iter)) != NULL) { elements = g_slist_append (elements, _to_gconf_value (child)); g_variant_unref (child); } gconf_value_set_list_nocopy (gv, elements); } break; default: g_return_val_if_reached (NULL); } return gv; } static GVariant * _from_gconf_value (const GConfValue *gv) { g_assert (gv != NULL); switch (gv->type) { case GCONF_VALUE_STRING: return g_variant_new_string (gconf_value_get_string (gv)); case GCONF_VALUE_INT: return g_variant_new_int32 (gconf_value_get_int (gv)); case GCONF_VALUE_FLOAT: return g_variant_new_double (gconf_value_get_float (gv)); case GCONF_VALUE_BOOL: return g_variant_new_boolean (gconf_value_get_bool (gv)); case GCONF_VALUE_LIST: { GVariantBuilder builder; switch (gconf_value_get_list_type (gv)) { case GCONF_VALUE_STRING: g_variant_builder_init (&builder, G_VARIANT_TYPE("as")); break; case GCONF_VALUE_INT: g_variant_builder_init (&builder, G_VARIANT_TYPE("ai")); break; case GCONF_VALUE_FLOAT: g_variant_builder_init (&builder, G_VARIANT_TYPE("ad")); break; case GCONF_VALUE_BOOL: g_variant_builder_init (&builder, G_VARIANT_TYPE("ab")); break; break; default: g_assert_not_reached (); } GSList *list = gconf_value_get_list (gv); GSList *p = list; while (p != NULL) { switch (gconf_value_get_list_type (gv)) { case GCONF_VALUE_STRING: g_variant_builder_add (&builder, "s", gconf_value_get_string ((GConfValue *)p->data)); break; case GCONF_VALUE_INT: g_variant_builder_add (&builder, "i", gconf_value_get_int ((GConfValue *)p->data)); break; case GCONF_VALUE_FLOAT: g_variant_builder_add (&builder, "d", gconf_value_get_float ((GConfValue *)p->data)); break; case GCONF_VALUE_BOOL: g_variant_builder_add (&builder, "b", gconf_value_get_bool ((GConfValue *)p->data)); break; default: g_assert_not_reached (); } p = p->next; } return g_variant_builder_end (&builder); } default: g_assert_not_reached (); } } static gboolean ibus_config_gconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error) { gchar *key; GConfValue *gv; gv = _to_gconf_value (value); if (gv == NULL) { gchar *str = g_variant_print (value, TRUE); g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Can not set config value [%s:%s] to %s.", section, name, str); g_free (str); return FALSE; } key = g_strdup_printf (GCONF_PREFIX"/%s/%s", section, name); gconf_client_set (((IBusConfigGConf *)config)->client, key, gv, error); g_free (key); gconf_value_free (gv); if (*error != NULL) { return FALSE; } return TRUE; } static GVariant * ibus_config_gconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { gchar *key = g_strdup_printf (GCONF_PREFIX"/%s/%s", section, name); GConfValue *gv = gconf_client_get (((IBusConfigGConf *) config)->client, key, NULL); g_free (key); if (gv == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Config value [%s:%s] does not exist.", section, name); return NULL; } GVariant *variant = _from_gconf_value (gv); gconf_value_free (gv); return g_variant_ref_sink (variant); } static GVariant * ibus_config_gconf_get_values (IBusConfigService *config, const gchar *section, GError **error) { gchar *dir = g_strdup_printf (GCONF_PREFIX"/%s", section); gint len = strlen(dir) + 1; GSList *entries = gconf_client_all_entries (((IBusConfigGConf *) config)->client, dir, NULL); g_free (dir); GSList *p; GVariantBuilder *builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); for (p = entries; p != NULL; p = p->next) { GConfEntry *entry = (GConfEntry *)p->data; if (entry->key != NULL && entry->value != NULL) { const gchar *name = entry->key + len; GVariant *value = _from_gconf_value (entry->value); g_variant_builder_add (&builder, "{sv}", name, value); } gconf_entry_free (entry); } g_slist_free (entries); return g_variant_builder_end (&builder); } static gboolean ibus_config_gconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { gchar *key = g_strdup_printf (GCONF_PREFIX"/%s/%s", section, name); gboolean retval = gconf_client_unset (((IBusConfigGConf *)config)->client, key, error); g_free (key); return retval; } IBusConfigGConf * ibus_config_gconf_new (GDBusConnection *connection) { IBusConfigGConf *config; config = (IBusConfigGConf *) g_object_new (IBUS_TYPE_CONFIG_GCONF, "object-path", IBUS_PATH_CONFIG, "connection", connection, NULL); return config; } ibus-1.5.11/conf/gconf/Makefile.in0000644000000000000000000007571312551654256013546 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ libexec_PROGRAMS = ibus-gconf$(EXEEXT) subdir = conf/gconf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" PROGRAMS = $(libexec_PROGRAMS) am_ibus_gconf_OBJECTS = ibus_gconf-main.$(OBJEXT) \ ibus_gconf-config.$(OBJEXT) ibus_gconf_OBJECTS = $(am_ibus_gconf_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_gconf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_gconf_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_gconf_SOURCES) DIST_SOURCES = $(ibus_gconf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(component_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la ibus_gconf_SOURCES = \ main.c \ config.c \ config.h \ $(NULL) ibus_gconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GCONF_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_gconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GCONF_LIBS@ \ $(libibus) \ $(NULL) ibus_gconf_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ gconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ gconf.xml \ *.pyc \ $(NULL) EXTRA_DIST = \ gconf.xml.in \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/gconf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu conf/gconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-gconf$(EXEEXT): $(ibus_gconf_OBJECTS) $(ibus_gconf_DEPENDENCIES) $(EXTRA_ibus_gconf_DEPENDENCIES) @rm -f ibus-gconf$(EXEEXT) $(AM_V_CCLD)$(ibus_gconf_LINK) $(ibus_gconf_OBJECTS) $(ibus_gconf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_gconf-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_gconf-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_gconf-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -MT ibus_gconf-main.o -MD -MP -MF $(DEPDIR)/ibus_gconf-main.Tpo -c -o ibus_gconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_gconf-main.Tpo $(DEPDIR)/ibus_gconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_gconf-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -c -o ibus_gconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_gconf-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -MT ibus_gconf-main.obj -MD -MP -MF $(DEPDIR)/ibus_gconf-main.Tpo -c -o ibus_gconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_gconf-main.Tpo $(DEPDIR)/ibus_gconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_gconf-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -c -o ibus_gconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` ibus_gconf-config.o: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -MT ibus_gconf-config.o -MD -MP -MF $(DEPDIR)/ibus_gconf-config.Tpo -c -o ibus_gconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_gconf-config.Tpo $(DEPDIR)/ibus_gconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_gconf-config.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -c -o ibus_gconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c ibus_gconf-config.obj: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -MT ibus_gconf-config.obj -MD -MP -MF $(DEPDIR)/ibus_gconf-config.Tpo -c -o ibus_gconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_gconf-config.Tpo $(DEPDIR)/ibus_gconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_gconf-config.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_gconf_CFLAGS) $(CFLAGS) -c -o ibus_gconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-componentDATA: $(component_DATA) @$(NORMAL_INSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(componentdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(componentdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(componentdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(componentdir)" || exit $$?; \ done uninstall-componentDATA: @$(NORMAL_UNINSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(componentdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(componentdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-componentDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-componentDATA uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-componentDATA \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libexecPROGRAMS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-componentDATA uninstall-libexecPROGRAMS .PRECIOUS: Makefile gconf.xml: gconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/conf/gconf/Makefile.am0000644000000000000000000000335512551654123013517 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libexec_PROGRAMS = \ ibus-gconf \ $(NULL) ibus_gconf_SOURCES = \ main.c \ config.c \ config.h \ $(NULL) ibus_gconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GCONF_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_gconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GCONF_LIBS@ \ $(libibus) \ $(NULL) ibus_gconf_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ gconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ gconf.xml \ *.pyc \ $(NULL) EXTRA_DIST = \ gconf.xml.in \ $(NULL) gconf.xml: gconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk ibus-1.5.11/conf/memconf/0000755000000000000000000000000012551654527012075 500000000000000ibus-1.5.11/conf/memconf/memconf.xml.in0000644000000000000000000000067012551654123014563 00000000000000 org.freedesktop.IBus.Config On-memory Config Component @libexecdir@/ibus-memconf @VERSION@ Peng Huang <shawn.p.huang@gmail.com>, modified by the Chromium OS Authors GPL https://github.com/ibus/ibus/wiki ibus ibus-1.5.11/conf/memconf/config.h0000644000000000000000000000366412551654123013434 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (c) 2010, Google Inc. All rights reserved. * Copyright (C) 2010 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __CONFIG_MEMCONF_H__ #define __CONFIG_MEMCONF_H__ #include #define IBUS_TYPE_CONFIG_MEMCONF \ (ibus_config_memconf_get_type ()) #define IBUS_CONFIG_MEMCONF(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_MEMCONF, IBusConfigMemconf)) #define IBUS_CONFIG_MEMCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_MEMCONF, IBusConfigMemconfClass)) #define IBUS_IS_CONFIG_MEMCONF(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_MEMCONF)) #define IBUS_IS_CONFIG_MEMCONF_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_MEMCONF)) #define IBUS_CONFIG_MEMCONF_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_MEMCONF, IBusConfigMemconfClass)) typedef struct _IBusConfigMemconf IBusConfigMemconf; GType ibus_config_memconf_get_type (void); IBusConfigMemconf *ibus_config_memconf_new (GDBusConnection *connection); #endif ibus-1.5.11/conf/memconf/main.c0000644000000000000000000000452612551654123013104 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (c) 2010, Google Inc. All rights reserved. * Copyright (C) 2010 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "config.h" static IBusBus *bus = NULL; static IBusConfigMemconf *config = NULL; /* options */ static gboolean ibus = FALSE; static gboolean verbose = FALSE; static const GOptionEntry entries[] = { { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus", NULL }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL }, { NULL }, }; static void ibus_disconnected_cb (IBusBus *bus, gpointer user_data) { ibus_quit (); } static void ibus_memconf_start (void) { ibus_init (); bus = ibus_bus_new (); if (!ibus_bus_is_connected (bus)) { exit (-1); } g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL); config = ibus_config_memconf_new (ibus_bus_get_connection (bus)); ibus_bus_request_name (bus, IBUS_SERVICE_CONFIG, 0); ibus_main (); } gint main (gint argc, gchar **argv) { GError *error = NULL; GOptionContext *context; setlocale (LC_ALL, ""); context = g_option_context_new ("- ibus memconf component"); g_option_context_add_main_entries (context, entries, "ibus-memconf"); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("Option parsing failed: %s\n", error->message); exit (-1); } ibus_memconf_start (); return 0; } ibus-1.5.11/conf/memconf/config.c0000644000000000000000000001754112551654123013426 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (c) 2010, Google Inc. All rights reserved. * Copyright (C) 2010 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include "config.h" typedef struct _IBusConfigMemconfClass IBusConfigMemconfClass; struct _IBusConfigMemconf { IBusConfigService parent; GHashTable *values; }; struct _IBusConfigMemconfClass { IBusConfigServiceClass parent; }; /* functions prototype */ static void ibus_config_memconf_class_init (IBusConfigMemconfClass *class); static void ibus_config_memconf_init (IBusConfigMemconf *config); static void ibus_config_memconf_destroy (IBusConfigMemconf *config); static gboolean ibus_config_memconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error); static GVariant *ibus_config_memconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); static GVariant *ibus_config_memconf_get_values (IBusConfigService *config, const gchar *section, GError **error); static gboolean ibus_config_memconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); G_DEFINE_TYPE (IBusConfigMemconf, ibus_config_memconf, IBUS_TYPE_CONFIG_SERVICE) static void ibus_config_memconf_class_init (IBusConfigMemconfClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); IBUS_OBJECT_CLASS (object_class)->destroy = (IBusObjectDestroyFunc) ibus_config_memconf_destroy; IBUS_CONFIG_SERVICE_CLASS (object_class)->set_value = ibus_config_memconf_set_value; IBUS_CONFIG_SERVICE_CLASS (object_class)->get_value = ibus_config_memconf_get_value; IBUS_CONFIG_SERVICE_CLASS (object_class)->get_values = ibus_config_memconf_get_values; IBUS_CONFIG_SERVICE_CLASS (object_class)->unset_value = ibus_config_memconf_unset_value; } static void ibus_config_memconf_init (IBusConfigMemconf *config) { config->values = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)g_variant_unref); } static void ibus_config_memconf_destroy (IBusConfigMemconf *config) { g_hash_table_destroy (config->values); IBUS_OBJECT_CLASS (ibus_config_memconf_parent_class)->destroy ((IBusObject *)config); } static gboolean ibus_config_memconf_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error) { g_assert (IBUS_IS_CONFIG_MEMCONF (config)); g_assert (section); g_assert (name); g_assert (value); g_assert (error == NULL || *error == NULL); gchar *key = g_strdup_printf ("%s:%s", section, name); g_hash_table_insert (IBUS_CONFIG_MEMCONF (config)->values, key, g_variant_ref_sink (value)); ibus_config_service_value_changed (config, section, name, value); return TRUE; } static GVariant * ibus_config_memconf_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { g_assert (IBUS_IS_CONFIG_MEMCONF (config)); g_assert (section); g_assert (name); g_assert (error == NULL || *error == NULL); gchar *key = g_strdup_printf ("%s:%s", section, name); GVariant *value = (GVariant *)g_hash_table_lookup (IBUS_CONFIG_MEMCONF (config)->values, key); g_free (key); if (value != NULL) { g_variant_ref (value); } else if (error != NULL) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Config value [%s:%s] does not exist.", section, name); } return value; } static GVariant * ibus_config_memconf_get_values (IBusConfigService *config, const gchar *section, GError **error) { g_assert (IBUS_IS_CONFIG_MEMCONF (config)); g_assert (section); g_assert (error == NULL || *error == NULL); GHashTableIter iter; const gchar *key; GVariant *value; GVariantBuilder *builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); g_hash_table_iter_init (&iter, IBUS_CONFIG_MEMCONF (config)->values); while (g_hash_table_iter_next (&iter, (gpointer *)&key, (gpointer *)&value)) { gchar **v = g_strsplit (key, ":", 2); if (g_strcmp0 (v[0], section) == 0) { g_variant_builder_add (builder, "{sv}", v[1], value); } g_strfreev(v); } return g_variant_builder_end (builder); } static gboolean ibus_config_memconf_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { g_assert (IBUS_IS_CONFIG_MEMCONF (config)); g_assert (section); g_assert (name); g_assert (error == NULL || *error == NULL); gchar *key = g_strdup_printf ("%s:%s", section, name); gboolean retval = g_hash_table_remove (IBUS_CONFIG_MEMCONF (config)->values, key); g_free (key); if (retval) { ibus_config_service_value_changed (config, section, name, g_variant_new_tuple (NULL, 0)); } else { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Config value [%s:%s] does not exist.", section, name); } return retval; } IBusConfigMemconf * ibus_config_memconf_new (GDBusConnection *connection) { IBusConfigMemconf *config; config = (IBusConfigMemconf *) g_object_new (IBUS_TYPE_CONFIG_MEMCONF, "object-path", IBUS_PATH_CONFIG, "connection", connection, NULL); return config; } ibus-1.5.11/conf/memconf/Makefile.in0000644000000000000000000007720712551654257014077 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2010, Google Inc. All rights reserved. # Copyright (c) 2007-2010 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_MEMCONF_TRUE@libexec_PROGRAMS = $(am__EXEEXT_1) @ENABLE_MEMCONF_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) subdir = conf/memconf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = ibus-memconf$(EXEEXT) am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" PROGRAMS = $(libexec_PROGRAMS) $(noinst_PROGRAMS) am_ibus_memconf_OBJECTS = ibus_memconf-main.$(OBJEXT) \ ibus_memconf-config.$(OBJEXT) ibus_memconf_OBJECTS = $(am_ibus_memconf_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_memconf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_memconf_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_memconf_SOURCES) DIST_SOURCES = $(ibus_memconf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(component_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la memconf_programs = \ ibus-memconf \ $(NULL) ibus_memconf_SOURCES = \ main.c \ config.c \ config.h \ $(NULL) ibus_memconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_memconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ $(libibus) \ $(NULL) ibus_memconf_DEPENDENCIES = \ $(libibus) \ $(NULL) @ENABLE_MEMCONF_TRUE@component_DATA = \ @ENABLE_MEMCONF_TRUE@ memconf.xml \ @ENABLE_MEMCONF_TRUE@ $(NULL) @ENABLE_MEMCONF_TRUE@componentdir = $(pkgdatadir)/component CLEANFILES = \ memconf.xml \ $(NULL) EXTRA_DIST = \ memconf.xml.in \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/memconf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu conf/memconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-memconf$(EXEEXT): $(ibus_memconf_OBJECTS) $(ibus_memconf_DEPENDENCIES) $(EXTRA_ibus_memconf_DEPENDENCIES) @rm -f ibus-memconf$(EXEEXT) $(AM_V_CCLD)$(ibus_memconf_LINK) $(ibus_memconf_OBJECTS) $(ibus_memconf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_memconf-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_memconf-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_memconf-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -MT ibus_memconf-main.o -MD -MP -MF $(DEPDIR)/ibus_memconf-main.Tpo -c -o ibus_memconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_memconf-main.Tpo $(DEPDIR)/ibus_memconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_memconf-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -c -o ibus_memconf-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_memconf-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -MT ibus_memconf-main.obj -MD -MP -MF $(DEPDIR)/ibus_memconf-main.Tpo -c -o ibus_memconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_memconf-main.Tpo $(DEPDIR)/ibus_memconf-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_memconf-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -c -o ibus_memconf-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` ibus_memconf-config.o: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -MT ibus_memconf-config.o -MD -MP -MF $(DEPDIR)/ibus_memconf-config.Tpo -c -o ibus_memconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_memconf-config.Tpo $(DEPDIR)/ibus_memconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_memconf-config.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -c -o ibus_memconf-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c ibus_memconf-config.obj: config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -MT ibus_memconf-config.obj -MD -MP -MF $(DEPDIR)/ibus_memconf-config.Tpo -c -o ibus_memconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_memconf-config.Tpo $(DEPDIR)/ibus_memconf-config.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='ibus_memconf-config.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_memconf_CFLAGS) $(CFLAGS) -c -o ibus_memconf-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-componentDATA: $(component_DATA) @$(NORMAL_INSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(componentdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(componentdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(componentdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(componentdir)" || exit $$?; \ done uninstall-componentDATA: @$(NORMAL_UNINSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(componentdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(componentdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-componentDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-componentDATA uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool clean-noinstPROGRAMS \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-componentDATA install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libexecPROGRAMS install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-componentDATA \ uninstall-libexecPROGRAMS .PRECIOUS: Makefile memconf.xml: memconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/conf/memconf/Makefile.am0000644000000000000000000000355012551654123014044 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2010, Google Inc. All rights reserved. # Copyright (c) 2007-2010 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la memconf_programs = \ ibus-memconf \ $(NULL) if ENABLE_MEMCONF libexec_PROGRAMS = $(memconf_programs) else noinst_PROGRAMS = $(memconf_programs) endif ibus_memconf_SOURCES = \ main.c \ config.c \ config.h \ $(NULL) ibus_memconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) ibus_memconf_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ $(libibus) \ $(NULL) ibus_memconf_DEPENDENCIES = \ $(libibus) \ $(NULL) if ENABLE_MEMCONF component_DATA = \ memconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component endif CLEANFILES = \ memconf.xml \ $(NULL) EXTRA_DIST = \ memconf.xml.in \ $(NULL) memconf.xml: memconf.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk ibus-1.5.11/conf/Makefile.in0000644000000000000000000005677512551654256012461 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = conf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = dconf gconf memconf am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ENABLE_GCONF_TRUE@GCONF_DIR = \ @ENABLE_GCONF_TRUE@ gconf \ @ENABLE_GCONF_TRUE@ $(NULL) MEMCONF_DIR = \ memconf \ $(NULL) @ENABLE_DCONF_TRUE@DCONF_DIR = \ @ENABLE_DCONF_TRUE@ dconf \ @ENABLE_DCONF_TRUE@ $(NULL) SUBDIRS = \ $(DCONF_DIR) \ $(GCONF_DIR) \ $(MEMCONF_DIR) \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu conf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/conf/Makefile.am0000644000000000000000000000215412551654123012417 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ENABLE_GCONF GCONF_DIR = \ gconf \ $(NULL) endif MEMCONF_DIR = \ memconf \ $(NULL) if ENABLE_DCONF DCONF_DIR = \ dconf \ $(NULL) endif SUBDIRS = \ $(DCONF_DIR) \ $(GCONF_DIR) \ $(MEMCONF_DIR) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/po/0000755000000000000000000000000012551654543010140 500000000000000ibus-1.5.11/po/bg.po0000644000000000000000000005326512551654123011015 00000000000000# translation of ibus.pot to Bulgarian # Bulgarian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Valentin Laskov , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Valentin Laskov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Хоризонтално" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Вертикално" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Горен лÑв ъгъл" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Горен деÑен ъгъл" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Долен лÑв ъгъл" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Долен деÑен ъгъл" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "По избор" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Винаги" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ð·Ð° IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° превключване към Ñледващ в ÑпиÑъка метод за пиÑане" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Следващ метод:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° превключване към предишен в ÑпиÑъка метод за пиÑане" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Предишен метод:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° включване или изключване на метода за пиÑане" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Разрешаване или забрана:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Разреши:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Забрани:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Клавишни комбинации" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Задава ориентациÑта на кандидатите в таблицата за преглед" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° кандидатите:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Задава как ibus да показва или Ñкрива лентата за езика" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° панела Ñ ÐµÐ·Ð¸Ñ†Ð¸:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Показвай икона в зоната за уведомÑване" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Показва името на метода за пиÑане на лентата за език" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Показва името на метода за пиÑане на лентата за език при поÑтавена отметка" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Вгражда предв. редактиран текÑÑ‚ в прозореца на приложението" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Вгражда Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ от метода за пиÑане в прозореца на приложението" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Използван шрифт по избор:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Шрифт и Ñтил" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ОÑновни" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_ДобавÑне" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Ð”Ð¾Ð±Ð°Ð²Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ в ÑпиÑъка Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸ методи за пиÑане" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Премахване" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Премахва Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане от ÑпиÑъка Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸ методи" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "Ðа_горе" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "ПремеÑтва нагоре Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане в ÑпиÑъка Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸ методи" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "Ðа_долу" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "ПремеÑтва надолу Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане в ÑпиÑъка Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸ методи" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_ОтноÑно" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Показва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_ПредпочитаниÑ" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Показва наÑтройки на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Метод за пиÑане" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Използване на ÑиÑтемната клавиатурна подредба" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Използване на ÑиÑтемната клавиатурна подредба (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Клавиатурна подредба" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "СподелÑй ÑÑŠÑ‰Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане за вÑички приложениÑ" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ÐаÑтройки на Ð³Ð»Ð¾Ð±Ð°Ð»Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Допълнителни" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nИнтелигентен организатор на методите за пиÑане\nСтраница на проекта: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Стартирай ibus при влизане" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Стартиране" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "ОтноÑно" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "Зат_варÑне" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Предв. заредени механизми" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Предварително заредени механизми по време на Ñтартирането на ibus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "Ред на механизмите" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "Съхранен ред на механизми в ÑпиÑъка Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¸ за пиÑане" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Превключващи клавишни комбинации" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Разреши клавишните комбинации" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° включване на метода за пиÑане" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Забрани клавишните комбинации" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° изключване на метода за пиÑане" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Клавишни комбинации за Ñледващ механизъм" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° превключване към ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð² ÑпиÑъка метод за пиÑане" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Клавишни комбинации за предишен механизъм" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "Клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° превключване към Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ð² ÑпиÑъка метод за пиÑане" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Ðвтом. Ñкриване" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° панела Ñ ÐµÐ·Ð¸Ñ†Ð¸" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° панела Ñ ÐµÐ·Ð¸Ñ†Ð¸. 0 = Горен лÑв ъгъл, 1 = Горен деÑен ъгъл, 2 = Долен лÑв ъгъл, 3 = Долен деÑен ъгъл, 4 = По избор" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° таблицата за преглед" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° таблицата за преглед. 0 = Хоризонтално, 1 = Вертикално" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Показва името на метода за пиÑане" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Използване на избран шрифт" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Използване на избран шрифт за панела Ñ ÐµÐ·Ð¸Ñ†Ð¸" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Шрифт по избор" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Име на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ ÑˆÑ€Ð¸Ñ„Ñ‚ за панела Ñ ÐµÐ·Ð¸Ñ†Ð¸" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Вграден редактиран текÑÑ‚" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Вгражда предв. редактиран текÑÑ‚ в прозореца на приложението" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Използва Ð³Ð»Ð¾Ð±Ð°Ð»Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´ за пиÑане" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Разрешава метод за пиÑане по подразбиране" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Разрешава метод за пиÑане по подразбиране, когато приложението е на фокуÑ" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf запазва префикÑите на имената" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ПрефикÑи на DConf клавишите за Ñпиране конверÑиÑта на имената" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Друг" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Език: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Клавиатурна подредба: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Ðвтор: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "ОпиÑание:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Избор на метод за пиÑане" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Клав." #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Задава Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ð·Ð° IBUS" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Клавишни комбинации" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Код на клавиш:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Модифициращи:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "П_рилагане" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Изтриване" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "МолÑ, натиÑнете клавиш (или ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸).\nДиалогът ще Ñе затвори при отпуÑкането на клавиша." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "МолÑ, натиÑнете клавиш (или ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Отказване" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_Добре" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus демонът не е Ñтартиран. Да го Ñтартирам ли Ñега?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus беше Ñтартиран! Ðко не можете да използвате IBus, добавете Ñледните редове във файла $HOME/.bashrc; Ñлед което излезте и влезте отново.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus демонът не може да Ñе Ñтартира вече %d Ñекунди" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Изберете клавишна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "СпиÑък Ñамо на имена на механизми" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Ðе мога да Ñе Ñвържа Ñ IBus.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "език: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Ðе е зададен механизъм.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Задаването на глобален механизъм не уÑпÑ.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Получаването на глобален механизъм не уÑпÑ.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Употреба: %s КОМÐÐДР[ОПЦИЯ...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Команди:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s е непозната команда!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus е интелигентен начин за избор на метод за въвеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Валентин ЛаÑков" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ПредпочитаниÑ" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "РеÑтартиране" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Спиране на програмата" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/Makefile.in.in0000644000000000000000000001575612551654176012552 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # Copyright (C) 2004-2008 Rodney Dawes # # This file may be copied and used freely without restrictions. It may # be used in projects which are not available under a GNU Public License, # but which still want to provide support for the GNU gettext functionality. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ localedir = @localedir@ subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS POTFILES = \ # This comment gets stripped out CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V)) INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@; .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $* $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< .po.gmo: $(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info ctags tags CTAGS TAGS ID: # Define this as empty until I found a useful application. install-exec installcheck: uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot rm -f missing notexist srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m if [ -r missing -o -r notexist ]; then \ exit 1; \ fi mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/po/POTFILES.in0000644000000000000000000000253212551654123011631 00000000000000# Files with translatable strings. # Please keep this file in alphabetical order. [type: gettext/glade]setup/setup.ui bus/dbusimpl.c bus/engineproxy.c bus/inputcontext.c bus/panelproxy.c data/ibus.schemas.in ibus/__init__.py ibus/_config.py.in ibus/_gtk.py ibus/application.py ibus/ascii.py ibus/attribute.py ibus/bus.py ibus/common.py ibus/engine.py ibus/exception.py ibus/factory.py ibus/interface/__init__.py ibus/interface/iconfig.py ibus/interface/iengine.py ibus/interface/ienginefactory.py ibus/interface/iibus.py ibus/interface/ipanel.py ibus/keysyms.py ibus/lang.py ibus/lookuptable.py ibus/modifier.py ibus/object.py ibus/panel.py ibus/property.py ibus/utility.py setup/engineabout.py setup/enginecombobox.py setup/enginedialog.py setup/enginetreeview.py setup/ibus-setup.desktop.in setup/keyboardshortcut.py setup/main.py src/ibusbus.c src/ibusconfig.c src/ibusengine.c src/ibusfactory.c src/ibushotkey.c src/ibusinputcontext.c src/ibusobject.c src/ibuspanelservice.c src/ibusproxy.c src/ibusregistry.c src/ibusservice.c src/ibusutil.c src/keyname-table.h tools/main.vala ui/gtk3/application.vala ui/gtk3/candidatearea.vala ui/gtk3/candidatepanel.vala ui/gtk3/handle.vala ui/gtk3/iconwidget.vala ui/gtk3/keybindingmanager.vala ui/gtk3/panel.vala ui/gtk3/pango.vala ui/gtk3/property.vala ui/gtk3/propertypanel.vala ui/gtk3/separator.vala ui/gtk3/switcher.vala ibus-1.5.11/po/ia.po0000644000000000000000000004654312551654123011017 00000000000000# translation of ibus.pot to Interlingua # Interlingua translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Nik Kalach , 2013 # Nik Kalach , 2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Nik Kalach \n" "Language-Team: Interlingua \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertical" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Angulo superior siniste" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Angelo superior dextere" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Angulo inferior sinistre" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Angulo inferior dextere" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Personalisate" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Sempre" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferentias IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Le claves acceleratori pro cambiar al methodo de ingresso sequente in le lista" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Methodo de ingresso sequente:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Le claves acceleratori pro cambiar al methodo de ingresso precedente in le lista" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Methodo de ingresso precedente" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Activar o disactivar:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Activar:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Disactivar:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Claves acceleratori" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Configurar le orientation del tabula de cerca de candidatos" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientation de candidatos:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Configurar le comportamento de ibus super como monstrar o occultar le barra de lingua" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Position del pannello de lingua:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Monstrar le icone in le area de indicatores" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Monstrar le nomine del methodo de ingresso sur le barra de lingua" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Monstar le nomine del methodo de ingresso sur le barra de lingua quando le quadrato de selection es marcate " #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Inserer le texto pre-editate in le fenestra de application" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Inserer le texto pre-editate del methodo de ingresso in le fenestra de application" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Usar characteres personalisate:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Typo de characteres e stilo" #: ../setup/setup.ui.h:34 msgid "General" msgstr "General" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Adder" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Adder le methodo de ingresso seligite al methodos de ingresso active" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Remover" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Remover le methodo de ingresso seligite del methodos de ingresso active" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Supra" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Mover in alto le methodo de ingresso seligite in le lista de methodos de ingresso active" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Infra" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Mover in basso le methodo de ingresso seligite in le lista de methodos de ingresso" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "A _proposito" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Monstrar le information del methodo de ingresso seligite" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Preferentias" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Monstrar le configuration del methodo de ingresso seligite" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Methodo de ingresso" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Usar le disposition de claviero del systema" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Usar le disposition de claviero del systema (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Disposition de claviero" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Usar le mesme methodo de ingresso pro tote le applicationes" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Configuration del methodo de ingresso global" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avantiate" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nLe bus de ingresso intelligente\nPagina del projecto: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Initiar ibus al connexion" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Initiation" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "A proposito" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Clauder" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Precargar le ingenios" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Precargar le ingenios durante le initiation de ibus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "Ordine de ingenios" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "Le ordine de ingenios registrate in le lista de methodos de ingresso" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "Demora in millisecundas ante le demonstration del fenestra de commutator de methodos de ingresso" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Definir le demora (in ms) ante le demonstration del fenestra de commutator de methodos de ingresso. Le valor predefinite es 400. 0 = monstrar immediatemente le fenestra. 0 < demora (in ms). 0 > non monstrar le fenestra e commutar inter ingenios precedente o sequente." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Activator de claves acceleratori" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activator de claves acceleratori pro gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Activar claves acceleratori" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Le combination de claves pro activar le methodo de ingresso" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Disactivar claves acceleratori" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Le combination de claves pro disactivar le methodo de ingresso" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Claves acceleratori del ingenio sequente" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Le combination de claves pro cambiar al methodo de ingresso sequente in le lista" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Claves acceleratori del ingenio precedente" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "Le combination de claves pro cambiar al methodo de ingresso precedente in le lista" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Occultar automaticamente" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Position del pannello de lingua" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "Le position del pannello de lingua. 0 = angulo superior siniste, 1 = angulo superior dextere, 2 = angulo inferior sinistre, 3 = angulo inferior dextere, 4 = Personalisate" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Orientation del tabula de cerca" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation del tabula de cerca. 0 = horizontal, 1 = vertical" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Monstrar le nomine del methodo de ingresso" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Usar characteres personalisate" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Usar un typo de characteres personalisate pro le pannello de lingua" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Characteres personalisate" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Nomine del typo de characteres personalisate pro le pannello de lingua" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Inserer le texto pre-editate" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Inserer le texto pre-editate in le fenestra de application" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Usar le methodo de ingresso global" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Activar le methodo de ingresso predefinite" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Activar le methodo de ingresso predefinite quando le application recipe le foco de ingresso" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf preserva le prefixos de nomines" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos de claves DConf pro parar le conversion de nomines" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Altere" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Lingua: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposition de claviero: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Description:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Seliger un methodo de ingresso" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Definir preferentias IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Claves acceleratori" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Codice de clave:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modificatores:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Applicar" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Deler" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Preme un clave (o un combination de claves).\nLe dialogo se claudera quando le clave es liberate." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Preme un clave (o combination de claves)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "A_nnullar" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Usa accellerator con majuscula pro revinir al methodo previe de ingresso" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Le demonio IBus non functiona. Initiar lo?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus se ha initiate! Si tu non pote usar IBus, adde le lineas sequente al file $HOME/.bashrc e reconnecte.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Le demonio IBus non pote initiar se in %d secundas" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selige le clave acceleratori pro %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "cambiamento de methodos de ingresso" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "Monstrar solmente nomines de ingenios" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Le connexion a IBus es impossibile.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "lingua: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Necun ingenio es configurate.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Falta al configuration del ingenio global.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Falta al obtener le ingenio global.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Usage: %s COMMANDO [OPTION...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Commandos:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s es un commando incognite!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus es un bus de ingresso intelligente pro Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Nik Kalach " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Preferentias" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Reinitiar" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Quitar" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/hu.po0000644000000000000000000004707612551654123011044 00000000000000# translation of ibus.pot to Hungarian # Hungarian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # kelemeng , 2011 # kelemeng , 2011 # Sulyok Péter , 2009 # Zoltan Hoppár , 2012-2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Zoltan Hoppár \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Vízszintes" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "FüggÅ‘leges" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Bal felsÅ‘ sarok" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Jobb felsÅ‘ sarok" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Bal alsó sarok" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Jobb alsó sarok" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Egyéni" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Mindig" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus beállítások" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Gyorsbillentyűk a következÅ‘ beviteli módra váltáshoz" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "KövetkezÅ‘ beviteli mód:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Gyorsbillentyűk az elÅ‘zÅ‘ beviteli módra való váltáshoz" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ElÅ‘zÅ‘ beviteli mód:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "…" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Gyorsbillentyűk a beviteli mód ki- vagy bekapcsolásához" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Engedélyezés vagy tiltás:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Engedélyezés:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Letiltás:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Gyorsbillentyűk" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Jelöltek tájolásának beállítása a keresési táblában" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Jelöltek tájolása:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "A nyelv panel megjelenítési vagy elrejtési módjának beállítása" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "A nyelvi panel elhelyezése:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Ikon megjelenítése az értesítési területen" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Beviteli mód megjelenítése a nyelvi eszköztáron" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Beviteli mód nevének megjelenítése a nyelv panelen" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "ElÅ‘szerkesztett szöveg beágyazása az alkalmazás ablakába" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "A beviteli mód elÅ‘szerkesztett szövegének beágyazása az alkalmazás ablakába" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Egyéni betűkészlet használata:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Betűkészlet és stílus" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Ãltalános" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "Hozzá_adás" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "A kiválasztott beviteli mód hozzáadása az engedélyezett beviteli módokhoz" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Eltávolítás" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "A kiválasztott beviteli mód eltávolítása az engedélyezett beviteli módok közül" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Fel" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "A kiválasztott beviteli mód mozgatása felfelé az engedélyezett beviteli módok között" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Le" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "A kiválasztott beviteli mód mozgatása lefelé az engedélyezett beviteli módok között" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Névjegy" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Információk megjelenítése a kiválasztott beviteli módról" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "B_eállítások" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Jelenítse meg a kiválasztott beviteli mód beállításait" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Beviteli mód" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Rendszer-billentyűzetkiosztás használata" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "A rendszer billentyűzetkiosztásának (XKB) használata" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Billentyűzetkiosztás" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Azonos beviteli mód megosztása minden alkalmazás közt" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Globális bevitelimód-beállítások" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Speciális" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nAz intelligens beviteli busz\nHonlap: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Az IBus indítása bejelentkezéskor" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Indulás" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Névjegy" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Bezárás" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Alrendszerek elÅ‘töltése" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Alrendszerek elÅ‘töltése az ibus indításakor" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "Alrendszerek sorrendje" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "Elmentett motorok sorrendje a beviteli metódus listájában" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "Felugró ablak késése az IME váltóablaknál" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Beállítja a felugró ablak késését, hogy megjeleníthesse az IME váltó ablakot. Az alapértelmezett 400.0 = Azonnal megjelenik. 0 < Késés milliszekundumban. 0 > Nem jeleníti meg az ablakot, és átváltja a köv./elÅ‘zÅ‘ motorra." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Aktiválja a gyorsbillentyűket" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Alkalmazza a gyorsbillentyűket a gtk_accelerator_parse részére" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Gyorsbillentyűk engedélyezése" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Gyorsbillentyűk a beviteli mód bekapcsolásához " #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Gyorsbillentyűk letiltása" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Gyorsbillentyűk a beviteli mód kikapcsolásához " #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "KövetkezÅ‘ alrendszer gyorsbillentyűi" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "A lista következÅ‘ beviteli módjára váltáshoz használandó gyorsbillentyű" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "ElÅ‘zÅ‘ alrendszer gyorsbillentyűi" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "A lista elÅ‘zÅ‘ beviteli módjára váltáshoz használandó gyorsbillentyű" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Automatikus elrejtés" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Nyelvi panel pozíciója" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "A nyelv panel pozíciója. 0 = bal felsÅ‘ sarok, 1 = jobb felsÅ‘ sarok, 2 = bal alsó sarok, 3 = jobb alsó sarok, 4 = egyéni" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Keresési tábla tájolása" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Kikeresési tábla tájolása. 0 = vízszintes, 1 = függÅ‘leges" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Beviteli mód megjelenítése" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Egyéni betűkészlet használata" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Egyéni betűkészlet használata a nyelv panelen" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Egyéni betűkészlet" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Egyéni betűkészlet neve a nyelv panelhez" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "ElÅ‘szerkesztett szöveg beágyazása" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "ElÅ‘szerkesztett szöveg beágyazása az alkalmazásablakba" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Globális beviteli mód használata" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Beviteli mód engedélyezése alapértelmezésben" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Beviteli mód engedélyezése alapértelmezésben, amikor az alkalmazás beviteli fókuszba kerül" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf megtartja a név elÅ‘tagokat" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "A DConf billentyűket prefixálja hogy megállítsa a név konverziókat" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Egyéb" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Nyelv: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Billentyűzetkiosztás: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "SzerzÅ‘: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Leírás:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Válasszon beviteli módot" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Bill." #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus beállításai" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Billentyűkód:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Módosítók:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Alkalmaz" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Törlés" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt).\nAz ablak a billentyű felengedésekor bezáródik." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt)." #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "Mé_gse" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Alkalmazza a shift billentyűt a gyors visszaváltáshoz, hogy elérje a korábbi beviteli módot" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Az IBus daemon nem működik. El kívánja indítani?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus daemon nem indítható %d mp belül." #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s gyorsbillentyűjének kiválasztása" #: ../setup/main.py:377 msgid "switching input methods" msgstr "beviteli módok váltása" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "Csak az alrendszerek nevét listázza" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Nem tudok csatlakozni az IBus-hoz.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "nyelv: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Nincs motor beállítva.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Ãltalános motor beállítása nem sikerült.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Ãltalános motor beszerzése nem sikerült.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Használat: %s PARANCS [OPCIÓK...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Parancsok:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s ismeretlen parancs!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Az IBus egy intelligens beviteli busz Linux/Unix rendszerekhez" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Zoltan Hoppar , 2012.\n\nLaunchpad Contributions:\n Gabor Kelemen https://launchpad.net/~kelemeng\n Muszela Balázs https://launchpad.net/~bazsi86-deactivatedaccount\n Ocsovszki Dorián https://launchpad.net/~gorkhaan\n Robert Roth https://launchpad.net/~evfool\n Token https://launchpad.net/~kozmad\n fergekolferol https://launchpad.net/~ferge-kolferol" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Beállítások" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Újraindítás" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Kilépés" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/fr.po0000644000000000000000000006077012551654123011033 00000000000000# translation of ibus.pot to French # French translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Charles-Antoine Couret , 2009 # Sam Friedmann , 2010 # Jérôme Fenal , 2012-2013 # dominique bribanick , 2011,2014 # Julien Humbert , 2009-2015 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-07-13 19:48+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-07-10 09:29-0400\n" "Last-Translator: Julien Humbert \n" "Language-Team: French \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Zanata 3.6.2\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontale" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Verticale" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Coin supérieur gauche" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Coin supérieur droit" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Coin inférieur gauche" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Coin inférieur droit" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Personnalisée" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "Ne pas afficher" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Cacher automatiquement" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Toujours afficher" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Préférences de IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Raccourci clavier pour passer à la méthode d'entrée suivante de la liste" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Méthode d'entrée suivante :" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Raccourci clavier pour revenir à la méthode d'entrée précédente de la liste" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Méthode d'entrée précédente :" #: ../setup/setup.ui.h:16 msgid "..." msgstr "…" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "" "Sélection des raccourcis claviers pour activer ou désactiver les méthodes " "d'entrées" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Activer / désactiver :" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Activer :" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Désactiver :" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Raccourcis clavier" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Permet de choisir l'orientation de la liste des candidats" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientation de la liste des candidats :" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Permet de choisir l'affichage de la barre de langue d'ibus" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Afficher le panneau de propriété :" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Afficher la barre de langue :" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Afficher l'icône dans la boîte à miniatures" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Afficher le nom de la méthode d'entrée sur la barre de langue" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Afficher le nom de la méthode d'entrée sur la barre de langue lorsque la " "case est cochée" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Insérer le texte en cours d'édition dans la fenêtre de l'application" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" "Insérer le texte en cours d'édition par la méthode d'entrée dans la fenêtre " "de l'application" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Utiliser une police personnalisée :" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Police et Style" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Général" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "A_jouter" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" "Ajouter la méthode d'entrée selectionnée aux méthodes d'entrée actives" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Enlever" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Supprimer la méthode d'entrée sélectionnée des méthodes d'entrées actives" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Monter" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Déplacer vers le haut la méthode d'entrée sélectionnée dans la liste des " "méthodes d'entrée actives" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Descendre" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Déplacer vers le bas la méthode d'entrée sélectionnée dans la liste des " "méthodes d'entrée actives" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "À _propos" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Afficher les informations de la méthode d'entrée sélectionnée" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Préférences" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Afficher le paramétrage de la méthode d'entrée sélectectionnée" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "La méthode de saisie active peut être modifiée vers l'une des " "méthodes pré-sélectionnées dans la liste ci-dessous en tapant le raccourci " "clavier ou en cliquant sur l'icône du panneau." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 msgid "Input Method" msgstr "Méthode d'entrée" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 msgid "Use system keyboard layout" msgstr "Utiliser la disposition clavier système" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 msgid "Use system keyboard (XKB) layout" msgstr "Utiliser la disposition clavier système (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Disposition du clavier" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 msgid "Share the same input method among all applications" msgstr "Partager la même méthode d'entrée pour toutes les applications" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Configuration de la méthode d'éntrée globale" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avancé" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "The intelligent input bus\n" "Page d'accueil : https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Démarrer IBus lors de la connexion" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Démarrage" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 #: ../ui/gtk3/panel.vala:1113 msgid "About" msgstr "À propos" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 msgid "_Close" msgstr "_Fermer" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Précharger les moteurs" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Précharger les moteurs au démarrage d'ibus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Ordre des moteurs" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "L'ordre des moteurs enregistrés dans la liste des méthodes d'entrées" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "" "Délai en millisecondes d'affichage de la fenêtre du commutateur de méthode " "d'entrée" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "Définit le délai en millisecondes d'affichage de la fenêtre du commutateur " "de méthode d'entrée. La valeur par défaut est de 400. 0 = montrer " "immédiatement la fenêtre. 0 < délai en millisecondes. 0 > ne pas " "afficher la fenêtre et permuter avec le moteur précédent ou suivant." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Numéro de version enregistré" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "Le numéro de version enregistré sera utilisé pour vérifier la différence " "entre la version d'une installation précédente de ibus et l'actuelle." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "Dispositions latines ne disposant pas d'ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" "La disposition US est ajoutée aux dispositions latines. Les variantes " "peuvent être omises." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "Utiliser xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Lancer xmodmap si le fichier .xmodmap ou .Xmodmap existe lors d'un " "basculement de moteur ibus" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Raccourci clavier déclencheur" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Raccourci clavier déclencheur pour gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Activer les raccourcis clavier" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "Les raccourcis clavier pour la méthode d'entrée sont activés" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Désactiver les raccourcis clavier" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "Les raccourcis clavier pour la méthode d'entrée sont désactivés" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Raccourci clavier pour passer au moteur suivant" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Raccourci clavier pour passer à la méthode d'entrée suivante de la liste" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Raccourci clavier pour revenir au moteur précédent" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "Raccourci clavier pour revenir à la méthode d'entrée précédente" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Masquage automatique" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Comportement du panneau de propriété. 0 = Ne pas afficher, 1 = Cacher " "automatiquement, 2 = Toujours afficher" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Position de la barre" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" "Position de la barre de langue. 0 = Coin supérieur gauche, 1 = Coin " "supérieur droit, 2 = Coin inférieur gauche, 3 = Coin inférieur droit, 4 = " "Personnalisé" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "Suivre le curseur d'insertion lorsque le panneau est toujours affiché" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" "Si activé, le panneau suit le curseur d'insertion lorsque le panneau est " "toujours affiché. Sinon, le panneau est affiché à une position fixe." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "Millisecondes pour afficher le panneau de propriété" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Millisecondes pour afficher le panneau de propriété après prise du focus ou " "changement des propriétés." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Orientation de la liste des candidats" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation de la liste des candidats. 0 = Horizontale, 1 = Verticale" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Afficher le nom de la méthode d'entrée" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "Valeur RGBA de l'icône XKB" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "L'icône XKB affiche la chaîne de caractère de la disposition et cette chaîne " "de caractère est affichée par sa valeur RGBA. Cette valeur RGBA peut être 1. " "le nom d'une couleur X11, 2. une valeur héxadécimale sous la forme '#rrggbb' " "où 'r', 'g', et 'b' sont des chiffres héxadécimaux correspondant " "respectivement au rouge, vert et bleu, 3. une couleur RGB sous la forme " "'rgb(r,g,b)' ou 4. une couleur RGBA sous la forme 'rgba(r,g,b,a)' où 'r', " "'g' et 'b' sont soit des entiers compris entre 0 et 255, soit un pourcentage " "compris entre 0 et 100 %, et 'a', la valeur alpha, étant un nombre à virgule " "flottante compris entre 0 et 1." #: ../data/ibus.schemas.in.h:42 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "" "The milliseconds to show the panel icon from the engine icon to a property " "icon whenever engines are switched if the property is specified by the value " "of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " "property icon is shown immediately." msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Use custom font" msgstr "Utiliser une police personnalisée :" #: ../data/ibus.schemas.in.h:47 msgid "Use custom font name for language panel" msgstr "Utiliser une police personnalisée pour la barre de langue" #: ../data/ibus.schemas.in.h:48 msgid "Custom font" msgstr "Police personnalisée" #: ../data/ibus.schemas.in.h:49 msgid "Custom font name for language panel" msgstr "Police personnalisée pour le panneau de langue" #: ../data/ibus.schemas.in.h:50 msgid "Embed Preedit Text" msgstr "Insérer le texte en cours d'édition" #: ../data/ibus.schemas.in.h:51 msgid "Embed Preedit Text in Application Window" msgstr "Insérer le texte en cours d'édition dans la fenêtre de l'application" #: ../data/ibus.schemas.in.h:52 msgid "Use global input method" msgstr "Utiliser la méthode d'éntrée globale" #: ../data/ibus.schemas.in.h:54 msgid "Enable input method by default" msgstr "Par défaut, activer la méthode d'entrée" #: ../data/ibus.schemas.in.h:55 msgid "Enable input method by default when the application gets input focus" msgstr "" "Par défaut, activer la méthode d'entrée lorsque l'application reçoit le " "focus" #: ../data/ibus.schemas.in.h:56 msgid "DConf preserve name prefixes" msgstr "Préservation des préfixes de nom DConf" #: ../data/ibus.schemas.in.h:57 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Préfixes des clés DConf pour arrêter la conversion de nom" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:158 msgid "Other" msgstr "Autre" #: ../setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Langue : %s\n" #: ../setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposition du clavier : %s\n" #: ../setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Auteur : %s\n" #: ../setup/engineabout.py:81 msgid "Description:\n" msgstr "Description :\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 msgid "Select an input method" msgstr "Sélectionnez une méthode d'entrée" #: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 #: ../setup/main.py:414 msgid "_Cancel" msgstr "A_nnuler" #: ../setup/enginedialog.py:205 msgid "More…" msgstr "" #: ../setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Définir les préférences de IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Raccourci clavier" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Touche :" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificateurs :" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "A_ppliquer" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Supprimer" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" "Veuillez appuyer sur une touche (ou une combinaison de touches).\n" "La boîte de dialogue se fermera lorsque la touche sera relâchée." #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Veuillez appuyer sur une touche (ou une combinaison de touches)" #: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 msgid "_OK" msgstr "_Valider" #: ../setup/main.py:114 ../setup/main.py:439 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Utiliser le raccourci clavier pour revenir à la méthode d'entrée précédente" #: ../setup/main.py:369 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Le démon IBus n'est pas démarré. Souhaitez-vous le démarrer ?" #: ../setup/main.py:390 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "IBus a été démarré ! Si vous ne pouvez pas utiliser IBus, veuillez ajouter " "les lignes suivantes dans le fichier « $HOME/.bashrc », et veuillez vous " "reconnecter.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:404 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Le démon IBus n'a pas pu être démarré en %d secondes" #: ../setup/main.py:416 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Raccourci clavier pour %s" #. Translators: Title of the window #: ../setup/main.py:418 msgid "switching input methods" msgstr "Changer de méthodes d'entrée" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Ne lister que les noms des moteurs" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "Connexion impossible à IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "langue : %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "Aucun moteur n'est configuré.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Échec de la configuration du moteur global.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Échec de la récupération du moteur global.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Lire le cache du registre système." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Lire le fichier FILE du cache du registre système." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "Le cache du registre est invalide.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "Enregistrer le cache du registre système." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "Enregistrer le fichier FILE du cache du registre." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "Réinitialisation…" #: ../tools/main.vala:318 msgid "Done" msgstr "Effectuée" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Définir ou obtenir le moteur" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "Quitter ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "Afficher les moteurs disponibles" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(Non implémenté)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Redémarrer ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "Afficher la version" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Afficher le contenu du cache du registre" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Créer le cache du registre" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "Afficher l'adresse D-Bus de ibus-daemon" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "Afficher les valeurs de configuration" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Réinitialiser les valeurs de configuration" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Afficher cette information" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Utilisation : %s COMMANDE [OPTION…]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Commandes :\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s n'est pas une commande connue !\n" #: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 msgid "IBus Panel" msgstr "" #: ../ui/gtk3/panel.vala:731 msgid "IBus Update" msgstr "Mise à jour de IBus" #: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 msgid "Super+space is now the default hotkey." msgstr "Super+espace est maintenant le raccourci par défaut." #: ../ui/gtk3/panel.vala:1086 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus est un IME intelligent pour Linux/Unix." #: ../ui/gtk3/panel.vala:1090 msgid "translator-credits" msgstr "Julien Humbert " #: ../ui/gtk3/panel.vala:1109 msgid "Preferences" msgstr "Préférences" #: ../ui/gtk3/panel.vala:1119 msgid "Restart" msgstr "Redémarrer" #: ../ui/gtk3/panel.vala:1123 msgid "Quit" msgstr "Quitter" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/eu.po0000644000000000000000000003605012551654123011027 00000000000000# translation of ibus.pot to Basque # Basque translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Asier Iturralde Sarasola , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Asier Iturralde Sarasola \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontala" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Bertikala" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Pertsonalizatua" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Beti" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus hobespenak" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Hurrengo sarrera metodoa" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Aurreko sarrera metodoa" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Gaitu edo desgaitu:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Gaitu:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Desgaitu:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Erabili letra-tipo pertsonalizatua:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Letra-tipoa eta estiloa" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Orokorra" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Gehitu" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Kendu" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Gora" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Behera" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "Honi _buruz" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Hobespenak" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Sarrera metodoa" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Teklatu-diseinua" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Sarrera metodo orokorraren ezarpenak" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Aurreratua" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Honi buruz" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "It_xi" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Ezkutatu automatikoki" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Erakutsi sarrera metodoaren izena" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Erabili letra-tipo pertsonalizatua" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Letra-tipo pertsonalizatua" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Erabili sarrera metodo orokorra" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright-a (c) 2007-2010 Peng Huang\nCopyright-a (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Beste bat" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Hizkuntza: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Teklatu-diseinua: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Egilea: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Deskribapena:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Hautatu sarrera metodo bat" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Ezarri IBus hobespenak" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Teklatu lasterbideak" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Tekla kodea:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Aplikatu" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Ezabatu" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Utzi" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_Ados" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Asier Iturralde Sarasola " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Hobespenak" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Berrabiarazi" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Irten" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ko.po0000644000000000000000000005542112551654123011032 00000000000000# translation of ibus.pot to Korean # Korean translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # eukim , 2009,2012 # eukim , 2009 # eukim , 2012 # Hyunsok Oh , 2010 # lego37yoon , 2014 # Michelle Kim , 2012-2014 # Seong-ho Cho , 2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-12-21 11:47+0000\n" "Last-Translator: lego37yoon \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "가로" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "세로" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "왼쪽 위" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "오른쪽 위" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "왼쪽 아래" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "오른쪽 아래" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "ì‚¬ìš©ìž ì •ì˜" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "보여주지 않ìŒ" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "ìžë™ìœ¼ë¡œ 숨기기" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "í•­ìƒ" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus 환경 설정" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "목ë¡ì— 있는 ë‹¤ìŒ ìž…ë ¥ ë°©ì‹ìœ¼ë¡œ 전환하기 위한 단축키" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "ë‹¤ìŒ ìž…ë ¥ ë°©ì‹:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "목ë¡ì— 있는 ì´ì „ ìž…ë ¥ ë°©ì‹ìœ¼ë¡œ 전환하기 위한 단축키" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ì´ì „ ìž…ë ¥ ë°©ì‹:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ìž…ë ¥ ë°©ì‹ì„ 활성 ë˜ëŠ” 해제하기 위한 단축키" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "활성화 ë˜ëŠ” 비활성화:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "활성화: " #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "비활성화: " #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "단축키" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "검색 í…Œì´ë¸”ì—서 후보 ì°½ì˜ ë°©í–¥ 설정" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "후보 ì°½ì˜ ë°©í–¥:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibusê°€ ìž…ë ¥ ë„구 모ìŒì„ 표시하거나 숨기는 방법 설정" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "ì†ì„± 패ë„ì„ í‘œì‹œ:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "언어 íŒ¨ë„ ìœ„ì¹˜:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "시스템 트레ì´ì— ì•„ì´ì½˜ 보여주기" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "언어 ë„구 모ìŒì— ìž…ë ¥ ë°©ì‹ ì´ë¦„ 보여주기" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "확ì¸ëž€ì„ ì„ íƒí•˜ë©´ ìž…ë ¥ ë°©ì‹ì˜ ì´ë¦„ì„ ìž…ë ¥ ë„구 모ìŒì— 표시" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "어플리케ì´ì…˜ ì°½ì— íŽ¸ì§‘ì „ í…스트 í¬í•¨" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "ìž…ë ¥ ë°©ì‹ì˜ 편집전 í…스트를 어플레케ì´ì…˜ ì°½ì— í¬í•¨ì‹œí‚µë‹ˆë‹¤" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "ì‚¬ìš©ìž ì •ì˜ ê¸€ê¼´ 사용:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "글꼴 ë° ìŠ¤íƒ€ì¼" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ì¼ë°˜" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "추가(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "í™œì„±í™”ëœ ìž…ë ¥ ë°©ì‹ì— ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ì„ 추가합니다" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "제거(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "í™œì„±í™”ëœ ìž…ë ¥ ë°©ì‹ ëª©ë¡ì—서 ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ì„ 제거" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "위로(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "í™œì„±í™”ëœ ìž…ë ¥ ë°©ì‹ ëª©ë¡ì—서 ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ì„ 위로 ì´ë™í•©ë‹ˆë‹¤" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "아래로(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "í™œì„±í™”ëœ ìž…ë ¥ ë°©ì‹ ëª©ë¡ì—서 ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ì„ 아래로 ì´ë™í•©ë‹ˆë‹¤" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "ì •ë³´(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ì˜ ì •ë³´ 보여주기" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "기본 설정(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "ì„ íƒí•œ ìž…ë ¥ ë°©ì‹ ì„¤ì • 보기" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "í™œì„±í™”ëœ ìž…ë ¥ ë°©ì‹ ëª©ë¡ì—서 키보드 단축키를 누르거나 íŒ¨ë„ ì•„ì´ì½˜ì„ í´ë¦­í•˜ì—¬ ì„ íƒí•œ 활성 ìž…ë ¥ ë°©ì‹ì„ 전환할 수 있습니다." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ìž…ë ¥ ë°©ì‹" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "시스템 키보드 ë ˆì´ì•„웃 사용" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "시스템 키보드 (XKB) ë ˆì´ì•„웃 사용" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "키보드 ë ˆì´ì•„웃" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "모든 어플리케ì´ì…˜ì—서 ë™ì¼í•œ ìž…ë ¥ ë°©ì‹ ê³µìœ " #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ì „ì—­ ìž…ë ¥ ë°©ì‹ ì„¤ì •" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "고급" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\n지능형 ìž…ë ¥ 버스\n홈페ì´ì§€: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ë¡œê·¸ì¸ ì‹œ ibus 시작" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "시작" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "ì •ë³´" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "닫기(_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "엔진 미리로드" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus 시작 시 엔진 미리 로드" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "엔진 순서" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ìž…ë ¥ ë°©ì‹ ëª©ë¡ì— ì €ìž¥ëœ ì—”ì§„ 순서" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 스위치 ì°½ì˜ íŒì—… 밀리초 ë‹¨ìœ„ì˜ ì§€ì—°" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME 스위치 ì°½ì„ í‘œì‹œí•˜ê¸° 위해 밀리초 ë‹¨ìœ„ì˜ ì§€ì—°ì„ ì§€ì •í•©ë‹ˆë‹¤. ê¸°ë³¸ê°’ì€ 400입니다. 0 = ì°½ì„ ì¦‰ì‹œ 표시합니다. 0 < 밀리초 단위로 지연합니다. 0 > ì°½ì„ í‘œì‹œí•˜ì§€ 않고 ì´ì „/ë‹¤ìŒ ì—”ì§„ìœ¼ë¡œ 전환합니다." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "ì €ìž¥ëœ ë²„ì „ 번호" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "ì €ìž¥ëœ ë²„ì „ 번호는 ì´ì „ì— ì„¤ì¹˜ëœ Ibus ìž…ë ¥ê¸°ì™€ì˜ ë‹¤ë¥¸ì ì„ 비êµí•˜ëŠ” ë° ì‚¬ìš©ë©ë‹ˆë‹¤." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ASCIIê°€ 없는 ë¼í‹´ì–´ ë ˆì´ì•„웃" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US ë ˆì´ì•„ì›ƒì´ ë¼í‹´ì–´ ë ˆì¸ì•„ì›ƒì— ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤. ë³€í˜•ëœ ê²ƒì€ ìƒëžµë  수 있습니다." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap 사용" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ì—”ì§„ì„ ì „í™˜í• ë•Œ .xmodmap ë˜ëŠ” .Xmodmapì´ ìžˆìœ¼ë©´ xmodmap 실행" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "트리거 단축키" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parseì˜ íŠ¸ë¦¬ê±° 단축키" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "단축키 활성화" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ìž…ë ¥ ë°©ì‹ ì „í™˜ì„ ìœ„í•œ 단축키 활성화" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "단축키 비활성화" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ìž…ë ¥ ë°©ì‹ ì „í™˜ì„ ìœ„í•œ 단축키 비활성화" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "ë‹¤ìŒ ì—”ì§„ 단축키" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "목ë¡ì— 있는 ë‹¤ìŒ ìž…ë ¥ ë°©ì‹ìœ¼ë¡œ 전환하기 위한 단축 키" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "ì´ì „ 엔진 단축키" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "목ë¡ì— 있는 ì´ì „ ìž…ë ¥ ë°©ì‹ìœ¼ë¡œ 전환하기 위한 단축 키" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "ìžë™ 숨기기" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "ì†ì„± íŒ¨ë„ ëŒìž‘입니다. 0 = 보여주지 않ìŒ, 1 = ìžë™ 숨김, 2 = í•­ìƒ í‘œì‹œ" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "언어 íŒ¨ë„ ìœ„ì¹˜" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "언어 패ë„ì˜ ìœ„ì¹˜. 0 = 왼쪽 위, 1 = 오른쪽 위, 2 = 왼쪽 아래, 3 = 오른쪽 아래, 4 = ì‚¬ìš©ìž ì§€ì •" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "패ë„ì„ í•­ìƒ í‘œì‹œí•  경우 ìž…ë ¥ 커서를 ë”°ë¼ê°" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "ì°¸ì´ë©´, 패ë„ì„ í•­ìƒ í‘œì‹œí•  때 패ë„ì´ ìž…ë ¥ 커서를 ë”°ë¼ê°‘니다. ê±°ì§“ì´ë©´, ê³ ì •ëœ ìœ„ì¹˜ì—서 패ë„ì´ ë‚˜íƒ€ë‚©ë‹ˆë‹¤." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "ì†ì„± 패ë„ì„ í‘œì‹œí•  밀리세컨드 단위 시간" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "í¬ì»¤ìФ ì¸ ìƒíƒœ ë˜ëŠ” ì†ì„± ê°’ì„ ë°”ê¾¸ì—ˆì„ ê²½ìš° ì†ì„± 패ë„ì„ í‘œì‹œí•  밀리세컨드 단위 시간입니다." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "검색 í…Œì´ë¸”ì˜ ë°©í–¥" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "검색 í…Œì´ë¸”ì˜ ë°©í–¥. 0 = 가로, 1 = 세로" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ìž…ë ¥ ë°©ì‹ ì´ë¦„ 보여주기" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB ì•„ì´ì½˜ì˜ RGBA ê°’" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB ì•„ì´ì½˜ì€ 배치 문ìžì—´ì„ 보여주며 RGBA ê°’ì„ í†µí•´ 표현합니다. RGBA ê°’ì€ 1. X11ì˜ ìƒ‰ìƒ ì´ë¦„, 2. 'r' 'g' 'b' ìžë¦¬ì— ì , ë…¹, ì²­ì˜ 16진수 ê°’ì´ ë“¤ì–´ê°€ëŠ” '#rrggbb' 형ì‹ì˜ 16진수 ê°’ì´ë©°, 3. 'r', 'g', 'b' ìžë¦¬ì— 0 부터 255ê¹Œì§€ì˜ ê°’ ë˜ëŠ” 0% 부터 100% ê¹Œì§€ì˜ ë°±ë¶„ìœ¨ ê°’ì´ ë“¤ì–´ê°€ëŠ” 'rgb(r,g,b)' 형ì‹ì˜ RGB ìƒ‰ìƒ ê°’ ë˜ëŠ”, 4. ì—¬ê¸°ì— 'a'는 0부터 1ê¹Œì§€ì˜ ì‹¤ìˆ˜ 알파 ê°’ì´ ë“¤ì–´ê°€ëŠ” 'rgba(r,g,b,a)' ê°’ì´ ë  ìˆ˜ 있습니다." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "ì‚¬ìš©ìž ì •ì˜ ê¸€ê¼´ 사용" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "언어 íŒ¨ë„ ìš© ì‚¬ìš©ìž ì •ì˜ ê¸€ê¼´ ì´ë¦„ 사용" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "ì‚¬ìš©ìž ì •ì˜ ê¸€ê¼´" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "언어 íŒ¨ë„ ìš© ì‚¬ìš©ìž ì •ì˜ ê¸€ê¼´ ì´ë¦„" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "편집전 í…스트 í¬í•¨" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "어플리케ì´ì…˜ ì°½ì— íŽ¸ì§‘ì „ í…스트를 í¬í•¨" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "ì „ì—­ ìž…ë ¥ ë°©ì‹ ì‚¬ìš©" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "입력기를 ë””í´íŠ¸ë¡œ 활성화" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "í”„ë¡œê·¸ëž¨ì˜ ìž…ë ¥ì°½ì— í¬ì»¤ìŠ¤ê°€ 가면 ë””í´íŠ¸ë¡œ 입력기를 활성화합니다" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf는 ì´ë¦„ ì ‘ë‘사를 보존합니다" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf 키 ì ‘ë‘사는 ì´ë¦„ ë³€í™˜ì„ ì¤‘ì§€í•©ë‹ˆë‹¤" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "기타" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "언어: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "키보드 ë ˆì´ì•„웃: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "ì €ìž: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "설명:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "ìž…ë ¥ ë°©ì‹ì„ ì„ íƒí•©ë‹ˆë‹¤" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "취소(_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "ë”보기..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus 환경 설정" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "단축키" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "키 코드:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "수정ìž:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "ì ìš©(_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "ì‚­ì œ(_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "키 ë˜ëŠ” 키 ì¡°í•©ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤.\n키를 입력하면 대화 ìƒìžê°€ 닫히게 ë©ë‹ˆë‹¤." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "키 ë˜ëŠ” 키 ì¡°í•©ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤. " #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "확ì¸(_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ì´ì „ ìž…ë ¥ ë°©ì‹ìœ¼ë¡œ 전환하기 위해 shift를 단축키로 사용" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ë°ëª¬ì´ 실행ë˜ê³  있지 않습니다. ì´ë¥¼ 시작하시겠습니까?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus를 시작했습니다! IBus를 사용할 수 없는 경우 다ìŒê³¼ ê°™ì€ í–‰ì„ $HOME/.bashrc;ì— ì¶”ê°€í•˜ê³  바탕 화면으로 다시 로그ì¸í•©ë‹ˆë‹¤.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ë°ëª¬ì´ %d ì´ˆ ì´ë‚´ì— 시작하지 못했습니다 " #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%sì˜ ë‹¨ì¶•í‚¤ë¥¼ ì„ íƒ" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ìž…ë ¥ ë°©ì‹ ì „í™˜ 중" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "엔진 ì´ë¦„ë§Œ 나열 " #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBusì— ì—°ê²°í•  수 없습니다.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "언어: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "ì—”ì§„ì´ ì„¤ì •ë˜ì–´ 있지 않습니다.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "글로벌 ì—”ì§„ì˜ ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "글로벌 ì—”ì§„ì˜ ì·¨ë“ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "시스템 레지스트리 ìºì‹œ ì½ì–´ë“¤ì´ê¸°" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "레지스트리 ìºì‹œ íŒŒì¼ ì½ì–´ë“¤ì´ê¸°" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "레지스트리 ìºì‹œê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "시스템 레지스트리 ìºì‹œ 쓰기" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "레지스트리 ìºì‹œíŒŒì¼ 쓰기" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "재설정중..." #: ../tools/main.vala:318 msgid "Done" msgstr "완료" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "ì—”ì§„ì„ ì„¤ì •í•˜ê±°ë‚˜ 얻기" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon 종료" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "존재하는 엔진 표시" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(구현 안함)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon 재시작" #: ../tools/main.vala:342 msgid "Show version" msgstr "버전 보기" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "레지스트리 ìºì‹œ ë‚´ìš© 표시" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "레지스트리 ìºì‹œ 만들기" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemonì˜ D-Bus 주소 출력" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "설정 ê°’ 표시" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "설정 ê°’ 재설정" #: ../tools/main.vala:348 msgid "Show this information" msgstr "ì´ ì •ë³´ 표시" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "사용법: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "명령:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s는 알 수 없는 명령입니다!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus ì—…ë°ì´íЏ" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space는 ì´ì œ 기본 단축키입니다." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus는 Linux/Unix를 위한 지능형 ìž…ë ¥ 버스입니다." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "ê¹€ì€ì£¼(eukim@redhat.com)" #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "기본 설정" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "재시작" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "ë내기" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/tg.po0000644000000000000000000003541312551654123011032 00000000000000# translation of ibus.pot to Tajik # Tajik translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Victor Ibragimov , 2011 # Victor Ibragimov , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: tajikfedora \n" "Language-Team: Tajik \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Уфуқӣ" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Ðмудӣ" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Танзимот" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Ҳамеша" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "ФаъолÑозӣ:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Хомӯшкунӣ:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Умумӣ" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Илова кардан" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Тоза кардан" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Боло" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Поён" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Дар бораи барнома" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_ХуÑуÑиÑтҳо" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Дар бораи" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Пӯшидан" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Пинҳонкунии худкор" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Дигар" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Забон: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Муаллиф: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Шарҳ:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Миёнбурҳои клавиатура" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Рамзи тугма:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Татбиқ кардан" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_ÐеÑÑ‚ кардан" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Бекор кардан" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ХуÑуÑиÑтҳо" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Бозоғозӣ" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Хуруҷ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/nb.po0000644000000000000000000003654712551654123011030 00000000000000# translation of ibus.pot to Norwegian BokmÃ¥l # Norwegian BokmÃ¥l translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Kjartan Maraas , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:48+0000\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian BokmÃ¥l \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horisontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertikal" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Nederste venstre hjørne" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Nederste høyre hjørne" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Egendefinert" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Alltid" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Brukervalg for IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Neste inndatametode:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Forrige inndatametode:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "SlÃ¥ pÃ¥ eller av:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "SlÃ¥ pÃ¥:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "SlÃ¥ av:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Tastatursnarveier" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Posisjon for sprÃ¥kpanel:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Bruk egendefinert skrift:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Skrift og stil" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Generelt" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Legg til" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "Fje_rn" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Opp" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "Ne_d" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Om" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Vis informasjon om valgt inndatametode" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Brukervalg" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Inndatametode" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Tastaturutforming" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Globale innstillinger for inndatametode" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avansert" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Start ibus ved pÃ¥logging" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Oppstart" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Om" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Lukk" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "SlÃ¥ av snarveitaster" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Skjul automatisk" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Egendefinert skrift" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Egendefinert skriftnavn for sprÃ¥kpanelet" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "SlÃ¥ pÃ¥ inndatametode som forvalg" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Opphavsrett © 2007-2010 Peng Huang\nOpphavsrett © 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Annet" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "SprÃ¥k: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturutforming: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Forfatter: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Beskrivelse: \n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Velg en inndatametode" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Tastatur" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Sett brukervalg for IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastatursnarveier" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Tastekode:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Endringstaster:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Bruk" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Slett" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Vennligst trykk en tast (eller en tastekombinasjon)\nDialogen vil lukkes nÃ¥r tasten slippes." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Vennligst trykk en tast (eller en tastekombinasjon)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Avbryt" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Velg tastatursnarvei for %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus er en intelligent inndatabuss for Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Kjartan Maraas " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Brukervalg" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Start pÃ¥ nytt" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Avslutt" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ca.po0000644000000000000000000005755412551654123011015 00000000000000# translation of ibus.pot to Catalan # Catalan translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Bernabé Borrero , 2012 # Oscar Osta , 2011 # Oscar Osta Pueyo , 2009 # Robert Antoni Buj i Gelonch, 2014 # Robert Antoni Buj Gelonch , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-02-20 17:16+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-05-09 04:16-0400\n" "Last-Translator: Robert Antoni Buj Gelonch \n" "Language-Team: Catalan \n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.6.2\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horitzontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertical" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Cantonada superior esquerra" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Cantonada superior dreta" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Cantonada inferior esquerra" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Cantonada inferior dreta" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Personalitzat" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "No mostrar" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Oculta-ho automàticament" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Sempre" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferències de l'IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Les dreceres de teclat per commutar al següent mètode d'entrada de la llista" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Següent mètode d'entrada:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Les dreceres de teclat per canviar al mètode d'entrada anterior de la llista" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Mètode d'entrada anterior:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "" "Les dreceres de teclat per habilitar o inhabilitar el mètode d'entrada" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Habilita o deshabilita:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Habilita:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Deshabilita:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Dreceres de teclat" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Estableix l'orientació dels candidats a la taula de cerca" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientació dels candidats:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "Estableix el comportament de l'IBus sobre com mostrar o ocultar la barra " "d'idiomes" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Mostra el quadre de propietats:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Posició del quadre d'idiomes:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Mostra la icona a la safata del sistema" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Mostra el nom del mètode d'entrada a la barra d'idioma" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Mostra el nom del mètode d'entrada a la barra d'idiomes quan s'activi la " "casella de selecció" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Incrusta el text pre-editat en la finestra de l'aplicació" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" "Incrusta el text pre-editat del mètode d'entrada en la finestra de " "l'aplicació" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Utilitza un tipus de lletra personalitzat:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Tipus de lletra i estil" #: ../setup/setup.ui.h:34 msgid "General" msgstr "General" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "_Afegeix" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" "Afegeix el mètode d'entrada seleccionat als mètodes d'entrada habilitats" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Suprimeix" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Suprimeix el mètode d'entrada seleccionat dels mètodes d'entrada habilitats" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "A_munt" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Puja el mètode d'entrada seleccionat en la llista de mètodes habilitats" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "A_vall" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Baixa el mètode d'entrada seleccionat en els mètodes d'entrada habilitats" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Quant a" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Mostra la informació del mètode d'entrada seleccionat" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Preferències" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Mostra la configuració del mètode d'entrada seleccionat" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "El mètode d'entrada actiu pot canviar-se amb els seleccionats en " "l'anterior llista prement les dreceres de teclat o fent clic a la icona del " "quadre." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Mètode d'entrada" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "Utilitza la disposició de teclat del sistema" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "Utilitza la disposició de teclat del sistema (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Disposició del teclat" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "Comparteix el mateix mètode d'entrada amb totes les aplicacions" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Paràmetres del mètode d'entrada global" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avançat" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "El bus d'entrada intel·ligent\n" "Lloc web: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Inicia l'IBus en entrar" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Inici" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 #: ../ui/gtk3/panel.vala:1053 msgid "About" msgstr "Quant a" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "_Tanca" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Precarrega els motors" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Precarrega els motors durant l'inici de l'IBus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Ordre de motors" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Ordre dels motors desats en la llista dels mètodes d'entrada" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "" "Retard en mil·lisegons de la finestra emergent per a la finestra del " "commutador IME" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "Estableix el retard de la finestra emergent en mil·lisegons per mostrar la " "finestra del commutador IME. El valor predeterminat és 400. 0 = Mostra la " "finestra immediatament. 0 < Retard en mil·lisegons. 0 > No mostra la " "finestra ni els motors anteriors o següents." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Número de versió desada" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "El número desat de la versió s'utilitzarà per comprovar la diferència entre " "la versió anterior i l'actual de l'ibus." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "Les disposicions llatines no tenen ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" "La disposició dels EUA és un annex de les disposicions llatines. Es pot " "ometre la variant." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "Utilitza xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Executa xmodmap sí existeix .xmodmap o .Xmodmap quan es commutin els motors " "de l'ibus." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Dreceres de teclat de l'activador" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Dreceres de teclat de l'activador per gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Habilita les dreceres de teclat" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "Les dreceres de teclat per habilitar el mètode d'entrada" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Inhabilita les dreceres de teclat" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "Les dreceres de teclat per inhabilitar el mètode d'entrada" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Dreceres de teclat del motor següent" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Les dreceres de teclat per commutar al següent mètode d'entrada de la llista" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Dreceres de teclat del motor anterior" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "" "Les dreceres de teclat per commutar al mètode d'entrada anterior de la " "llista" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Oculta automàticament" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "El comportament de la propietat panel. 0 = No es mostra, 1 = S'amaga " "automàticament, 2 = Es mostra sempre" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Posició del quadre d'idiomes" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" "La posició del quadre d'idiomes. 0 = cantonada superior esquerra, 1 = " "cantonada superior dreta, 2 = cantonada inferior esquerra, 3 = cantonada " "inferior dreta, 4 = personalitzat" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "Segueix el cursor d'entrada en el cas que sempre es mostri el quadre" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" "Si és cert, el quadre segueix el cursor d'entrada en el cas que sempre es " "mostri el quadre. Si és fals, el quadre es mostra en una ubicació fixa." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "Mil·lisegons per mostrar el quadre de propietats" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Els mil·lisegons per mostrar el quadre de propietats després de rebre " "l'enfocament o quan se'n canviïn les propietats." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Orientació de la taula de cerca" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientació de la taula de cerca. 0 = horitzontal, 1 = vertical" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Mostra el nom del mètode d'entrada" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "valor RGBA de la icona XKB" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "La icona XKB mostra la cadena de text de la disposició, la cadena de text es " "renderitza amb el valor RGBA. El valor RGBA pot ser 1. un color de X11, 2. " "un valor hexadecimal amb el format «#rrggbb» on «r», «g» i «b» són dígits " "hexadecimals per al roig, verd i blau, 3. un color RGB amb el format " "«rgb(r,g,b)» o 4. Un color RGBA amb el format «rgba(r,g,b,a)» on «r», «g», i " "«b» són nombres enters amb rang de 0 a 255 o valors de percentatge amb rang " "de 0% a 100%, i «a» té un valor en punt flotant amb rang de 0 a 1 per l'alfa." "" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "Utilitza un tipus de lletra personalitzat" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "Utilitza un tipus de lletra personalitzat per al quadre d'idiomes" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "Tipus de lletra personalitzat" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "Tipus de lletra personalitzat per al quadre d'idiomes" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "Incrusta el text pre-editat" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "Incrusta el text pre-editat en la finestra de l'aplicació" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "Utilitza el mètode d'entrada global" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "Habilita els mètodes d'entrada per defecte" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "" "Habilita els mètodes d'entrada per defecte quan l'aplicació obté el focus " "d'entrada" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf preserva els prefixes" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos de tecles DConf per aturar la conversió del nom" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Altres" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposició del teclat: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "Descripció: \n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "Seleccioneu un mètode d'entrada" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:337 #: ../setup/main.py:413 msgid "_Cancel" msgstr "_Cancel·la" #: ../setup/enginedialog.py:204 msgid "More…" msgstr "Més..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Estableix les preferències de l'IBus" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "Dreceres de teclat" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Codi de lletra:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificadors:" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Aplica" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Suprimeix" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" "Premeu una tecla (o una combinació de tecles).\n" "El diàleg es tancarà quan es deixi anar la tecla." #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Premeu una tecla (o una combinació de tecles)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:414 msgid "_OK" msgstr "_D'acord" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Utilitza la drecera de teclat amb la tecla de majúscules per canviar a " "l'anterior mètode d'entrada" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "No s'està executant el dimoni de l'IBus. Voleu iniciar-ho?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "S'ha iniciat IBus! Si no podeu utilitzar IBus, afegiu les línies següents al " "vostre $HOME/.bashrc; després torneu a entrar a l'escriptori.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "El dimoni d'IBus no es va poder iniciar en %d segons" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Seleccioneu la drecera de teclat per a %s" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "commutació dels mètodes d'entrada" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Mostra tan sols els nom del motor" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "No es pot connectar a IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "No s'ha establer cap motor.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "S'ha produït un error en establir el motor global.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "S'ha produït un error en obtenir el motor global.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Llegeix la memòria cau del registre del sistema." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Llegeix el FITXER de la memòria cau del registre." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "La memòria cau del registre no és vàlida.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "Escriu la memòria cau del registre del sistema." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "Escriu el FITXER de la memòria cau del registre." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "S'està restablint..." #: ../tools/main.vala:318 msgid "Done" msgstr "Fet" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Estableix o obté el motor" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "Surt de l'ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "Mostra els motors disponibles" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(No implementat)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Reinicia l'ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "Mostra la versió" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Mostra el contingut de la memòria cau del registre" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Crea la memòria cau del registre" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "Mostra l'adreça D-Bus de l'ibus-daemon" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "Mostra els valors de configuració" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Restableix els valors de configuració" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Mostra aquesta informació" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Ús: %s ORDRE [OPCIÓ...]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Ordres:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s no és una ordre reconeguda!\n" #: ../ui/gtk3/panel.vala:225 ../ui/gtk3/panel.vala:256 msgid "IBus Panel" msgstr "Quadre de l'IBus" #: ../ui/gtk3/panel.vala:712 msgid "IBus Update" msgstr "Actualització d'IBus" #: ../ui/gtk3/panel.vala:713 ../ui/gtk3/panel.vala:724 msgid "Super+space is now the default hotkey." msgstr "Súper+espai ara és l'accés de teclat per defecte." #: ../ui/gtk3/panel.vala:1026 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "L'IBus és un bus d'entrada intel·ligent per al Linux/Unix." #: ../ui/gtk3/panel.vala:1030 msgid "translator-credits" msgstr "" "Joan Duran \n" "Oscar Osta Pueyo ,\n" "Patricia Rivera Escuder ,\n" "Robert Antoni Buj Gelonch ,\n" "Xavier Conde Rueda " #: ../ui/gtk3/panel.vala:1049 msgid "Preferences" msgstr "Preferències" #: ../ui/gtk3/panel.vala:1059 msgid "Restart" msgstr "Reinicia" #: ../ui/gtk3/panel.vala:1063 msgid "Quit" msgstr "Surt" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ja.po0000644000000000000000000006416412551654123011017 00000000000000# translation of ibus.pot to Japanese # Japanese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Hajime Taira , 2012 # hyuugabaru , 2009 # IWAI, Masaharu , 2009 # Kiyoto Hashida , 2010 # Makoto Mizukami , 2010 # noriko , 2013 # UTUMI Hirosi , 2008 # carrotsoft , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-07-13 19:48+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-02-20 03:40-0500\n" "Last-Translator: fujiwara \n" "Language-Team: Japanese \n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 3.6.2\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "横" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "縦" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "左上" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "å³ä¸Š" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "左下" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "å³ä¸‹" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "カスタム" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "表示ã—ãªã„" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "自動的ã«éš ã™" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "常ã«è¡¨ç¤ºã™ã‚‹" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus ã®è¨­å®š" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "ä¸€è¦§å†…ã®æ¬¡ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "次ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "一覧内ã®ã²ã¨ã¤å‰ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ã²ã¨ã¤å‰ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "…" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "入力メソッドをオンã¾ãŸã¯ã‚ªãƒ•ã™ã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "切り替ãˆ" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "有効:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "無効:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "キーボードショートカット" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "ルックアップテーブルã®ä¸­ã§å€™è£œã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®å‘ãを設定ã—ã¾ã™" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "候補ウィンドウã®å‘ã:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "言語ãƒãƒ¼ã‚’ã©ã®ã‚ˆã†ã«è¡¨ç¤ºã™ã‚‹ã‚‚ã—ãã¯éš ã™ã‹ã® ibus ã®å‹•作を設定ã—ã¾ã™" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "プロパティーパãƒãƒ«ã‚’表示ã™ã‚‹:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "言語パãƒãƒ«ã®ä½ç½®" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "システムトレイã«ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã™ã‚‹" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "言語ãƒãƒ¼ã«å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰åを表示ã™ã‚‹" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ä»˜ã‘ã‚‹ã¨ã€è¨€èªžãƒãƒ¼ã«å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰åãŒè¡¨ç¤ºã•れã¾ã™" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "アプリケーションウィンドウã«å‰ç·¨é›†ãƒ†ã‚­ã‚¹ãƒˆã‚’組ã¿è¾¼ã‚€" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "アプリケーションウィンドウã«å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã®ãƒ—リエディットテキストを組ã¿è¾¼ã¿ã¾ã™" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "カスタムフォントを使ã†:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "フォントã¨ã‚¹ã‚¿ã‚¤ãƒ«" #: ../setup/setup.ui.h:34 msgid "General" msgstr "一般" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "追加(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æœ‰åŠ¹ãªå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã¸è¿½åŠ ã—ã¾ã™" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "削除(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æœ‰åŠ¹ãªå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰å‰Šé™¤ã—ã¾ã™" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "上ã¸(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "有効ãªå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§å†…ã§é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä¸Šã¸ç§»å‹•ã•ã›ã¾ã™" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "下ã¸(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "有効ãªå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§å†…ã§é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä¸‹ã¸ç§»å‹•ã•ã›ã¾ã™" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "情報(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã®æƒ…報を表示ã—ã¾ã™" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "設定(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "é¸æŠžã—ãŸå…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã®è¨­å®šã‚’表示ã—ã¾ã™" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "アクティブãªã‚¤ãƒ³ãƒ—ットメソッドã¯ã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼ã‚’押ã™ã‹ãƒ‘ãƒãƒ«ã‚¢ã‚¤ã‚³ãƒ³ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ãƒªã‚¹ãƒˆã•れã¦ã„る中ã‹ã‚‰ï¼‘ã¤ã®ã‚¤ãƒ³ãƒ—ãƒƒãƒˆãƒ¡ã‚½ãƒƒãƒ‰ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 msgid "Input Method" msgstr "入力メソッド" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 msgid "Use system keyboard layout" msgstr "システムã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’使用ã™ã‚‹" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 msgid "Use system keyboard (XKB) layout" msgstr "システムã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ (XKB) レイアウトを使用ã™ã‚‹" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "キーボードレイアウト" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 msgid "Share the same input method among all applications" msgstr "ã™ã¹ã¦ã®ã‚¢ãƒ—リケーション間ã§åŒã˜å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å…±æœ‰ã™ã‚‹" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "グローãƒãƒ«å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã®è¨­å®š" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "詳細" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "インテリジェントãªã‚¤ãƒ³ãƒ—ットãƒã‚¹\n" "ホームページ: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ログイン時㫠IBus ã‚’èµ·å‹•" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "スタートアップ" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 #: ../ui/gtk3/panel.vala:1113 msgid "About" msgstr "情報" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 msgid "_Close" msgstr "é–‰ã˜ã‚‹(_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "プリロードエンジン" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus 起動時ã®ãƒ—リロードエンジン" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "エンジンã®é †åº" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "入力メソッドã®ä¸€è¦§ã®ä¸­ã‹ã‚‰ä¿å­˜ã•れãŸã‚¨ãƒ³ã‚¸ãƒ³ã®é †åº" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 切り替ãˆã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ãƒãƒƒãƒ—アップé…延時間 (ミリ秒å˜ä½)" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "IME 切り替ãˆã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ãƒãƒƒãƒ—アップ表示をé…å»¶ã•ã›ã‚‹ãƒŸãƒªç§’数を指定ã—ã¾ã™ã€‚デフォルト㯠400 ミリ秒ã§ã™ã€‚「0 =" "ã€ãªã‚‰ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒç›´ã¡ã«è¡¨ç¤ºã•れã¾ã™ã€‚「0 <ã€ã«ã™ã‚‹ã¨æŒ‡å®šã—ãŸãƒŸãƒªç§’æ•°é…å»¶ã—ã¾ã™ã€‚「0 " ">ã€ã®å ´åˆã¯ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¯è¡¨ç¤ºã•れãšå‰ã®ã‚¨ãƒ³ã‚¸ãƒ³ã¾ãŸã¯æ¬¡ã®ã‚¨ãƒ³ã‚¸ãƒ³ã«åˆ‡ã‚Šæ›¿ã‚りã¾ã™ã€‚" #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "ä¿å­˜ã•れã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "ä¿å­˜ã•れã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã¯ã€ä»¥å‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—㟠ibus ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ç¾åœ¨ã® ibus ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®é•ã„ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹å ´åˆã«ä½¿ç”¨ã•れã¾ã™ã€‚" #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ASCII ã‚’æŒãŸãªã„ラテンレイアウト" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US レイアウトã¯ãƒ©ãƒ†ãƒ³ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«è¿½åŠ ã•れã¾ã™ã€‚variant ã¯çœç•¥å¯èƒ½ã§ã™ã€‚" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap を使用ã™ã‚‹" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus エンジンãŒåˆ‡ã‚Šæ›¿ãˆã‚‰ã‚ŒãŸã¨ãã« .xmodmap ã‚‚ã—ã㯠.Xmodmap ãŒå­˜åœ¨ã™ã‚Œã° xmodmap を実行ã—ã¾ã™ã€‚" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "トリガーショートカットキー" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ã®ãŸã‚ã®ãƒˆãƒªã‚¬ãƒ¼ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "ショートカットキーを有効ã«ã™ã‚‹" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "入力メソッドをオンã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "ショートカットキーを無効ã«ã™ã‚‹" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "入力メソッドをオフã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "次ã®ã‚¨ãƒ³ã‚¸ãƒ³ã¸ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ä¸€è¦§å†…ã®æ¬¡ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "å‰ã®ã‚¨ãƒ³ã‚¸ãƒ³ã¸ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "一覧内ã®ã²ã¨ã¤å‰ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãŸã‚ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "自動的ã«éš ã™" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "プロパティーパãƒãƒ«ã®æŒ™å‹•。 0 = 表示ã—ãªã„ã€1 = 自動的ã«éš ã™ã€2 = 常ã«è¡¨ç¤ºã™ã‚‹" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "言語パãƒãƒ«ã®ä½ç½®" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "言語パãƒãƒ«ã®ä½ç½®ã§ã™ã€‚0 = 左上ã€1 = å³ä¸Šã€2 = 左下ã€3 = å³ä¸‹ã€4 = カスタム" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "パãƒãƒ«ãŒå¸¸ã«è¡¨ç¤ºã•れã¦ã„ã‚‹å ´åˆã«å…¥åŠ›ã‚«ãƒ¼ã‚½ãƒ«ã«å¾“ã†" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "true ãªã‚‰ã°ã€ãƒ‘ãƒãƒ«ãŒå¸¸ã«è¡¨ç¤ºã•れã¦ã„ã‚‹å ´åˆã«ãƒ‘ãƒãƒ«ã¯å…¥åŠ›ã‚«ãƒ¼ã‚½ãƒ«ã«å¾“ã„ã¾ã™ã€‚false ãªã‚‰ã°ã€ãƒ‘ãƒãƒ«ã¯å›ºå®šä½ç½®ã«è¡¨ç¤ºã•れã¾ã™ã€‚" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "プロパティーパãƒãƒ«ã‚’表示ã™ã‚‹ãƒŸãƒªç§’" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "フォーカスインã¾ãŸã¯ãƒ—ロパティãŒå¤‰æ›´ã•れãŸå¾Œã§ãƒ—ロパティーパãƒãƒ«ã‚’表示ã™ã‚‹ãƒŸãƒªç§’。" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "検索テーブルã®å‘ã" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "検索テーブルã®å‘ãã§ã™ã€‚0 = 横ã€1 = 縦" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "入力メソッドåを表示ã™ã‚‹" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB アイコン㮠RGBA 値" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "XKB アイコンã¯ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆæ–‡å­—列を表示ã—ã¦ãã®æ–‡å­—列㯠RGBA å€¤ã§æç”»ã•れã¾ã™ã€‚RGBA å€¤ã¯æ¬¡ã®ã„ãšã‚Œã‹ã‚’é¸ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚1. X11 " "ã‹ã‚‰ã®è‰²å½©åã€2. æ›¸å¼ '#rrggbb' ã®16進数値ã§ã€ãã® 'r', 'g', 'b' ã¯èµ¤ã€ç·‘ã€é’ã®16é€²æ•°ã®æ•°å­—ã®ã“ã¨ã€3. æ›¸å¼ " "'rgb(r,g,b)' ã® RGB カラーã€4. æ›¸å¼ 'rgba(r,g,b,a)' ã® RGBA カラーã§ã€ãã® 'r', 'g', 'b' 㯠" "0 ã‹ã‚‰ 255 ã¾ã§ã®ç¯„å›²å†…ã®æ•´æ•°å€¤ã‹ 0% ã‹ã‚‰ 100% ã¾ã§ã®ç¯„囲内ã®ãƒ‘ーセンテージã®ã“ã¨ã§ã€'a' ã¯ã‚¢ãƒ«ãƒ•ァ値㮠0 ã‹ã‚‰ 1 " "ã¾ã§ã®ç¯„å›²å†…ã®æµ®å‹•å°æ•°å€¤ã®ã“ã¨ã€‚" #: ../data/ibus.schemas.in.h:42 msgid "The milliseconds to show the panel icon for a property" msgstr "プロパティー用ã«ãƒ‘ãƒãƒ«ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã™ã‚‹é…延時間 (ミリ秒å˜ä½)" #: ../data/ibus.schemas.in.h:43 msgid "" "The milliseconds to show the panel icon from the engine icon to a property " "icon whenever engines are switched if the property is specified by the value " "of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " "property icon is shown immediately." msgstr "" "ã‚るプロパティー㌠IBusEngineDesc ã® icon-prop-key ã®å€¤ã«æŒ‡å®šã•れã¦ã„ã‚‹å ´åˆã€" "エンジンãŒåˆ‡ã‚Šæ›¿ãˆã‚‰ã‚ŒãŸã¨ãã¯ã„ã¤ã§ã‚‚ã€ã‚¨ãƒ³ã‚¸ãƒ³ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã®å¾Œã«ãã®" "プロパティーをパãƒãƒ«ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã™ã‚‹ãŸã‚ã®ãƒŸãƒªç§’å˜ä½ã®é…延時間。値㌠0 ã®" "å ´åˆã€é…å»¶ç„¡ãプロパティーアイコンãŒå³æ™‚ã«è¡¨ç¤ºã•れる。" #: ../data/ibus.schemas.in.h:46 msgid "Use custom font" msgstr "カスタムフォントを使ã†" #: ../data/ibus.schemas.in.h:47 msgid "Use custom font name for language panel" msgstr "言語パãƒãƒ«ç”¨ã«ã‚«ã‚¹ã‚¿ãƒ ãƒ•ォントåを使用ã™ã‚‹" #: ../data/ibus.schemas.in.h:48 msgid "Custom font" msgstr "カスタムフォント" #: ../data/ibus.schemas.in.h:49 msgid "Custom font name for language panel" msgstr "言語パãƒãƒ«ç”¨ã®ã‚«ã‚¹ã‚¿ãƒ ãƒ•ォントå" #: ../data/ibus.schemas.in.h:50 msgid "Embed Preedit Text" msgstr "å‰ç·¨é›†ãƒ†ã‚­ã‚¹ãƒˆã‚’組ã¿è¾¼ã‚€" #: ../data/ibus.schemas.in.h:51 msgid "Embed Preedit Text in Application Window" msgstr "アプリケーションウィンドウã«å‰ç·¨é›†ãƒ†ã‚­ã‚¹ãƒˆã‚’組ã¿è¾¼ã¿ã¾ã™" #: ../data/ibus.schemas.in.h:52 msgid "Use global input method" msgstr "グローãƒãƒ«å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ç”¨ã™ã‚‹" #: ../data/ibus.schemas.in.h:54 msgid "Enable input method by default" msgstr "デフォルトã§å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æœ‰åŠ¹ã«ã™ã‚‹" #: ../data/ibus.schemas.in.h:55 msgid "Enable input method by default when the application gets input focus" msgstr "アプリケーションã§å…¥åŠ›ãŒå¿…è¦ã¨ã•れる場åˆã«ã¯ãƒ‡ãƒ•ォルトã§å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æœ‰åŠ¹ã«ã—ã¾ã™" #: ../data/ibus.schemas.in.h:56 msgid "DConf preserve name prefixes" msgstr "DConf ã«ã‚ˆã‚Šåå‰ã®ãƒ—レフィックスを維æŒã™ã‚‹" #: ../data/ibus.schemas.in.h:57 msgid "Prefixes of DConf keys to stop name conversion" msgstr "åå‰ã®å¤‰æ›ã‚’阻止ã™ã‚‹ DConf キーã®ãƒ—レフィックスã§ã™" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:158 msgid "Other" msgstr "ãã®ä»–" #: ../setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "言語: %s\n" #: ../setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "キーボードレイアウト: %s\n" #: ../setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "作者: %s\n" #: ../setup/engineabout.py:81 msgid "Description:\n" msgstr "説明:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 msgid "Select an input method" msgstr "入力メソッドã®é¸æŠž" #: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 #: ../setup/main.py:414 msgid "_Cancel" msgstr "キャンセル(_C)" #: ../setup/enginedialog.py:205 msgid "More…" msgstr "ã•らã«â€¦" #: ../setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus を設定ã—ã¾ã™" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "キーボードショートカット" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "キーコード:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "修飾キー:" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "é©ç”¨(_A)" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "削除(_D)" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "キーもã—ãã¯ã‚­ãƒ¼ã®çµ„ã¿åˆã‚ã›ã‚’入力ã—ã¦ãã ã•ã„。\n" "キーを離ã™ã¨ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ã¾ã™ã€‚" #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "キーもã—ãã¯ã‚­ãƒ¼ã®çµ„ã¿åˆã‚ã›ã‚’入力ã—ã¦ãã ã•ã„" #: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 msgid "_OK" msgstr "OK(_O)" #: ../setup/main.py:114 ../setup/main.py:439 msgid "Use shortcut with shift to switch to the previous input method" msgstr "以å‰ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã«ã¯ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã«ã‚·ãƒ•トキーを付ã‘ã¦ä½¿ç”¨ã—ã¾ã™" #: ../setup/main.py:369 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus デーモンãŒå®Ÿè¡Œã•れã¦ã„ã¾ã›ã‚“。起動ã—ã¾ã™ã‹ï¼Ÿ" #: ../setup/main.py:390 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "IBus ã¯èµ·å‹•ã•れã¦ã„ã¾ã™ã€‚IBus ãŒä½¿ç”¨ã§ããªã„å ´åˆã¯ã€æ¬¡ã®è¡Œã‚’ $HOME/.bashrc " "ã«è¿½è¨˜ã—ã€ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã«ãƒ­ã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ã¿ã¦ãã ã•ã„。\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:404 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus デーモンを %d 秒以内ã«é–‹å§‹ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: ../setup/main.py:416 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚’é¸æŠž" #. Translators: Title of the window #: ../setup/main.py:418 msgid "switching input methods" msgstr "入力メソッドã®åˆ‡ã‚Šæ›¿ãˆä¸­" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "エンジンåã®ã¿è¡¨ç¤º" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus ã«æŽ¥ç¶šã§ãã¾ã›ã‚“。\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "言語: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "エンジンãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "グローãƒãƒ«ã‚¨ãƒ³ã‚¸ãƒ³ã®è¨­å®šã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "グローãƒãƒ«ã‚¨ãƒ³ã‚¸ãƒ³ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "システムレジストリーキャッシュを読ã¿è¾¼ã¿ã¾ã™ã€‚" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "レジストリーキャッシュ FILE を読ã¿è¾¼ã¿ã¾ã™ã€‚" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "レジストリーキャッシュã¯ç„¡åйã§ã™ã€‚\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "システムレジストリーキャッシュを書ãè¾¼ã¿ã¾ã™ã€‚" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "レジストリーキャッシュ FILE を書ãè¾¼ã¿ã¾ã™ã€‚" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "åˆæœŸåŒ–中…" #: ../tools/main.vala:318 msgid "Done" msgstr "完了" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "エンジンを設定もã—ãã¯è¡¨ç¤ºã™ã‚‹ã€‚" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon を終了ã™ã‚‹" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "利用å¯èƒ½ãªã‚¨ãƒ³ã‚¸ãƒ³ã‚’表示ã™ã‚‹" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(実装ã•れã¦ã„ã¾ã›ã‚“)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon ã‚’å†èµ·å‹•ã™ã‚‹" #: ../tools/main.vala:342 msgid "Show version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "レジストリーキャッシュã®å†…容を表示ã™ã‚‹" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "レジストリーキャッシュを作æˆã™ã‚‹" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ã® D-Bus アドレスを表示ã™ã‚‹" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "設定値を表示ã™ã‚‹" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "è¨­å®šå€¤ã‚’åˆæœŸåŒ–ã™ã‚‹" #: ../tools/main.vala:348 msgid "Show this information" msgstr "ã“ã®æƒ…報を表示ã™ã‚‹" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "ä½¿ã„æ–¹: %s コマンド [オプション...]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "コマンド:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s ã¯ä¸æ˜Žãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚\n" #: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 msgid "IBus Panel" msgstr "IBus パãƒãƒ«" #: ../ui/gtk3/panel.vala:731 msgid "IBus Update" msgstr "IBus ã®æ›´æ–°" #: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 msgid "Super+space is now the default hotkey." msgstr "Super+space ãŒç¾åœ¨ã®ãƒ‡ãƒ•ォルトã®ãƒ›ãƒƒãƒˆã‚­ãƒ¼ã§ã™ã€‚" #: ../ui/gtk3/panel.vala:1086 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 㯠Linux/Unix ã®ãŸã‚ã®ã‚¤ãƒ³ãƒ†ãƒªã‚¸ã‚§ãƒ³ãƒˆãªã‚¤ãƒ³ãƒ—ットãƒã‚¹ã§ã™ã€‚" #: ../ui/gtk3/panel.vala:1090 msgid "translator-credits" msgstr "" "UTUMI Hirosi \n" "IWAI, Masaharu \n" "æ—¥å‘原 é¾ä¸€ \n" "MIZUMOTO, Noriko " #: ../ui/gtk3/panel.vala:1109 msgid "Preferences" msgstr "設定" #: ../ui/gtk3/panel.vala:1119 msgid "Restart" msgstr "å†èµ·å‹•" #: ../ui/gtk3/panel.vala:1123 msgid "Quit" msgstr "終了" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/te.po0000644000000000000000000010005412551654123011022 00000000000000# translation of ibus.pot to Telugu # Telugu translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Krishnababu Krothapalli , 2009 # Krishnababu Krothapalli , 2009 # Krishnababu Krothapalli , 2012-2013 # Krishnababu Krothapalli , 2014 # à°ªà±à°°à°µà±€à°£à± ఇళà±à°³ , 2011,2014 # à°ªà±à°°à°µà±€à°£à± ఇళà±à°³ , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-25 14:22+0000\n" "Last-Translator: Krishnababu Krothapalli \n" "Language-Team: Telugu \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "à°…à°¡à±à°¡à°®à±" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "నిలà±à°µà±" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "పై à°Žà°¡à°® మూల" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "పై à°•à±à°¡à°¿ మూల" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "à°•à±à°°à°¿à°‚ది à°Žà°¡à°® మూల" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "à°•à±à°°à°¿à°‚ది à°•à±à°¡à°¿ మూల" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "à°…à°¨à±à°°à±‚పితం" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "చూపించవదà±à°¦à±" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "à°¸à±à°µà°¯à°‚చాలకంగా దాయి" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "à°Žà°²à±à°²à°ªà±à°ªà±à°¡à±" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "à°à°¬à°¸à± à°ªà±à°°à°¾à°§à°¾à°¨à±à°¯à°¤à°²à±" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "జాబితాలో ఉనà±à°¨ తరà±à°µà°¾à°¤à°¿ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°•ౠమారà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "తరà±à°µà°¾à°¤à°¿ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "జాబితానందలి à°®à±à°‚దరి ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°•ౠమారà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ చేతనించà±à°Ÿà°•ౠలేదా అచేతనించà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "చేతనించౠలేదా అచేతనించà±:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "చేతనించà±:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "అచేతనపరà±à°šà±:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "కీబోరà±à°¡à± à°…à°¡à±à°¡à°¦à°¾à°°à±à°²à±" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "à°²à±à°•పౠపటà±à°Ÿà°¿à°•నందౠకాండిడేటà±à°² సరà±à°¦à±à°¬à°¾à°Ÿà±à°¨à± అమరà±à°šà°‚à°¡à°¿" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "సభà±à°¯à±à°² దృకà±à°ªà°¥à°‚:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "భాషా పటà±à°Ÿà±€à°¨à°¿ ఎలా చూపాలి మరియౠదాయాలి అనేదానికి à°à°¬à°¸à± à°ªà±à°°à°µà°°à±à°¤à°¨à°¨à± అమరà±à°šà°‚à°¡à°¿" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "à°ªà±à°°à°¾à°ªà°°à±à°Ÿà±€ à°ªà±à°¯à°¾à°¨à°²à±à°¨à± చూపించà±:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "భాషా à°ªà±à°¯à°¾à°¨à°²à± à°¸à±à°¥à°¾à°¨à°‚:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "à°µà±à°¯à°µà°¸à±à°¥ పళà±à°²à±†à°®à± పై à°ªà±à°°à°¤à±€à°•నౠచూపించà±" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "భాషా పటà±à°Ÿà±€à°ªà±ˆ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ పేరà±à°¨à± చూపించà±" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "చెకà±â€Œà°¬à°¾à°•à±à°¸à± చెకౠచేసినపà±à°ªà±à°¡à± భాషా పటà±à°Ÿà±€à°ªà±ˆ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ పేరà±à°¨à± చూపించà±" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "à°…à°¨à±à°µà°°à±à°¤à°¨à°®à± à°•à°¿à°Ÿà°¿à°•à±€ నందౠమà±à°‚à°¦à±à°—à°¾ సరికూరà±à°šà°¿à°¨ పాఠà±à°¯à°¾à°¨à±à°¨à°¿ ఎంబెడెడౠచేయి" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "à°…à°¨à±à°µà°°à±à°¤à°¨à°®à± à°•à°¿à°Ÿà°¿à°•à±€ నందౠఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ యొకà±à°• à°®à±à°‚à°¦à±à°—à°¾ సరికూరà±à°šà°¿à°¨ పాఠమà±à°¨à± ఎంబెడెడౠచేయి" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "à°…à°¨à±à°°à±‚పిత ఖతిని ఉపయోగించà±:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ఖతి మరియౠశైలి" #: ../setup/setup.ui.h:34 msgid "General" msgstr "సాధారణం" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "జతచేయి (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ చేతనమైన ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à±à°²à°²à±‹à°¨à°¿à°•à°¿ జతచేయి" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "తీసివేయి (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "చేతనమైన ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à±à°² à°¨à±à°‚à°šà°¿ ఎంపికచేసిన ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ తొలగించà±" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "పైన (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "చేతనమైన ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à±à°² జాబితాలో à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ పైకి à°•à°¦à±à°ªà±" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "à°•à±à°°à°¿à°‚à°¦ (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "చేతనమైన ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à±à°²à°²à±‹ à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ à°•à±à°°à°¿à°‚దకి à°•à°¦à±à°ªà±" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "à°—à±à°°à°¿à°‚à°šà°¿ (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "à°Žà°‚à°šà±à°•à±à°¨à±à°¨ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ యొకà±à°• సమాచారానà±à°¨à°¿ చూపించà±" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "à°ªà±à°°à°¾à°§à°¾à°¨à±à°¯à°¤à°²à± (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "ఎంపికచేసిన ఇనà±à°ªà±à°Ÿà± పదà±à°§à°¤à°¿ యొకà±à°• అమరà±à°ªà±à°¨à± చూపించà±" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "పై జాబితాలోని ఇనà±à°ªà±à°Ÿà± పదà±à°¦à°¤à°¿à°¨à°¿ కీబోరà±à°¡à± షారà±à°Ÿà±â€Œà°•టౠకీలతో గాని లేదా పానలౠà°à°•ానౠనొకà±à°•ిగాని ఎంపికచేసి, à°à°•à±à°Ÿà°¿à°µà± ఇనà±à°ªà±à°Ÿà± పదà±à°¦à°¤à°¿à°¨à°¿ దానికి మారà±à°šà°µà°šà±à°šà±." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "à°µà±à°¯à°µà°¸à±à°¥ కీబోరà±à°¡à± నమూనా ఉపయోగించà±" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "à°µà±à°¯à°µà°¸à±à°¥ కీబోరà±à°¡à± (XKB) నమూనా ఉపయోగించà±" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "కీబోరà±à°¡à± నమూనా" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "à°…à°¨à±à°¨à°¿ à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à°²à±‹à°¨à±‚ ఇనà±à°ªà±à°Ÿà± పదà±à°¦à°¤à°¿à°¨à°¿ పంచà±à°•ొనà±" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "సారà±à°µà°¤à±à°°à°¿à°• ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ అమరికలà±" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "à°…à°§à±à°¨à°¾à°¤à°¨à°‚" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "à°à°¬à°¸à±\nతెలివైన ఇనà±â€Œà°ªà±à°Ÿà± బసà±\nనివాసపà±à°Ÿ: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "à°ªà±à°°à°µà±‡à°¶à°¿à°‚చేపà±à°ªà±à°¡à± à°à°¬à°¸à±â€Œà°¨à± à°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "à°ªà±à°°à°¾à°°à°‚à°­à°®à±" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "à°—à±à°°à°¿à°‚à°šà°¿" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "మూసివేయి (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "à°®à±à°‚à°¦à±à°—à°¾ లోడైన యంతà±à°°à°¾à°²à±" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "à°à°¬à°¸à± à°ªà±à°°à°¾à°°à°‚భమౠనందౠయంతà±à°°à°¾à°²à°¨à± à°®à±à°‚à°¦à±à°—à°¾ లోడà±à°šà±‡à°¯à°¿" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "యంతà±à°°à°¾à°² à°•à±à°°à°®à°‚" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ఇనà±à°ªà±à°Ÿà± పదà±à°§à°¤à°¿ జాబితా నందౠభదà±à°°à°ªà°°à°šà°¿à°¨ యంతà±à°°à°¾à°² à°•à±à°°à°®à°‚" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME à°¸à±à°µà°¿à°šà°°à± విండో కొరకౠపాపపౠఆలసà±à°¯à°‚ మిలà±à°²à±€à°¸à±†à°•à°¨à±à°²à°²à±‹" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME à°¸à±à°µà°¿à°œà°°à± విండోనౠచూపà±à°Ÿà°•ౠపాపపౠఆలసà±à°¯à°¾à°¨à±à°¨à°¿ మిలà±à°²à±€à°¸à±†à°•à°¨à±à°²à°²à±‹ అమరà±à°šà±. à°…à°ªà±à°°à°®à±‡à°¯à°‚ 400. 0 = విండోనౠతకà±à°·à°£à°®à±‡ చూపà±à°¨à±. 0 < ఆలసà±à°¯à°‚ మిలà±à°²à±€à°¸à±†à°•à°¨à±à°²à°²à±‹. 0 > విండోనౠచూపదౠమరియౠకà±à°°à°¿à°¤à°‚/తరà±à°µà°¾à°¤à°¿ యింజనà±à°²à°•ౠమారà±à°¨à±." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "à°­à°¦à±à°°à°ªà°°à°šà°¿à°¨ రూపాంతరం సంఖà±à°¯" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "à°­à°¦à±à°°à°ªà°°à°šà°¿à°¨ రూపాంతరం సంఖà±à°¯ à°…à°¨à±à°¨à°¦à°¿ గతంలో à°¸à±à°¥à°¾à°ªà°¿à°‚à°šà°¿à°¨ à°à°¬à°¸à± రూపాంతరానికి మరియౠపà±à°°à°¸à±à°¤à±à°¤ à°à°¬à°¸à± రూపాంతరానికి మధà±à°¯à°¨à°¿ తేడానౠపరిశీలించà±à°Ÿà°•ౠఉపయోగించà±à°¨à±." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ASCII లేని లాటినౠనమూనాలà±" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US నమూనా లాటినౠనమూనాలకౠకలà±à°ªà°¬à°¡à±†à°¨à±. వేరియంటà±â€Œà°¨à± విసà±à°®à°°à°¿à°‚చవచà±à°šà±." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap ఉపయోగించà±" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ఇంజనà±à°²à± మారà±à°šà°¿à°¨à°ªà±à°ªà±à°¡à± .xmodmap లేదా .Xmodmap ఉంటే à°—à°¨à±à°• xmodmap నడà±à°ªà±à°®à±." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలనౠనొకà±à°•à°‚à°¡à°¿" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse కొరకౠటà±à°°à°¿à°—à±à°—à°°à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలనౠచేతనించà±" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ చేతనించà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలనౠఅచేతనించà±" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ అచేతనించà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "తరà±à°µà°¾à°¤à°¿ యంతà±à°°à°¾à°¨à°¿à°•à°¿ à°…à°¡à±à°¡à°¦à°¾à°°à±à°²à±" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "జాబితాలోని తరà±à°µà°¾à°¤à°¿ ఇనà±à°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°•ౠమారà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ యంతà±à°° à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "జాబితాలోని à°®à±à°¨à±à°ªà°Ÿà°¿ ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°•ౠమారà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿ మీటలà±" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "à°¸à±à°µà°¯à°‚à°—à°¾ దాగà±" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "à°ªà±à°°à±‹à°ªà°°à±à°Ÿà±€ పానలౠయొకà±à°• à°ªà±à°°à°µà°°à±à°¤à°¨. 0 = చూపవదà±à°¦à±, 1 = à°¸à±à°µà°¯à°‚చాలకంగా దాచివేయి, 2 = à°Žà°²à±à°²à°ªà±à°ªà±à°¡à±‚ చూపà±" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "భాషా à°ªà±à°¯à°¾à°¨à°²à± à°¸à±à°¥à°¾à°¨à°‚" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "భాషా à°ªà±à°¯à°¾à°¨à°²à± యొకà±à°• à°¸à±à°¥à°¾à°¨à°®à±. 0 = పై à°Žà°¡à°® మూల, 1 = పై à°•à±à°¡à°¿ మూల, 2 = à°•à±à°°à°¿à°‚ది à°Žà°¡à°® మూల, 3 = à°•à±à°°à°¿à°‚ది à°•à±à°¡à°¿ మూల, 4 = à°…à°¨à±à°°à±‚పితం" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "పానలౠగనà±à°• à°Žà°²à±à°²à°ªà±à°ªà±à°¡à±‚ చూపబడà±à°¤à±‚ంటే ఇనà±à°ªà±à°ªà± à°•à°°à±à°¸à°°à±â€Œà°¨à± à°…à°¨à±à°¸à°°à°¿à°‚à°šà±à°®à±" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "true అయితే, పానలౠఎలà±à°²à°ªà±à°ªà±à°¡à±‚ చూపబడà±à°¤à±‚à°¨à±à°¨ సందరà±à°¬à°‚లో ఇనà±à°ªà±à°ªà± à°•à°°à±à°¸à°°à±â€Œà°¨à± à°…à°¨à±à°¸à°°à°¿à°‚à°šà±à°¨à±. false అయితే, పానలౠఒక à°¸à±à°¥à°¿à°°à°®à±ˆà°¨ à°¸à±à°¥à°¾à°¨à°‚లో చూపబడà±à°¨à±." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "à°ªà±à°°à±‹à°ªà°°à±à°Ÿà±€ పానలౠచూపà±à°Ÿà°•ౠమిలà±à°²à±€à°¸à±†à°•à°¨à±à°²à±" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "దృషà±à°Ÿà°¿à°¸à°¾à°°à°¿à°‚à°šà°¿à°¨ తరà±à°µà°¾à°¤ లేదా లకà±à°·à°£à°¾à°²à± మారà±à°šà°¿à°¨ తరà±à°µà°¾à°¤ à°ªà±à°°à±‹à°ªà°°à±à°Ÿà±€ పానలౠచూపà±à°Ÿà°•ౠమిలà±à°²à±€à°¸à±†à°•à°¨à±à°²à±." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "à°²à±à°•పౠపటà±à°Ÿà°¿à°• సరà±à°¦à±à°¬à°¾à°Ÿà±" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "à°²à±à°•పౠపటà±à°Ÿà°¿à°• సరà±à°¦à±à°¬à°¾à°Ÿà±. 0 = à°…à°¡à±à°¡à°®à±, 1 = నిలà±à°µà±" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿ పేరà±à°¨à± చూపించà±" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB à°ªà±à°°à°¤à°¿à°® యొకà±à°• RGBA విలà±à°µ" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB à°ªà±à°°à°¤à°¿à°® అనేది నమూనా à°¸à±à°Ÿà±à°°à°¿à°‚గౠచూపà±à°¨à± మరియౠఆ à°¸à±à°Ÿà±à°°à°¿à°‚à°—à± RGBA విలà±à°µà°¤à±‹ రెండరౠఅగà±à°¨à±. RGBA విలà±à°µ ఇలా ఉండగలదౠ1. X11 à°¨à±à°‚à°¡à°¿ à°’à°• à°°à°‚à°—à±, 2. '#rrggbb' à°¨à±à°‚à°¡à°¿ హెకà±à°¸à± విలà±à°µ ఇచట 'r', 'g' మరియౠ'b' లౠఎరà±à°ªà±, పచà±à°š, మరియౠనీలం యొకà±à°• హెకà±à°¸à± అంకెలà±, 3. RGB à°°à°‚à°—à± 'rgb(r,g,b)' à°¨à±à°‚à°¡à°¿ లేదా 4. RGBA à°°à°‚à°—à± 'rgba(r,g,b,a)' రూపంలో ఇచట 'r', 'g', మరియౠ'b' లౠ0 à°¨à±à°‚à°¡à°¿ 255 వరకౠపూరà±à°£à°¾à°‚కాలౠగాని లేదా 0% à°¨à±à°‚à°¡à°¿ 100% విసà±à°¤à±ƒà°¤à°¿à°²à±‹ శాతపౠవిలà±à°µà°²à± గాని à°…à°µà±à°¤à°¾à°¯à°¿, మరియౠ'a' అనేది à°…à°²à±à°«à°¾ యొకà±à°• 0 à°¨à±à°‚à°¡à°¿ 1 విసà±à°¤à±ƒà°¤à°¿à°²à±‹ à°«à±à°²à±‹à°Ÿà°¿à°‚గౠపాయింటౠవిలà±à°µ à°…à°µà±à°¤à±à°‚ది." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "à°…à°¨à±à°°à±‚పిత ఖతిని ఉపయోగించà±" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "భాషా à°ªà±à°¯à°¾à°¨à°²à± కొరకౠఅనà±à°°à±‚పిత ఖతి పేరà±à°¨à± ఉపయోగించà±" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "à°…à°¨à±à°°à±‚పిత ఖతి" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "భాష à°ªà±à°¯à°¾à°¨à°²à± కొరకౠఅనà±à°°à±‚పించిన ఖతి పేరà±" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "ఎంబెడెడౠపà±à°°à°¿à°Žà°¡à°¿à°Ÿà± పాఠà±à°¯à°‚" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "à°…à°¨à±à°µà°°à±à°¤à°¨ à°•à°¿à°Ÿà°¿à°•à±€ నందౠఎంబెడెడౠపà±à°°à°¿à°Žà°¡à°¿à°Ÿà± పాఠà±à°¯à°‚" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "సారà±à°µà°¤à±à°°à°¿à°• ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ ఉపయోగించà±" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ à°…à°ªà±à°°à°®à±‡à°¯à°‚à°—à°¾ చేతనించà±" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "à°…à°¨à±à°µà°°à±à°¤à°¨à°®à± ఇనà±â€Œà°ªà±à°Ÿà± ఫోకసà±â€Œà°¨à± పొందగానే ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ à°…à°ªà±à°°à°®à±‡à°¯à°‚à°—à°¾ చేతనించà±" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf à°µà±à°‚à°šà°¿à°¨ పేరౠపà±à°°à°¿à°«à°¿à°•à±à°¸à±†à°¸à±" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "పేరౠమారà±à°ªà±à°¨à± ఆపà±à°Ÿà°•à± DConf మీటల à°ªà±à°°à°¿à°«à°¿à°•à±à°¸à±à°²à±" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "నకలà±à°¹à°•à±à°•à± (c) 2007-2010 Peng Huang\nనకలà±à°¹à°•à±à°•à± (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "ఇతర" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "భాష: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "కీబోరà±à°¡à± నమూనా: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "మూలకరà±à°¤: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "వివరణ:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "à°’à°• ఇనà±â€Œà°ªà±à°Ÿà± పదà±à°§à°¤à°¿à°¨à°¿ à°Žà°‚à°šà±à°•ోండి" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿ (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "మరినà±à°¨à°¿..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "à°à°¬à°¸à± à°ªà±à°°à°¾à°§à°¾à°¨à±à°¯à°¤à°²à°¨à± అమరà±à°šà±" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "కీబోరà±à°¡à± à°…à°¡à±à°¡à°¦à°¾à°°à±à°²à±" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "మీట సంకేతం:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "సవరణిలà±:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "à°…à°¨à±à°µà°°à±à°¤à°¿à°‚à°šà± (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "తొలగించౠ(_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "దయచేసి వొక కీనౠవతà±à°¤à°‚à°¡à°¿ (లేదా à°•à±€ మిశà±à°°à°®à°¾à°¨à±à°¨à°¿).\nà°•à±€ వదిలినపà±à°ªà±à°¡à± డైలాగౠమూయబడà±à°¤à±à°‚ది." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "దయచేసి మీటనౠవతà±à°¤à°‚à°¡à°¿ (లేదా మీటల సమà±à°®à±‡à°³à°¨à°‚)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "సరే (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ ఇనà±à°ªà±à°Ÿà± పదà±à°¦à°¤à°¿à°•à°¿ మారà±à°Ÿà°•à± à°…à°¡à±à°¡à°¦à°¾à°°à°¿à°¨à°¿ shift తో ఉపయోగించà±" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "à°à°¬à°¸à± డెమోనౠనడà±à°šà±à°Ÿà°²à±‡à°¦à±. మీరౠపà±à°°à°¾à°°à°‚భించాలని à°…à°¨à±à°•ొనà±à°šà±à°¨à±à°¨à°¾à°°à°¾?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "à°à°¬à°¸à± à°ªà±à°°à°¾à°°à°‚భమైంది! మీరౠà°à°¬à°¸à± ఉపయోగించలేకà±à°‚టే, మీ $HOME/.bashrc కౠకింది పంకà±à°¤à±à°²à°¨à± జతచేయండి; à°…à°ªà±à°ªà±à°¡à± తిరిగి డెసà±à°•à±à°Ÿà°¾à°ªà±â€Œà°•à± à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "à°à°¬à°¸à± డీమనౠ%d à°•à±à°·à°£à°¾à°²à°²à±‹ à°ªà±à°°à°¾à°°à°‚à°­à°‚ కాలేకపోయింది" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s కొరకౠకీబోరà±à°¡à± లఘà±à°µà±à°¨à± à°Žà°‚à°šà±à°•ోండి" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ఇనà±à°ªà±à°Ÿà± పదà±à°¦à°¤à±à°²à± మారà±à°šà±à°Ÿ" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "యంతà±à°°à°‚ పేరౠమాతà±à°°à°®à±‡ జాబితాచేయి" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "à°à°¬à°¸à±â€Œà°•à± à°…à°¨à±à°¸à°‚ధానం కాలేదà±.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "భాష: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "ఠయంతà±à°°à°®à± అమరà±à°šà°²à±‡à°¦à±.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "సారà±à°µà°¤à±à°°à°¿à°• యంతà±à°°à°‚ అమరà±à°šà±à°Ÿ విఫలమైంది.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "సారà±à°µà°¤à±à°°à°¿à°• యంతà±à°°à°‚ పొందà±à°Ÿ విఫలమైంది.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "à°µà±à°¯à°µà°¸à±à°¥ రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ à°šà°¦à±à°µà±." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ FILE à°šà°¦à±à°µà±." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ చెలà±à°²à°¨à°¿à°¦à°¿.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "à°µà±à°¯à°µà°¸à±à°¥ రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ à°µà±à°°à°¾à°¯à°¿." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ FILE à°µà±à°°à°¾à°¯à°¿." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "తిరిగివà±à°‚à°šà±à°¤à±‹à°‚ది..." #: ../tools/main.vala:318 msgid "Done" msgstr "అయినది" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "యంతà±à°°à°¾à°¨à±à°¨à°¿ అమరà±à°šà± లేదా పొందà±" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon నిషà±à°•à±à°°à°®à°¿à°‚à°šà±" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹à°¨à°¿ యంతà±à°°à°¾à°²à°¨à± చూపించà±" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(అమలౠచేయలేదà±)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon à°ªà±à°¨à°ƒà°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±" #: ../tools/main.vala:342 msgid "Show version" msgstr "రూపాంతరానà±à°¨à°¿ చూపించà±" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ యొకà±à°• కాంటెంటౠచూపà±" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "రిజిసà±à°Ÿà±à°°à±€ à°•à±à°¯à°¾à°šà±€ సృషà±à°Ÿà°¿à°‚à°šà±" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon యొకà±à°• D-Bus à°šà°¿à°°à±à°¨à°¾à°®à°¾ à°®à±à°¦à±à°°à°¿à°‚à°šà±" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "ఆకృతీకరణ విలà±à°µà°²à°¨à± చూపà±à°®à±" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "ఆకృతీకరణ విలà±à°µà°²à°¨à± తిరిగివà±à°‚à°šà±à°®à±" #: ../tools/main.vala:348 msgid "Show this information" msgstr "à°ˆ సమాచారం చూపించà±" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "వాడà±à°•: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "ఆదేశాలà±:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s తెలియని ఆదేశం!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "à°à°¬à°¸à± నవీకరణ" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "ఇపà±à°ªà±à°¡à± Super+space à°…à°ªà±à°°à°®à±‡à°¯ హాటà±â€Œà°•à±€." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus à°…à°¨à±à°¨à°¦à°¿ Linux/Unix కొరకౠతెలివైన ఇనà±â€Œà°ªà±à°Ÿà± బసà±." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "కృషà±à°£à°¬à°¾à°¬à± కె 2009.\nà°ªà±à°°à°µà±€à°£à± యిళà±à°³ 2010-14." #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "à°ªà±à°°à°¾à°§à°¾à°¨à±à°¯à°¤à°²à± " #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "à°ªà±à°¨à°ƒà°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà± " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/hi.po0000644000000000000000000006001112551654123011010 00000000000000# translation of ibus.pot to Hindi # Hindi translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Rajesh Ranjan , 2009 # Rajesh Ranjan , 2009,2011-2013 # Rajesh Ranjan , 2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Rajesh Ranjan \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "कà¥à¤·à¥ˆà¤¤à¤¿à¤œ" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "लंबवत" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ऊपरी बायां कोना" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ऊपरी दाहिना कोना" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "निचला बायां कोना" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "निचला दाहिना कोना" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "मनपसंद" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "हमेशा" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus वरीयता" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "सूची में अगली इनपà¥à¤Ÿ विधि में जाने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "अगली इनपà¥à¤Ÿ विधि :" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "सूची में पिछली इनपà¥à¤Ÿ विधि में जाने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "पिछली इनपà¥à¤Ÿ विधि:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "इनपà¥à¤Ÿ विधि को चालू या बंद रखने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "सकà¥à¤°à¤¿à¤¯ या निषà¥à¤•à¥à¤°à¤¿à¤¯ करें:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "सकà¥à¤°à¤¿à¤¯ करें:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "निषà¥à¤•à¥à¤°à¤¿à¤¯ करें:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "कà¥à¤‚जीपटल शॉरà¥à¤Ÿà¤•ट" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "लà¥à¤•अप सारणी में कंडीडेट की दिशा सेट करें" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "कंडीडेट दिशा:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus का आचरण सेट करें कि कैसे भाषा पटà¥à¤Ÿà¥€ को दिखाना या छिपाना है" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "भाषा पैनल सà¥à¤¥à¤¿à¤¤à¤¿:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "तंतà¥à¤° तशà¥à¤¤à¤°à¥€ पर पà¥à¤°à¤¤à¥€à¤• दिखाà¤à¤" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "भाषा पटà¥à¤Ÿà¥€ पर इनपà¥à¤Ÿ विधि नाम दिखाà¤à¤" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "भाषा पटà¥à¤Ÿà¥€ पर इनपà¥à¤Ÿ विधि नाम दिखाà¤à¤ जब जाà¤à¤šà¤ªà¥‡à¤Ÿà¥€ जाà¤à¤šà¤¾ गया है" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— विंडो में पूरà¥à¤µà¤¸à¤‚पादित पाठ अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करें" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "इनपà¥à¤Ÿ विधि के पूरà¥à¤µà¤¸à¤‚पादित पाठ को अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— विंडो में अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करें" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "मनपसंद फ़ॉनà¥à¤Ÿ का पà¥à¤°à¤¯à¥‹à¤— करें:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "फ़ॉनà¥à¤Ÿ व शैली" #: ../setup/setup.ui.h:34 msgid "General" msgstr "सामानà¥à¤¯" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "जोड़ें (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "सकà¥à¤°à¤¿à¤¯ किठगठइनपà¥à¤Ÿ विधि में चà¥à¤¨à¥€ गई इनपà¥à¤Ÿ विधियों को जोड़ें" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "हटाà¤à¤ (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "सकà¥à¤°à¤¿à¤¯ की गई इनपà¥à¤Ÿ विधियों में चà¥à¤¨à¥€ गई इनपà¥à¤Ÿ विधियों हटाà¤à¤" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ऊपर (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "सकà¥à¤°à¤¿à¤¯ की गई इनपà¥à¤Ÿ विधि सूची में चà¥à¤¨à¥€ गई इनपà¥à¤Ÿ विधियों को ले जाà¤à¤" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "नीचे (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "सकà¥à¤°à¤¿à¤¯ की गई इनपà¥à¤Ÿ विधियों में चà¥à¤¨à¥€ गई इनपà¥à¤Ÿ विधियों को खिसकाà¤à¤" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "परिचय (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "चà¥à¤¨à¥€ गई इनपà¥à¤Ÿ विधि की सूचना दिखाà¤à¤" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "वरीयता (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "चà¥à¤¨à¥‡ गठइनपà¥à¤Ÿ विधि का सेटअप दिखाà¤à¤" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "इनपà¥à¤Ÿ विधि" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "तंतà¥à¤° कà¥à¤‚जीपट लेआउट का पà¥à¤°à¤¯à¥‹à¤— करें" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "तंतà¥à¤° कà¥à¤‚जीपट (XKB) लेआउट का पà¥à¤°à¤¯à¥‹à¤— करें" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "कà¥à¤‚जीपट लेआउट" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "सभी अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—ों के बीच समान इनपà¥à¤Ÿ विधि को साà¤à¤¾ करें" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "कोई इनपà¥à¤Ÿ विधि चà¥à¤¨à¥‡à¤‚" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "उनà¥à¤¨à¤¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nतेज-तरà¥à¤°à¤¾à¤° इनपà¥à¤Ÿ बस\nहोमपेज: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "लॉगिन पर ibus आरंभ करें" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "परिचय" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "बंद करें (_C)" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "पहले से लोड इंजन" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "ibus आरंभन के दौरान पहले से लोड इंजन" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "इंजन कà¥à¤°à¤®" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "इंजन कà¥à¤°à¤® को इनपà¥à¤Ÿ विधि सूची में सहेजा" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME सà¥à¤µà¤¿à¤šà¤° विंडो के लिठआरंभिक विलमà¥à¤¬ मिलीसकेणà¥à¤¡ में" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME सà¥à¤µà¤¿à¤šà¤° विंडो दिखाने के लिठपॉपअप विलंब को मिलीसेकेंड में सेट करें. तयशà¥à¤¦à¤¾ है400. 0 = विंडो को ततà¥à¤•ाल दिखाà¤à¤. 0 < मिलीसेकेंड विलंब. 0 > विंडो को मत दिखाà¤à¤ और पिछला/अगला इंजन में सà¥à¤µà¤¿à¤š करें." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "शॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी टà¥à¤°à¤¿à¤—र करें" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी टà¥à¤°à¤¿à¤—र करें" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "शॉरà¥à¤Ÿà¤•ट कà¥à¤à¤œà¤¿à¤¯à¤¾à¤ सकà¥à¤°à¤¿à¤¯ करें" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "इनपà¥à¤Ÿ विधि को चालू करने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤à¤œà¤¿à¤¯à¤¾à¤" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "शॉरà¥à¤Ÿà¤•ट कà¥à¤à¤œà¤¿à¤¯à¤¾à¤ निषà¥à¤•à¥à¤°à¤¿à¤¯ करें" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "इनपà¥à¤Ÿ विधि को बंद करने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤à¤œà¤¿à¤¯à¤¾à¤" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "अगला इंजन शॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "सूची में अगली इनपà¥à¤Ÿ विधि में जाने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जियाà¤" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "पिछला इंजन शॉरà¥à¤Ÿà¤•ट कà¥à¤‚जी" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "सूची में पिछली इनपà¥à¤Ÿ विधि में जाने के लिठशॉरà¥à¤Ÿà¤•ट कà¥à¤‚जियाà¤" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "सà¥à¤µà¤¤à¤ƒ छà¥à¤ªà¤¾à¤à¤" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "भाषा पैनल सà¥à¤¥à¤¿à¤¤à¤¿" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "भाषा पटल की सà¥à¤¥à¤¿à¤¤à¤¿. 0 = ऊपरी बायाठकोना, 1 = ऊपरी दाहिना कोना, 2 = निचला बायां कोना, 3 = निचला दाहिना कोना, 4 = पसंदीदा" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "लà¥à¤•अप सारणी की दिशा" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "सारणी देखने के लिठदिशा. 0 = कà¥à¤·à¥ˆà¤¤à¤¿à¤œ, 1 = लंबवत" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "इनपà¥à¤Ÿ विधि नाम दिखाà¤à¤" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "मनपसंद फ़ॉनà¥à¤Ÿ का पà¥à¤°à¤¯à¥‹à¤— करें" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "भाषा पटल के लिठमनपसंद फ़ॉनà¥à¤Ÿ नाम का पà¥à¤°à¤¯à¥‹à¤— करें" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "मनपसंद फ़ॉनà¥à¤Ÿ" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "भाषा पटल के लिठमनपसंद फ़ॉनà¥à¤Ÿ नाम" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "पूरà¥à¤µà¤¸à¤‚पादित पाठ अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करें" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— विंडो में पूरà¥à¤µà¤¸à¤‚पादित पाठ अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करें" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "लकà¥à¤·à¥à¤¯ इनपà¥à¤Ÿ विधि का पà¥à¤°à¤¯à¥‹à¤— करें" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "इनपà¥à¤Ÿ विधि को तयशà¥à¤¦à¤¾ रूप से सकà¥à¤°à¤¿à¤¯ करें" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "जब अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— इनपà¥à¤Ÿ फोकस पाता है तो इनपà¥à¤Ÿ विधि को तयशà¥à¤¦à¤¾ रूप से सकà¥à¤°à¤¿à¤¯ करें" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf नाम उपसरà¥à¤— को संरकà¥à¤·à¤¿à¤¤ करता है" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf कà¥à¤à¤œà¥€ का उपसरà¥à¤— नाम वारà¥à¤¤à¤¾à¤²à¤¾à¤ª रोकने के लिà¤" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "अनà¥à¤¯" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "भाषा: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "कà¥à¤‚जीपट लेआउट: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "लेखक: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "विवरण:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "कोई इनपà¥à¤Ÿ विधि चà¥à¤¨à¥‡à¤‚" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus वरीयताà¤à¤ सेट करें" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "कà¥à¤‚जीपटल शॉरà¥à¤Ÿà¤•रà¥à¤Ÿ" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "कà¥à¤‚जी कोड:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "परिवरà¥à¤¤à¤¨à¤•रà¥à¤¤à¤¾:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "लागू करें (_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "मिटाà¤à¤ (_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "कृपया कोई कà¥à¤‚जी दबाà¤à¤ (या कोई कà¥à¤‚जी संयोग).\nयह संवाद कà¥à¤‚जी छोड़े जाने पर बंद हो जाà¤à¤—ा." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "कृपया कोई कà¥à¤‚जी दबाà¤à¤ (या कोई कà¥à¤‚जी संयोग)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "रदà¥à¤¦ करें (_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "ठीक (_O)" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "पिछले इनपà¥à¤Ÿ विधि में जाने के लिठशिफà¥à¤Ÿ के साथ शॉरà¥à¤Ÿà¤•ट का उपयोग करें" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus डेमॉन चल नहीं रहा है. कà¥à¤¯à¤¾ आप इसे आरंभ करना चाहते हैं?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus को आरंभ किया गया है! यदि आप IBus का उपयोग नहीं करना चाहते हैं, अपने $HOME/.bashrc; में निमà¥à¤¨à¤²à¤¿à¤–ित पंकà¥à¤¤à¤¿ जोड़ें फिर अपने डेसà¥à¤•टॉप में लॉग करें.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus %d सेकेंड में आरंभ नहीं हो सका" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s के लिठकà¥à¤‚जीपटल शॉरà¥à¤Ÿà¤•रà¥à¤Ÿ चà¥à¤¨à¥‡à¤‚" #: ../setup/main.py:377 msgid "switching input methods" msgstr "इनपà¥à¤Ÿ विधि सà¥à¤µà¤¿à¤š कर रहा है" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "इंजन नाम को केवल सूचीबदà¥à¤§ करता है" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "IBus में कनेकà¥à¤Ÿ नहीं हो सकता है.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "भाषा: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "कोई इंजन सेट नहीं.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "वैशà¥à¤µà¤¿à¤• इंजन विफल के रूप में सेट करें.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "वैशà¥à¤µà¤¿à¤• इंजन विफल पाà¤à¤.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "पà¥à¤°à¤¯à¥‹à¤—: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "कमांड:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s अजà¥à¤žà¤¾à¤¤ कमांड है!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus Linux/Unix के लिठतेज तरà¥à¤°à¤¾à¤° इनपà¥à¤Ÿ बस है." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "राजेश रंजन (rranjan@redhat.com)" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "वरीयता " #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "पà¥à¤¨à¤ƒ पà¥à¤°à¤¾à¤°à¤‚भ करें" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "बाहर जाà¤à¤" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/kn.po0000644000000000000000000010314612551654123011027 00000000000000# translation of ibus.pot to Kannada # Kannada translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # shanky , 2013-2014 # shanky , 2012 # shankar , 2009-2010,2013 # shanky , 2011-2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-27 19:17+0000\n" "Last-Translator: shanky \n" "Language-Team: Kannada \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kn\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "ಲಂಬ" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "ಲಂಬ" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ಮೇಲಿನ ಎಡ ಮೂಲೆ" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ಮೇಲಿನ ಬಲ ಮೂಲೆ" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "ಕೆಳಗಿನ ಎಡ ಮೂಲ" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "ಕೆಳಗಿನ ಬಲ ಮೂಲ" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "ಇಚà³à²›à³†à²¯" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "ತೋರಿಸಬೇಡ" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "ಸà³à²µà²¯à²‚ಚಾಲಿತವಾಗಿ ಅಡಗಿಸà³" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "ಯಾವಾಗಲೂ" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus ಆದà³à²¯à²¤à³†à²—ಳà³" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿à²¨ ಮà³à²‚ದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿಗಳà³" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "ಮà³à²‚ದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನ:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿à²¨ ಹಿಂದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿಗಳà³" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ಹಿಂದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನ:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನಗಳನà³à²¨à³ ಆಫೠಹಾಗೠಆನೠಮಾಡಲೠಶಾರà³à²Ÿà³-ಕೀಲಿಗಳà³" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "ಶಕà³à²¤à²—ೊಂಡ ಅಥವ ಅಶಕà³à²¤à²—ೊಂಡ:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "ಶಕà³à²¤à²—ೊಳಿಸà³:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "ಅಶಕà³à²¤à²—ೊಳಿಸà³:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "ಕೀಲಿಮಣೆ ಶಾರà³à²Ÿà³-ಕಟà³â€Œà²—ಳà³" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "ನೋಡಬೇಕಿರà³à²µ (ಲà³à²•à³â€Œà²…ಪà³â€Œ) ಕೋಷà³à²Ÿà²•ದ ವಾಲಿಕೆಯನà³à²¨à³ ಹೊಂದಿಸಿ" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ಅಭà³à²¯à²°à³à²¥à²¿à²—ಳ ಹೊಂದಿಕೆ:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ಭಾಷಾ ಪಟà³à²Ÿà²¿à²•ೆಯನà³à²¨à³ ಹೇಗೆ ತೋರಿಸಬೇಕೠಅಥವ ಅಡಗಿಸಬೇಕೠಎನà³à²¨à³à²µ ibus ನ ವರà³à²¤à²¨à³†à²¯à²¨à³à²¨à³ ಹೊಂದಿಸಿ" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "ಗà³à²£à²¦ ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¨à³ ತೋರಿಸà³:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ಭಾಷೆಯ ಫಲಕದ ಸà³à²¥à²³:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಟà³à²°à³‡à²¯à²²à³à²²à²¿ ಚಿಹà³à²¨à³†à²¯à²¨à³à²¨à³ ತೋರಿಸà³" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "ಭಾಷೆಯ ಫಲಕದಲà³à²²à²¿à²¨ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಹೆಸರನà³à²¨à³ ತೋರಿಸà³" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ಗà³à²°à³à²¤à³à²šà³Œà²•ದಲà³à²²à²¿ ಗà³à²°à³à²¤à³ ಹಾಕಿದಾಗ ಭಾಷಾ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಹೆಸರನà³à²¨à³ ತೋರಿಸà³" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "ಅನà³à²µà²¯ ವಿಂಡೊದಲà³à²²à²¿ Preedit ಪಠà³à²¯à²µà²¨à³à²¨à³ ಅಡಕಗೊಳಿಸಿ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "ಅನà³à²µà²¯ ವಿಂಡೊದಲà³à²²à²¿ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ Preedit ಪಠà³à²¯à²µà²¨à³à²¨à³ ಅಡಕಗೊಳಿಸಿ" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "ಇಚà³à²›à³†à²¯ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯à²¨à³à²¨à³ ಬಳಸಿ:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ಅಕà³à²·à²°à²¶à³ˆà²²à²¿ ಹಾಗೠವಿನà³à²¯à²¾à²¸" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ಸಾಮಾನà³à²¯" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "ಸೇರಿಸೠ(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಶಕà³à²¤à²—ೊಂಡಿರà³à²µ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನಗಳಿಗೆ ಸೇರಿಸಿ" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "ತೆಗೆದೠಹಾಕೠ(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಶಕà³à²¤à²—ೊಂಡಿರà³à²µ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನಗಳ ಪಟà³à²Ÿà²¿à²¯à²¿à²‚ದ ತೆಗೆದೠಹಾಕಿ" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ಮೇಲಕà³à²•ೆ (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಶಕà³à²¤à²—ೊಂಡಿರà³à²µ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನಗಳ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಮೇಲಕà³à²•ೆ ಜರà³à²—ಿಸಿ" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "ಕೆಳಕà³à²•ೆ (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಶಕà³à²¤à²—ೊಂಡಿರà³à²µ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನಗಳ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಕೆಳಕà³à²•ೆ ಜರà³à²—ಿಸಿ" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "ಕà³à²°à²¿à²¤à³ (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಮಾಹಿತಿಯನà³à²¨à³ ತೋರಿಸà³" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "ಆದà³à²¯à²¤à³†à²—ಳೠ(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "ಆಯà³à²•ೆ ಮಾಡಲಾದ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಸೆಟà³à²…ಪà³â€Œ ಅನà³à²¨à³ ತೋರಿಸà³" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "ಸಕà³à²°à²¿à²¯ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಆಯà³à²•ೆ ಮಾಡಲಾಗಿರà³à²µà³à²¦à²°à²¿à²‚ದ ಮೇಲಿನ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿à²¨ ಬೇರೆಯೊಂದಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಕೀಲಿಮಣೆ ಸಮೀಪಮಾರà³à²—ಗಳನà³à²¨à³ ಬಳಸಬಹà³à²¦à³ ಅಥವ ಪà³à²¯à²¾à²¨à²²à³â€Œ ಚಿಹà³à²¨à³†à²¯à²¨à³à²¨à³ ಕà³à²²à²¿à²•ೠಮಾಡಬಹà³à²¦à³." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕೀಲಿಮಣೆ ವಿನà³à²¯à²¾à²¸à²µà²¨à³à²¨à³ ಬಳಸಿ" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕೀಲಿಮಣೆ (XKB) ವಿನà³à²¯à²¾à²¸à²µà²¨à³à²¨à³ ಬಳಸಿ" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "ಕೀಲಿಮಣೆ ವಿನà³à²¯à²¾à²¸" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "ಒಂದೇ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನವನà³à²¨à³ ಎಲà³à²²à²¾ ಅನà³à²µà²¯à²—ಳಲà³à²²à³‚ ಬಳಸà³" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ಜಾಗತಿಕ ಇನà³â€Œà²ªà³à²Ÿà³â€Œ ವಿಧಾನದ ಸಿದà³à²§à²¤à³†à²—ಳà³" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "ಸà³à²§à²¾à²°à²¿à²¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nಚತà³à²° ಇನà³â€Œà²ªà³à²Ÿà³ ಬಸà³\nHomepage: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ಪà³à²°à²µà³‡à²¶à²¿à²¸à²¿à²¦à²¾à²— ibus ಅನà³à²¨à³ ಆರಂಭಿಸà³" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ಆರಂಭ" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "ಇದರ ಬಗà³à²—ೆ" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "ಮà³à²šà³à²šà³ (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "ಪà³à²°à²¿à²²à³‹à²¡à³ ಎಂಜಿನà³â€Œà²—ಳà³" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus ಆರಂಭಗೊಂಡಾಗ ಲೋಡೠಮಾಡಲಾದ ಎಂಜಿನà³â€Œà²—ಳà³" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "ಎಂಜಿನà³â€Œà²—ಳ ಕà³à²°à²®" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿à²¨ ಉಳಿಸಲಾದ ಎಂಜಿನà³â€Œà²—ಳà³" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಗಾಗಿ ಪà³à²Ÿà²¿à²•ೆ (ಪಾಪà³à²…ಪà³) ವಿಳಂಬ, ಮಿಲಿಸೆಕೆಂಡà³à²—ಳಲà³à²²à²¿" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಯನà³à²¨à³ ತೋರಿಸಲೠಮಿಲಿಸೆಕೆಂಡà³à²—ಳಲà³à²²à²¿ ಪà³à²Ÿà²¿à²•ೆ (ಪಾಪà³à²…ಪà³) ವಿಳಂಬವನà³à²¨à³ ಹೊಂದಿಸಿ. ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤à²µà³ 400 ಆಗಿರà³à²¤à³à²¤à²¦à³†. 0 = ಕಿಟಕಿಯನà³à²¨à³ ತಕà³à²·à²£à²µà³† ತೋರಿಸà³. 0 < ಮಿಲಿಸೆಕೆಂಡà³à²—ಳಲà³à²²à²¿ ವಿಳಂಬ. 0 > ಕಿಟಕಿಯನà³à²¨à³ ತೋರಿಸಬೇಡ ಮತà³à²¤à³ ಹಿಂದಿನ/ಮà³à²‚ದಿನ ಎಂಜಿನà³â€Œà²—ಳಿಗೆ ಬದಲಾಯಿಸಬೇಡ." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "ಉಳಿಸಲಾದ ಆವೃತà³à²¤à²¿ ಸಂಖà³à²¯à³†" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "ಉಳಿಸಲಾದ ಆವೃತà³à²¤à²¿ ಸಂಖà³à²¯à³†à²¯à²¨à³à²¨à³ ಬಳಸಿಕೊಂಡೠಈ ಹಿಂದೆ ಅನà³à²¸à³à²¥à²¾à²ªà²¿à²¸à²²à²¾à²¦ ibus ಮತà³à²¤à³ ಪà³à²°à²¸à²•à³à²¤ ಲಭà³à²¯à²µà²¿à²°à³à²µ ibus ನಡà³à²µà²¿à²¨ ವà³à²¯à²¤à³à²¯à²¾à²¸à²µà²¨à³à²¨à³ ಪರಿಶೀಲಿಸಲೠಸಾಧà³à²¯à²µà²¿à²°à³à²¤à³à²¤à²¦à³†." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ಯಾವà³à²¦à³† ASCII ಅನà³à²¨à³ ಹೊಂದಿರದ ಲà³à²¯à²¾à²Ÿà²¿à²¨à³ ವಿನà³à²¯à²¾à²¸à²—ಳೠ(ಲೇಔಟà³â€Œ)" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US ವಿನà³à²¯à²¾à²¸à²µà²¨à³à²¨à³ ಲà³à²¯à²¾à²Ÿà²¿à²¨à³â€Œ ವಿನà³à²¯à²¾à²¸à²—ಳಿಗೆ ಸೇರಿಸಲಾಗà³à²¤à³à²¤à²¦à³†. ವೇರಿಯಂಟà³â€Œ ಅನà³à²¨à³ ಬಿಡಬಹà³à²¦à³." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap ಅನà³à²¨à³ ಬಳಸà³" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ಅನà³à²¨à³ ಬದಲಾಯಿಸಿದಾಗ, .xmodmap ಅಥವ .Xmodmap ಅಸà³à²¤à²¿à²¤à³à²µà²¦à²²à³à²²à²¿à²¦à³à²¦à²°à³† xmodmap ಅನà³à²¨à³ ಚಲಾಯಿಸಿ." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "ಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳನà³à²¨à³ ಟà³à²°à²¿à²—ರೠಮಾಡà³" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳನà³à²¨à³ ಟà³à²°à²¿à²—ರೠಮಾಡà³" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "ಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳನà³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸà³" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಆನೠಮಾಡಲೠಬಳಸಬಹà³à²¦à²¾à²¦ ಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿ" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "ಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳನà³à²¨à³ ಅಶಕà³à²¤à²—ೊಳಿಸà³" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಆಫೠಮಾಡಲೠಬಳಸಬಹà³à²¦à²¾à²¦ ಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿ" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "ಮà³à²‚ದಿನ ಎಂಜಿನೠಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳà³" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿à²¨ ಮà³à²‚ದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿಗಳà³" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "ಹಿಂದಿನ ಎಂಜಿನೠಶಾರà³à²Ÿà³-ಕಟೠಕೀಲಿಗಳà³" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "ಹಿಂದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿಗಳà³" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "ಸà³à²µà²¯à²‚ ಅಡಗಿಸà³à²µà²¿à²•ೆ" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "ಗà³à²£à²¦ ಪà³à²¯à²¾à²¨à²²à³â€Œà²¨ ವರà³à²¤à²¨à³†. 0 = ಮೆನà³à²µà²¿à²¨à²²à³à²²à²¿ ಅಡಕಗೊಳಿಸಲಾಗಿದೆ, 1 = ಸà³à²µà²¯à²‚ ಅಡಗಿಸà³, 2 = ಯಾವಾಗಲೂ ತೋರಿಸà³" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "ಭಾಷೆಯ ಫಲಕವನà³à²¨à³ ತೋರಿಸà³" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ಭಾಷೆಯ ಫಲಕವೠಇರà³à²µ ಸà³à²¥à²³. 0 = ಮೇಲಿನ ಎಡ ಮೂಲೆ, 1 = ಮೇಲಿನ ಬಲ ಮೂಲೆ, 2 = ಕೆಳಗಿನ ಎಡ ಮೂಲೆ, 3 = ಕೆಳಗಿನ ಬಲ ಮೂಲೆ, 4 = ಇಚà³à²›à³†à²¯" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¨à³ ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³à²¦à²°à³† ಇನà³â€Œà²ªà³à²Ÿà³ ತೆರೆಸೂಚಕವನà³à²¨à³ ಅನà³à²¸à²°à²¿à²¸à³" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "ಟà³à²°à³‚ ಆದಲà³à²²à²¿, ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¨à³ ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³à²¦à²²à³à²²à²¿, ಇನà³â€Œà²ªà³à²Ÿà³ ತೆರೆಸೂಚಕವನà³à²¨à³ ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¸à²°à²¿à²¸à³à²¤à³à²¤à²¦à³†. ಫಾಲà³à²¸à³ ಆದಲà³à²²à²¿, ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¨à³ ನಿಶà³à²šà²¿à²¤ ಸà³à²¥à²³à²¦à²²à³à²²à²¿ ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¦à³†." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "ಗà³à²£à²¦ ಪà³à²¯à²¾à²¨à²²à³â€Œ ಅನà³à²¨à³ ತೋರಿಸಬೇಕಿರà³à²µ ಮಿಲಿಸೆಕೆಂಡà³â€Œà²—ಳà³:" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "ಗಮನವೠಅಥವ ಗà³à²£à²—ಳನà³à²¨à³ ಬದಲಾಯಿಸಿದ ನಂತರ ಗà³à²£à²¦ ಪà³à²¯à²¾à²¨à²²à³ ಅನà³à²¨à³ ತೋರಿಸಬೇಕಿರà³à²µ ಮಿಲಿಸೆಕೆಂಡà³à²—ಳà³." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "ನೋಡಬೇಕಿರà³à²µ (ಲà³à²•à³â€Œà²…ಪà³â€Œ) ಕೋಷà³à²Ÿà²•ದ ಹೊಂದಿಕೆ" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ನೋಡಬೇಕಿರà³à²µ (ಲà³à²•à³â€Œà²…ಪà³â€Œ) ಕೋಷà³à²Ÿà²•ದ ಹೊಂದಿಕೆ. 0 = ಅಡà³à²¡à²²à²¾à²—ಿ, 1 = ಲಂಬವಾಗಿ" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನದ ಹೆಸರನà³à²¨à³ ತೋರಿಸà³" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB ಚಿಹà³à²¨à³†à²¯ RGBA ಮೌಲà³à²¯" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB ಚಿಹà³à²¨à³†à²¯à³ ವಿನà³à²¯à²¾à²¸à²¦ ವಾಕà³à²¯à²¾à²‚ಶವನà³à²¨à³ ತೋರಿಸà³à²¤à³à²¤à²¦à³† ಮತà³à²¤à³ ವಾಕà³à²¯à²¾à²‚ಶವೠRGBA ಮೌಲà³à²¯à²¦à²¿à²‚ದ ರೆಂಡರೠಮಾಡಲಾಗà³à²¤à³à²¤à²¦à³†. RGBA ಮೌಲà³à²¯à²µà³ 1. X11 ಇಂದ ಒಂದೠಬಣà³à²£à²¦ ಮೌಲà³à²¯à²µà²¾à²—ಿರಬಹà³à²¦à³, 2. '#rrggbb' ರೂಪದಲà³à²²à²¿à²°à³à²µ ಒಂದೠಹೆಕà³à²¸à³â€Œ ಮೌಲà³à²¯à²µà²¾à²—ಿರಬಹà³à²¦à³, ಇಲà³à²²à²¿ 'r', 'g' ಮತà³à²¤à³ 'b' ಎನà³à²¨à³à²µà²µà³ ಅನà³à²•à³à²°à²®à²µà²¾à²—ಿ ಕೆಂಪà³, ಹಸಿರà³, ಮತà³à²¤à³ ನೀಲಿ ಬಣà³à²£à²¦ ಹೆಕà³à²¸à³â€Œ ಅಂಕಿಯಾಗಿರà³à²¤à³à²¤à²µà³†, 3. 'rgb(r,g,b)' ರೂಪದಲà³à²²à²¿à²°à³à²µ ಒಂದೠRGB ಬಣà³à²£à²µà²¾à²—ಿರಬಹà³à²¦à³, ಅಥವ 4. 'rgba(r,g,b,a)' ರೂಪದಲà³à²²à²¿à²°à³à²µ RGBA ಬಣà³à²£à²µà²¾à²—ಿರಬಹà³à²¦à³, ಇಲà³à²²à²¿ 'r', 'g', ಮತà³à²¤à³ 'b' ಗಳೠ0 ಇಂದ 255 ಒಳಗಿನ ಪೂರà³à²£à²¾à²‚ಕಗಳಾಗಿರà³à²¤à³à²¤à²¦à³† ಅಥವ 0% ಇಂದ 100% ರ ಒಳಗಿನ ಪà³à²°à²¤à²¿à²¶à²¤ ಮೌಲà³à²¯à²—ಳಾಗಿರà³à²¤à³à²¤à²¦à³†, ಮತà³à²¤à³ 'a' ಎನà³à²¨à³à²µà³à²¦à³ ಆಲà³à²«à²¾à²¦ 0 ಇಂದ 1 ರ ಒಳಗಿನ ಒಂದೠತೇಲà³à²µ ಬಿಂದà³à²µà²¾à²—ಿರà³à²¤à³à²¤à²¦à³†." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "ಇಚà³à²›à³†à²¯ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯à²¨à³à²¨à³ ಬಳಸà³" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "ಭಾಷೆಯ ಫಲಕಕà³à²•ಾಗಿ ಇಚà³à²›à³†à²¯ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯ ಹೆಸರನà³à²¨à³ ಬಳಸಿ" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "ಇಚà³à²›à³†à²¯ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ಭಾಷೆಯ ಫಲಕಕà³à²•ಾಗಿನ ಇಚà³à²›à³†à²¯ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯ ಹೆಸರà³" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "ಪೂರà³à²µ-ಸಂಪಾದನಾ(ಪà³à²°à²¿-ಎಡಿಟà³) ಪಠà³à²¯à²µà²¨à³à²¨à³ ಅಡಕಗೊಳಿಸà³" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "ಅನà³à²µà²¯ ವಿಂಡೊದಲà³à²²à²¿ ಪೂರà³à²µ-ಸಂಪಾದನಾ(ಪà³à²°à²¿-ಎಡಿಟà³) ಪಠà³à²¯à²µà²¨à³à²¨à³ ಅಡಕಗೊಳಿಸà³" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "ಜಾಗತಿಕ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಬಳಸಿ" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤à²µà²¾à²—ಿ ಶಕà³à²¤à²—ೊಳಿಸà³" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "ಅನà³à²µà²¯à²µà³ ಇನà³â€Œà²ªà³à²Ÿà³ ಗಮನವನà³à²¨à³ ಪಡೆದà³à²•ೊಂಡಾಗ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤à²µà²¾à²—ಿ ಶಕà³à²¤à²—ೊಳಿಸà³" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf ಹೆಸರà³à²—ಳೠಪà³à²°à²¿à²«à²¿à²•à³à²¸à³à²—ಳನà³à²¨à³ ಹಾಗೆಯೆ ಇರಿಸಿಕೊಳà³à²³à³à²¤à³à²¤à²¦à³†" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ಹೆಸರಿನ ಪರಿವರà³à²¤à²¨à³†à²¯à²¨à³à²¨à³ ಬದಲಿಸà³à²µ DConf ಕೀಲಿಗಳ ಪà³à²°à²¿à²«à²¿à²•à³à²¸à³à²—ಳà³" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "ಇತರೆ" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "ಭಾಷೆ: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "ಕೀಲಿಮಣೆ ವಿನà³à²¯à²¾à²¸: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "ಕತೃ: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "ವಿವರಣೆ:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "ಒಂದೠಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನವನà³à²¨à³ ಆಯà³à²•ೆ ಮಾಡಿ" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "ರದà³à²¦à³ ಮಾಡೠ(_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "ಇನà³à²¨à²·à³à²Ÿà³..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus ಆದà³à²¯à²¤à³†à²—ಳನà³à²¨à³ ಸಿದà³à²§à²—ೊಳಿಸà³" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "ಕೀಲಿಮಣೆ ಶಾರà³à²Ÿà³-ಕಟà³â€Œà²—ಳà³" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "ಕೀಲಿ ಸಂಕೇತ:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "ಮಾರà³à²ªà²¡à²•ಗಳà³:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "ಅನà³à²µà²¯à²¿à²¸à³ (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "ಅಳಿಸೠ(_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ದಯವಿಟà³à²Ÿà³ ಒಂದೠಕೀಲಿಯನà³à²¨à³ (ಅಥವ ಒಂದೠಕೀಲಿ ಸಂಯೋಜನೆಯನà³à²¨à³) ಒತà³à²¤à²¿.\nಕೀಲಿಯನà³à²¨à³ ಬಿಟà³à²Ÿà²¾à²— ಸಂವಾದವೠಮà³à²šà³à²šà²²à³à²ªà²¡à³à²¤à³à²¤à²¦à³†." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "ದಯವಿಟà³à²Ÿà³ ಒಂದೠಕೀಲಿಯನà³à²¨à³ (ಅಥವ ಒಂದೠಕೀಲಿ ಸಂಯೋಜನೆಯನà³à²¨à³) ಒತà³à²¤à²¿" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "ಸರಿ (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ಹಿಂದಿನ ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಕà³à²•ೆ ಬದಲಾಯಿಸಲೠಶಿಫà³à²Ÿà²¿à²¨à³Šà²‚ದಿಗೆ ಸಮೀಪಮಾರà³à²—ವನà³à²¨à³ ಬಳಸಿ" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ಡೀಮನೠಚಾಲನೆಯಲà³à²²à²¿à²²à³à²². ನೀವದನà³à²¨à³ ಆರಂಭಿಸಲೠಬಯಸà³à²¤à³à²¤à³€à²°à³†?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus ಅನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ! ನಿಮಗೆ IBus ಅನà³à²¨à³ ಬಳಸಲೠಸಾಧà³à²¯à²µà²¾à²—ದೆ ಇದà³à²¦à²²à³à²²à²¿, ನಿಮà³à²® $HOME/.bashrc ಯಲà³à²²à²¿ ಈ ಕೆಳಗಿನ ಸಾಲನà³à²¨à³ ಸೇರಿಸಿ, ನಂತರ ನಿಮà³à²® ಗಣಕತೆರೆಗೆ ಮರಳಿ ದಾಖಲಾಗಿ.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ಡೀಮನೠಅನà³à²¨à³ %d ಸೆಕೆಂಡà³à²—ಳಲà³à²²à²¿ ಆರಂಭಿಸಲಾಗಿಲà³à²²" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ಗಾಗಿ ಕೀಲಿಮಣೆ ಶಾರà³à²Ÿà³-ಕಟà³â€Œ ಕೀಲಿಯನà³à²¨à³ ಆಯà³à²•ೆ ಮಾಡಿ" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ ವಿಧಾನಗಳನà³à²¨à³ ಬದಲಿಸà³à²µà²¿à²•ೆ" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "ಎಂಜಿನà³â€Œà²¨ ಹೆಸರನà³à²¨à³ ಮಾತà³à²° ಪಟà³à²Ÿà²¿ ಮಾಡà³" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus ನೊಂದಿಗೆ ಸಂಪರà³à²•ಕಲà³à²ªà²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²².\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "ಭಾಷೆ: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "ಯಾವà³à²¦à³† ಎಂಜಿನೠಅನà³à²¨à³ ಹೊಂದಿಸಲಾಗಿಲà³à²².\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "ಸಾರà³à²µà²¤à³à²°à²¿à²• ಎಂಜಿನೠಹೊಂದಿಸà³à²µà²¿à²•ೆಯೠವಿಫಲಗೊಂಡಿದೆ.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "ಸಾರà³à²µà²¤à³à²°à²¿à²• ಎಂಜಿನೠಪಡೆಯà³à²µà²¿à²•ೆಯೠವಿಫಲಗೊಂಡಿದೆ.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³†à²¯à²¨à³à²¨à³ ಓದà³." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³† FILE ಅನà³à²¨à³ ಓದà³." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³†à²¯à³ ಅಮಾನà³à²¯à²µà²¾à²—ಿದೆ.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³†à²¯à²¨à³à²¨à³ ಬರೆ." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³† FILE ಅನà³à²¨à³ ಬರೆ." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "ಮರà³à²¹à³Šà²‚ದಿಸà³à²µà²¿à²•ೆ..." #: ../tools/main.vala:318 msgid "Done" msgstr "ಮà³à²—ಿಯಿತà³" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "ಎಂಜಿನೠಅನà³à²¨à³ ಹೊಂದಿಸೠಅಥವ ಪಡೆದà³à²•ೊ" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon ಇಂದ ನಿರà³à²—ಮಿಸà³" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "ಲಭà³à²¯à²µà²¿à²°à³à²µ ಎಂಜಿನà³â€Œà²—ಳನà³à²¨à³ ತೋರಿಸà³" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²²)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon ಅನà³à²¨à³ ಮರಳಿ ಸà³à²¥à²¾à²ªà²¿à²¸à³" #: ../tools/main.vala:342 msgid "Show version" msgstr "ಆವೃತà³à²¤à²¿à²¯à²¨à³à²¨à³ ತೋರಿಸà³" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³†à²¯à²²à³à²²à²¿à²°à³à²µ ವಿಷಯವನà³à²¨à³ ತೋರಿಸà³" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "ರಿಜಿಸà³à²Ÿà³à²°à²¿ ಕà³à²¯à²¾à²¶à³†à²¯à²¨à³à²¨à³ ರಚಿಸà³." #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ನ D-Bus ವಿಳಾಸವನà³à²¨à³ ಮà³à²¦à³à²°à²¿à²¸à³" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "ಸಂರಚನೆಯ ಮೌಲà³à²¯à²—ಳನà³à²¨à³ ತೋರಿಸà³" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "ಸಂರಚನಾ ಮೌಲà³à²¯à²—ಳನà³à²¨à³ ಮರà³à²¹à³Šà²‚ದಿಸà³" #: ../tools/main.vala:348 msgid "Show this information" msgstr "ಈ ಮಾಹಿತಿಯನà³à²¨à³ ತೋರಿಸà³" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "ಬಳಕೆ: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "ಆದೇಶಗಳà³:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s ಎನà³à²¨à³à²µà³à²¦à³ ಗೊತà³à²¤à²¿à²°à²¦ ಆದೇಶ!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus ಅಪà³â€Œà²¡à³‡à²Ÿà³â€Œ" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space ಎನà³à²¨à³à²µà³à²¦à³ ಈಗ ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಹಾಟà³â€Œà²•ೀಲೠಆಗಿರà³à²¤à³à²¤à²¦à³†." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ಎನà³à²¨à³à²µà³à²¦à³ Linux/Unix ಗಾಗಿನ ಒಂದೠಚತà³à²° ಇನà³â€Œà²ªà³à²Ÿà³ ಬಸà³." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "ಶಂಕರೠಪà³à²°à²¸à²¾à²¦à³ " #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "ಆದà³à²¯à²¤à³†à²—ಳೠ" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "ಪà³à²¨à²°à²¾à²°à²‚ಭಿಸà³" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "ಬಿಟà³à²Ÿà³ ಬಿಡೠ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/da.po0000644000000000000000000004255312551654123011007 00000000000000# translation of ibus.pot to Danish # Danish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Kris Thomsen , 2009,2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: kristho \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horisontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertikal" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Øverste venstre hjørne" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Øverste højre hjørne" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Nederste venstre hjørne" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Nederste højre hjørne" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Brugertilpasset" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Altid" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Indstillinger for IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Genvejstaster for skift til den næste inputmetode i listen" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Næste inddatametode:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Genvejstaster for skift til den forrige inputmetode i listen" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Forrige inddatametode:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Genvejstasterne for at tænde og slukke inputmetode" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Aktivér eller deaktivér:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Aktivér" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Deaktivér:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Tastaturgenveje" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Angiv orientering af kandidater i opslagstabel" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientering for kandidater:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Angiv adfæren for hvordan IBus skal vises eller skjules i sprogpanelet" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Placering af sprogpanel:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Vis ikon i statusfelt" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Vis navn pÃ¥ inputmetode i sprogpanel" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Vis inputmetodens navn i sprogpanelet nÃ¥r tjek-boksen er vinget af" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Indlejr forudredigeret tekst i programvindue" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Indlejr forudredigeret tekst for inputmetode i programvinduet" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Brug brugertilpasset skrifttype:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Skrifttype og stil" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Generelt" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Tilføj" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Tilføj de valgte inputmetoder i de aktiverede inputmetoder" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Fjern" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Fjern den valgte inputmetode fra de aktiverede inputmetoder" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Op" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Flyt den valgte inputmetode op i listen over aktiverede inputmetode" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Ned" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Flyt den valgte inputmetode i de aktiverede inputmetoder ned" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Om" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Vis information om den valgte inputmetode" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Indstillinger" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Vis opsætning for den valgte input-metode" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Inputmetode" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Brug tastaturlayout for system" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Brug systemttastaturlayout (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Tastaturlayout" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Del den samme inputmetode i alle programmer" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Indstillinger for global inputmetode" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avanceret" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nDen intelligente inddatabus\nNetsted: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Start ibus ved logind" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Opstart" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Om" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Luk" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Forindlæs motorer" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Forindlæs motorer under opstarten af IBus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Udløser tastaturgenveje" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Aktivér genvejstaster" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Genvejstasterne for at tænde inputmetode" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Deaktivér genvejstaster" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Genvejstasterne for slukning af inputmetode" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Genvejstaster for næste motor" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Genvejstasterne for at skrive til næste inputmetode i listen" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Genvejstaster for forrige motor" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "Genvejstasterne for at skifte til forrige inputmetode" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Skjul automatisk" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Placering for sprogpanel" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "Placering af sprogpanelet. 0 = Øverste venstre hjørne, 1 = Øverste højre hjørne, 2 = Nederste venstre hjørne, 3 = Nederste højre hjørne, 4 = Brugertilpasset" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Orientering af opslagstabel" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientering af opslagstabel. 0 = Horisontal, 1 = Vertikal" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Vis navn pÃ¥ inputmetode" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Brug tilpasset skrifttype" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Brug tilpasset skrifttypenavn til sprogpanel" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Brugertilpasset skrifttype" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Tilpasset skrifttypenavn til sprogpanel" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Indbyg forudredigeret tekst" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Indlejr forudredigeret tekst i programvindue" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Brug global inputmetode" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Aktivér inputmetode som standard" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Aktivér inputmetoder som standard nÃ¥r programmerne modtaget inputfokus" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Ophavsret (c) 2007-2010 Peng Huang\nOphavsret (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Andre" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Sprog: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturlayout: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Forfatter: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Beskrivelse:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Vælg en inddatametode" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Angiv indstillinger for IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastaturgenveje" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Nøglekode:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Kombinationstaster:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Anvend" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Slet" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Tryk venligst pÃ¥ en tast (eller en tastekombination).\nDialogen bliver lukket, nÃ¥r tasten slippes." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Tryk venligst pÃ¥ en tast (eller en tastekombination)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Annullér" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_O.k." #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Vælg tastaturgenveje til %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus er en intelligent inddatabus til Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Kris Thomsen\n\nDansk-gruppen \nMere info: http://www.dansk-gruppen.dk" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Indstillinger" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Genstart" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Afslut" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/pt_BR.po0000644000000000000000000005172312551654123011430 00000000000000# translation of ibus.pot to Portuguese (Brazil) # Portuguese (Brazil) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Arthur Rodrigues Araruna , 2012 # Automatically generated, 2010 # Glaucia Freitas , 2013 # jonataszv , 2014 # Taylon Silmer , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-08 12:15+0900\n" "PO-Revision-Date: 2014-07-08 03:29+0000\n" "Last-Translator: jonataszv \n" "Language-Team: Portuguese (Brazil) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertical" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Canto esquerdo superior" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Canto direito superior" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Canto esquerdo inferior" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Canto direito superior" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Padrão" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "Não mostrar" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Ocultar automaticamente" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Sempre" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferências do IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "As teclas de atalho para alteração ao próximo método de entrada na lista" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Próximo método de entrada:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Teclas de atalho para alteração ao método de entrada anterior da lista" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Método de entrada anterior:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "As teclas de atalho para ligar ou desligar o método de entrada" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Ativa ou desativa:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Habilitar:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Desabilitar:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Atalhos do Teclado" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Configure a orientação dos candidatos na tabela de observação" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientação dos candidatos:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Configure o comportamento do ibus para como demonstrar ou ocultar a barra de linguagem" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Mostrar painel de propriedades:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Posição do Painel de Linguagem:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Apresenta um ícone na bandeja do sistema" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Apresenta o nome do método de entrada na barra de linguagem" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Apresente o nome do método de entrada na barra de linguagem quando selecionando a caixa de seleção" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Embutir texto de pré-edição na janela do aplicativo " #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Embutir o texto de pré-edição do método de entrada na janela do aplicativo" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Usa a fonte padrão:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Fonte e Estilo" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Geral" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Adicionar" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Adicione o método de entrada selecionado nos métodos de entrada ativados" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Remover" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Remova o método de entrada selecionado a partir dos métodos de entrada ativados" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "A_cima" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Mova para cima o método de entrada selecionado na lista dos métodos de entrada" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "A_baixo" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Mova o método de entrada selecionado para baixo nos métodos de entrada ativados" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Sobre" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Apresente a informação do método de entrada selecionado" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Preferências" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Mostrar configuração do método de entrada selecionado" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Método de Entrada" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "Usa o desenho do teclado do sistema" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "Usa o desenho do teclado do sistema (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Desenho do Teclado" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "Compartilhar o mesmo método de entrada entre todos os aplicativos" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Configurações de Método de Entrada Global " #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avançado" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nThe intelligent input bus\nHomepage: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Inicie o ibus na conexão " #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Inicialização" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "Sobre" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Fechar" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Mecanismos de carregamento" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Mecanismos de pré-carregamento durante a inicialização do ibus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Ordem dos Motores" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Ordem dos motores salvas na lista de método de entrada" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "Popup atrasou milisegundos para a janela de alterador IME" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Configuração do popup atrasa milisegundos par exibir a janela do alterador IME. O padrão é 400.0 = Exibe a janela imediatamente. 0 < Atrasa milisegundos. 0 > Não exibe a janela e altera motores anterior/próximo." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Número da versão salvo" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Realiza o trigger nas teclas de atalho" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Desencadeia chaves de atalho para o " #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Habilitar teclas de atalho" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "As teclas de atalho para ligar o método de entrada" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Desabilitar teclas de atalho" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "As teclas de atalho para desligar o método de entrada" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Próximo mecanismo de teclas de atalho" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "As teclas de atalho para alteração ao próximo método de entrada na lista " #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Visualização do mecanismo das teclas de atalho " #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "Teclas de atalho para alteração ao método de entrada anterior" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Ocultar Automaticamente" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "Comportamento do painel de propriedades. 0 = Não mostrar, 1 = Ocultar automaticamente, 2 = Sempre mostrar" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Posição do Painel de Linguagem" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "A posição do painel de linguagem. 0 = Canto esquerdo superior, 1 = Canto direito superior, 2 = canto esquerdo inferior, 3 = canto direito inferior, 4 = Padrão " #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Orientação da tabela de pesquisa" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientação da Tabela de Pesquisa. 0 = Horizontal, 1 = Vertical " #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Apresenta o nome do método de entrada" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "Usa a fonte padrão" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "Usa o nome da fonte padrão para o painel de linguagem" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "Fonte padrão" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "Nome da fonte padrão para o painel de linguagem" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "Embutir Texto de Pré-Edição " #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "Embutir Texto de Pré-edição na Janela do Aplicativo" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "Use o método de entrada global" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "Habilitar método de entrada por padrão" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "Habilitar método de entrada por padrão quando o aplicativo obtiver o foco de entradas" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "Prefixo de nome de preservação do DConf" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos das chaves do DConf para parar a conversão do nome" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Outros" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Linguagem: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Desenho do teclado: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Descrição:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Selecione um método de entrada" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Definir Preferências do IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Atalhos do teclado" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Código de tecla:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modificadores:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Aplicar" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "E_xcluir" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Por favor pressione uma tecla (ou uma combinação de tecla).\nO diálogo será encerrado quando a tecla for liberada." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Por favor pressione uma tecla (ou uma combinação de tecla)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:375 msgid "_Cancel" msgstr "_Cancelar" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:376 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:398 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Utilize o atalho com o alterador para mudar para o método de entrada anterior" #: ../setup/main.py:330 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "O daemon IBus não está sendo executado. Você deseja iniciá-lo" #: ../setup/main.py:351 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "O IBus foi iniciado! Se você não puder utilizar o IBus, adicione as seguintes linhas ao seu $HOME/.bashrc; depois autentique-se novamente no seu desktop.\nexportar GTK_IM_MODULE=ibus\nexportar XMODIFIERS=@im=ibus\nexportar QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:365 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "O daemon do IBus não pôde ser iniciado em %d segundos" #: ../setup/main.py:377 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selecione o atalho do teclado para %s" #. Translators: Title of the window #: ../setup/main.py:379 msgid "switching input methods" msgstr "mudando métodos de entrada" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Somente o Nome do motor da lista" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "Não foi possível conectar ao IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "Nenhum motor configurado.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Configurar motor global falhou.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Obter motor global falhour.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "" #: ../tools/main.vala:318 msgid "Done" msgstr "" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(Não implementado)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Reiniciar ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "Mostrar versão" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Mostrar conteúdo de cachê do registro" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Mostrar essa informação" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Uso: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Comandos:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s é um comando desconhecido!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus é um bus de entrada inteligente para o Linux/Unix." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "créditos-tradutor" #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "Preferências" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "Reinicie" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "Sair" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:366 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/de.po0000644000000000000000000004777512551654123011026 00000000000000# translation of ibus.pot to German # German translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Fabian Affolter , 2009 # hpeters , 2009 # hpeters , 2009 # Mario Blättermann , 2011 # Mario Blättermann , 2011 # Rainer , 2013 # Rainer , 2013 # Roman Spirgi , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Rainer \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertikal" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Ecke oben links" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Ecke oben rechts" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Ecke unten links" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Ecke unten rechts" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Benutzerdefiniert" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Immer" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus-Einstellungen" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Nächste Eingabemethode:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Tastenkombination zum Wechseln zur vorherigen Eingabemethode in der Liste" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Vorherige Eingabemethode:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Tastenkombination zum An- oder Ausschalten der Eingabemethode" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Aktivieren oder deaktivieren:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Aktivieren:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Deaktivieren:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Tastenkombinationen" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Ausrichtung der Kandidaten in Lookup-Tabelle einstellen" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Ausrichtung der Kandidaten:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Verhalten von IBus einstellen, das Sprach-Panel anzuzeigen oder zu verstecken" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Position des Sprach-Panels:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Symbol im Benachrichtigungsfeld anzeigen" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Name der Eingabemethode auf Sprachleiste anzeigen" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Name der gewählten Eingabemethode auf Sprach-Panel anzeigen, wenn Ankreuzfeld aktiviert" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Preedit-Text in Anwendungsfenster einbetten" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Den Preedit-Text der Eingabemethode in Anwendungsfenster einbetten" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Benutzerdefinierte Schriftart verwenden:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Schriftart und Stil" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Allgemein" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Hinzufügen" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Fügen Sie die gewählte Eingabemethode zu den aktivierten Eingabemethoden hinzu" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Entfernen" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Entfernen Sie die gewählte Eingabemethode aus den aktivierten Eingabemethoden" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Hoch" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden nach oben" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Runter" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden nach unten" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Info" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Informationen zur gewählten Eingabemethode anzeigen" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Einstellungen" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Einstellungen der gewählten Eingabemethode anzeigen" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Eingabemethode" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "System-Tastaturbelegung verwenden" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "System-Tastatur (XKB) Belegung verwenden" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Tastaturbelegung" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Dieselbe Eingabemethode für alle Anwendungen verwenden" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Eingabemethode wählen" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Erweitert" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nDer intelligente Eingabe-Bus\nHomepage: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "IBus bei der Anmeldung starten" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Starten" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Info" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "S_chließen" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Engines vorladen" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Engines vorladen, während IBus startet" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "Engine-Reihenfolge" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "Gespeicherte Engine-Reihenfolge in der Eingabemethoden-Liste" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "Popup-Verzögerung für IME-Wechsel-Fenster in Millisekunden" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Popup-Verzögerung für IME-Wechsel-Fenster setzen. Standardmäßig ist der Wert von 400 gesetzt. 0 = Fenster sofort anzeigen. 0 < Verzögerung in Millisekunden. 0 > Fenster nicht anzeigen und zur vorhergehenden/ nachfolgenden Engine wechseln." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "Gespeicherte Versions-Numnner" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "Die gespeicherte Versions-Nummer wird verwendet, um den Unterschied zwischen der Version der zuvor installierten ibus und der aktuellen ibus zu überprüfen." #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Auslöser-Tastenkombination" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Tastenkombinationen auslösen für gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Tastenkürzel aktivieren" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Tastenkürzel zum Einschalten der Eingabemethoden" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Tastenkürzel deaktivieren" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Tastenkürzel zum Ausschalten der Eingabemethoden" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Nächste Engine-Tastenkombination" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Vorherige Engine-Tastenkombination" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "Tastenkombination zum Wechseln zur vorherigen Eingabemethode" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Automatisch verstecken" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Position des Sprach-Panels" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "Die Position des Sprach-Panels: 0 = Ecke oben links, 1 = Ecke oben rechts, 2 = Ecke unten links, 3 = Ecke unten rechts, 4 = Benutzerdefiniert" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Ausrichtung der Lookup-Tabelle" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Ausrichtung der Lookup-Tabelle. 0 = Horizontal, 1 = Vertikal" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Name der Eingabemethode anzeigen" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Benutzerdefinierte Schriftart verwenden" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Benutzerdefinierte Schriftart für Sprach-Panel verwenden" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Benutzerdefinierte Schriftart" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Name der benutzerdefinierten Schriftart für Sprach-Panel" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Preedit-Text einbetten" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Preedit-Text in Anwendungsfenster einbetten" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Globale Eingabemethode wählen" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Eingabemethode standardmäßig aktivieren" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Eingabemethode standardmäßig aktivieren, wenn die Anwendung Eingabefokus erlangt" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "Dconf bewahrt Namenspräfixe" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Namenspräfixe von Dconf-Schlüsseln, um Namenskonvertierung anzuhalten" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Sonstige" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Sprache: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturbelegung: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Beschreibung:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Eingabemethode wählen" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus-Einstellungen konfigurieren" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastenkombinationen" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Tasten-Code:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Hilfstasten:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "An_wenden" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Löschen" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Bitte eine Taste (oder eine Tastenkombination drücken).\nDer Dialog wird geschlossen, wenn die Taste losgelassen wird." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Abbrechen" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Tastenkombination mit Umschalttaste benutzen, um zur vorherigen Eingabemethode zu wechseln" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Der IBus-Dienst läuft nicht. Möchten Sie ihn starten?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus wurde gestartet! Falls Sie IBus nicht nutzen können, fügen Sie bitte in $HOME/.bashrc die nachfolgenden Zeilen an und loggen Sie sich anschließend erneut ein.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus-Dienst konnte innerhalb von %d Sekunden nicht gestartet werden" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Wählen Sie eine Tastenkombination für %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "Eingabemethoden wechseln" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "Nur Engine-Name auflisten" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Keine Verbindung zu IBus.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "Sprache: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Keine Engine gesetzt.\n\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Setzen der globalen Engine fehlgeschlagen.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Auslesen der globalen Engine fehlgeschlagen.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "Lesen Sie den System-Registry-Cache." #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "Lesen Sie die Registry-Cache DATEI." #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "Der Registry-Cache ist ungültig.\n" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "Schreiben Sie den System-Registry-Cache." #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "Schreiben Sie die Registry-Cache DATEI." #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "Setzen oder erhalten Modul" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "Beenden ibus-daemon" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "Anzeigen verfügbare Module" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "(Nicht implementiert)" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "Neustart ibus-daemon" #: ../tools/main.vala:298 msgid "Show version" msgstr "Anzeigen Version" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "Anzeigen Inhalt des Registry-Cache." #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "Erstellen Registry-Cache" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "Ausgabe der D-Bus-Adresse des ibus-Daemon" #: ../tools/main.vala:302 msgid "Show this information" msgstr "Anzeige dieser Information" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Anwendung: %s BEFEHL [OPTION...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Befehle:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s ist ein unbekannter Befehl!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "IBus Aktualisierung" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "Super+Leerzeichen ist nun der Standard-Hotkey." #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ist ein intelligenter Eingabe-Bus für Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Fabian Affolter , 2009.\nHedda Peters , 2009." #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Einstellungen" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Neustart" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Beenden" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/zh_CN.po0000644000000000000000000005041212551654123011415 00000000000000# translation of ibus.pot to Simplified Chinese # Simplified Chinese Translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Christopher Meng , 2012-2013 # Tommy He , 2012 # Mike Manilone , 2011 # Mike Manilone , 2011 # Peng Huang , 2007 # simonyanix , 2011 # Tommy He , 2012-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-26 14:33+0900\n" "PO-Revision-Date: 2014-03-19 06:43+0000\n" "Last-Translator: Tommy He \n" "Language-Team: Chinese (China) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "æ°´å¹³" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "ç«–ç›´" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "左上角" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "å³ä¸Šè§’" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "左下角" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "å³ä¸‹è§’" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "自定义" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "ä¸å†æ˜¾ç¤º" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "自动éšè—" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "总是" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus 首选项" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "切æ¢ä¸‹ä¸€ä¸ªè¾“入法快æ·é”®" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "下一输入法:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "切æ¢ä¸Šä¸€ä¸ªè¾“入法快æ·é”®" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "上一输入法:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:12 msgid "The shortcut keys for turning input method on or off" msgstr "打开关闭输入法的快æ·é”®" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "开关:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "å¯ç”¨ï¼š" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "ç¦ç”¨ï¼š" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "å¿«æ·é”®" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "设置候选è¯è¡¨æ–¹å‘" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "å€™é€‰è¯æŽ’åˆ—æ–¹å‘:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "设置如何显示或éšè—语言æ çš„æ–¹å¼" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "显示属性æ ï¼š" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "语言æ ä½ç½®ï¼š" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:32 msgid "Show icon on system tray" msgstr "在系统托盘上显示图标" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:34 msgid "Show input method name on language bar" msgstr "语言æ ä¸Šæ˜¾ç¤ºè¾“入法åç§°" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "选中该项将在语言æ ä¸Šæ˜¾ç¤ºè¾“入法的åå­—" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "在应用程åºçª—å£ä¸­å¯ç”¨å†…嵌编辑模å¼" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "在应用程åºçª—å£ä¸­å¯ç”¨è¾“入法的内嵌编辑模å¼" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "使用自定义字体:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "字体和风格" #: ../setup/setup.ui.h:34 msgid "General" msgstr "常规" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "添加(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "添加选中的输入法到å¯ç”¨è¾“入法列表" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "删除(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "从å¯ç”¨è¾“入法列表删除选中的输入法" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "å‘上(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移选中的输入法" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "å‘下(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "下移选中的输入法" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "关于(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "显示选中输入法的信æ¯" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "首选项(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "显示选中输入法的设置界é¢" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "å¯ä»¥é€šè¿‡æ•²å‡»é”®ç›˜å¿«æ·é”®æˆ–è€…ç‚¹å‡»é¢æ¿å›¾æ ‡æ¥åœ¨ä¸Šè¿°åˆ—表中切æ¢é€‰ä¸­çš„输入法" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "输入法" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:38 msgid "Use system keyboard layout" msgstr "使用系统键盘布局" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:39 msgid "Use system keyboard (XKB) layout" msgstr "使用系统键盘(XKB)布局" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "键盘布局" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:47 msgid "Share the same input method among all applications" msgstr "在所有应用程åºä¸­å…±äº«åŒä¸€ä¸ªè¾“入法" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "全局输入法设置" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "高级" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\n智能输入平å°\n主页:https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "登录时è¿è¡Œ IBus" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "å¯åЍ" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:811 msgid "About" msgstr "关于" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "关闭(_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "预加载引擎" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "IBus å¯åŠ¨æ—¶é¢„åŠ è½½çš„å¼•æ“Ž" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "引擎顺åº" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ä¿å­˜åœ¨è¾“入法选å•中的引擎顺åº" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "输入法切æ¢çª—å£å¼¹å‡ºå»¶æ—¶å¾®ç§’æ•°" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "设定输入法切æ¢çª—å£å¼¹å‡ºçš„延时微秒数。默认为 400。0 ä»£è¡¨ç«‹å³æ˜¾ç¤ºçª—å£ã€‚ 0 < 延迟微秒数 0 > 当切æ¢ä¸Šä¸€ä¸ª/ä¸‹ä¸€ä¸ªè¾“å…¥æ³•å¼•æ“Žæ—¶ä¸æ˜¾ç¤ºçª—å£ã€‚" #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "已储存的版本å·" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "å·²ä¿å­˜çš„版本å·å°†è¢«ç”¨ä½œæ£€æŸ¥ä¹‹å‰å®‰è£…çš„ ibus 版本和当å‰ç‰ˆæœ¬é—´çš„区别。" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys" msgstr "触å‘å¿«æ·é”®" #: ../data/ibus.schemas.in.h:13 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "为 gtk_accelerator_parse 触å‘å¿«æ·é”®" #: ../data/ibus.schemas.in.h:14 msgid "Enable shortcut keys" msgstr "应用快æ·é”®" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method on" msgstr "å¼€å¯è¾“入法的快æ·é”®" #: ../data/ibus.schemas.in.h:16 msgid "Disable shortcut keys" msgstr "ç¦ç”¨å¿«æ·é”®" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for turning input method off" msgstr "关闭输入法的快æ·é”®" #: ../data/ibus.schemas.in.h:18 msgid "Next engine shortcut keys" msgstr "下一个引擎快æ·é”®" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the next input method in the list" msgstr "切æ¢åˆ°åˆ—表中下一个输入法快æ·é”®" #: ../data/ibus.schemas.in.h:20 msgid "Prev engine shortcut keys" msgstr "上一个引擎快æ·é”®" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for switching to the previous input method" msgstr "切æ¢åˆ°åˆ—表中上一个输入法快æ·é”®" #: ../data/ibus.schemas.in.h:22 msgid "Auto hide" msgstr "自动éšè—" #: ../data/ibus.schemas.in.h:23 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "å±žæ€§é¢æ¿çš„行为。 0 = ä¸å†æ˜¾ç¤ºï¼Œ1 = 自动éšè—,2 = 始终显示" #: ../data/ibus.schemas.in.h:24 msgid "Language panel position" msgstr "语言æ ä½ç½®" #: ../data/ibus.schemas.in.h:25 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "语言æ ä½ç½®ã€‚0 = 左上角,1 = å³ä¸Šè§’,2 = 左下角,3 = å³ä¸‹è§’,4 = 自定义" #: ../data/ibus.schemas.in.h:26 msgid "Follow the input cursor in case the panel is always shown" msgstr "åœ¨å§‹ç»ˆæ˜¾ç¤ºçš„æƒ…å†µä¸‹é¢æ¿è·Ÿéšè¾“入光标" #: ../data/ibus.schemas.in.h:27 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "è‹¥ä¸ºçœŸï¼Œå½“é¢æ¿è®¾ä¸ºå§‹ç»ˆæ˜¾ç¤ºæ—¶é¢æ¿å°†è·Ÿéšè¾“入光标。若为å‡ï¼Œé¢æ¿å°†åœ¨å›ºå®šä½ç½®æ˜¾ç¤ºã€‚" #: ../data/ibus.schemas.in.h:28 msgid "The milliseconds to show property panel" msgstr "以毫秒为å•使˜¾ç¤ºå±žæ€§é¢æ¿çš„æ—¶é—´" #: ../data/ibus.schemas.in.h:29 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "åœ¨ç¦»å¼€ç„¦ç‚¹æˆ–å±žæ€§å˜æ›´åŽï¼Œä»¥æ¯«ç§’为å•使˜¾ç¤ºå±žæ€§é¢æ¿çš„æ—¶é—´" #: ../data/ibus.schemas.in.h:30 msgid "Orientation of lookup table" msgstr "候选è¯è¡¨æ–¹å‘" #: ../data/ibus.schemas.in.h:31 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "候选è¯è¡¨æ–¹å‘。0 = 水平,1 = 竖直。" #: ../data/ibus.schemas.in.h:33 msgid "Show input method name" msgstr "显示输入法åç§°" #: ../data/ibus.schemas.in.h:35 msgid "RGBA value of XKB icon" msgstr "XKB 图标的 RGBA 值" #: ../data/ibus.schemas.in.h:37 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB å›¾æ ‡æ˜¾ç¤ºé”®ç›˜å¸ƒå±€å­—ç¬¦ä¸²å¹¶ä¾æ® RGBA 值进行渲染。RGBA 值å¯ä»¥æ˜¯ 1. X11 中的颜色åï¼›2. '#rrggbb' å½¢å¼çš„å六进制数,其中 'r', 'g' å’Œ 'b' 分别代表å六进制数字的红ã€ç»¿å’Œè“ï¼›3. 'rgb(r,g,b)' å½¢å¼çš„ RGB 颜色;或者 4. 'rgba(r,g,b,a)' å½¢å¼çš„ RGBA 颜色,其中 'r', 'g' å’Œ 'b' 分别为 0 到 255 之间的整数值,或者 0% 到 100% 之间的百分比值,而 'a' 为 0 到 1 ä¹‹é—´çš„æµ®ç‚¹é€æ˜Žåº¦ã€‚" #: ../data/ibus.schemas.in.h:40 msgid "Use custom font" msgstr "使用自定义字体" #: ../data/ibus.schemas.in.h:41 msgid "Use custom font name for language panel" msgstr "语言æ ä¸Šä½¿ç”¨è‡ªå®šä¹‰å­—体" #: ../data/ibus.schemas.in.h:42 msgid "Custom font" msgstr "自定义字体" #: ../data/ibus.schemas.in.h:43 msgid "Custom font name for language panel" msgstr "自定义语言æ å­—体" #: ../data/ibus.schemas.in.h:44 msgid "Embed Preedit Text" msgstr "内嵌编辑模å¼" #: ../data/ibus.schemas.in.h:45 msgid "Embed Preedit Text in Application Window" msgstr "在应用程åºçª—å£ä¸­å¯ç”¨å†…嵌编辑模å¼" #: ../data/ibus.schemas.in.h:46 msgid "Use global input method" msgstr "使用全局输入法" #: ../data/ibus.schemas.in.h:48 msgid "Enable input method by default" msgstr "默认å¯åŠ¨è¾“å…¥æ³•" #: ../data/ibus.schemas.in.h:49 msgid "Enable input method by default when the application gets input focus" msgstr "当应用程åºéœ€è¦ä½¿ç”¨è¾“入时自动å¯ç”¨è¾“入法" #: ../data/ibus.schemas.in.h:50 msgid "DConf preserve name prefixes" msgstr "DConf ä¿ç•™åç§°å‰ç¼€" #: ../data/ibus.schemas.in.h:51 msgid "Prefixes of DConf keys to stop name conversion" msgstr "用æ¥åœæ­¢å称转æ¢çš„ DConf é”®å‰ç¼€" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "ç‰ˆæƒæ‰€æœ‰ (c) 2007-2010 黄é¹\nç‰ˆæƒæ‰€æœ‰ (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "å…¶ä»–" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "语言:%s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "键盘布局:%s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "作者:%s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "æè¿°ï¼š\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "选择输入法" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "设定 IBus 首选项" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "å¿«æ·é”®" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "按键:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "修饰符:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "应用(_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "删除(_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "è¯·æŒ‰ä¸€ä¸ªé”®ç›˜æŒ‰é”®ï¼ˆæˆ–è€…ä¸€ä¸ªç»„åˆæŒ‰é”®ï¼‰\n当您æ¾å¼€ä»»æ„æŒ‰é”®æ—¶ï¼Œå¯¹è¯æ¡†ä¼šè‡ªåŠ¨å…³é—­ã€‚" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "è¯·æŒ‰ä¸€ä¸ªé”®ç›˜æŒ‰é”®ï¼ˆæˆ–è€…ä¸€ä¸ªç»„åˆæŒ‰é”®ï¼‰" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "确定(_O)" #: ../setup/main.py:102 ../setup/main.py:396 msgid "Use shortcut with shift to switch to the previous input method" msgstr "å’Œ SHIFT 一起使用快æ·é”®æ¥åˆ‡æ¢åˆ°å…ˆå‰çš„输入法" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus 守护进程尚未è¿è¡Œã€‚您希望å¯åŠ¨å®ƒå—?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus å·²ç»å¯åЍï¼å¦‚果您无法使用 IBus,添加以下行至 $HOME/.bashrc;然åŽè¯·é‡æ–°ç™»å½•您的桌é¢ã€‚\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 守护在 %d 秒内无法å¯åЍ" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "选择 %s 的快æ·é”®" #. Translators: Title of the window #: ../setup/main.py:378 msgid "switching input methods" msgstr "切æ¢è¾“入法" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "仅列出引擎åç§°" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "无法连接 IBus。\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "语言: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "尚未设置引擎。\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "设定全局引擎失败。\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "获å–全局引擎失败。\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "读å–系统注册缓存。" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "è¯»å–æ³¨å†Œç¼“å­˜ FILE。" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "注册缓存无效。\n" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "写入系统注册缓存。" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "写入注册缓存 FILE。" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "设定或获å–引擎" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "退出 ibus-daemon" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "显示å¯ç”¨å¼•擎" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "(æš‚ä¸å¯ç”¨)" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "é‡å¯ ibus-daemon" #: ../tools/main.vala:298 msgid "Show version" msgstr "显示版本å·" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "显示注册缓存内容。" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "创建注册缓存" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "输出 ibus-daemon ä½äºŽ D-Bus 中的地å€" #: ../tools/main.vala:302 msgid "Show this information" msgstr "显示本信æ¯" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "用法:%s 命令 [选项...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "命令:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s 是未知命令ï¼\n" #: ../ui/gtk3/panel.vala:454 msgid "IBus Update" msgstr "IBus æ›´æ–°" #: ../ui/gtk3/panel.vala:455 ../ui/gtk3/panel.vala:466 msgid "Super+space is now the default hotkey." msgstr "Super+space 是目å‰é»˜è®¤çš„å¿«æ·é”®ã€‚" #: ../ui/gtk3/panel.vala:782 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 是一个适用于 Linux/Unix 系统的智能输入平å°ã€‚" #: ../ui/gtk3/panel.vala:786 msgid "translator-credits" msgstr "é»„é¹ \nFedora 简体中文组 " #: ../ui/gtk3/panel.vala:807 msgid "Preferences" msgstr "首选项" #: ../ui/gtk3/panel.vala:817 msgid "Restart" msgstr "釿–°å¯åЍ" #: ../ui/gtk3/panel.vala:821 msgid "Quit" msgstr "退出" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/as.po0000644000000000000000000007571512551654123011034 00000000000000# translation of ibus.pot to Assamese # Assamese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Amitakhya Phukan , 2009 # Amitakhya Phukan , 2010 # Nilamdyuti Goswami , 2011 # Nilamdyuti Goswami , 2012-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-08 09:04+0000\n" "Last-Translator: Nilamdyuti Goswami \n" "Language-Team: Assamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: as\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "আনà§à¦­à§‚মিক" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "উলà§à¦²à¦®à§à¦¬" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ওপৰৰ বাওà¦à¦«à¦¾à¦²à§° কোণত" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ওপৰৰ সোà¦à¦«à¦¾à¦²à§° কোণত" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "তলৰ বাওà¦à¦«à¦¾à¦²à§° কোণত" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "তলৰ সোà¦à¦«à¦¾à¦²à§° কোণত" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "নেদেখà§à§±à¦¾à¦¬" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "সà§à¦¬à¦šà¦¾à¦²à¦¿à¦¤à¦­à¦¾à§±à§‡ লà§à¦•à§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "সদায়ে" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus পছনà§à¦¦à¦¸à¦®à§‚হ" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকাত উপসà§à¦¥à¦¿à¦¤ পৰবৰà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§ˆ পৰিবৰà§à¦¤à¦¨à§° বাবে পà§à§°à¦¯à§‹à¦œà§à¦¯ চৰà§à¦Ÿà¦•াট কি'" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "পিছৰ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকাত উপসà§à¦¥à¦¿à¦¤ পূৰà§à¦¬à¦¬à§°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§ˆ পৰিবৰà§à¦¤à¦¨à§° বাবে পà§à§°à¦¯à§‹à¦œà§à¦¯ চৰà§à¦Ÿà¦•াট কি'" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "আগৰ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ খোলা আৰৠবনà§à¦§ কৰাৰ বাবে পà§à§°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ চৰà§à¦Ÿà¦•াট কি' নিৰà§à¦§à¦¾à§°à¦£ কৰক" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "সামৰà§à¦¥à¦¬à¦¾à¦¨ বা অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "কিবৰà§à¦¡à§° চৰà§à¦Ÿà¦•াটসমূহ" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "লà§à¦•-আপ টেবà§à¦²à¦¤ পà§à§°à¦¯à§‹à¦œà§à¦¯ বিকলà§à¦ªà¦¸à¦®à§‚হৰ দিশ নিৰà§à¦§à¦¾à§°à¦£ কৰক" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "পà§à§°à¦¾à§°à§à¦¥à§€à§° দিশ:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষাৰ বাৰ পà§à§°à¦¦à§°à§à¦¶à¦¨ আৰৠলà§à¦•à§à§±à¦¾à§° উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ ibus à§° আচৰণ নিৰà§à¦§à¦¾à§°à¦£ কৰক" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "বৈশিষà§à¦Ÿà§à¦¯ পেনেল দেখà§à§±à¦¾à¦“ক:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ভাষাৰ পেনেলৰ সà§à¦¥à¦¾à¦¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "চিসà§à¦Ÿà§‡à¦® টà§à§°à§‡à¦¤ আইকন দেখà§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "ভাষাৰ বাৰত ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° নাম দেখà§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবকà§à¦¸ নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ হ'লে ভাষাৰ বাৰত ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° নাম দেখà§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "à¦à¦ªà§à¦²à¦¿à¦•েচনৰ উইনà§à¦¡à§‹à¦¤ পূৰà§à¦¬à¦¸à¦®à§à¦ªà¦¾à¦¦à¦¨à¦¾ লিখনী পà§à§°à§‹à¦¥à¦¿à¦¤ কৰক" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "à¦à¦ªà§à¦²à¦¿à¦•েচনৰ উইনà§à¦¡à§‹à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° পূৰà§à¦¬à¦¸à¦®à§à¦ªà¦¾à¦¦à¦¨à¦¾ লিখনী পà§à§°à§‹à¦¥à¦¿à¦¤ কৰক" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤ ফনà§à¦Ÿ বà§à¦¯à§±à¦¹à¦¾à§° কৰক:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ফনà§à¦Ÿ আৰৠশৈলী" #: ../setup/setup.ui.h:34 msgid "General" msgstr "সাধাৰণ" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "যোগ কৰক (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦• সামৰà§à¦¥à¦¬à¦¾à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° তালিকাত যোগ কৰক" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "আà¦à¦¤à§°à¦¾à¦“ক (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "সামৰà§à¦¥à¦¬à¦¾à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° তালিকাৰ পৰা নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ আà¦à¦¤à§°à§à§±à¦¾ হ'ব" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ওপৰত (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦• সামৰà§à¦¥à¦¬à¦¾à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° তালিকাৰ ওপৰলৈ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰক" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "তলত (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦• সামৰà§à¦¥à¦¬à¦¾à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° তালিকাৰ তললৈ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰক" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "বিষয়ে (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ দেখà§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "পছনà§à¦¦ (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° ইনসà§à¦Ÿà¦² দেখà§à§±à¦¾à¦“ক" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "কি'বৰà§à¦¡ চৰà§à¦Ÿà¦•াট কি অথবা পেনেল আইকন কà§à¦²à¦¿à¦• কৰি সকà§à§°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤ ওপৰৰ তালিকাত নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হৰ পৰা চà§à¦‡à¦š কৰিব পৰা যাব। " #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "চিসà§à¦Ÿà§‡à¦® কিবৰà§à¦¡ বিনà§à¦¯à¦¾à¦¸ বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "চিসà§à¦Ÿà§‡à¦® কিবৰà§à¦¡ (XKB) বিনà§à¦¯à¦¾à¦¸ বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "কিবৰà§à¦¡à§° বিনà§à¦¯à¦¾à¦¸" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "সকলো à¦à¦ªà§à¦²à¦¿à¦•েচনৰ মাজত à¦à¦•েই ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ অংশীদাৰী কৰক" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "বিশà§à¦¬à¦¬à§à¦¯à¦¾à¦ªà§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সংহতিসমূহ" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "উনà§à¦¨à¦¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nবà§à¦¦à§à¦§à¦¿à¦®à¦¾à¦¨ ইনপà§à¦Ÿ bus\nঘৰৰ পৃষà§à¦ à¦¾: htthttps://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "লগিনত ibus আৰমà§à¦­ কৰক" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "আৰমà§à¦­à¦£à¦¿" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "বিষয়ে" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "বনà§à¦§ কৰক (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "ইঞà§à¦œà¦¿à¦¨à¦¸à¦®à§‚হ আগতে ল'ড কৰক" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus আৰমà§à¦­à§° আগতে ইঞà§à¦œà¦¿à¦¨ ল'ড কৰক" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "ইঞà§à¦œà¦¿à¦¨à¦¸à¦®à§‚হৰ কà§à§°à¦®" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ তালিকাত সংৰকà§à¦·à¦¿à¦¤ ইঞà§à¦œà¦¿à¦¨ কà§à§°à¦®" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME চà§à¦‡à¦šà¦¾à§° উইনà§à¦¡à§‹à§° বাবে মিলিছেকেণà§à¦¡à¦¤ পপআপ বিলমà§à¦¬" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME চà§à¦‡à¦šà¦¾à§° উইনà§à¦¡à§‹ দেখà§à§±à¦¾à¦¬à¦²à§‡ মিলিছেকেণà§à¦¡à¦¤ পপআপ বিলমà§à¦¬ দেখà§à§±à¦¾à¦“ক। অবিকলà§à¦ªà¦¿à¦¤ হল 400. 0 = উইনà§à¦¡à§‹ তৎকà§à¦·à¦¨à¦¾à¦¤ দেখà§à§±à¦¾à¦“ক। 0 < মিলিছেকেণà§à¦¡à¦¤ বিলমà§à¦¬à¥¤ 0 > উইনà§à¦¡à§‹ নেদেখà§à§±à¦¾à¦¬ আৰৠপূৰà§à¦¬à§±à§°à§à¦¤à§€/পৰৱৰà§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨ চà§à¦‡à¦š নকৰিব।" #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "সংৰকà§à¦·à¦¿à¦¤ সংসà§à¦•ৰণ সংখà§à¦¯à¦¾" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "সংৰকà§à¦·à¦¿à¦¤ সংসà§à¦•ৰণ সংখà§à¦¯à¦¾à¦• পূৰà§à¦¬à¦¤à§‡ ইনসà§à¦Ÿà¦² কৰা ibus আৰৠবৰà§à¦¤à¦®à¦¾à¦¨ ibus à§° মাজত পাৰà§à¦¥à¦•à§à¦¯ নিৰীকà§à¦·à¦£ কৰিবলৈ বà§à¦¯à§±à¦¹à¦¾à§° কৰা হব।" #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ASCII নথকা লেটিন বিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US বিনà§à¦¯à¦¾à¦¸à¦• লেটিন বিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হলৈ সংযোজন কৰা হয়। অপৰক বাদ দিব পাৰি।" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ইঞà§à¦œà¦¿à¦¨à¦¸à¦®à§‚হ চà§à¦‡à¦š কৰোতে যদি .xmodmap অথবা .Xmodmap থাকে xmodmap চলাব।" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "টà§à§°à¦¿à¦—াৰৰ চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse à§° বাবে চৰà§à¦Ÿà¦•াট কি'সমূহ টà§à§°à¦¿à¦—াৰ কৰক" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "চৰà§à¦Ÿà¦•াট কি'সমূহ সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ খà§à¦²à¦¿à¦¬à¦²à§‡ চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "চৰà§à¦Ÿà¦•াট কি'সমূহ অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বনà§à¦§ কৰিবলে চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "পৰবৰà§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨ চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকাত থকা পৰৱৰà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§‡ যাবলে চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "পূৰà§à¦¬à¦¬à§°à§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§° চৰà§à¦Ÿà¦•াট কি'" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকাত থকা পূৰà§à¦¬à§±à§°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§‡ যাবলে চৰà§à¦Ÿà¦•াট কি'সমূহ" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "সà§à¦¬à¦šà¦¾à¦²à¦¿à¦¤à¦­à¦¾à§±à§‡ লà§à¦•াওক" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "বৈশিষà§à¦Ÿà§à¦¯ পেনেলৰ আচৰণ। 0 = নেদেখà§à§±à¦¾à¦¬, 1 = সà§à¦¬à¦šà¦¾à¦²à¦¿à¦¤à¦­à¦¾à§±à§‡ লà§à¦•à§à§±à¦¾à¦“ক, 2 = সদায় দেখà§à§±à¦¾à¦¬" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "ভাষাৰ পেনেলৰ সà§à¦¥à¦¾à¦¨" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ভাষাৰ পেনেলৰ সà§à¦¥à¦¾à¦¨à¥¤ 0 = ওপৰৰ বাওà¦à¦«à¦¾à¦²à§° কোণত, 1 = ওপৰৰ সোà¦à¦«à¦¾à¦²à§° কোণত, 2 = তলৰ বাওà¦à¦«à¦¾à¦²à§° কোণত, 3 = তলৰ সোà¦à¦«à¦¾à¦²à§° কোণত, 4 = সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "পেনেল সদায় দেখà§à§±à¦¾ হলে ইনপà§à¦Ÿ কাৰà§à¦šà¦¾à§°à¦• অনà§à¦•ৰণ কৰিব" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "যদি সতà§à¦¯, পেনেলে ইনপà§à¦Ÿ কাৰà§à¦šà¦¾à§°à¦• দেখà§à§±à¦¾à§Ÿ যদি পেনেলক সদায় দেখà§à§±à¦¾ হয়। যদি ভà§à¦², পেনেলক à¦à¦Ÿà¦¾ নিৰà§à¦¦à¦¿à¦·à§à¦Ÿ সà§à¦¥à¦¾à¦¨à¦¤ দেখà§à§±à¦¾ হয়।" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "বৈশিষà§à¦Ÿà§à¦¯ পেনেল দেখà§à§±à¦¾à¦¬à¦²à§ˆ মিলিছেকেণà§à¦¡" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "ফকাচ-ইন আৰৠবৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ পৰিবৰà§à¦¤à¦¨ হোৱাৰ পিছত বৈশিষà§à¦Ÿà§à¦¯ পেনেল দেখà§à§±à¦¾à¦¬à¦²à§ˆ মিলিছেকেণà§à¦¡à¥¤" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "লà§à¦•-আপ টেবà§à¦²à§° দিশ" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লà§à¦•আপ টেবà§à¦²à§° দিশ। ০ = আনà§à¦­à§‚মিক, à§§ = উলমà§à¦¬" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à§° নাম দেখà§à§±à¦¾à¦“ক" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB আইকনৰ RGBA মান" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB আইকনে বিনà§à¦¯à¦¾à¦¸ সà§à¦Ÿà§à§°à¦¿à¦‚ দেখà§à§±à¦¾à§Ÿ আৰৠসà§à¦Ÿà§à§°à¦¿à¦‚ RGBA মানৰ সৈতে ৰেণà§à¦¡à¦¾à§° হয়। RGBA মান হব পাৰে 1. X11 à§° পৰা à¦à¦Ÿà¦¾ ৰঙৰ নাম, 2. '#rrggbb' বিনà§à¦¯à¦¾à¦¸à¦¤ à¦à¦Ÿà¦¾ হেকà§à¦¸ মান য'ত 'r', 'g' আৰৠ'b' হল ৰঙা, সেউজীয়া আৰৠনীলাৰ হেকà§à¦¸ ডিজিট, 3. 'rgb(r,g,b)' বিনà§à¦¯à¦¾à¦¸à¦¤ à¦à¦Ÿà¦¾ RGB ৰঙ অথবা 4. 'rgba(r,g,b,a)' বিনà§à¦¯à¦¾à¦¸à¦¤ à¦à¦Ÿà¦¾ RGBA ৰঙ য'ত 'r', 'g', and 'b' 0 à§° পৰা 255 বিসà§à¦¤à¦¾à§°à¦¤ পূৰà§à¦£à¦¸à¦‚খà§à¦¯à¦¾ অথবা 0% à§° পৰা 100% বিসà§à¦¤à¦¾à§°à¦¤ শতাংশ মান, আৰৠ'a' 0 à§° পৰা 1 বিসà§à¦¤à¦¾à§°à¦¤ à¦à¦Ÿà¦¾ দশমিক মান।" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤ ফনà§à¦Ÿ বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "ভাষাৰ পেনেলৰ বাবে সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤ ফনà§à¦Ÿà§° নাম বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤ ফনà§à¦Ÿ" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ভাষাৰ পেনেলৰ বাবে সà§à¦¬à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¿à¦¤ ফনà§à¦Ÿ" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "পূৰà§à¦¬à¦¸à¦®à§à¦ªà¦¾à¦¦à¦¨à¦¾ লিখনী পà§à§°à§‹à¦¥à¦¿à¦¤ কৰক" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "à¦à¦ªà§à¦²à¦¿à¦•েচনৰ উইনà§à¦¡à§‹à¦¤ পূৰà§à¦¬à¦¸à¦®à§à¦ªà¦¾à¦¦à¦¨à¦¾ লিখনী পà§à§°à§‹à¦¥à¦¿à¦¤ কৰক" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "সৰà§à¦¬à¦¬à§à¦¯à¦¾à¦ªà§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ অবিকলà§à¦ªà¦¿à¦¤à¦­à¦¾à§±à§‡ সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "যেতিয়া à¦à¦ªà§à¦²à¦¿à¦•েচনে ইনপà§à¦Ÿ ফকাচ পà§à§°à¦¾à¦ªà§à¦¤ কৰে তেতিয়া অবিকলà§à¦ªà¦¿à¦¤à¦­à¦¾à§±à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf সংৰকà§à¦·à¦¿à¦¤ নাম উপসৰà§à¦—সমূহ" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "নাম পৰিবৰà§à¦¤à¦¨ বনà§à¦§ কৰিবলে DConf কি'সমূহৰ উপসৰà§à¦—সমূহ" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•াৰ (c) ২০০৭-২০১০ পেং হà§à§±à¦¾à¦‚\nসà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•াৰ (c) ২০০৭-২০১০ Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "অনà§à¦¯" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "ভাষা: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "কিবৰà§à¦¡à§° বিনà§à¦¯à¦¾à¦¸: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "লিখক: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "বিৱৰণ:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "à¦à¦Ÿà¦¾ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বাছক" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "বাতিল (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "অধিক" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus পছনà§à¦¦à¦¸à¦®à§‚হ সংহতি কৰক" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "কিবৰà§à¦¡à§° চৰà§à¦Ÿà¦•াটসমূহ" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "কি'à§° ক'ড:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "পৰিবৰà§à¦¤à¦•:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "পà§à§°à§Ÿà§‹à¦— কৰক (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "আà¦à¦¤à§°à¦¾à¦“ক (_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "অনà§à¦—à§à§°à¦¹ কৰি à¦à¦Ÿà¦¾ কি' টিপক (বা à¦à¦Ÿà¦¾ কি'à§° মিশà§à§°à¦£)।\nকি' à¦à§°à¦¿à¦²à§‡ ডাইলগ বনà§à¦§ হ'ব।" #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "অনà§à¦—à§à§°à¦¹ কৰি à¦à¦Ÿà¦¾ কি' টিপক (বা à¦à¦Ÿà¦¾ কি'à§° মিশà§à§°à¦£)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "ঠিক আছে (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "পূৰà§à¦¬à§±à§°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§ˆ চà§à¦‡à¦š কৰিবলে shift à§° সৈতে চৰà§à¦Ÿà¦•াট বà§à¦¯à§±à¦¹à¦¾à§° কৰক" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ডিমন চলি থকা নাই। আপà§à¦¨à¦¿ আৰমà§à¦­ কৰিব বিচাৰে নেকি?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus আৰমà§à¦­ কৰা হৈছে! যদি আপà§à¦¨à¦¿ IBus বà§à¦¯à§±à¦¹à¦¾à§° কৰিব নোৱাৰে, নিমà§à¦¨à¦²à¦¿à¦–িত শাৰীসমূহ আপোনাৰ $HOME/.bashrc লে যোগ কৰক; তাৰ পিছত আপোনাৰ ডেসà§à¦•টপত পà§à¦¨à§° লগ কৰক।\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ডিমনক %d ছেকেণà§à¦¡à¦¤ আৰমà§à¦­ কৰিব পৰা নগল" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s à§° কাৰণে কিবৰà§à¦¡à§° চৰà§à¦Ÿà¦•াট বাছক" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¸à¦®à§‚হ চà§à¦‡à¦š কৰা" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "কেৱল ইঞà§à¦œà¦¿à¦¨ নাম তালিকাভà§à¦•à§à¦¤ কৰক" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus লে সংযোগ কৰিব নোৱাৰি।\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "ভাষা: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "কোনো ইঞà§à¦œà¦¿à¦¨ সংহতি কৰা হোৱা নাই।\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "বিশà§à¦¬à¦¬à§à¦¯à¦¾à¦ªà§€ ইঞà§à¦œà¦¿à¦¨ সংহতি কৰা বà§à¦¯à§°à§à¦¥ হল।\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "বিশà§à¦¬à¦¬à§à¦¯à¦¾à¦ªà§€ ইঞà§à¦œà¦¿à¦¨ পà§à§°à¦¾à¦ªà§à¦¤ কৰা বà§à¦¯à§°à§à¦¥ হল।\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "চিসà§à¦Ÿà§‡à¦® ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ পà§à¦•।" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ FILE পà§à¦•।" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ বৈধ নহয়।\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "চিসà§à¦Ÿà§‡à¦® ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ লিখক।" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ FILE লিখক।" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "পà§à¦¨à§° সংহতি কৰা হৈছে" #: ../tools/main.vala:318 msgid "Done" msgstr "কৰা হল" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "ইঞà§à¦œà¦¿à¦¨ সংহতি কৰক অথবা পà§à§°à¦¾à¦ªà§à¦¤ কৰক" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰক" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "উপলবà§à¦§ ইঞà§à¦œà¦¿à¦¨à¦¸à¦®à§‚হ দেখà§à§±à¦¾à¦“ক" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(পà§à§°à¦£à§Ÿà¦¨ কৰা হোৱা নাই)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon পà§à¦¨à§°à¦¾à¦®à§à¦­ কৰক" #: ../tools/main.vala:342 msgid "Show version" msgstr "সংসà§à¦•ৰণ দেখà§à§±à¦¾à¦“ক" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶à§° সমল দেখà§à§±à¦¾à¦“ক" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "ৰেজিসà§à¦Ÿà§à§°à¦¿ কà§à¦¯à¦¾à¦¶ সৃষà§à¦Ÿà¦¿ কৰক" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon à§° D-Bus ঠিকনা পà§à§°à¦¿à¦¨à§à¦Ÿ কৰক" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "সংৰূপৰ মানসমূহ দেখà§à§±à¦¾à¦“ক" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "সংৰূপৰ মানসমূহ পà§à¦¨à§° সংহতি কৰক" #: ../tools/main.vala:348 msgid "Show this information" msgstr "à¦à¦‡ তথà§à¦¯ দেখà§à§±à¦¾à¦“ক" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "বà§à¦¯à§±à¦¹à¦¾à§°: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "কমানà§à¦¡à¦¸à¦®à§‚হ:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s à¦à¦Ÿà¦¾ অজà§à¦žà¦¾à¦¤ কমানà§à¦¡!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus আপডেইট" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space à¦à¦¤à¦¿à§Ÿà¦¾ অবিকলà§à¦ªà¦¿à¦¤ হটকি।" #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus à¦à¦Ÿà¦¾ Linux/Unix à§° কাৰণে বà§à¦¦à§à¦§à¦¿à¦®à¦¾à¦¨ ইনপà§à¦Ÿ bus।" #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "অমিতাকà§à¦· ফà§à¦•ন (aphukan@fedoraproject.org), নীলমদà§à¦¯à§à¦¤à¦¿ গোসà§à¦¬à¦¾à¦®à§€ (ngoswami@redhat.com)" #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "পছনà§à¦¦" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "পà§à¦¨à¦¾à§°à¦®à§à¦­" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "পà§à§°à¦¸à§à¦¥à¦¾à¦¨" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/sr@latin.po0000644000000000000000000003623012551654123012172 00000000000000# translation of ibus.pot to Serbian (Latin) # Serbian (Latin) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # MiloÅ¡ KomarÄević , 2009 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: MiloÅ¡ KomarÄević \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus postavke" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Sledeća metoda unosa:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "UkljuÄi ili iskljuÄi:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "PreÄice tastature" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orijentacije kandidata:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Font i stil" #: ../setup/setup.ui.h:34 msgid "General" msgstr "OpÅ¡te" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Dodaj" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Ukloni" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Gore" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Dole" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_O programu" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "Pos_tavke" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Izaberite metodu unosa" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nInteligentna magistrala unosa\nMatiÄna stranica: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Pokreni ibus pri prijavi" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Pokretanje" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "O programu" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Zatvori" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Upotrebi prilagoÄ‘eni font" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Koristi prilagoÄ‘eni font za jeziÄki panel" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Naziv prilagoÄ‘enog fonta za jeziÄki panel" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Drugo" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Izaberite metodu unosa" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "PreÄice tastature" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Kod tastera:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modifikatori:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Primeni" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_ObriÅ¡i" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Pritisnite taster (ili kombinaciju tastera).\nProzorÄe će biti zatvoreno kada se taster otpusti." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Pritisnite taster (ili kombinaciju tastera)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "O_dustani" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "U _redu" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Izaberite preÄicu tastature za %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus je inteligentna magistrala unosa za Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Serbian " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Postavke" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Pokreni ponovo" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "IzaÄ‘i" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ta.po0000644000000000000000000010257712551654123011032 00000000000000# translation of ibus.pot to Tamil # Tamil translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Arun Prakash , 2012 # Arun Prakash , 2012 # Felix I , 2011 # Felix I , 2011 # I Felix , 2010 # I. Felix , 2009 # shkumar , 2012 # shkumar , 2012,2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-17 09:18+0000\n" "Last-Translator: shkumar \n" "Language-Team: Tamil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ta\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "கிடைமடà¯à®Ÿà®®à¯" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "செஙà¯à®•à¯à®¤à¯à®¤à¯" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "மேல௠இடத௠ஓரமà¯" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "மேல௠வலத௠ஓரமà¯" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "கீழ௠இடத௠ஓரமà¯" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "கீழ௠வலத௠ஓரமà¯" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "தனிபà¯à®ªà®¯à®©à¯" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "காணà¯à®ªà®¿à®•à¯à®• வேணà¯à®Ÿà®¾à®®à¯" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "தானாக மறை" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "எபà¯à®ªà¯‹à®¤à¯à®®à¯" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•ளà¯" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ அடà¯à®¤à¯à®¤ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ மாறà¯à®±à¯à®µà®¤à®±à¯à®•ான கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿ விசைகளà¯" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "அடà¯à®¤à¯à®¤ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆ:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ à®®à¯à®¨à¯à®¤à¯ˆà®¯ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ மாறà¯à®±à¯à®µà®¤à®±à¯à®•ான கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿ விசைகளà¯" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆ:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®®à¯ˆ தà¯à®µà®•à¯à®• அலà¯à®²à®¤à¯ நிறà¯à®¤à¯à®¤ கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளை அமை" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ அலà¯à®²à®¤à¯ செயலà¯à®¨à¯€à®•à¯à®•à¯:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "செயலà¯à®¨à¯€à®•à¯à®•à¯:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "விசைபà¯à®ªà®²à®•ை கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®•ளà¯" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "காணà¯à®®à¯ அடà¯à®Ÿà®µà®£à¯ˆà®¯à®¿à®²à¯ நபரà¯à®•ளின௠திசையமைபà¯à®ªà¯ˆ அமை" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "கேணà¯à®Ÿà®¿à®Ÿà¯‡à®Ÿà¯ சாரà¯à®¨à¯à®¤à¯:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "மொழி படà¯à®Ÿà¯ˆà®¯à¯ˆ எவà¯à®µà®¾à®±à¯ காடà¯à®Ÿ அலà¯à®²à®¤à¯ மறைகà¯à®• வேணà¯à®Ÿà¯à®®à¯ என ibus பணà¯à®ªà®¿à®©à¯ˆ அமை" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "பணà¯à®ªà¯à®•ள௠பலகதà¯à®¤à¯ˆà®•௠காடà¯à®Ÿà¯:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "மொழி பேனல௠படமà¯:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "கணினி தடà¯à®Ÿà®¿à®²à¯ சினà¯à®©à®¤à¯à®¤à¯ˆ காடà¯à®Ÿà¯" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "மொழி படà¯à®Ÿà¯ˆà®¯à®¿à®²à¯ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à®¿à®©à¯ பெயரை காடà¯à®Ÿà¯" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "சோதனை பெடà¯à®Ÿà®¿à®¯à¯ˆ சோதிகà¯à®•à¯à®®à¯ போத௠உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆ பெயரை மொழி படà¯à®Ÿà¯ˆà®¯à®¿à®²à¯ காடà¯à®Ÿà¯ " #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "பயனà¯à®ªà®¾à®Ÿà¯ சாளரதà¯à®¤à®¿à®²à¯ உடà¯à®ªà¯Šà®¤à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ preedit உரை" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ சாளரதà¯à®¤à®¿à®²à¯ preedit உரையின௠உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ உடà¯à®ªà¯Šà®¤à®¿à®¯à®µà¯à®®à¯" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "தனிபà¯à®ªà®¯à®©à¯ எழà¯à®¤à¯à®¤à¯à®°à¯à®µà¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "எழà¯à®¤à¯à®¤à¯à®°à¯ மறà¯à®±à¯à®®à¯ தோறà¯à®±à®®à¯" #: ../setup/setup.ui.h:34 msgid "General" msgstr "பொதà¯" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "சேர௠(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•ளில௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ சேரà¯" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "நீகà¯à®•௠(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•ளிலிரà¯à®¨à¯à®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ நீகà¯à®•à¯" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "மேலே (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•ள௠படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ மேலே நகரà¯à®¤à¯à®¤à¯" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "கீழே (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•ளில௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ கீழே நகரà¯à®¤à¯à®¤à¯" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "பறà¯à®±à®¿ (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à®¿à®©à¯ தகவலை காடà¯à®Ÿà¯" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•ள௠(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ உளà¯à®³à®¿à®Ÿà¯à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à®¿à®©à¯ அமைபà¯à®ªà¯ˆ காடà¯à®Ÿà¯" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "மேலே உளà¯à®³ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ விசைபà¯à®ªà®²à®•ைக௠கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿ விசைகளை à®…à®´à¯à®¤à¯à®¤à¯à®µà®¤à®©à¯ மூலம௠அலà¯à®²à®¤à¯ பலகம௠சினà¯à®©à®¤à¯à®¤à¯ˆ சொடà¯à®•à¯à®•à¯à®µà®¤à®©à¯ மூலமà¯, செயலில௠உளà¯à®³ உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤à¯à®³à¯à®³ ஒனà¯à®±à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வேறொனà¯à®±à¯à®•à¯à®•௠மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à¯à®®à¯." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "கணினி விசைபà¯à®ªà®²à®•ை அமைபà¯à®ªà¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "கணினி விசைபà¯à®ªà®²à®•ை (XKB) அமைபà¯à®ªà¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "விசைபà¯à®ªà®²à®•ை அமைபà¯à®ªà¯" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "அனைதà¯à®¤à¯ பயனà¯à®ªà®¾à®Ÿà¯à®•ளிலà¯à®®à¯ சில உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ பகிரவà¯à®®à¯" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ஒர௠உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "கூடà¯à®¤à®²à¯" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nThe intelligent input bus\nà®®à¯à®¤à®©à¯à®®à¯ˆ பகà¯à®•à®®à¯: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "பà¯à®•à¯à®ªà®¤à®¿à®µà®¿à®²à¯ ibus஠தà¯à®µà®•à¯à®•à¯" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "தà¯à®µà®•à¯à®•à®®à¯" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "பறà¯à®±à®¿" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "மூட௠(_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "à®®à¯à®©à¯à®à®±à¯à®±à®²à¯ இயநà¯à®¤à®¿à®°à®™à¯à®•ளà¯" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus தà¯à®µà®™à¯à®•à¯à®®à¯ போத௠மà¯à®©à¯à®©à¯‡à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ எநà¯à®¤à®¿à®°à®™à¯à®•ள௠" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "எஞà¯à®šà®¿à®©à¯à®•ள௠வரிசை" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ எஞà¯à®šà®¿à®©à¯à®•ள௠வரிசை சேமிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME மாறà¯à®± சாளரதà¯à®¤à®¿à®±à¯à®•ான பாபà¯-அப௠தாமத மிலà¯à®²à®¿à®šà¯†à®•னà¯à®Ÿà¯" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME மாறà¯à®± சாளரதà¯à®¤à¯ˆà®•௠காணà¯à®ªà®¿à®•à¯à®•, பாபà¯-அப௠தாமத மிலà¯à®²à®¿à®šà¯†à®•னà¯à®Ÿà¯ˆ அமைகà¯à®•வà¯à®®à¯. à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ மதிபà¯à®ªà¯400 ஆகà¯à®®à¯. 0 = உடனடியாக சாளரதà¯à®¤à¯ˆà®•௠காணà¯à®ªà®¿à®•à¯à®•. 0 < தாமத மிலà¯à®²à®¿à®šà¯†à®•னà¯à®Ÿà¯. 0 > சாளரதà¯à®¤à¯ˆà®•௠காணà¯à®ªà®¿à®•à¯à®•ாமல௠மà¯à®¨à¯à®¤à¯ˆà®¯/அடà¯à®¤à¯à®¤ எஞà¯à®šà®¿à®©à¯à®•ளà¯à®•à¯à®•௠மாறà¯à®±." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "சேமிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà¯ எணà¯" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "சேமிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà¯ எணà¯à®£à®¾à®©à®¤à¯ à®®à¯à®©à¯à®©à®°à¯ நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ ibus மறà¯à®±à¯à®®à¯ தறà¯à®ªà¯‹à®¤à¯à®³à¯à®³ ibus இல௠ஒனà¯à®±à¯ ஆகியவறà¯à®±à¯à®•à¯à®•௠இடையே உளà¯à®³ வேறà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆà®•௠கணà¯à®Ÿà®±à®¿à®¯à®ªà¯ பயனà¯à®ªà®Ÿà¯à®®à¯." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ASCII கொணà¯à®Ÿà®¿à®²à¯à®²à®¾à®¤ இலதà¯à®¤à¯€à®©à¯ லேயவà¯à®Ÿà¯à®Ÿà¯à®•ளà¯" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "அமெரிகà¯à®• லேயவà¯à®Ÿà¯ இலதà¯à®¤à¯€à®©à¯ லேயவà¯à®Ÿà¯à®Ÿà¯à®•ளà¯à®Ÿà®©à¯ இணைகà¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯. இதன௠மாறà¯à®±à¯ வகையை பà¯à®±à®•à¯à®•ணிகà¯à®•லாமà¯." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap à®à®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus எஞà¯à®šà®¿à®©à¯à®•ள௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®®à¯ போத௠.xmodmap அலà¯à®²à®¤à¯ .Xmodmap வெளியேறினால௠xmodmap ஠இயகà¯à®•à¯." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளை செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse கà¯à®•ான கà¯à®±à¯à®•à¯à®•௠விசைகளை இயகà¯à®•à¯" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•à¯à®•ளை செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ இயகà¯à®•à¯à®®à¯ கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளà¯" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளை செயலà¯à®¨à¯€à®•à¯à®•à¯" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ நிறà¯à®¤à¯à®¤à¯à®®à¯ கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளà¯" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "அடà¯à®¤à¯à®¤ இயநà¯à®¤à®¿à®° கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆ" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ அடà¯à®¤à¯à®¤ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•à¯à®•௠மாறà¯à®±à¯à®µà®¤à®±à¯à®•ான கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿ விசைகளà¯" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯ இயநà¯à®¤à®¿à®° கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®•ளà¯" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯ உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•à¯à®•௠மாறà¯à®±à¯à®µà®¤à®±à¯à®•ான கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿ விசைகளà¯" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "தானாக மறை" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "பணà¯à®ªà¯à®•ள௠பலகதà¯à®¤à®¿à®©à¯ நடதà¯à®¤à¯ˆ. 0 = காணà¯à®ªà®¿à®•à¯à®• வேணà¯à®Ÿà®¾à®®à¯, 1 = தானாக மறை, 2 = எபà¯à®ªà¯‹à®¤à¯à®®à¯ காணà¯à®ªà®¿" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "மொழி பேனல௠இடமà¯" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "மொழி பேனலின௠இடமà¯. 0 = மேல௠இடத௠ஓரமà¯, 1 = மேல௠வலத௠ஓரமà¯, 2 = கீழ௠இடத௠ஓரமà¯, 3 = கீழ௠வலத௠ஓரமà¯, 4 = தனிபயனà¯" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "பலகம௠எபà¯à®ªà¯‹à®¤à¯à®®à¯ காணà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯à®šà¯ சà¯à®Ÿà¯à®Ÿà®¿à®¯à¯ˆà®ªà¯ பின௠தொடரவà¯à®®à¯" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "ஆம௠என அமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯, பலகம௠எபà¯à®ªà¯‹à®¤à¯à®®à¯ காணà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯à®šà¯ சà¯à®Ÿà¯à®Ÿà®¿à®¯à¯ˆà®ªà¯ பின௠தொடரà¯à®®à¯. இலà¯à®²à¯ˆ எனà¯à®±à¯ அமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ பலகம௠ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ இடதà¯à®¤à®¿à®²à¯‡à®¯à¯‡ இரà¯à®•à¯à®•à¯à®®à¯." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "பணà¯à®ªà¯à®•ள௠பலகதà¯à®¤à¯ˆ காடà¯à®Ÿ வேணà¯à®Ÿà®¿à®¯ மிலà¯à®²à®¿à®šà¯†à®•à¯à®•னà¯à®Ÿà¯" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "பணà¯à®ªà¯à®•ள௠பலகதà¯à®¤à®¿à®²à¯ கவனம௠செலà¯à®¤à¯à®¤à®¿à®¯ பிறக௠அலà¯à®²à®¤à¯ பணà¯à®ªà¯à®•ளை மாறà¯à®±à®¿à®¯ பிறக௠பலகதà¯à®¤à¯ˆà®•௠காடà¯à®Ÿ வேணà¯à®Ÿà®¿à®¯ மிலà¯à®²à®¿à®šà¯†à®•à¯à®•னà¯à®Ÿà¯." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "காணà¯à®®à¯ அடà¯à®Ÿà®µà®£à¯ˆà®¯à®¿à®©à¯ திசை" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "காணà¯à®®à¯ அடà¯à®Ÿà®µà®£à¯ˆà®¯à®¿à®©à¯ திசை. 0 = கிடைமடà¯à®Ÿà®®à¯, 1 = செஙà¯à®•à¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à®¿à®©à¯ பெயரை காடà¯à®Ÿà¯" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB சினà¯à®©à®¤à¯à®¤à®¿à®©à¯ RGBA மதிபà¯à®ªà¯" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB சினà¯à®©à®®à¯ லேயவà¯à®Ÿà¯ சரதà¯à®¤à¯ˆà®•௠காணà¯à®ªà®¿à®•à¯à®•ிறதà¯, அநà¯à®¤à®šà¯ சரமானத௠RGBA மதிபà¯à®ªà¯à®Ÿà¯à®© காடà¯à®šà®¿à®¯à®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯. RGBA மதிபà¯à®ªà¯ 1. X11 இலிரà¯à®¨à¯à®¤à¯ ஒர௠நிறதà¯à®¤à®¿à®©à¯ பெயராகவோ, 2. '#rrggbb' எனà¯à®± வடிவதà¯à®¤à®¿à®²à¯ ஹெகà¯à®¸à¯ மதிபà¯à®ªà®¾à®•வோ (இஙà¯à®•௠'r', 'g' மறà¯à®±à¯à®®à¯ 'b' ஆகியவை சிவபà¯à®ªà¯, பசà¯à®šà¯ˆ மறà¯à®±à¯à®®à¯ நீலதà¯à®¤à®¿à®©à¯ ஹெகà¯à®¸à¯ மதிபà¯à®•ளà¯), 3. 'rgb(r,g,b)' எனà¯à®± வடிவதà¯à®¤à®¿à®²à¯ ஒர௠நிறதà¯à®¤à®¿à®©à¯ RGB நிறமாகவோ அலà¯à®²à®¤à¯ 4. 'rgba(r,g,b,a)' எனà¯à®± வடிவதà¯à®¤à®¿à®²à¯ (இஙà¯à®•௠'r', 'g' மறà¯à®±à¯à®®à¯ 'b' ஆகியவை 0 à®®à¯à®¤à®²à¯ 255 கà¯à®•௠இடைபà¯à®ªà®Ÿà¯à®Ÿ வரமà¯à®ªà®¿à®²à®¾à®© à®®à¯à®´à¯ எணà¯à®•ள௠அலà¯à®²à®¤à¯ 0% à®®à¯à®¤à®²à¯ 100% கà¯à®•௠இடைபà¯à®ªà®Ÿà¯à®Ÿ வரமà¯à®ªà®¿à®²à®¾à®© சதவீதஙà¯à®•ளாகà¯à®®à¯, 'a' எனà¯à®ªà®¤à¯ 0 à®®à¯à®¤à®²à¯ 1 ஆலà¯à®ƒà®ªà®¾ வரையிலான வரமà¯à®ªà®¿à®²à®®à¯ˆà®¨à¯à®¤ ஃபà¯à®³à¯‹à®Ÿà¯à®Ÿà®¿à®™à¯ பாயினà¯à®Ÿà¯ எணà¯à®£à®¾à®•à¯à®®à¯) ஒர௠RGBA நிறமாகவோ இரà¯à®•à¯à®•லாமà¯." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "தனிபà¯à®ªà®¯à®©à¯ எழà¯à®¤à¯à®¤à¯à®°à¯à®µà¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "மொழி பலகதà¯à®¤à®¿à®²à¯ தனிபயன௠எழà¯à®¤à¯à®¤à¯à®°à¯ பெயரà¯" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "தனிபà¯à®ªà®¯à®©à¯ எழà¯à®¤à¯à®¤à¯à®°à¯" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "மொழி பலகதà¯à®¤à¯à®•à¯à®•ான தனிபà¯à®ªà®¯à®©à¯ எழà¯à®¤à¯à®¤à¯à®°à¯ பெயரà¯" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "உடà¯à®ªà¯Šà®¤à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ Preedit உரை" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "பயனà¯à®ªà®¾à®Ÿà¯ சாளரதà¯à®¤à®¿à®²à¯ உடà¯à®ªà¯Šà®¤à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ Preedit உரை" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "பொத௠உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "பயனà¯à®ªà®¾à®Ÿà¯ உளà¯à®³à¯€à®Ÿà¯à®•à¯à®•௠உடà¯à®ªà®Ÿà¯à®®à¯à®ªà¯‹à®¤à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf ஆனத௠பெயர௠மà¯à®©à¯à®©à¯Šà®Ÿà¯à®Ÿà¯à®•ளைப௠பாதà¯à®•ாதà¯à®¤à¯ வைகà¯à®•ிறதà¯" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "பெயர௠மரபை நிறà¯à®¤à¯à®¤ DConf விசைகளின௠மà¯à®©à¯à®©à¯Šà®Ÿà¯à®Ÿà¯à®•ளà¯" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "பதிபà¯à®ªà¯à®°à®¿à®®à¯ˆ (c) 2007-2010 Peng Huang\nபதிபà¯à®ªà¯à®°à®¿à®®à¯ˆ (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "வேறà¯" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "மொழி: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "விசைபà¯à®ªà®²à®•ை அமைபà¯à®ªà¯: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "ஆசிரியரà¯: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "விளகà¯à®•à®®à¯:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "ஒர௠உளà¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®¯à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "ரதà¯à®¤à¯ (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "மேலà¯à®®à¯â€¦" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•ளை அமை" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "விசைபà¯à®ªà®²à®•ை கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®•ளà¯" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "விசை கà¯à®±à®¿à®¯à¯€à®Ÿà¯:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "மாறà¯à®±à®¿à®•ளà¯;" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "அழி (_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ஒர௠விசையை à®…à®´à¯à®¤à¯à®¤à®µà¯à®®à¯ (அலà¯à®²à®¤à¯ விசை கலவையை).\nவிசையை விடà¯à®¤à¯à®¤à®¾à®²à¯ உரையாடல௠மூடபà¯à®ªà®Ÿà¯à®®à¯." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "ஒர௠விசையை à®…à®´à¯à®¤à¯à®¤à®µà¯à®®à¯ (அலà¯à®²à®¤à¯ ஒர௠விசை கலவையை)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "சரி (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯ உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ à®®à¯à®±à¯ˆà®•à¯à®•௠மாற கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®¯à¯ˆ ஷிஃபà¯à®Ÿà¯ விசையà¯à®Ÿà®©à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus டெமான௠இயஙà¯à®•விலà¯à®²à¯ˆ. அதைத௠தொடஙà¯à®• வேணà¯à®Ÿà¯à®®à®¾?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus தொடஙà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯! உஙà¯à®•ளால௠IBus à®à®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®µà®¿à®Ÿà¯à®Ÿà®¾à®²à¯, உஙà¯à®•ள௠$HOME/.bashrc; இல௠பினà¯à®µà®°à¯à®®à¯ வரிகளைச௠சேரà¯à®¤à¯à®¤à¯ உஙà¯à®•ள௠டெஸà¯à®•à¯à®Ÿà®¾à®ªà¯à®ªà®¿à®²à¯ மீணà¯à®Ÿà¯à®®à¯ பà¯à®•à¯à®ªà®¤à®¿à®µà¯ செயà¯à®¯à®µà¯à®®à¯.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "%d வினாடிகளில௠IBus டெமானைத௠தொடகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%sகà¯à®•ான விசைபà¯à®ªà®²à®•ை கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®¯à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ à®®à¯à®±à¯ˆà®•ளை மாறà¯à®±à¯à®¤à®²à¯" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "எஞà¯à®šà®¿à®©à¯ பெயரை மடà¯à®Ÿà¯à®®à¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®Ÿà¯" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus உடன௠இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "மொழி: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "எஞà¯à®šà®¿à®©à¯ அமைகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "à®®à¯à®´à¯à®®à¯ˆà®•à¯à®•à¯à®®à®¾à®© எஞà¯à®šà®¿à®©à¯ˆ அமைதà¯à®¤à®²à¯ தோலà¯à®µà®¿.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "à®®à¯à®´à¯à®®à¯ˆà®•à¯à®•à¯à®®à®¾à®© எஞà¯à®šà®¿à®©à¯ˆ பெறà¯à®¤à®²à¯ தோலà¯à®µà®¿.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "கணினி பதிவக தேகà¯à®•கதà¯à®¤à¯ˆ வாசி." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "பதிவக தேகà¯à®•க FILE ஠வாசி." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "பதிவக தேகà¯à®•கம௠செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•ாததà¯.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "கணினி பதிவக தேகà¯à®•கதà¯à®¤à®¿à®²à¯ எழà¯à®¤à¯." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "பதிவக தேகà¯à®•க FILE இல௠எழà¯à®¤à¯." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•ிறதà¯â€¦" #: ../tools/main.vala:318 msgid "Done" msgstr "à®®à¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "எஞà¯à®šà®¿à®©à¯ˆ அமை அலà¯à®²à®¤à¯ பெறà¯" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon இலிரà¯à®¨à¯à®¤à¯ வெளியேறà¯" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "இரà¯à®•à¯à®•à¯à®®à¯ எஞà¯à®šà®¿à®©à¯à®•ளைக௠காடà¯à®Ÿà¯" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon ஠மறà¯à®¤à¯à®µà®•à¯à®•à¯" #: ../tools/main.vala:342 msgid "Show version" msgstr "பதிபà¯à®ªà¯ˆà®•௠காடà¯à®Ÿà¯" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "பதிவக தேகà¯à®•க உளà¯à®³à®Ÿà®•à¯à®•தà¯à®¤à¯ˆà®•௠காணà¯à®ªà®¿" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "பதிவக தேகà¯à®•கதà¯à®¤à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon இன௠D-Bus à®®à¯à®•வரியை அசà¯à®šà®¿à®Ÿà¯" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "அமைவாகà¯à®• மதிபà¯à®ªà¯à®•ளைக௠காணà¯à®ªà®¿" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "அமைவாகà¯à®• மதிபà¯à®ªà¯à®•ளை மீடà¯à®Ÿà®®à¯ˆ" #: ../tools/main.vala:348 msgid "Show this information" msgstr "இநà¯à®¤à®¤à¯ தகவலைக௠காடà¯à®Ÿà¯" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "பயனà¯à®ªà®¾à®Ÿà¯: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "கடà¯à®Ÿà®³à¯ˆà®•ள௠:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s எனà¯à®ªà®¤à¯ தெரியாத கடà¯à®Ÿà®³à¯ˆ!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus பà¯à®¤à¯à®ªà¯à®ªà®¿à®ªà¯à®ªà¯" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "இபà¯à®ªà¯‹à®¤à¯ Super+space எனà¯à®ªà®¤à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ கà¯à®±à¯à®•à¯à®•à¯à®µà®¿à®šà¯ˆà®¯à®¾à®•à¯à®®à¯." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus Linux/Unixகà¯à®•ான உளà¯à®³à¯€à®Ÿà¯ பஸà¯." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "I. Felix " #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•ள௠" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "மறà¯à®¤à¯à®µà®•à¯à®•à®®à¯" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "வெளியேற௠" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/et.po0000644000000000000000000003535712551654123011037 00000000000000# translation of ibus.pot to Estonian # Estonian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # mihkel , 2012 # mihkel , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: mihkel \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horisontaalne" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertikaalne" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Ülemine vasak nurk" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Ülemine parem nurk" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Alumine vasak nurk" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Alumine parem nurk" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Kohandatud" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Alati" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus eelistused" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Järgmine sisestusmeetod." #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Eelmine sisestusmeetod:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Võimalda või keela:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Võimalda:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Keela:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Kasuta kohandatud fonti:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "" #: ../setup/setup.ui.h:34 msgid "General" msgstr "" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "L_isa" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Eemalda" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Üles" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Alla" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Programmist lähemalt" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Eelistused" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Sisestusmeetod" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Käivita ibus sisselogiminsel" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Programmist" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "Sul_ge" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Võimalda kiirklahvid" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Kohandatud font" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Keel: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Klaviatuuri asetus: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Kirjeldus:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Vali sisestusmeetod" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Määra IBus eelistused" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Rakenda" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "Ku_stuta" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Loobu" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_Olgu" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Eelistused" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Restart" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Lõpeta" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ru.po0000644000000000000000000005444712551654123011056 00000000000000# translation of ibus.pot to Russian # Russian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Koterpillar , 2009 # Koterpillar , 2009 # Yulia , 2010 # Yulia , 2013-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Yulia \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Горизонтально" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Вертикально" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Левый верхний угол" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Правый верхний угол" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Левый нижний угол" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Правый нижний угол" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Свой" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Ð’Ñегда" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Параметры IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "ГорÑчие клавиши Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° Ñледующий метод ввода в ÑпиÑке:" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Следующий метод ввода:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ГорÑчие клавиши Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° предыдущий метод ввода в ÑпиÑке:" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Предыдущий метод ввода:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Сочетание клавиш Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ/Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° ввода" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Включить или выключить:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Включить:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Выключить:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "ГорÑчие клавиши" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "УÑтановить ориентацию кандидатов в таблице поиÑка" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð´Ð¸Ð´Ð°Ñ‚Ð¾Ð²:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "УÑтановить поведение iBus Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° или ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñзыковой панели" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "РаÑположение Ñзыковой панели:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Показать значок в облаÑти уведомлений" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Показывать название метода ввода на Ñзыковой панели" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Показывать название метода ввода на Ñзыковой панели, когда пункт выбран" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Ð’Ñтавить готовый текÑÑ‚ в окно приложениÑ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Ð’Ñтавить готовый текÑÑ‚ метода ввода в окно приложениÑ" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Выбрать шрифт:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Шрифт и Ñтиль" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ОÑновные" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Добавить" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Добавить выбранный метод ввода к иÑпользуемым" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Удалить" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Удалить выбранный метод ввода из ÑпиÑка" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "Вв_ерх" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "ПеремеÑтить выбранный метод ввода вверх в ÑпиÑке иÑпользуемых" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "Ð’_низ" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "ПеремеÑтить выбранный метод ввода вниз в ÑпиÑке иÑпользуемых" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_О программе" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Показать информацию о выбранном методе ввода" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Параметры" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Показать наÑтройки выбранного метода ввода" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Метод ввода" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "ИÑпользовать ÑиÑтемную раÑкладку клавиатуры" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "ИÑпользовать ÑиÑтемную раÑкладку (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "РаÑкладка клавиатуры" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "ИÑпользовать один метод ввода Ð´Ð»Ñ Ð²Ñех приложений" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ÐаÑтройки глобального метода ввода" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Дополнительно" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nÐ˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ ÑиÑтема ввода\nДомашнÑÑ Ñтраница: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ЗапуÑкать iBus при входе в ÑиÑтему:" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ЗапуÑк" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "О программе" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Закрыть" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "ÐŸÑ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° методов ввода" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Загружать методы ввода при запуÑке iBus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "ПорÑдок модулей" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "ПорÑдок модулей в ÑпиÑке методов ввода" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "Задержка вÑплывающего окна Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ñ‚ÐµÐ»Ñ IME (в миллиÑекундах)" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "ÐаÑтройте задержку показа окна выбора метода ввода, которое по умолчанию будет равно 400 мÑек. Возможные значениÑ: 0 - окно будет открыто Ñразу, 0 < задержка в миллиÑекундах, 0 > окно не будет показано." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "Сохраненный номер верÑии" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "Сохраненный номер верÑии иÑпользуетÑÑ Ð´Ð»Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ верÑии ibus Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹." #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Сочетание клавиш Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ/выключениÑ" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Сочетание клавиш Ð´Ð»Ñ gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Включить ÑÐ¾Ñ‡ÐµÑ‚Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "Ð¡Ð¾Ñ‡ÐµÑ‚Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° ввода" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Отключить ÑÐ¾Ñ‡ÐµÑ‚Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "Сочетание Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° ввода" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Клавиши Ð´Ð»Ñ Ñледующего метода ввода" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Сочетание клавиш Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° Ñледующий метод ввода в ÑпиÑке:" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Клавиши Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾ метода ввода" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "Сочетание клавиш Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° предыдущий метод ввода в ÑпиÑке:" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "ÐвтоматичеÑки Ñкрывать" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "РаÑположение Ñзыковой панели" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "РаÑположение Ñзыковой панели: 0 = левый верхний угол, 1 = правый верхний угол, 2 = левый нижний угол, 3 = правый нижний угол, 4 = произвольное" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ поиÑка" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹: 0 = горизонтально, 1 = вертикально." #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Показывать название метода ввода" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "ИÑпользовать Ñвой шрифт" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "ИÑпользовать Ñвой шрифт Ð´Ð»Ñ Ñзыковой панели" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Свой шрифт" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Свой шрифт Ð´Ð»Ñ Ñзыковой панели" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Ð’Ñтавить готовый текÑÑ‚" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Ð’Ñтавить готовый текÑÑ‚ в окно приложениÑ" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "ИÑпользовать глобальный метод ввода" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Включить метод ввода по умолчанию" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Включить метод ввода по умолчанию при получении приложением фокуÑа ввода" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf ÑохранÑет префикÑÑ‹ имен." #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ПрефикÑÑ‹ ключей DConf Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "(c) 2007-2010 Peng Huang\n(c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Другие" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Язык: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "РаÑкладка: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Ðвтор: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "ОпиÑание:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Выберите метод ввода" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "ÐаÑтроить параметры IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Комбинации клавиш" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Код клавиши:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Модификаторы:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Применить" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Удалить" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Ðажмите клавишу (или Ñочетание клавиш).\nКогда клавиша будет отпущена, окно закроетÑÑ." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Ðажмите клавишу (или Ñочетание клавиш)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "О_тменить" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ИÑпользовать Ñочетание SHIFT Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° предыдущего метода ввода" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus не выполнÑетÑÑ. ЗапуÑтить?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus запущен. ЕÑли у Ð²Ð°Ñ Ð½ÐµÑ‚ доÑтупа к IBus, добавьте приведенные ниже Ñтроки в $HOME/.bashrc и заново войдите в ÑиÑтему.\nexport GTK_IM_MODULE=ibus\nexport XMODIFIERS=@im=ibus\nexport QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Ðе удалоÑÑŒ запуÑтить IBus через %d Ñек." #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Выберите комбинацию клавиш Ð´Ð»Ñ %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "изменение методов ввода" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "Показать Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Ðе удалоÑÑŒ подключитьÑÑ Ðº IBus.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "Ñзык: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Модуль не выбран.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Ðе удалоÑÑŒ наÑтроить глобальный модуль.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Ðе удалоÑÑŒ получить глобальный модуль.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "Чтение кÑша ÑиÑтемного рееÑтра." #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "Чтение файла кÑша рееÑтра." #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "ÐедейÑтвительный кÑш рееÑтра.\n" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "ЗапиÑÑŒ в кÑш ÑиÑтемного рееÑтра." #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "ЗапиÑÑŒ в файл кÑша рееÑтра." #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "Показать верÑию" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Формат: %s КОМÐÐДР[ПÐРÐМЕТР...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Команды:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "Обновление IBus" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus — Ð¸Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ ÑиÑтема ввода Ð´Ð»Ñ Linux и Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Alexey Kotlyarov , 2009.\nYulia , 2010." #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Параметры" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "ПерезапуÑтить" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Выход" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/or.po0000644000000000000000000006664012551654123011046 00000000000000# translation of ibus.pot to Oriya # Oriya translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Manoj Kumar Giri , 2009,2011-2013 # Manoj Kumar Giri , 2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:48+0000\n" "Last-Translator: Manoj Kumar Giri \n" "Language-Team: Oriya \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: or\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "ଭୂ-ସମାନà­à¬¤à¬°à¬¾à¬³" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "ଭୂଲମà­à¬¬" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ଉପର ପାଖ ବାମ କୋଣ" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ଉପର ପାଖ ଡ଼ାହାଣ କୋଣ" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "ତଳପାଖ ବାମ କୋଣ" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "ଇଚà­à¬›à¬¾à¬°à­‚ପୀ" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "ସରà­à¬¬à¬¦à¬¾" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus ପସନà­à¬¦" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "ତାଲିକାରେ ପରବରà­à¬¤à­à¬¤à­€ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠବଦଳାଇବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "ପରବରà­à¬¤à­à¬¤à¬¿ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ତାଲିକାରେ ପୂରà­à¬¬ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠବଦଳାଇବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ପୂରà­à¬¬ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬•ୠଅନ କିମà­à¬¬à¬¾ ଅଫ କରିବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "ସକà­à¬°à¬¿à­Ÿ ଅଥବା ନିଷà­à¬•à­à¬°à¬¿à­Ÿ:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "ସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରନà­à¬¤à­:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "କିବୋରà­à¬¡ ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "ଅବଲୋକନ ସାରଣୀରେ ବà­à­Ÿà¬•à­à¬¤à¬¿à¬®à¬¾à¬¨à¬™à­à¬•ର ଅନà­à¬¸à­à¬¥à¬¾à¬ªà¬¨ ସେଟକରନà­à¬¤à­" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ପà­à¬°à¬¾à¬°à­à¬¥à­€ ଅନà­à¬¸à­à¬¥à¬¾à¬ªà¬¨:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ଭାଷା ସୂଚକକୠଦରà­à¬¶à¬¾à¬‡à¬¬à¬¾ ଅଥବା ଲà­à¬šà¬¾à¬‡à¬¬à¬¾ ପାଇଠibus ର ଆଚରଣକୠସେଟକରନà­à¬¤à­" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ଭାଷା ଫଳକ ଅବସà­à¬¥à¬¾à¬¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "ତନà­à¬¤à­à¬° ଟà­à¬°à­‡à¬°à­‡ ଚିତà­à¬°à¬¸à¬‚କେତଗà­à¬¡à¬¼à¬¿à¬•ୠଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "ଭାଷା ତାଲିକା ପାଇଠନିବେଶ ପଦà­à¬§à¬¤à¬¿ ନାମ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿ ନାମକୠଭାଷା ସୂଚକରେ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­ ଯେତେବେଳେ ଯାଞà­à¬šà¬¬à¬¾à¬•à­à¬¸à¬•ୠଯାଞà­à¬šà¬•ରà­à¬›à¬¨à­à¬¤à¬¿" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "ପà­à¬°à­Ÿà­‹à¬— ୱିଣà­à¬¡à­‹à¬°à­‡ ଅନà­à¬¤à¬¸à­à¬¥à¬¾à¬ªà¬¿à¬¤ ପà­à¬°à­€à¬¡à¬¿à¬¤ ପାଠà­à­Ÿ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬° ପà­à¬°à­€à¬¡à¬¿à¬¤ ପାଠà­à­Ÿà¬•ୠପà­à¬°à­Ÿà­‹à¬— ୱିଣà­à¬¡à­‹à¬°à­‡ ଅନà­à¬¤à¬¸à­à¬¥à¬¾à¬ªà¬¿à¬¤ କରନà­à¬¤à­" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "ଇଚà­à¬›à¬¾à¬°à­‚ପଣ ଅକà­à¬·à¬°à¬°à­‚ପ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ଅକà­à¬·à¬°à¬°à­‚ପ à¬à¬¬à¬‚ ଶୈଳୀ" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ସାଧାରଣ" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "ଯୋଗ କରନà­à¬¤à­ (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠସକà­à¬°à¬¿à­Ÿ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬°à­‡ ଯୋଗକରନà­à¬¤à­" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "କାଢ଼ନà­à¬¤à­ (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "ସକà­à¬°à¬¿à­Ÿ ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬°à­ ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପà­à¬°à¬£à­€à¬³à­€à¬•ୠକାଢ଼ିଦିଅନà­à¬¤à­" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ଉପର (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "ସକà­à¬°à¬¿à­Ÿ ନିବେଶ ପଦà­à¬§à¬¤à¬¿ ତାଲିକାରେ ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପà­à¬°à¬£à­€à¬³à­€à¬•ୠଉପରକୠଘà­à¬žà­à¬šà¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "ତଳ (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "ସକà­à¬°à¬¿à­Ÿ ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬—à­à¬¡à¬¼à¬¿à¬•ରେ ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପà­à¬°à¬£à­€à¬³à­€à¬•ୠତଳକୠଘà­à¬žà­à¬šà¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "ବିବରଣୀ (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬° ସୂଚନା ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "ପସନà­à¬¦ (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "ବଚà­à¬›à¬¿à¬¤ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬° ବà­à­Ÿà¬¬à¬¸à­à¬¥à¬¾à¬•ୠଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "ତନà­à¬¤à­à¬° କିବୋରà­à¬¡ ବିନà­à­Ÿà¬¾à¬¸à¬•ୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "ତନà­à¬¤à­à¬° କିବୋରà­à¬¡ (XKB) ବିନà­à­Ÿà¬¾à¬¸à¬•ୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "କିବୋରà­à¬¡ ବିନà­à­Ÿà¬¾à¬¸" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "ସମସà­à¬¤ ପà­à¬°à­Ÿà­‹à¬—ଗà­à¬¡à¬¼à¬¿à¬• ମଧà­à¬¯à¬°à­‡ à¬à¬•ା ପà­à¬°à¬•ାରର ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬•ୠସହଭାଗ କରନà­à¬¤à­" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ସରà­à¬¬à¬¸à¬¾à¬§à¬¾à¬°à¬£ ନିବେଶ ପà­à¬°à¬£à­€à¬³à­€ ବିନà­à­Ÿà¬¾à¬¸" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "ଉନà­à¬¨à¬¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nବà­à¬¦à­à¬§à¬¿à¬®à¬¾à¬¨ ନିବେଶ ପରିପଥ\nମୂଖà­à­Ÿ ପୃଷà­à¬ à¬¾: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ଲଗଇନ ସମୟରେ ibus କୠଆରମà­à¬­ କରନà­à¬¤à­" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ଆରମà­à¬­" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "ବିବରଣୀ" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "ବନà­à¬¦ କରନà­à¬¤à­ (_C)" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "ଯନà­à¬¤à­à¬°à¬•ୠପà­à¬°à¬¾à¬• ଧାରଣ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "ibus ଆରମà­à¬­ ସମୟରେ ଯନà­à¬¤à­à¬° ପà­à¬°à¬¾à¬• ଧାରଣ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "ଯନà­à¬¤à­à¬° କà­à¬°à¬®" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€ ତାଲିକାରେ ସଂରକà­à¬·à¬¿à¬¤ ଯନà­à¬¤à­à¬° କà­à¬°à¬®" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME ପରିବରà­à¬¤à­à¬¤à¬¨à¬•ାରୀ ୱିଣà­à¬¡à­‹ ପାଇଠପପà­â€Œà¬…ପà­â€Œ ବିଳମà­à¬¬ ମିଲିସେକେଣà­à¬¡à¬°à­‡" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME ପରିବରà­à¬¤à­à¬¤à¬¨à¬•ାରୀ ୱିଣà­à¬¡à­‹ ପାଇଠପପà­â€Œà¬…ପà­â€Œ ବିଳମà­à¬¬ ମିଲିସେକେଣà­à¬¡à¬°à­‡ ସେଟ କରନà­à¬¤à­à¥¤ ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤à¬Ÿà¬¿ ହେଉଛି400. 0 = ସଙà­à¬—à­‡ ସଙà­à¬—à­‡ ୱିଣà­à¬¡à­‹ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­à¥¤ 0 < ବିଳମà­à¬¬ ମିଲିସେକେଣà­à¬¡à¬°à­‡à¥¤ 0 > ୱିଣà­à¬¡à­‹ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­ ନାହିଠà¬à¬¬à¬‚ ପୂରà­à¬¬/ପର ଯନà­à¬¤à­à¬°à¬—à­à¬¡à¬¼à¬¿à¬•ୠପରିବରà­à¬¤à­à¬¤à¬¨ କରନà­à¬¤à­à¥¤" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "ସଂରକà­à¬·à¬¿à¬¤ ସଂସà­à¬•ରଣ କà­à¬°à¬® ସଂଖà­à­Ÿà¬¾" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "ସଂରକà­à¬·à¬¿à¬¤ ସଂସà­à¬•ରଣ କà­à¬°à¬® ସଂଖà­à­Ÿà¬¾à¬•ୠପୂରà­à¬¬à¬°à­ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ibus à¬à¬¬à¬‚ ପà­à¬°à¬šà¬³à¬¿à¬¤ ibus ମଧà­à¬¯à¬°à­‡ ପାରà­à¬¥à¬•à­à­Ÿà¬•ୠଯାଞà­à¬š କରିବା ପାଇଠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଇଥାà¬à¥¤" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି'ଗà­à¬¡à¬¼à¬¿à¬•ୠଟà­à¬°à¬¿à¬—ର କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ପାଇଠସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ ଚାବିଗà­à¬¡à¬¼à¬¿à¬•ୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି'ଗà­à¬¡à¬¼à¬¿à¬•ୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬•ୠଅନ କରିବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି ଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି'ଗà­à¬¡à¬¼à¬¿à¬•ୠନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬•ୠଅଫ କରିବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି ଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "ପରବରà­à¬¤à­à¬¤à¬¿ ଯନà­à¬¤à­à¬° ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି'ଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ତାଲିକାରେ ପରବରà­à¬¤à­à¬¤à­€ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠବଦଳାଇବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "ପୂରà­à¬¬ ଯନà­à¬¤à­à¬°à¬° ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥ କି'ଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "ତାଲିକାରେ ପୂରà­à¬¬ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠବଦଳାଇବା ପାଇଠସକà­à¬·à¬¿à¬ªà­à¬¤ ପଥଗà­à¬¡à¬¼à¬¿à¬•" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "ସà­à­±à­Ÿà¬‚ଚାଳିତ ଭାବରେ ଲà­à¬šà¬¾à¬¨à­à¬¤à­" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "ଭାଷା ଫଳକ ଅବସà­à¬¥à¬¾à¬¨" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ଭାଷା ଫଳକର ଅବସà­à¬¥à¬¾à¬¨à¥¤ 0 = ଉପର ପାଖ ବାମ କୋଣ, 1 = ଉପର ପାଖ ଡାହାଣ କୋଣ, 2 = ତଳ ପାଖ ବାମ କୋଣ, 3 = ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ, 4 = ଇଚà­à¬›à¬¾à¬®à­à¬¤à¬¾à¬¬à¬•" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "ଅବଲୋକନ ସାରଣୀର ଅନà­à¬¸à­à¬¥à¬¾à¬ªà¬¨" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ଅବଲୋକନ ସାରଣୀର ଅନà­à¬¸à­à¬¥à¬¾à¬ªà¬¨à¥¤ 0 = ଭୂ-ସମାନà­à¬¤à¬°, 1 = ଭୂ-ଲମà­à¬¬" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "ନିବେଶ ପଦà­à¬§à¬¤à¬¿ ନାମ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "ଇଚà­à¬›à¬¾à¬®à­à¬¤à¬¾à¬¬à¬• ଅକà­à¬·à¬°à¬°à­‚ପ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "ଭାଷା ତାଲିକା ପାଇଠଇଚà­à¬›à¬¾à¬®à­à¬¤à¬¾à¬¬à¬• ଅକà­à¬·à¬°à¬°à­‚ପ ନାମକୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "ଇଚà­à¬›à¬¾à¬°à­‚ପୀ ଅକà­à¬·à¬°à¬°à­‚ପ" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "ଭାଷା ତାଲିକା ପାଇଠଇଚà­à¬›à¬¾à¬®à­à¬¤à¬¾à¬¬à¬• ଅକà­à¬·à¬°à¬°à­‚ପ ନାମ" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "ଅନà­à¬¤à¬¸à­à¬¥à¬¾à¬ªà¬¿à¬¤ ପà­à¬°à­€à¬¡à¬¿à¬¤ ପାଠà­à­Ÿ" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "ପà­à¬°à­Ÿà­‹à¬— ୱିଣà­à¬¡à­‹à¬°à­‡ ଅନà­à¬¤à¬¸à­à¬¥à¬¾à¬ªà¬¿à¬¤ ପà­à¬°à­€à¬¡à¬¿à¬¤ ପାଠà­à­Ÿ" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "ସରà­à¬¬à¬¸à¬¾à¬§à¬¾à¬°à¬£ ନିବେଶ ପà­à¬°à¬£à­€à¬³à­€à¬•ୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ଭାବରେ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ଭାବରେ ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬•ୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­ ଯେତେବେଳେ ପà­à¬°à­Ÿà­‹à¬—କୠନିବେଶ ଲକà­à¬·à­à¬¯ ମିଳିଥାà¬" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf ନାମ ଉପସରà­à¬—ଗà­à¬¡à¬¼à¬¿à¬•ୠସଂରକà­à¬·à¬¿à¬¤ ରଖିଥାà¬" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ନାମ ପରିବରà­à¬¤à­à¬¤à¬¨à¬•ୠଅଟକାଇବା ପାଇଠDConf କିଗà­à¬¡à¬¼à¬¿à¬•ର ଉପସରà­à¬—ଗà­à¬¡à¬¼à¬¿à¬•" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "ଅନà­à­Ÿà¬¾à¬¨à­à­Ÿ" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "ଭାଷା: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "କିବୋରà­à¬¡ ବିନà­à­Ÿà¬¾à¬¸: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "ଲେଖକ: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "ବରà­à¬£à­à¬£à¬¨à¬¾:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "ଗୋଟିଠନିବେଶ ପà­à¬°à¬£à­€à¬³à­€ ବାଛନà­à¬¤à­" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus ପସନà­à¬¦à¬—à­à¬¡à¬¼à¬¿à¬•ୠସେଟକରନà­à¬¤à­" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "କିବୋରà­à¬¡ ସକà­à¬·à¬¿à¬ªà­à¬¤à¬ªà¬¥" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "କି ସଂକେତ:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "ରୂପାନà­à¬¤à¬°à¬•:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "ପà­à¬°à­Ÿà­‹à¬— କରନà­à¬¤à­ (_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "ଲିଭାନà­à¬¤à­ (_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ଦୟାକରି ଗୋଟିଠକି (କିମà­à¬¬à¬¾ ଗୋଟିଠକି ସଂଯୋଜନ) ଦବାନà­à¬¤à­à¥¤\nକିକୠଛାଡ଼ିଦେଲାପରେ ସଂଳାପଟି ବନà­à¬¦ ହୋଇଯିବ।" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "ଦୟାକରି ଗୋଟିଠକି (କିମà­à¬¬à¬¾ ଗୋଟିଠକି ସଂଯୋଜନ) ଦବାନà­à¬¤à­à¥¤" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "ବାତିଲ କରନà­à¬¤à­ (_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "ଠିକ ଅଛି (_O)" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "shift ସହିତ ସଂକà­à¬·à¬¿à¬ªà­à¬¤ ପଥକୠପୂରà­à¬¬ ନିବେଶ ପଦà­à¬§à¬¤à¬¿à¬•ୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ଡେମନ ଚାଲୠନାହିà¬à¥¤ ଆପଣ à¬à¬¹à¬¾à¬•ୠଆରମà­à¬­ କରିବାକୠଚାହà­à¬à¬›à¬¨à­à¬¤à¬¿ କି?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus ଆରମà­à¬­ ହୋଇସାରିଛି! ଯଦି ଆପଣ IBus ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି ନପାରନà­à¬¤à¬¿, ତେବେ ଦୟାକରି ନିମà­à¬¨à¬²à¬¿à¬–ିତ ଧାଡ଼ିଗà­à¬¡à¬¼à¬¿à¬•à­ $HOME/.bashrcରେ ଯୋଗ କରନà­à¬¤à­, ତାପରେ ଆପଣଙà­à¬•ର ଡେସà­à¬•ଟପକୠପà­à¬£à¬¿ ଲଗଇନ କରନà­à¬¤à­à¥¤\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ଡେମନ %d ସେକଣà­à¬¡à¬°à­‡ ଆରମà­à¬­ ହୋଇ ପାରିଲା ନାହିà¬" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ପାଇଠକିବୋରà­à¬¡ ସକà­à¬·à¬¿à¬ªà­à¬¤à¬ªà¬¥ ବାଛନà­à¬¤à­" #: ../setup/main.py:377 msgid "switching input methods" msgstr "ନିବେଶ ପà­à¬°à¬£à¬¾à¬³à­€à¬—à­à¬¡à¬¼à¬¿à¬•ୠପରିବରà­à¬¤à­à¬¤à¬¨ କରà­à¬…ଛି" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "କେବଳ ଯନà­à¬¤à­à¬° ନାମକୠତାଲିକାଭà­à¬•à­à¬¤ କରନà­à¬¤à­" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "IBus ସହିତ ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¨ କରିପାରିବେ ନାହିà¬à¥¤\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "ଭାଷା: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "କୋଣସି ଯନà­à¬¤à­à¬° ସେଟ ହୋଇନାହିà¬à¥¤\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "ସରà­à¬¬à¬¸à¬¾à¬§à¬¾à¬°à¬£ ଯନà­à¬¤à­à¬° ସେଟ କରିବାରେ ବିଫଳ।\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "ସରà­à¬¬à¬¸à¬¾à¬§à¬¾à¬°à¬£ ଯନà­à¬¤à­à¬° ପାଇବାରେ ବିଫଳ।\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "ତନà­à¬¤à­à¬° ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡à¬•ୠପଢ଼ନà­à¬¤à­à¥¤" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡ ଫାଇଲକୠପଢ଼ନà­à¬¤à­à¥¤" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡ ଅବୈଧ ଅଟେ।\n" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "ତନà­à¬¤à­à¬° ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡à¬•ୠଲେଖନà­à¬¤à­à¥¤" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡ ଫାଇଲକୠଲେଖନà­à¬¤à­à¥¤" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "ଯନà­à¬¤à­à¬°à¬•ୠସେଟ କରନà­à¬¤à­ କିମà­à¬¬à¬¾ ଆଣନà­à¬¤à­" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "ibus-ଡେମନରୠପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ କରନà­à¬¤à­" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "ଉପଲବà­à¬§ ଯନà­à¬¤à­à¬°à¬—à­à¬¡à¬¼à¬¿à¬•ୠଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "(କାରà­à¬¯à­à­Ÿà¬•ାରୀ ହୋଇନାହିà¬)" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "ibus-ଡେମନକୠପà­à¬¨à¬ƒà¬ªà­à¬°à¬¾à¬°à¬®à­à¬­ କରନà­à¬¤à­" #: ../tools/main.vala:298 msgid "Show version" msgstr "ସଂସà­à¬•ରଣ ଦେଖାନà­à¬¤à­" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡à¬° ବିଷୟବସà­à¬¤à­ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "ପଞà­à¬œà¬¿à¬•ରଣ କà­à­Ÿà¬¾à¬¶à­‡ ସୃଷà­à¬Ÿà¬¿à¬•ରନà­à¬¤à­" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-ଡେମନର D-Bus ଠିକଣାକୠମà­à¬¦à­à¬°à¬£ କରନà­à¬¤à­" #: ../tools/main.vala:302 msgid "Show this information" msgstr "à¬à¬¹à¬¿ ସୂଚନାକୠଦରà­à¬¶à¬¾à¬¨à­à¬¤à­" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "ବà­à­Ÿà¬¬à¬¹à¬¾à¬°: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "ଆଦେଶଗà­à¬¡à¬¿à¬•:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s ଟି ଗୋଟିଠଅଜଣା ନିରà­à¬¦à­à¬¦à­‡à¬¶!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "IBus ଅଦà­à­Ÿà¬¤à¬¨" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "Super+space ଟି ବରà­à¬¤à­à¬¤à¬®à¬¾à¬¨ ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ହଟକି ଅଟେ।" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ହେଉଛି Linux/Unix ପାଇଠଗୋଟିଠବà­à¬¦à­à¬§à¬¿à¬®à¬¾à¬¨ ନିବେଶ ପରିପଥ।" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "ମନୋଜ କà­à¬®à¬¾à¬° ଗିରି " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ପସନà­à¬¦" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "ପà­à¬¨à¬ƒà¬šà¬¾à¬³à¬¨" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "ବିଦାୟ ନିଅନà­à¬¤à­" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/LINGUAS0000644000000000000000000000023412551654123011076 00000000000000ar as bg bn bn_IN ca da de en_GB es et eu fa fr gu he hi hu ia it ja kn ko lv ml mr nb nl or pa pl pt_BR ru sr sr@latin ta te tg uk ur vi zh_CN zh_HK zh_TW ibus-1.5.11/po/uk.po0000644000000000000000000007402212551654123011036 00000000000000# translation of ibus.pot to Ukrainian # Ukrainian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Yuri Chornoivan , 2011-2014 # Yuri Chornoivan , 2013 # Yuri Chornoivan , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-07-13 19:48+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-07-13 09:20-0400\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Zanata 3.6.2\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Горизонтально" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Вертикально" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "У верхньому лівому куті" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "У верхньому правому куті" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "У нижньому лівому куті" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "У нижньому правому куті" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Ðетиповий" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "Ðе показувати" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Ðвтоматично ховати" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Завжди" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Клавіатурні ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð° наÑтупний ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ ÑпиÑку" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "ÐаÑтупний ÑпоÑіб введеннÑ:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð° попередній ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ " "ÑпиÑку" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Попередній ÑпоÑіб введеннÑ:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "…" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "Клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ– Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑпоÑобів введеннÑ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Ð£Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ вимиканнÑ:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Увімкнути:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Вимкнути:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Клавіатурні ÑкороченнÑ" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Ð’Ñтановити орієнтацію варіантів у таблиці пошуку" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ñ–Ð²:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Визначає поведінку ibus: ÑпоÑіб показу або Ð¿Ñ€Ð¸Ñ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Показ панелі влаÑтивоÑтей:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Показувати піктограму у ÑиÑтемному лотку" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Показувати назву ÑпоÑобу Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð° мовній панелі" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Показати назву ÑпоÑобу Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð° мовній панелі, Ñкщо позначено цей пункт" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Вбудувати попередньо Ñтворений текÑÑ‚ у вікно програми" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" "Вбудувати попередньо Ñтворений текÑÑ‚ ÑпоÑобу Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ вікно програми" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Ðетиповий шрифт:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Шрифт Ñ– Ñтиль" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Загальне" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "_Додати" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" "Додати позначений ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¾ ÑпиÑку увімкнених ÑпоÑобів введеннÑ" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "Ð’_илучити" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Вилучити позначений ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ñ– ÑпиÑку увімкнених ÑпоÑобів введеннÑ" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "Ð’_гору" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "ПереÑунути вгору позначений ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ ÑпиÑку увімкнених ÑпоÑобів " "введеннÑ" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "Ð’_низ" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" "ПереÑунути нижче позначений ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ ÑпиÑку увімкнених ÑпоÑобів " "введеннÑ" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_Про програму" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Показати відомоÑті щодо вибраного ÑпоÑобу введеннÑ" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Параметри" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Показати панель Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ ÑпоÑобу введеннÑ" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "Ðктивний ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° перемкнути у межах визначеного вище " "ÑпиÑку натиÑканнÑм клавіатурного ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ піктограми на панелі." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 msgid "Input Method" msgstr "СпоÑіб введеннÑ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 msgid "Use system keyboard layout" msgstr "ВикориÑтовувати розкладку клавіатури ÑиÑтеми" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 msgid "Use system keyboard (XKB) layout" msgstr "ВикориÑтовувати розкладку клавіатури ÑиÑтеми (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Розкладка клавіатури" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 msgid "Share the same input method among all applications" msgstr "ВикориÑтовувати один ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… програм" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Загальні параметри ÑпоÑобів введеннÑ" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Додатково" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Інтелектуальний канал введеннÑ\n" "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ЗапуÑкати ibus при вході" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ЗапуÑк" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 #: ../ui/gtk3/panel.vala:1113 msgid "About" msgstr "ІнформаціÑ" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 msgid "_Close" msgstr "_Закрити" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Попередньо завантажувати рушії" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Попередньо завантажувати рушії під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку ibus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "ПорÑдок рушіїв" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Збережений порÑдок рушіїв у ÑпиÑку ÑпоÑобів введеннÑ" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "Затримка поÑви контекÑтного вікна Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ñ‡Ð° ÑпоÑобів введеннÑ" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "Ð’Ñтановити затримку поÑви контекÑтного вікна перемикача ÑпоÑобів Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ " "міліÑекундах. Типовою Ñ” 400. 0 = показувати вікно негайно. 0 < — затримка " "у міліÑекундах. 0 > — не показувати вікно Ñ– перемикатиÑÑ Ð½Ð° попередній " "або наÑтупний рушій." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Збережений номер верÑÑ–Ñ—" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "Збережений номер верÑÑ–Ñ— буде викориÑтано Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñтей між " "попередньою вÑтановленою верÑією ibus та поточною верÑією ibus." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "Розкладки латиниці, у Ñких немає Ñимволів ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" "ÐмериканÑька розкладка додаєтьÑÑ Ð´Ð¾ латинÑьких розкладок, варіант можна " "пропуÑтити." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "ВикориÑтовувати xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ЗапуÑкати xmodmap, Ñкщо Ñ” .xmodmap або .Xmodmap під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÑƒÑˆÑ–Ñ—Ð² " "ibus." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Клавіатурні ÑкороченнÑ-перемикачі" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Комбінації клавіш Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Увімкнути клавіатурні ÑкороченнÑ" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "Клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑпоÑобів введеннÑ" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Вимкнути клавіатурні ÑкороченнÑ" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "Клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑпоÑобів введеннÑ" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ñтупного рушіÑ" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Клавіатурні ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð° наÑтупний ÑпоÑіб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñƒ ÑпиÑку" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ рушіÑ" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "Клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð° попередній ÑпоÑіб введеннÑ" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Ðвтоматично ховати" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Поведінка панелі влаÑтивоÑтей. 0 = не показувати, 1 = автоматично ховати, 2 =" " завжди показувати" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі. 0 = у верхньому лівому куті, 1 = у верхньому " "правому куті, 2 = у нижньому лівому куті, 3 = у нижньому правому куті, 4 = " "нетипове" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "Слідувати за курÑором введеннÑ, Ñкщо панель показано завжди" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" "Якщо має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«true», панель Ñлідуватиме за курÑором введеннÑ, Ñкщо " "панель працює у режимі безумовного показу. Якщо має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«false», панель " "буде показано у фікÑованій позиції." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "ТриваліÑть показу панелі влаÑтивоÑтей у міліÑекундах" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "ТриваліÑть показу панелі влаÑтивоÑтей (у міліÑекундах) піÑÐ»Ñ Ñ„Ð¾ÐºÑƒÑÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ " "зміни влаÑтивоÑтей." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– пошуку" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– пошуку. 0 = горизонтально, 1 = вертикально" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Показувати назву ÑпоÑобу введеннÑ" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ RGBA Ð´Ð»Ñ Ð¿Ñ–ÐºÑ‚Ð¾Ð³Ñ€Ð°Ð¼Ð¸ XKB" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "Ðа піктограмі XKB буде показано Ñ€Ñдок розкладки. Ð”Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ цього Ñ€Ñдка буде " "викориÑтано вказане Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ RGBA. ЗначеннÑм RGBA може бути: 1. назва " "кольору у X11, 2. шіÑтнадцÑткове чиÑло у форматі «#ччззÑÑ», де «ч», «з», «Ñ» " "Ñ” цифрами Ð´Ð»Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾, зеленого та Ñинього кольорів, 3. колір RGB у " "форматі «rgb(ч,з,Ñ)» або 4. колір RGBA у форматі «rgba(ч,з,Ñ,п)», де «ч», " "«з», «Ñ» Ñ” або цілими значеннÑми у діапазоні від 0 до 255, або відÑотковими " "значеннÑми від 0% до 100%, а «п» Ñ” значеннÑм з рухомою крапкою Ð´Ð»Ñ " "прозороÑті у діапазоні від 0 до 1." #: ../data/ibus.schemas.in.h:42 msgid "The milliseconds to show the panel icon for a property" msgstr "" "Ð§Ð°Ñ Ñƒ міліÑекундах Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ піктограми панелі Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑті" #: ../data/ibus.schemas.in.h:43 msgid "" "The milliseconds to show the panel icon from the engine icon to a property " "icon whenever engines are switched if the property is specified by the value " "of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " "property icon is shown immediately." msgstr "" "Ð§Ð°Ñ Ñƒ міліÑекундах, протÑгом Ñкого Ñлід показувати перехід піктограми панелі " "з піктограми Ñ€ÑƒÑˆÑ–Ñ Ð½Ð° піктограму влаÑтивоÑті піÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ рушіÑ, Ñкщо " "влаÑтивіÑть задаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñм icon-prop-key у IBusEngineDesc. Якщо вказано " "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0, затримки не буде Ñ– піктограму влаÑтивоÑті буде показано негайно." #: ../data/ibus.schemas.in.h:46 msgid "Use custom font" msgstr "ВикориÑтовувати нетиповий шрифт" #: ../data/ibus.schemas.in.h:47 msgid "Use custom font name for language panel" msgstr "ВикориÑтовувати нетиповий шрифт Ð´Ð»Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі" #: ../data/ibus.schemas.in.h:48 msgid "Custom font" msgstr "Ðетиповий шрифт" #: ../data/ibus.schemas.in.h:49 msgid "Custom font name for language panel" msgstr "Ðазва нетипового шрифту Ð´Ð»Ñ Ð¼Ð¾Ð²Ð½Ð¾Ñ— панелі" #: ../data/ibus.schemas.in.h:50 msgid "Embed Preedit Text" msgstr "Вбудувати попередньо Ñтворений текÑÑ‚" #: ../data/ibus.schemas.in.h:51 msgid "Embed Preedit Text in Application Window" msgstr "Вбудувати попередньо Ñтворений текÑÑ‚ у вікно програми" #: ../data/ibus.schemas.in.h:52 msgid "Use global input method" msgstr "ВикориÑтовувати загальний ÑпоÑіб введеннÑ" #: ../data/ibus.schemas.in.h:54 msgid "Enable input method by default" msgstr "Типово увімкнути ÑпоÑіб введеннÑ" #: ../data/ibus.schemas.in.h:55 msgid "Enable input method by default when the application gets input focus" msgstr "" "Типово увімкнути ÑпоÑіб введеннÑ, коли програма отримує Ñ„Ð¾ÐºÑƒÑ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ" #: ../data/ibus.schemas.in.h:56 msgid "DConf preserve name prefixes" msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ DConf префікÑів назв" #: ../data/ibus.schemas.in.h:57 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ПрефікÑи ключів DConf Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "© Peng Huang, 2007–2010\n" "© Red Hat, Inc., 2007–2010" #: ../ibus/lang.py:41 ../src/ibusutil.c:158 msgid "Other" msgstr "Інше" #: ../setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Мова: %s\n" #: ../setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Розкладка клавіатури: %s\n" #: ../setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Ðвтор: %s\n" #: ../setup/engineabout.py:81 msgid "Description:\n" msgstr "ОпиÑ:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 msgid "Select an input method" msgstr "Виберіть ÑпоÑіб введеннÑ" #: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 #: ../setup/main.py:414 msgid "_Cancel" msgstr "_СкаÑувати" #: ../setup/enginedialog.py:205 msgid "More…" msgstr "Більше…" #: ../setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Ðалаштувати IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Клавіатурні ÑкороченнÑ" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Код клавіші:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Модифікатори:" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "ЗаÑÑ‚_оÑувати" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "Ð’_илучити" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" "Будь лаÑка, натиÑніть клавішу (або комбінацію клавіш).\n" "Діалогове вікно буде закрито піÑÐ»Ñ Ð²Ñ–Ð´Ð¿ÑƒÑÐºÐ°Ð½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–ÑˆÑ–." #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Будь лаÑка, натиÑніть клавішу (або комбінацію клавіш)" #: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 msgid "_OK" msgstr "_Гаразд" #: ../setup/main.py:114 ../setup/main.py:439 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "ВикориÑтовувати комбінацію з Shift Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð° попередній ÑпоÑіб " "введеннÑ" #: ../setup/main.py:369 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Фонову Ñлужбу IBus не запущено. Хочете Ñ—Ñ— запуÑтити?" #: ../setup/main.py:390 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "IBus запущено! Якщо ви не можете ÑкориÑтатиÑÑ IBus, додайте вказані нижче " "Ñ€Ñдки до файла $HOME/.bashrc; потім вийдіть зі Ñтільничного Ñередовища Ñ– " "увійдіть до нього знову.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:404 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити фонову Ñлужбу IBus протÑгом %d Ñекунд" #: ../setup/main.py:416 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Виберіть клавіатурне ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð´Ñ–Ñ— %s" #. Translators: Title of the window #: ../setup/main.py:418 msgid "switching input methods" msgstr "Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑпоÑобів введеннÑ" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Показати лише ÑпиÑок рушіїв" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "Ðе вдалоÑÑ Ð²Ñтановити зв’Ñзок з IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "мова: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "Рушій не вÑтановлено.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Спроба вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÑƒÑˆÑ–Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Спроба Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ загального Ñ€ÑƒÑˆÑ–Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Читати дані з загальноÑиÑтемного кешу регіÑтру." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Читати дані з кешу регіÑтру у файлі ФÐЙЛ." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "Кеш регіÑтру Ñ” некоректним.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "ЗапиÑати дані до загальноÑиÑтемного кешу регіÑтру." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "ЗапиÑати дані до кешу регіÑтру у файлі ФÐЙЛ." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "Скидаємо…" #: ../tools/main.vala:318 msgid "Done" msgstr "Виконано" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Ð’Ñтановити рушій або отримати дані щодо вÑтановленого рушіÑ" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "Завершити роботу фонової Ñлужби ibus" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "Показати ÑпиÑок доÑтупних рушіїв" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(не реалізовано)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ПерезапуÑтити фонову Ñлужбу ibus" #: ../tools/main.vala:342 msgid "Show version" msgstr "Показати дані щодо верÑÑ–Ñ—" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Показати вміÑÑ‚ кешу регіÑтру" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Створити кеш регіÑтру" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ВивеÑти адреÑу D-Bus фонової Ñлужби ibus" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "Показати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Скинути Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ до початкових" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Показати цю довідкову інформацію" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "КориÑтуваннÑ: %s КОМÐÐДР[ПÐРÐМЕТР...]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Команди:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "Команда %s Ñ” невідомою програмі!\n" #: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 msgid "IBus Panel" msgstr "Панель IBus" #: ../ui/gtk3/panel.vala:731 msgid "IBus Update" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ IBus" #: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 msgid "Super+space is now the default hotkey." msgstr "Тепер типовим клавіатурним ÑкороченнÑм Ñ” Super+Пробіл." #: ../ui/gtk3/panel.vala:1086 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus — інтелектуальний канал Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у Linux/Unix." #: ../ui/gtk3/panel.vala:1090 msgid "translator-credits" msgstr "Юрій Чорноіван " #: ../ui/gtk3/panel.vala:1109 msgid "Preferences" msgstr "Параметри" #: ../ui/gtk3/panel.vala:1119 msgid "Restart" msgstr "ПерезапуÑтити" #: ../ui/gtk3/panel.vala:1123 msgid "Quit" msgstr "Вийти" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/en_GB.po0000644000000000000000000004214712551654123011374 00000000000000# translation of ibus.pot to English (United Kingdom) # English (United Kingdom) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Steven Panek , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Steven Panek (Espreon) \n" "Language-Team: English (British)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertical" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Top left corner" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Top right corner" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Bottom left corner" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Bottom right corner" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Custom" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Always" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus Preferences" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "The shortcut keys for switching to next input method in the list" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Next input method:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "The shortcut keys for switching to previous input method in the list" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Previous input method:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "The shortcut keys for turning input method on or off" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Enable or disable:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Enable:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Disable:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Set the orientation of candidates in lookup table" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Candidates orientation:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Set the behaviour of ibus how to show or hide language bar" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Language panel position:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Show icon on system tray" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Show input method name on language bar" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Show input method's name on language bar when check the checkbox" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Embed pre-edit text in application window" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Embed the pre-edit text of input method in the application window" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Use custom font:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Font and Style" #: ../setup/setup.ui.h:34 msgid "General" msgstr "General" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Add" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Add the selected input method into the enabled input methods" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Remove" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Remove the selected input method from the enabled input methods" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Up" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Move up the selected input method in the enabled input methods list" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Down" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Move down the selected input method in the enabled input methods" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_About" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Show information of the selected input method" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Preferences" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Input Method" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Use system keyboard layout" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Use system keyboard (XKB) layout" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Keyboard Layout" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Share the same input method among all applications" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Global input method settings" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Advanced" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nThe intelligent input bus\nHomepage: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Start ibus on login" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Startup" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "About" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Close" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Preload engines" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Preload engines during ibus starts up" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Trigger shortcut keys" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Enable shortcut keys" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "The shortcut keys for turning input method on" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Disable shortcut keys" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "The shortcut keys for turning input method off" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Next engine shortcut keys" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "The shortcut keys for switching to the next input method in the list" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Prev engine shortcut keys" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "The shortcut keys for switching to the previous input method" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Auto hide" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Language panel position" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "The position of the language panel. 0 = Top left corner, 1 = Top right corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Orientation of lookup table" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Show input method name" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Use custom font" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Use custom font name for language panel" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Custom font" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Custom font name for language panel" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Embed Pre-edit Text" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Embed Pre-edit Text in Application Window" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Use global input method" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Enable input method by default" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Enable input method by default when the application gets input focus" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Other" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Language: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Keyboard layout: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Author: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Description:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Select an input method" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Set IBus Preferences" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Keyboard shortcuts" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Key code:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modifiers:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Apply" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Delete" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Please press a key (or a key combination).\nThe dialog will be closed when the key is released." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Please press a key (or a key combination)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Cancel" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Select keyboard shortcut for %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus is an intelligent input bus for Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Steven Panek, " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Preferences" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Restart" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Quit" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/nl.po0000644000000000000000000005450712551654123011036 00000000000000# translation of nl.po to Dutch # Dutch translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Geert Warrink , 2011-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-10-22 12:36+0000\n" "Last-Translator: Geert Warrink \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontaal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Verticaal" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Linksboven" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Rechtsboven" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Linksonder" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Rechtsonder" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Aangepast" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "Toon dit niet" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Automatisch verbergen" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Altijd" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus voorkeuren" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "De sneltoetsen voor het schakelen naar de volgende invoermethode in de lijst" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Volgende invoermethode:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "De sneltoetsen voor het schakelen naar de vorige invoermethode in de lijst" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Vorige invoermethode:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "De sneltoetsen om invoermethode aan of uit te zetten" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Aan- of uitzetten:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Aanzetten:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Uitzetten:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Sneltoetsen" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Stel de oriëntatie in van de kandidaten in de opzoektabel" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Kandidaten oriëntatie:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Stel het gedrag van ibus in voor het tonen of verbergen van de taalbalk" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Toon eigenschapspaneel" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Taal panel positie:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Toon icoon op systeemvak" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Toon naam van invoermethode op taalbalk" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Toon de naam van de invoermethode op de taalbalk als je het selectievakje aanvinkt" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Insluiten van pre-edit tekst in toepassingsvenster" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Sluit de pre-edit tekst van invoermethode in in het toepassingsvenster" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Gebruik aangepast lettertype:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Lettertype en stijl" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Algemeen" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "_Toevoegen" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Voeg de geselecteerde invoermethode toe aan de ingeschakelde invoermethoden" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Verwijderen" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Verwijder de geselecteerde invoermethode uit de aangezette invoermethoden" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Omhoog" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Verplaats de geselecteerde invoermethode omhoog in de aangezette invoermethoden lijst" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "O_mlaag" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Verplaats de geselecteerde invoermethode omlaag in de aangezette invoermethoden lijst" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "I_nfo" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Toon informatie over de geselecteerde invoermethode" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Voorkeuren" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Toon instelling van de geselecteerde invoermethode" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "De actieve invoermethode kan omgeschakeld worden tussen de geselecteerden in de bovenstaande lijst met het induwen van de toetsenbord sneltoets of met het klikken op het paneel icoon." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Invoermethode" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "Gebruik systeem toetsenbordindeling" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "Gebruik systeem toetsenbord (XKB) indeling" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Toetsenbordindeling" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "Deel dezelfde input-methode voor alle toepassingen" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Globale invoermethode instellingen" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Geavanceerd" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nDe intelligente invoer bus\nHomepagina: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Start ibus bij inloggen" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Opstarten" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "Over" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "Sl_uiten" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Engines voor-laden" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Engines voor-laden tijdens opstarten van ibus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Machine volgorde" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Opgeslagen machine volgorde in invoermethode lijst" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "Pop-up vertraging milliseconden voor IME omschakelvenster" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Stel pop-up vertraging milliseconden in om het IME omschakelvenster te tonen. De standaard is 400. 0 = Ton het venster onmiddellijk. 0 < Vertraging in milliseconden. 0 > Laat het venster niet zien en schakel vorige/volgende engine om." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Versienummer opgeslagen" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "Het opgeslagen versienummer zal gebruikt worden voor het checken van het verschil tussen de versie van de vorige geïnstalleerde ibus en die van de huidige ibus. " #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "Latin indelingen hebben geen ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US indeling is toegevoegd aan de latin indelingen. variant kan weggelaten worden." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "Gebruik xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "Voer xmodmap uit als .xmodmap of .Xmodmap bestaat als ibus engines worden omgeschakeld." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Trigger sneltoetsen" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activeer snelkoppeltoetsen voor gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Zet sneltoetsen aan" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "De sneltoetsen om invoermethode aan te zetten" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Zet sneltoetsen uit" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "De sneltoetsen om invoermethode uit te zetten" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Volgende engine sneltoetsen" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "De sneltoetsen voor het omschakelen naar de volgende invoermethode in de lijst" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Vorige engine sneltoetsen" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "De sneltoetsen voor het omschakelen naar de vorige invoermethode" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Automatisch verbergen" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "Het gedrag van eigenschapspaneel. 0 = Toon dit niet, 1 = Automatisch verbergen, 2 = Toon het altijd" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Taal-paneel positie" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "De positie van de taal paneel. 0 = linksboven, 1 = rechtsboven, 2 = linksonder, 3 = rechtsonder, 4 = aangepast" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "Volg de input cursor als het paneel altijd getoond wordt" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "Als dit waar is zal het paneel de input cursor volgen als het panel altijd getoond wordt. Als dit onwaar is wordt het paneel op een gefixeerde locatie getoond." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "Het aanral milliseconden om het eigenschapspaneel te tonen " #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "Het aantal milliseconden om het eigenschapspaneel te tonen nadat focus of eigenschappen veranderd zijn." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Oriëntatie van opzoektabel" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Oriëntatie van opzoektabel. 0 = horizontaal, 1 = verticaal" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Toon naam van invoermethode" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "RGBA waarde van XKB icoon" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB icoon toont de indelingsstring en deze string wordt van de RGBA waarde afgeleid. De RGBA waarde kan zijn 1. een X11 kleurnaam, 2. een hexadecimale waarde in de vorm '#rrggbb' waarin 'r', 'g' en 'b' hexadecimale getallen zijn voor het rood, groen en blauw, 3. een RGB kleur in de vorm 'rgb(r,g,b)' of 4. een RGBA kleur in de vorm 'rgba(r,g,b,a)' waarin 'r', 'g' en 'b' gehele getallen zijn in de reeks van 0 tot 255 of procentuele waardes in de reeks van 0% tot 100%, en 'a' een waarde met drijvende komma is in de reeks van 0 tot 1 van alfa." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "Gebruik aangepast lettertype" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "Gebruik aangepaste lettertype naam voor taal-paneel" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "Aangepaste lettertype" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "Aangepaste lettertype naam voor taal-paneel" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "Voeg pre-edit tekst in" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "Voeg pre-edit tekst in in toepassingsvenster" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "Gebruik globale invoermethode" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "Zet invoer-methode standaard aan" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "Zet invoer-methode standaard aan als de toepassing input focus krijgt" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf behoud van naam voorvoegsels" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Voorvoegsels van DConf sleutels voor het stoppen van naamconversie" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Andere" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "Taal: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "Toetsenbordindeling: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "Auteur: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "Beschrijving:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "Selecteer een invoermethode" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "_Annuleren" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "Meer…" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Toetsenbord" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Stel IBus voorkeuren in" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "Sneltoetsen" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Toetscode:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificatietoetsen:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "Toe_passen" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "_Verwijderen" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Druk op een toets (of een toetsencombinatie).\nDe dialoog wordt afgesloten als de toets losgelaten wordt." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "Druk op een toets (of een toetsencombinatie)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "_Ok" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Gebruik snelkoppeling met Shift voor het omschakelen naar de vorige invoermethode" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "De IBus daemon draait niet. Wil je het starten?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus is gestart! Als je IBus niet kunt gebruiken, voeg je de volgende regels toe aan je $HOME/.bashrc; log daarna opnieuw in op je bureaublad.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus daemon kon niet binnen %d seconden gestart worden" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selecteer sneltoets voor %s" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "bezig met omschakelen van invoermethodes " #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Toon alleen machinenamen" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "Kan niet met IBus verbinden.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "taal:%s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "Er is geen machine ingesteld.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Instellen van globale machine is mislukt.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Verkrijgen van globale machine is mislukt.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Lees de systeem registry cache." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Lees het registry cache BESTAND." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "De registry cache is ongeldig.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "Schrijf de systeem registry cache." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "Schrijf het registry cache BESTAND." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "Herstellen…" #: ../tools/main.vala:318 msgid "Done" msgstr "Klaar" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Stel engine in of haal deze op" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "Verlaat ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "Toon beschikbare engines" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(Niet geimplementeerd)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Start ibus-daemon opnieuw op" #: ../tools/main.vala:342 msgid "Show version" msgstr "Toon versie" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Toon de inhoud van registry cache" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Maak registry cache aan" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "Print het D-Bus adres van ibus-daemon" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "Toon de configuratiewaarden" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Herstel de configuratiewaarden" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Toon deze informatie" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Gebruik: %s COMMANDO [OPTIE...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Commando's:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s is een onbekend commando!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus update" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+spatie is nu de standaard snelkoppeling." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus is een intelligente invoer bus voor Linux/Unix." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "Geert Warrink" #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "Voorkeuren" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "Opnieuw starten" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "Afsluiten" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/es.po0000644000000000000000000005750512551654123011035 00000000000000# translation of ibus.pot to Spanish # Spanish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Adolfo Jayme Barrientos , 2013 # Claudio Rodrigo Pereyra Diaz , 2011 # Daniel Cabrera , 2011 # beckerde , 2012-2013 # beckerde , 2013-2014 # Eduardo Villagrán M , 2013 # Gerardo Rosales , 2014 # Gladys Guerrero , 2012-2014 # Daniel Cabrera , 2011 # Gerardo Rosales , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-02-20 17:16+0900\n" "PO-Revision-Date: 2015-03-03 12:12-0500\n" "Last-Translator: Gerardo Rosales \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.5.1\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Horizontal" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Vertical" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Esquina superior izquierda" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Esquina superior derecha" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Esquina inferior izquierda" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Esquina inferior derecha" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Personalizado" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "No mostrar" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Ocultar automáticamente" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Siempre" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferencias de IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Tecla programada para cambiar al siguiente método de entrada en la lista" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Siguiente método de entrada:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Tecla programada para cambiar al método de entrada anterior en la lista" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Método de entrada anterior:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "…" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "Atajo de teclado para encender o apagar el método de entrada" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Habilitar o inhabilitar:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Habilitar:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Inhabilitar:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Poner la orientación de la tabla de búsqueda de candidatos" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientaciones candidato:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "Configurar el comportamiento de ibus sobre cómo mostrar u ocultar la barra " "de idiomas" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "Mostrar panel de propiedades:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Posición del panel de idioma:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "Mostrar un ícono en el área de notificación" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "Mostrar el nombre del método de entrada en la barra de idioma" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Mostrar el nombre del método de entrada en la barra de idioma cuando se " "marque la casilla" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Insertar texto previamente editado en la ventana de la aplicación" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" "Insertar el texto previamente editado del método de entrada en la ventana de " "la aplicación" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Usar fuente personalizada:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Fuente y Estilo" #: ../setup/setup.ui.h:34 msgid "General" msgstr "General" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "_Añadir" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" "Agregar el método de entrada seleccionado a los métodos de entrada " "habilitados" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Quitar" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Eliminar el método de entrada seleccionado de los métodos de entrada " "habilitados" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Subir" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Mover arriba el método de entrada seleccionado en la lista de métodos de " "entrada habilitados" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Bajar" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Mover abajo el método de entrada seleccionado en los métodos de entrada " "habilitados" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "Acerca _de" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Mostrar información sobre el método de entrada seleccionado" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "Prefere_ncias" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Mostrar la configuración del método de entrada seleccionado" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "Puede elegir el método de entrada activo de los seleccionados en " "la lista anterior, mediante el atajo de teclado o pulsando en el icono del " "panel." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Métodos de Entrada" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "Usar el diseño del teclado del sistema" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "Usar el diseño del teclado del sistema (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Diseño del Teclado" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "Compartir el mismo método de entrada con todas las aplicaciones" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Configuraciones globales de método de entrada" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avanzado" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "El bus de entrada inteligente\n" "Sitio web: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Iniciar ibus al ingresar" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Inicio" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 #: ../ui/gtk3/panel.vala:1053 msgid "About" msgstr "Acerca de" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "_Cerrar" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "Precargar máquinas" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "Precargar los motores durante el inicio de ibus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Orden de las máquinas" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Orden de las máquinas guardada en la lista de métodos de entrada" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "Retraso en milisegundos de Popup para ventana del interruptor IME" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "Establece retraso del Popup en milisegundos para mostrar la ventana del " "interruptor IME. Lo predeterminado es 400. 0 = Muestra la ventana " "inmediatamente. 0 < Demora en milisegundos. 0 > No muestra la ventana " "ni los motores siguientes o anteriores." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Número de versión guardada" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "El número de versión guardada se usará para chequear la diferencia entre la " "versión de ibus previamente instalada y la del ibus actual." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "Disposiciones latinas que no tienen ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" "Disposición de los Estados Unidos se anexa a los Disposiciones latino. " "variante puede ser omitida." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "Usar xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Ejecutar xmodmap si .xmodmap o .Xmodmap existen cuando los motores ibus son " "cambiados." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Activadora de los Atajos de teclado" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activador de llaves de atajos para leer gtk_accelerator " #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Habilitar atajos de teclado" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "Los atajos de teclado para habilitar el método de entrada" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Inhabilitar atajos de teclado" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "Los atajos de teclado para inhabilitar el método de entrada" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Atajo de teclado para el siguiente motor" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Los atajos de teclado para avanzar al siguiente método de entrada de la " "lista" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Atajo de teclado para la máquina previa" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "" "Los atajos de teclado para retroceder al método de entrada anterior en la " "lista" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Auto Ocultar" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "La conducta del panel de propiedad,0= No mostrar, 1 = Auto ocultar, 2 = " "Mostrar siempre" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Posición del panel de idioma" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" "La posicion el panel de idioma. 0 = esquina superior izquierda, 1 = esquina " "superior derecha, 2 = esquina inferior izquierda, 3 = esquina inferior " "derecha, 4 = personalizado" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "Siga el cursor de entrada en caso de que el panel siempre se muestre" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" "Si es verdadero, el panel sigue el cursor de entrada en el caso que siempre " "se muestre. Si es falso, el panel se muestra en una ubicación fija." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "Los milisegundos para mostrar el panel de propiedad" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Los milisegundos para mostrar el panel de propiedad después de enfocar o que " "las propiedades cambien." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Orientación de búsqueda en la tabla " #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientación de la tabla de búsqueda. 0 = Horizontal, 1 = Vertical" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "Mostrar el nombre del método de entrada" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "Valor RGBA del ícono XKB" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "El ícono XKB muestra la cadena de diseño que se renderiza con el valor RGBA. " "El valor RGBA puede ser 1. un color de X11, 2. un valor hexa en la forma " "'#rrggbb' donde 'r', 'g' y 'b' son dígitos hexa para el rojo, verde y azul, " "3. un color RGB en elformato 'rgb(r,g,b)' o 4. Un color RGBA en el formato " "'rgba(r,g,b,a)' donde 'r', 'g', y 'b' son o bien enteros en el rango de 0 a " "255 o valores de porcentaje en el rango de 0% a 100%, y 'a' es un valor de " "punto flotante en el rango de 0 a 1 para el alfa." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "Usar fuente personalizada" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "Usar nombre de fuente personalizada para el panel de idioma" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "Fuente personalizada" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "Nombre de fuente personalizado para el panel de idioma" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "Insertar texto preeditado" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "Insertar texto previamente editado en la ventana de la aplicación" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "Utilizar método de entrada global" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "Habilitar método de entrada en forma predeterminada" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "" "Habilitar método de entrada en forma predeterminada cuando la aplicación en " "uso solicite alguno" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf preserva los prefijos de nombres" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefijos para las claves de DConf para parar la conversión de nombres" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright © 2007–2010 Peng Huang\n" "Copyright © 2007–2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Otro" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "Diseño del teclado: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "Descripción:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "Seleccione un método de entrada" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:337 #: ../setup/main.py:413 msgid "_Cancel" msgstr "_Cancelar" #: ../setup/enginedialog.py:204 msgid "More…" msgstr "Más..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Defina las preferencias de IBus" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Código clave:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificadores:" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Aplicar" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Eliminar" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" "Por favor, presione una tecla (o una combinación de tecla).\n" "El diálogo será cerrado cuando la tecla sea soltada." #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Por favor, presione una tecla (o combinación de teclas)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:414 msgid "_OK" msgstr "_Aceptar" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Usar atajos con shift para cambiar al método anterior de entrada" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "El demonio IBus no se está ejecutando. ¿Desea iniciarlo?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "¡IBus fue iniciado! Sin no puede usar IBus, agregue las siguientes líneas a " "su $HOME/.bashrc; luego vuelga a ingresar a su cuenta.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "El demonio IBus no se pudo iniciar en %d segundos" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Seleccione la tecla de atajo para %s" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "Cambiando métodos de entrada" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "Listar sólo los nombres de máquinas" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "No se puede conectar a IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "No se configuró la máquina.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Falló la configuración de la máquina global.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Falló al obtener la máquina global.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Lea el cache del registro del sistema." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Lea el ARCHIVO de caché del registro." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "El caché del registro es inválido.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "Escriba al caché del registro del sistema." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "Escriba al ARCHIVO caché del registro." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "Restableciendo..." #: ../tools/main.vala:318 msgid "Done" msgstr "Hecho" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Ponga u obtenga una máquina" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "Detener el ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "Mostrar las máquinas disponibles" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(no implementado)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Reiniciar el ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "Mostrar la versión" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "Mostrar el contenido del caché del registro" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Crear el caché del registro" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "Imprimir la dirección de D-Bus de ibus-daemon" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "Mostrar los valores de la configuración" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Restablecer los valores de la configuración" #: ../tools/main.vala:348 msgid "Show this information" msgstr "Mostrar esta información" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "USO: %s COMANDO [OPCION...]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Comandos:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "¡%s es un comando desconocido!\n" #: ../ui/gtk3/panel.vala:225 ../ui/gtk3/panel.vala:256 msgid "IBus Panel" msgstr "Panel IBus" #: ../ui/gtk3/panel.vala:712 msgid "IBus Update" msgstr "Actualización de IBus" #: ../ui/gtk3/panel.vala:713 ../ui/gtk3/panel.vala:724 msgid "Super+space is now the default hotkey." msgstr "Super+espacio es ahora el atajo de teclado predeterminado." #: ../ui/gtk3/panel.vala:1026 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus es un bus de entrada inteligente para Linux/Unix." #: ../ui/gtk3/panel.vala:1030 msgid "translator-credits" msgstr "Domingo Becker, , 2009" #: ../ui/gtk3/panel.vala:1049 msgid "Preferences" msgstr "Preferencias" #: ../ui/gtk3/panel.vala:1059 msgid "Restart" msgstr "Reiniciar" #: ../ui/gtk3/panel.vala:1063 msgid "Quit" msgstr "Salir" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/lv.po0000644000000000000000000004377012551654123011046 00000000000000# translation of ibus.pot to Latvian # Latvian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # RÅ«dolfs Mazurs , 2011 # RÅ«dolfs Mazurs , 2011 # RÅ«dolfs Mazurs , 2011-2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Tranzistors \n" "Language-Team: Latvian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "HorizontÄli" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "VertikÄli" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Augšējais kreisais stÅ«ris" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Augšējais labais stÅ«ris" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Apakšējais kreisais stÅ«ris" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Apakšējais labais stÅ«ris" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "IzvÄ“lÄ“ts" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "VienmÄ“r" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus iestatÄ«jumi" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "SaÄ«sņu taustiņi, lai pÄrslÄ“gtos uz nÄkoÅ¡o ievades metodi sarakstÄ" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "NÄkamÄ ievades metode" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "SaÄ«sņu taustiņi, lai pÄrslÄ“gtos uz iepriekšējo ievades metodi sarakstÄ" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "IepriekšējÄ ievades metode:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "SaÄ«sņu taustiņi, lai ieslÄ“gtu vai izslÄ“gtu ievades metodi" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "AktivÄ“t vai deaktivÄ“t:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "AktivÄ“t:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "DeaktivÄ“t:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "TastatÅ«ras Ä«sceļi" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "IestatÄ«t kandidÄtu orientÄciju apsekoÅ¡anas tabulÄ" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "KandidÄtu orientÄcija:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "IestatÄ«t ibus uzvedÄ«bu kÄ rÄdÄ«t vai slÄ“pt valodas joslu" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Valodas paneļa pozÄ«cija:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "RÄdÄ«t ikonu sistÄ“mas ikonu joslÄ" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "ParÄdÄ«t ievades metodes nosaukumu valodas joslÄ" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ParÄdÄ«t ievades metodes nosaukumu valodas joslÄ, kad tiek atzÄ«mÄ“ta izvÄ“les rÅ«tiņa" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logÄ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Iegult ievades metodes pirmsrediģēšanas tekstu lietotnes logÄ" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Lietot izvÄ“lÄ“tu fontu:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Fonts un stils" #: ../setup/setup.ui.h:34 msgid "General" msgstr "VispÄrÄ«gi" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Pievienot" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Pievienot izvÄ“lÄ“to ievades metodi pie aktivÄ“tajÄm ievades metodÄ“m" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Izņemt" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Noņemt izvÄ“lÄ“to metodi no ieslÄ“gto ievades metožu saraksta" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_AugÅ¡up" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "PÄrvietojiet augÅ¡up izvÄ“lÄ“to ievades metodi ieslÄ“gto ievades metožu sarakstÄ" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Lejup" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "PÄrvietojiet lejup izvÄ“lÄ“to ievades metodi ieslÄ“gto ievades metožu sarakstÄ" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "P_ar" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "ParÄdÄ«t informÄciju par izvÄ“lÄ“to ievades metodi" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_IestatÄ«jumi" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "RÄdÄ«t izvÄ“lÄ“tÄs ievadies metodes iestatÄ«jumus" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Ievades metode" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Izmantot sistÄ“mas tastatÅ«ras izkÄrtojumu" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Izmantot sistÄ“mas tastatÅ«ras (XKB) izkÄrtojumu " #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "TastatÅ«ras izkÄrtojums" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Starp lietotnÄ“m izmantot vienu un to paÅ¡u ievades metodi" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "GlobÄlÄs ievades metodes iestatÄ«jumi" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "PaplaÅ¡inÄti" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nInteliÄ£entÄ ievades kopne\nMÄjas lapa: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "StartÄ“t ibus lÄ«dz ar pieslÄ“gÅ¡anos" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Startēšana" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Par" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_AizvÄ“rt" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "PÄrlÄdÄ“t dzinÄ“jus" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "LaicÄ«gi ielÄdÄ“t dzinÄ“jus ibus ielÄdes laikÄ" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Trigera saÄ«sņu taustiņi" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "AktivÄ“t Ä«sinÄjuma taustiņus" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "SaÄ«sņu taustiņi, lai ieslÄ“gtu ievades metodi " #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "DeaktivÄ“t Ä«sinÄjumu taustiņus" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "SaÄ«sņu taustiņi, lai izslÄ“gtu ievades metodi " #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "NÄkoÅ¡Ä dzinÄ“ja saÄ«sņu taustiņi" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "SaÄ«sņu taustiņi, lai pÄrslÄ“gtos uz nÄkamo ievades metodi sarakstÄ" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "IepriekšējÄ dzinÄ“ja saÄ«sņu taustiņi" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "SaÄ«sņu taustiņi, lai pÄrslÄ“gtos uz iepriekšējo ievades metodi sarakstÄ" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Autom. slÄ“pÅ¡ana" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Valodas paneļa pozÄ«cija" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "Valodas paneļa pozÄ«cija. 0 = augšējais kreisais stÅ«ris, 1 = augšējais labais stÅ«ris, 2 = apakšējais kreisais stÅ«ris, 3 = apakšējais labais stÅ«ris, 4 = izvÄ“lÄ“ts" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "ApsekoÅ¡anas tabulas novietojums" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ApsekoÅ¡anas tabulas novietojums. 0 = horizontÄls, 1 = vertikÄls" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "RÄdÄ«t ievades metodes nosaukumu" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Izmantot izvÄ“les fontu" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Izmantojamais izvÄ“les fonta nosaukums valodas panelim" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "IzvÄ“lÄ“ts fonts" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "IzvÄ“lÄ“tÄ fonta nosaukums valodas panelim" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Iegult pirmsrediģēšanas tekstu" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logÄ" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Izmantot globÄlo ievades metodi" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "AktivÄ“t ievades metodi pÄ“c noklusÄ“juma" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "AktivÄ“t ievades metodi pÄ“c noklusÄ“juma, kad lietotne saņem fokusu" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "AutortiesÄ«bas (c) 2007-2010 Peng Huang\nAutortiesÄ«bas (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Cits" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Valoda: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "TastatÅ«ras izkÄrtojums: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autors: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Apraksts:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "IzvÄ“lieties ievades metodi" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IestatÄ«t IBus iestatÄ«jumus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "TastatÅ«ras saÄ«snes" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Taustiņa kods:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modifikatoru taustiņi:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Pielietot" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_DzÄ“st" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "LÅ«dzu, nospiediet taustiņu (vai taustiņu kombinÄciju).\nDialoga logs tiks aizvÄ“rts, kad taustiņš tiks atlaists." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "LÅ«dzu, nospiediet taustiņu (vai taustiņu kombinÄciju)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "At_celt" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_Labi" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "IzvÄ“lieties tastatÅ«ras saÄ«sni priekÅ¡ %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ir inteliÄ£enta ievades kopne Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Arvis LÄcis\nPÄ“teris KriÅ¡jÄnis\nRÅ«dolfs Mazurs" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "IestatÄ«jumi" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "PÄrstartÄ“t" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Iziet" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ml.po0000644000000000000000000010111512551654123011021 00000000000000# translation of ibus.pot to Malayalam # Malayalam translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Ani Peter , 2009,2012-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-11-11 09:36+0000\n" "Last-Translator: Ani Peter \n" "Language-Team: Malayalam \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ml\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "à´•àµà´±àµà´•െയàµà´³àµà´³" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "നേരെയàµà´³àµà´³" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "à´®àµà´•ളിലàµâ€ ഇടതàµàµ കോണàµâ€ " #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "à´®àµà´•ളിലàµâ€ വലതàµàµ കോണàµâ€ " #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "താഴെ ഇടതàµàµ കോണàµâ€" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "താഴെ വലതàµàµ കോണàµâ€ " #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "യഥേഷàµà´Ÿà´‚:" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "ഇനി കാണിയàµà´•àµà´•à´°àµà´¤àµàµ" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "à´¸àµà´µà´¯à´®à´¾à´¯à´¿ അദൃശàµà´¯à´®à´¾à´•àµà´•àµà´•" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "à´Žà´ªàµà´ªàµ‹à´´àµà´‚" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus à´®àµà´¨àµâ€à´—ണനകളàµâ€" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "à´…à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസംവിധാനതàµà´¤à´¿à´²àµ‡à´•àµà´•ൠമാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´…à´Ÿàµà´¤àµà´¤ സംവിധാനതàµà´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "à´…à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµ:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "à´®àµà´®àµà´ªàµà´³àµà´³ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസംവിധാനതàµà´¤à´¿à´²àµ‡à´•àµà´•ൠമാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ തൊടàµà´Ÿàµàµ à´®àµà´®àµà´ªàµà´³àµà´³ സംവിധാനതàµà´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "à´®àµà´®àµà´ªàµà´³àµà´³ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµ:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠഓണàµâ€ à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ ഓഫൠചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´³à´¿à´•à´³àµâ€ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "സജàµà´œà´®à´¾à´•àµà´•àµà´• à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ നിരàµâ€à´œàµà´œàµ€à´µà´®à´¾à´•àµà´•àµà´•:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ സജàµà´œà´®à´¾à´•àµà´•àµà´•: " #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതമാകàµà´•àµà´•: " #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "കീബോരàµâ€à´¡àµ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿à´•à´³àµâ€" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "à´²àµà´•àµà´•à´ªàµà´ªàµ പടàµà´Ÿà´¿à´•യിലàµâ€ ലഭàµà´¯à´®à´¾à´¯à´µà´¯àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•രണം സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ലഭàµà´¯à´®à´¾à´¯à´µà´¯àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•രണങàµà´™à´³àµâ€:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus ഭാഷയàµà´Ÿàµ† പാനലàµâ€ കാണികàµà´•ണമോ വേണàµà´Ÿà´¯àµ‹ à´Žà´¨àµà´¨à´¤àµàµ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "വിശേഷതയàµà´•àµà´•àµà´³àµà´³ പാനലàµâ€ കാണിയàµà´•àµà´•àµà´•:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ഭാഷയàµà´Ÿàµ† പാനലàµâ€ à´¸àµà´¥à´¾à´¨à´‚:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "സിസàµà´±àµà´±à´‚ à´Ÿàµà´°àµ‡à´¯à´¿à´²àµâ€ à´šà´¿à´¹àµà´¨à´‚ കാണികàµà´•àµà´•" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "ഭാഷയàµà´Ÿàµ† പാനലിലàµâ€ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡിനàµà´±àµ† പേരàµàµ കാണികàµà´•àµà´•" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ചെകàµà´•àµà´¬àµ‹à´•àµà´¸àµ ചെകàµà´•ൠചെയàµà´¯àµà´®àµà´ªàµ‹à´³àµâ€ ഭാഷയàµà´Ÿàµ† പാനലിലàµâ€ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡിനàµà´±àµ† പേരàµàµ കാണികàµà´•àµà´•" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "à´ªàµà´°à´¯àµ‹à´—à´¤àµà´¤à´¿à´¨àµà´³àµà´³ ജാലകതàµà´¤à´¿à´²àµâ€ à´ªàµà´°àµ€à´Žà´¡à´¿à´±àµà´±àµ ടെകàµà´¸àµà´±àµà´±àµ ചേരàµâ€à´•àµà´•àµà´•" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "à´ªàµà´°à´¯àµ‹à´—à´¤àµà´¤à´¿à´¨àµà´³àµà´³ ജാലകതàµà´¤à´¿à´²àµâ€ à´ªàµà´°àµ€à´Žà´¡à´¿à´±àµà´±àµ ടെകàµà´¸àµà´±àµà´±à´¿à´¨àµà´³àµà´³ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ രീകി ചേരàµâ€à´•àµà´•àµà´•" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´‚ ഉപയോഗികàµà´•àµà´•:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´µàµà´‚ രീതിയàµà´‚" #: ../setup/setup.ui.h:34 msgid "General" msgstr "സാധാരണ" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "_ചേരàµâ€à´•àµà´•àµà´•" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµà´•ളിലേകàµà´•àµàµ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠചേരàµâ€à´•àµà´•àµà´•" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_നീകàµà´•à´‚ ചെയàµà´¯àµà´•" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµà´•ളിലàµâ€ നിനàµà´¨àµà´‚ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠനീകàµà´•à´‚ ചെയàµà´¯àµà´•" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_à´®àµà´•ളിലേകàµà´•àµ" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµà´•ളിലàµâ€ നിനàµà´¨àµà´‚ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠമàµà´•ളിലേകàµà´•ൠനീകàµà´•àµà´•" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_താഴോടàµà´Ÿàµ" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµà´•ളിലàµâ€ നിനàµà´¨àµà´‚ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠതാഴേകàµà´•ൠനീകàµà´•àµà´•" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_അണിയറ വിശേഷങàµà´™à´³àµâ€" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡിനെപàµà´ªà´±àµà´±à´¿à´¯àµà´³àµà´³ വിവരങàµà´™à´³àµâ€ കാണികàµà´•àµà´•" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_à´®àµà´¨àµâ€à´—ണനകളàµâ€ " #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ രീതിയàµà´Ÿàµ† സജàµà´œàµ€à´•രണം കാണിയàµà´•àµà´•àµà´•" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡàµ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "സിസàµà´±àµà´±à´‚ കീബോരàµâ€à´¡àµ മാതൃക ഉപയോഗികàµà´•àµà´•" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "സിസàµà´±àµà´±à´‚ കീബോരàµâ€à´¡àµ (XKB) മാതൃക ഉപയോഗികàµà´•àµà´•" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "കീബോരàµâ€à´¡àµ മാതൃക" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "à´Žà´²àµà´²à´¾ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³à´¿à´²àµà´‚ ഒരേ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ രീതി ഉപയോഗികàµà´•àµà´•" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠഉപയോഗികàµà´•àµà´•" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "മെചàµà´šà´ªàµà´ªàµ†à´Ÿàµà´Ÿà´µ" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nഇനàµà´±à´²à´¿â€à´œà´¨àµà´±àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ബസàµ\nà´ªàµà´°à´§à´¾à´¨ താളàµâ€: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ തനàµà´¨àµ† ibus ആരംഭികàµà´•àµà´•" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ആരംഭതàµà´¤à´¿à´²àµâ€" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "സംബനàµà´§à´¿à´šàµà´šàµàµ" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "_à´…à´Ÿà´¯àµà´•àµà´•àµà´•" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "സംവിധാനങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus ആരംഭികàµà´•àµà´®àµà´ªàµ‹à´³àµâ€ സംവിധാനങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "à´Žà´žàµà´šà´¿à´¨àµâ€ à´•àµà´°à´®à´™àµà´™à´³àµâ€" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠപടàµà´Ÿà´¿à´•യിലàµâ€ സൂകàµà´·à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´Žà´žàµà´šà´¿à´¨àµâ€ à´•àµà´°à´®à´™àµà´™à´³àµâ€" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "à´à´Žà´‚à´‡ à´¸àµà´µà´¿à´šàµà´šà´°àµâ€ ജാലകതàµà´¤à´¿à´¨àµà´³àµà´³ പോപàµà´ªà´ªàµà´ªàµ താമസം മിലàµà´²à´¿à´¸àµ†à´•àµà´•à´¨àµâ€à´¡àµà´•ളിലàµâ€" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "à´à´Žà´‚à´‡ à´¸àµà´µà´¿à´šàµà´šà´°àµâ€ ജാലകം കാണിയàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ പോപàµà´ªà´ªàµà´ªàµ താമസം മിലàµà´²à´¿à´¸àµ†à´•àµà´•à´¨àµâ€à´¡àµà´•ളിലàµâ€ സജàµà´œà´®à´¾à´•àµà´•àµà´•. à´¸àµà´µà´¤à´µàµ‡à´¯àµà´³àµà´³à´¤àµàµ 400. 0 = ജാലകം ഉടനàµâ€ കാണിയàµà´•àµà´•àµà´•. 0 < താമസം മിലàµà´²à´¿à´¸àµ†à´•àµà´•à´¨àµâ€à´¡àµà´•ളിലàµâ€. 0 > ജാലകം കാണിയàµà´•àµà´•à´°àµà´¤àµàµ, à´…à´Ÿàµà´¤àµà´¤à´¤àµàµ/à´®àµà´®àµà´ªàµà´³àµà´³ à´Žà´žàµà´šà´¿à´¨àµà´•ളിലേകàµà´•àµàµ മാറàµà´•." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "സൂകàµà´·à´¿à´šàµà´š പതിപàµà´ªàµàµ" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "à´®àµà´®àµà´ªàµàµ ഇനàµâ€à´¸àµà´±àµà´±àµ‹à´³àµâ€ ചെയàµà´¤ ibus-à´¨àµà´±àµ† പതിപàµà´ªàµà´‚ നിലവിലàµà´³àµà´³ ibus-à´¨àµà´±àµ† പതിപàµà´ªàµà´‚ തമàµà´®à´¿à´²àµà´³àµà´³ à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚ പരിശോധിയàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ സൂകàµà´·à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ പതിപàµà´ªàµàµ ഉപയോഗിയàµà´•àµà´•àµà´¨àµà´¨àµ." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ആസàµà´•ീ ഇലàµà´²à´¾à´¤àµà´¤ ലാറàµà´±à´¿à´¨àµâ€ ശൈലികളàµâ€" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap ഉപയോഗിയàµà´•àµà´•ൂ" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "à´Žà´³àµà´ªàµà´ªà´µà´´à´¿à´•à´³àµâ€ à´Ÿàµà´°à´¿à´—à´°àµâ€ ചെയàµà´¯àµà´•" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse-à´¨àµàµ à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿à´•à´³àµâ€ ഉപയോഗിയàµà´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿ കീകളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿ രീതി à´“à´£àµâ€ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿ കീകളàµâ€" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿ കീകളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതമാകàµà´•àµà´•" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿ രീതി ഓഫൠചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿ കീകളàµâ€" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "à´…à´Ÿàµà´¤àµà´¤ സംവിധാനതàµà´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿à´•à´³àµâ€" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "പടàµà´Ÿà´¿à´•യിലàµà´³àµà´³ à´…à´Ÿàµà´¤àµà´¤ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസംവിധാനതàµà´¤à´¿à´²àµ‡à´•àµà´•ൠമാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "തൊടàµà´Ÿàµàµ à´®àµà´®àµà´ªàµà´³àµà´³ സംവിധാനതàµà´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿à´•à´³àµâ€" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "à´®àµà´®àµà´ªàµà´³àµà´³ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസംവിധാനതàµà´¤à´¿à´²àµ‡à´•àµà´•ൠമാറàµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "à´¸àµà´µà´¯à´‚ അദൃശàµà´¯à´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "ഭാഷയàµà´Ÿàµ† പാനലàµâ€ à´¸àµà´¥à´¾à´¨à´‚" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ഭാഷയàµà´Ÿàµ† പാനലിനàµà´±àµ† à´¸àµà´¥à´¾à´¨à´‚. 0 = à´®àµà´•ളിലàµâ€ ഇടതàµàµ കോണàµâ€, 1 = à´®àµà´•ളിലàµâ€ വലതàµàµ കോണàµâ€, 2 = താഴെ ഇടതàµàµ കോണàµâ€, 3 = താഴെ വലതàµàµ കോണàµâ€, 4 = യഥേഷàµà´Ÿà´‚" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "വിശേഷതകളàµà´Ÿàµ† പാനലàµâ€ കാണിയàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ സമയം (മിലàµà´²à´¿à´¸àµ†à´•àµà´•à´¨àµâ€à´¡àµ)" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "à´²àµà´•àµà´•à´ªàµà´ªàµ പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•രണം" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "à´²àµà´•àµà´•à´ªàµà´ªàµ പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•രണം. 0 = നേരെയàµà´³àµà´³, 1 = à´•àµà´±àµà´•à´¯àµà´³àµà´³" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡിനàµà´±àµ† പേരàµàµ കാണികàµà´•àµà´•" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB à´ªàµà´°à´¤à´¿à´°àµ‚പതàµà´¤à´¿à´¨àµà´±àµ† RGBA മൂലàµà´²àµà´¯à´‚" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´‚ ഉപയോഗികàµà´•àµà´•" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "ഭാഷàµà´•àµà´•àµà´³àµà´³ പാനലിലàµâ€ നിങàµà´™à´³àµâ€ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµàµ ഉപയോഗികàµà´•àµà´•" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´‚ യഥേഷàµà´Ÿà´®à´¾à´•àµà´•àµà´•:" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ഭാഷയàµà´Ÿàµ† പാനലിലേകàµà´•àµà´³àµà´³ à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´¤àµà´¤à´¿à´¨àµà´³àµà´³ പേരàµàµ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "à´ªàµà´°àµ€à´Žà´¡à´¿à´±àµà´±àµ ടെകàµà´¸àµà´±àµà´±àµ ചേരàµâ€à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "à´ªàµà´°à´¯àµ‹à´—à´¤àµà´¤à´¿à´¨àµà´³àµà´³ ജാലകതàµà´¤à´¿à´²àµâ€ à´ªàµà´°àµ€à´Žà´¡à´¿à´±àµà´±àµ ടെകàµà´¸àµà´±àµà´±àµ ചേരàµâ€à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠഉപയോഗികàµà´•àµà´•" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "à´¸àµà´µà´¤à´µàµ‡ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "à´ªàµà´°à´¯àµ‹à´—à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµàµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ചെയàµà´¯àµà´µà´¾à´¨àµâ€ സാധിയàµà´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ à´¸àµà´µà´¤à´µàµ‡ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠസജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "à´Žà´žàµà´šà´¿à´¨àµâ€ à´•àµà´°à´®à´™àµà´™à´³àµâ€" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠപടàµà´Ÿà´¿à´•യിലàµâ€ സൂകàµà´·à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´Žà´žàµà´šà´¿à´¨àµâ€ à´•àµà´°à´®à´™àµà´™à´³àµâ€" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "മറàµà´±àµà´³àµà´³à´µ" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "ഭാഷ: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "കീബോരàµâ€à´¡àµ മാതൃക: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "രചയിതാവàµàµ: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "വിവരണം:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "ഒരൠഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ മെഥേഡൠതെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "_റദàµà´¦à´¾à´•àµà´•àµà´•" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "കൂടàµà´¤à´²àµâ€..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus à´®àµà´¨àµâ€à´—ണനകളàµâ€ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "കീബോരàµâ€à´¡àµ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿à´•à´³àµâ€" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "കീ കോഡàµ:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "മോഡിഫയറàµà´•à´³àµâ€:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "_à´•à´‚à´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿à´²àµâ€ സൂകàµà´·à´¿à´•àµà´•àµà´•" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "_വെടàµà´Ÿà´¿ നീകàµà´•àµà´•" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ദയവായി ഒരൠകീ അമരàµâ€à´¤àµà´¤àµà´• (à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ ഒരൠകീ കൂടàµà´Ÿàµ).\nകീ റിലീസൠചെയàµà´¯àµà´®àµà´ªàµ‹à´³àµâ€ ഡയലോഗൠഅടയàµà´•àµà´•àµà´¨àµà´¨àµ." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "ദയവായി ഒരൠകീ അമരàµâ€à´¤àµà´¤àµà´• (à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ ഒരൠകീ കൂടàµà´Ÿàµ)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "_à´¶à´°à´¿" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "à´®àµà´®àµà´ªàµà´³àµà´³ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ രീതിയിലേകàµà´•àµàµ പോകàµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ shift-നൊപàµà´ªà´®àµà´³àµà´³ à´•àµà´±àµà´•àµà´•àµà´µà´´à´¿ ഉപയോഗിയàµà´•àµà´•àµà´•" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´¤àµà´¤à´¿à´²à´¿à´²àµà´², നിങàµà´™à´³àµâ€à´•àµà´•àµàµ ഇതàµàµ ആരംഭിയàµà´•àµà´•ണമോ?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus à´¤àµà´Ÿà´™àµà´™à´¿! IBus ഉപയോഗിയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€, നിങàµà´™à´³àµà´Ÿàµ† $HOME/.bashrc;-ലേകàµà´•àµàµ à´ˆ വരികളàµâ€ ചേരàµâ€à´¤àµà´¤àµàµ വീണàµà´Ÿàµà´‚ നിങàµà´™à´³àµà´Ÿàµ† പണിയിടതàµà´¤à´¿à´²àµ‡à´•àµà´•àµàµ വീണàµà´Ÿàµà´‚ à´ªàµà´°à´µàµ‡à´¶à´¿à´¯àµà´•àµà´•àµà´•.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ഡെമണàµâ€ %d സെകàµà´•à´¨àµâ€à´¡àµà´•ളിലàµâ€ ആരംഭിയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-à´¨àµà´³àµà´³ കീബോരàµâ€à´¡àµ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ രീതികളàµâ€ തമàµà´®à´¿à´²àµâ€ മാറàµà´•" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "à´Žà´žàµà´šà´¿à´¨àµâ€ പേരàµàµ മാതàµà´°à´‚ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus-ലേകàµà´•àµàµ കണകàµà´Ÿàµ ചെയàµà´¯àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´².\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "ഭാഷ: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "à´Žà´žàµà´šà´¿à´¨àµâ€ സജàµà´œà´®à´²àµà´².\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ à´Žà´žàµà´šà´¿à´¨àµâ€ സജàµà´œà´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤àµàµ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ à´Žà´žàµà´šà´¿à´¨àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤àµàµ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "സിസàµà´±àµà´±à´‚ രജിസàµà´Ÿàµà´°à´¿ കാഷൠലഭàµà´¯à´®à´¾à´•àµà´•àµà´•." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·àµ ഫയലàµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·àµ അസാധàµ.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "സിസàµà´±àµà´±à´‚ രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·à´¿à´²àµ‡à´•àµà´•àµàµ സൂകàµà´·à´¿à´¯àµà´•àµà´•àµà´•." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·àµ ഫയലിലേകàµà´•àµàµ സൂകàµà´·à´¿à´¯àµà´•àµà´•àµà´•." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "വീണàµà´Ÿàµà´‚ സജàµà´œà´®à´¾à´•àµà´•àµà´¨àµà´¨àµ..." #: ../tools/main.vala:318 msgid "Done" msgstr "പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´¯à´¿" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "à´Žà´žàµà´šà´¿à´¨àµâ€ സജàµà´œà´®à´¾à´•àµà´•àµà´• à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon-à´²àµâ€ നിനàµà´¨àµà´‚ à´ªàµà´±à´¤àµà´¤àµàµ à´•à´Ÿà´•àµà´•àµà´•" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "ലഭàµà´¯à´®à´¾à´¯ à´Žà´žàµà´šà´¿à´¨àµà´•à´³àµâ€ കാണിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(ലഭàµà´¯à´®à´¾à´•àµà´•ിയിടàµà´Ÿà´¿à´²àµà´²)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon വീണàµà´Ÿàµà´‚ ആരംഭിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:342 msgid "Show version" msgstr "പതിപàµà´ªàµàµ കാണിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·à´¿à´¨àµà´±àµ† ഉളàµà´³à´Ÿà´•àµà´•à´‚ കാണിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "രജിസàµà´Ÿàµà´°à´¿ à´•àµà´¯à´¾à´·àµ തയàµà´¯à´¾à´±à´¾à´•àµà´•àµà´•" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon-à´¨àµà´±àµ† à´¡à´¿-ബസൠവിലാസം à´ªàµà´°à´¿à´¨àµà´±àµ ചെയàµà´¯àµà´•" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "à´•àµà´°à´®àµ€à´•à´°à´£ മൂലàµà´²àµà´¯à´™àµà´™à´³àµâ€ കാണിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "à´•àµà´°à´®àµ€à´•à´°à´£ മൂലàµà´²àµà´¯à´™àµà´™à´³àµâ€ വീണàµà´Ÿàµà´‚ സജàµà´œà´®à´¾à´•àµà´•àµà´•" #: ../tools/main.vala:348 msgid "Show this information" msgstr "à´ˆ വിവരം കാണിയàµà´•àµà´•àµà´•" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "ഉപയോഗിയàµà´•àµà´•േണàµà´Ÿ വിധം: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "കമാനàµâ€à´¡àµà´•à´³àµâ€:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s ഒരൠഅപചിരിത കമാനàµâ€à´¡à´¾à´•àµà´¨àµà´¨àµ!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus പരിഷàµà´•രണം" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "ഇപàµà´ªàµ‹à´³àµâ€ à´¸àµà´µà´¤à´µàµ‡à´¯àµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿ Super+space ആകàµà´¨àµà´¨àµ." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "ലിനകàµà´¸àµ/à´¯àµà´£à´¿à´•àµà´¸à´¿à´¨àµà´³àµà´³ ഇനàµà´±à´²à´¿à´œà´¨àµà´±àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ബസാണàµàµ IBus." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "അനി പീറàµà´±à´°àµâ€ " #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "à´®àµà´¨àµâ€à´—ണനകളàµâ€ " #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "വീണàµà´Ÿàµà´‚ ആരംഭികàµà´•àµà´•" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "à´ªàµà´±à´¤àµà´¤àµ à´•à´Ÿà´•àµà´•àµà´•" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/zh_TW.po0000644000000000000000000005242012551654123011450 00000000000000# translation of ibus.pot to Traditional Chinese # Traditional Chinese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Cheng-Chia Tseng , 2011-2012,2014 # Ding-Yi Chen , 2009 # Ding-Yi Chen , 2009 # Walter Cheuk , 2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-10-10 06:56+0000\n" "Last-Translator: Cheng-Chia Tseng \n" "Language-Team: Chinese (Taiwan) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "æ°´å¹³" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "垂直" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "左上角" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "å³ä¸Šè§’" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "左下角" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "å³ä¸‹è§’" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "自訂" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "ä¸è¦é¡¯ç¤º" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "自動隱è—" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "總是" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "iBus å好設定" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "用來切æ›åˆ°æ¸…單內下一個輸入法的快æ·éµ" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "下一個輸入法:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "用來切æ›åˆ°æ¸…單內上一個輸入法的快æ·éµ" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "上一個輸入法:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "用來開啟或關閉輸入法的快æ·éµ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "啟用或åœç”¨ï¼š" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "啟用:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "åœç”¨ï¼š" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "éµç›¤å¿«æ·éµ" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "設置查詢表單內候é¸å­—詞的排列方å‘" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "候é¸è©žæŽ’列方å‘:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "設置 iBus 如何顯示或隱è—語言列的行為" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "é¡¯ç¤ºå±¬æ€§é¢æ¿ï¼š" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "èªžè¨€é¢æ¿ä½ç½®ï¼š" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "在系統匣顯示圖示" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "在語言列顯示輸入法å稱" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ç•¶é¸å–時在語言列上輸入法å稱" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "在應用程å¼è¦–窗內嵌é å…ˆç·¨è¼¯æ–‡å­—" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "在應用程å¼è¦–窗內嵌輸入法的é å…ˆç·¨è¼¯æ–‡å­—" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "使用自訂字型:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "字型與風格" #: ../setup/setup.ui.h:34 msgid "General" msgstr "通用" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "加入(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "加入é¸å–的輸入法到已啟用的輸入法內" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "移除(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "從已啟用的輸入法中移除所é¸çš„輸入法" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "å‘上(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移所é¸å–的輸入法" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "å‘下(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "下移所é¸å–的輸入法" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "關於(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "顯示所é¸å–的輸入法資訊" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "å好設定(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "顯示é¸å–輸入法的設置" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "您å¯ä»¥é€éŽæŒ‰ä¸‹éµç›¤å¿«æ·éµï¼Œæˆ–æ˜¯é»žæŒ‰é¢æ¿åœ–示的方å¼ï¼Œä¾†å¾žä¸Šåˆ—清單中é¸å–的輸入法之中切æ›ä½¿ç”¨ä¸­çš„輸入法。" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "輸入法" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "使用系統éµç›¤é…ç½®" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "使用系統éµç›¤ (XKB) é…ç½®" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "éµç›¤é…ç½®" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "在所有應用程å¼å…±ç”¨åŒä¸€å€‹è¼¸å…¥æ³•" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "全域輸入法設定值" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "進階" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "iBus\n智慧型輸入框架\n首é : https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "在登入時啟動 iBus" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "啟動" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "關於" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "關閉(_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "é å…ˆè¼‰å…¥å¼•擎" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ç•¶ iBus 啟動時é å…ˆè¼‰å…¥å¼•擎" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "引擎順åº" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "輸入法清單中儲存的引擎順åº" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 切æ›å™¨è¦–窗彈出延é²çš„æ¯«ç§’數" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "設定 IME 切æ›å™¨è¦–窗的彈出顯示毫秒數。é è¨­ç‚º 400。0 = ç«‹å³é¡¯ç¤ºè¦–窗。0 < 延鲿¯«ç§’。0 > ä¸è¦é¡¯ç¤ºè¦–窗直接往å‰/往後切æ›å¼•擎。" #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "儲存的版本號碼" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "儲存的版本號碼å¯ä»¥ç”¨ä¾†æŸ¥çœ‹å‰æ¬¡å®‰è£çš„ ibus 版本與目å‰å®‰è£çš„ ibus 版本之間的差異。" #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "ç„¡ ASCII 之拉ä¸éµç›¤é…ç½®" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US éµç›¤é…置附加到拉ä¸éµç›¤é…置。variant å¯ä»¥çœç•¥ã€‚" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "使用 xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ç•¶ ibus 引擎切æ›ä¹‹æ™‚,若 .xmodmap 或 .Xmodmap 存在的話,則執行 xmodmap。 " #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "觸發用快æ·éµ" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的觸發快æ·éµ" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "啟用快æ·éµ" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "開啟輸入法的快æ·éµ" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "åœç”¨å¿«æ·éµ" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "關閉輸入法的快æ·éµ" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "「下一個引擎ã€å¿«æ·éµ" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "用來切æ›åˆ°æ¸…單內下一個輸入法的快æ·éµ" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "「上一個引擎ã€å¿«æ·éµ" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "用來切æ›åˆ°æ¸…單內上一個輸入法的快æ·éµ" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "自動隱è—" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "å±¬æ€§é¢æ¿çš„行為。0 = ä¸è¦é¡¯ç¤ºï¼Œ1 = 自動隱è—,2 = 總是顯示" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "èªžè¨€é¢æ¿ä½ç½®" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "語言列的ä½ç½®ã€‚0 = 左上角, 1 = å³ä¸Šè§’, 2 = 左下角, 3 = å³ä¸‹è§’, 4 = 自訂" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "åœ¨é¢æ¿ç¸½æ˜¯é¡¯ç¤ºçš„æƒ…æ³ä¸‹è·Ÿéš¨è¼¸å…¥æ¸¸æ¨™" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "è‹¥ç‚ºçœŸï¼Œå‰‡é¢æ¿æœƒåœ¨ç¸½æ˜¯é¡¯ç¤ºçš„æƒ…æ³ä¸‹è·Ÿéš¨è¼¸å…¥æ¸¸æ¨™ã€‚若為å‡ï¼Œå‰‡é¢æ¿æœƒé¡¯ç¤ºåœ¨å›ºå®šä½ç½®ä¸Šã€‚" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "é¡¯ç¤ºå±¬æ€§é¢æ¿çš„æ¯«ç§’數" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "當焦點è½åœ¨å±¬æ€§é¢æ¿å…§ï¼Œæˆ–å±¬æ€§è®Šæ›´æ™‚å±¬æ€§é¢æ¿çš„顯示毫秒數。" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "查é¸è¡¨å–®è¡¨æŽ’列方å‘" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "查詢表單的排列方å‘。0 = 水平,1 = 垂直" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "顯示輸入法å稱" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB 圖示的 RGBA 值" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB 圖示會顯示éµç›¤é…置的字串,且該字串會以 RGBA 值繪製。RGBA 值å¯ä»¥æ˜¯ 1. X11 定義的é¡è‰²ï¼Œ2.「#rrggbbã€æ ¼å¼çš„å六進ä½å€¼ï¼Œå…¶ä¸­ rã€gã€b 分別是紅色ã€ç¶ è‰²èˆ‡è—色,3. 「rgb(r,g,b)ã€æ ¼å¼çš„ RGB 色彩,4.「rgba(r,g,b,a)ã€æ ¼å¼çš„ RGBA 採,其中的 rã€gã€b 為 0 至 255 之間的整數值,或 0% 至 100% 之間的百分比,而 a 則是 0 至 1 之間的浮點 alpha 值。" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "使用自訂字型" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "èªžè¨€é¢æ¿æ˜¯å¦ä½¿ç”¨è‡ªè¨‚å­—åž‹" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "自訂字型" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ç‚ºèªžè¨€é¢æ¿è‡ªè¨‚å­—åž‹" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "內嵌é å…ˆç·¨è¼¯æ–‡å­—" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "在應用程å¼è¦–窗中內嵌é å…ˆç·¨è¼¯æ–‡å­—" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "使用全域輸入法" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "é è¨­å•Ÿç”¨è¼¸å…¥æ³•" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "當應用程å¼å–得輸入焦點時,é è¨­å°‡è¼¸å…¥æ³•啟用" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf ä¿ç•™å稱å‰ç¶´" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf éµçš„å‰ç¶´ï¼Œç”¨ä¾†åœæ­¢å稱轉æ›" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "版權所有 (c) 2007-2010 黃鵬\n版權所有 (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "å…¶ä»–" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "語言:%s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "éµç›¤é…ç½®: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "作者:%s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "æè¿°ï¼š\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "é¸å–輸入法" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "其他…" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "éµç›¤" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "設置 iBus å好設定" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "éµç›¤å¿«æ·éµ" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "按éµç¢¼ï¼š" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "修飾éµï¼š" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "套用(_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "刪除(_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "請按éµç›¤æŒ‰éµ (或是按éµçµ„åˆ)\nç•¶æ‚¨æ”¾é–‹æŒ‰éµæ™‚,å°è©±æ¡†æœƒè‡ªå‹•關閉。" #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "請按éµç›¤æŒ‰éµ (或是按éµçµ„åˆ)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "確定(_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ä½¿ç”¨å« Shift éµä¹‹å¿«æ·éµä¾†åˆ‡æ›è‡³å‰å€‹è¼¸å…¥æ³•" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus 幕後程å¼ä¸¦éžåŸ·è¡Œä¸­ã€‚您是å¦è¦å•Ÿå‹•它?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus 已經啟動ï¼è‹¥æ‚¨ç„¡æ³•使用 IBus,請將下列文字加入您的 $HOME/.bashrc ä¸­ï¼›æŽ¥è‘—é‡æ–°ç™»å…¥æ¡Œé¢ã€‚\nexport GTK_IM_MODULE=ibus\nexport XMODIFIERS=@im=ibus\nexport QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 幕後程å¼ç„¡æ³•在 %d 秒後啟動" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "為 %s é¸å–éµç›¤å¿«æ·éµ" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "切æ›è¼¸å…¥æ³•" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "僅列出引擎å稱" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "無法連接 IBus。\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "語言:%s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "尚未設定引擎。\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "無法設定全域引擎。\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "無法å–得全域引擎。\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "讀å–系統註冊快å–。" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "讀å–è¨»å†Šå¿«å– FILE。" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "註冊快å–無效。\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "寫入系統註冊快å–。" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "å¯«å…¥è¨»å†Šå¿«å– FILE。" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "é‡è¨­ä¸­â€¦" #: ../tools/main.vala:318 msgid "Done" msgstr "完æˆ" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "設定引擎或å–得引擎" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "離開 ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "顯示å¯ç”¨çš„引擎" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(尚未實作)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "釿–°å•Ÿå‹• ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "顯示版本" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "顯示註冊快å–的內容" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "建立註冊快å–" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "åˆ—å° ibus-daemon çš„ D-Bus ä½å€" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "顯示組態值" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "é‡è¨­çµ„態值" #: ../tools/main.vala:348 msgid "Show this information" msgstr "顯示此資訊" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "用法:%s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "指令:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s 為未知指令ï¼\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus æ›´æ–°" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "è¶…ç´šéµ+空白éµç‚ºç¾åœ¨çš„é è¨­ç†±éµã€‚" #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "iBus 為 Linux/Unix 上的智慧型輸入法框架。" #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "Ding-Yi Chen 陳定彞 , 2009.\nCheng-Chia Tseng , 2010-14." #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "å好設定" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "釿–°å•Ÿå‹•" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "çµæŸ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/pl.po0000644000000000000000000006060212551654123011031 00000000000000# translation of pl.po to Polish # Polish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Piotr DrÄ…g , 2011-2014 # Piotr DrÄ…g , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2015-07-13 19:48+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-07-13 01:25-0400\n" "Last-Translator: Piotr DrÄ…g \n" "Language-Team: Polish \n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Zanata 3.6.2\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Poziomo" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Pionowo" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Górny lewy róg" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Górny prawy róg" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Dolny lewy róg" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Dolny prawy róg" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "WÅ‚asna" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "Bez wyÅ›wietlania" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "Automatyczne ukrywanie" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Zawsze" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferencje usÅ‚ugi IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Klawisz skrótu do przełączenia na nastÄ™pnÄ… metodÄ™ wprowadzania na liÅ›cie" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "NastÄ™pna metoda wprowadzania:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Klawisz skrótu do przełączenia na poprzedniÄ… metodÄ™ wprowadzania na liÅ›cie" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Poprzednia metoda wprowadzania:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "Klawisze skrótów do włączania lub wyłączania metody wprowadzania" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Włączenie lub wyłączenie:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Włączone:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Wyłączone:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Ustawienie orientacji kandydatów w tablicy wyszukiwania" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientacja kandydatów:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Ustawienie wyÅ›wietlania lub ukrywania panela jÄ™zyków usÅ‚ugi IBus" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "WyÅ›wietlanie panelu wÅ‚aÅ›ciwoÅ›ci:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Pozycja panelu jÄ™zyków:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "WyÅ›wietlanie ikony w obszarze powiadamiania" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "WyÅ›wietlanie nazwy metody wprowadzania na panelu jÄ™zyków" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "WyÅ›wietlanie nazwy metody wprowadzania na panelu jÄ™zyków podczas zaznaczania " "pola wyboru" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Osadzanie wczeÅ›niej wprowadzonego tekstu metody wejÅ›cia" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" "Osadzanie wczeÅ›niej wprowadzonego tekstu metody wejÅ›cia w oknie aplikacji" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Użycie wÅ‚asnej czcionki:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Czcionka i styl" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Ogólne" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 #: ../setup/keyboardshortcut.py:124 msgid "_Add" msgstr "_Dodaj" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Dodanie wybranej metody wprowadzania do włączonych metod wprowadzania" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_UsuÅ„" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" "UsuniÄ™cie zaznaczonej metody wprowadzania we włączonych metodach " "wprowadzania" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "W _górÄ™" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Przeniesienie w górÄ™ zaznaczonej metody wprowadzania we włączonych metodach " "wprowadzania" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "W _dół" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Przeniesienie w dół zaznaczonej metody wprowadzania we włączonych metodach " "wprowadzania" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_O programie" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "WyÅ›wietlanie informacji o wybranej metodzie wprowadzania" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "P_referencje" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "WyÅ›wietlanie ustawieÅ„ zaznaczonej metody wprowadzania" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" "Aktywna metoda wprowadzania może być przełączana z wybranych metod " "na powyższej liÅ›cie za pomocÄ… skrótu klawiszowego lub klikniÄ™cia ikony na " "panelu." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 msgid "Input Method" msgstr "Metoda wprowadzania" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 msgid "Use system keyboard layout" msgstr "Użycie systemowych ustawieÅ„ ukÅ‚adu klawiatury" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 msgid "Use system keyboard (XKB) layout" msgstr "Użycie systemowego ukÅ‚adu klawiatury (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "UkÅ‚ad klawiatury" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 msgid "Share the same input method among all applications" msgstr "Używanie tej samej metody wprowadzania we wszystkich aplikacjach" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Ustawienia globalnej metody wprowadzania" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Zaawansowane" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Inteligentna magistrala wprowadzania\n" "Strona domowa: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Uruchamianie IBus podczas logowania" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Uruchomienie" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 #: ../ui/gtk3/panel.vala:1113 msgid "About" msgstr "O programie" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 msgid "_Close" msgstr "Za_mknij" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "WczeÅ›niejsze wczytanie mechanizmów" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "WczeÅ›niejsze wczytanie mechanizmów podczas uruchamiania usÅ‚ugi IBus" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "Kolejność mechanizmów" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "Kolejność zapisanych mechanizmów na liÅ›cie metod wprowadzania" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "Opóźnienie wyÅ›wietlenia okna przełącznika IME w milisekundach" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is 400." " 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " "show the window and switch prev/next engines." msgstr "" "Ustawia opóźnienie wyÅ›wietlenia okna przełącznika IME w milisekundach. " "DomyÅ›lnie wynosi 400. 0 = natychmiastowe wyÅ›wietlanie okna. 0 < " "milisekundy opóźnienia. 0 > Bez wyÅ›wietlania okna i przełączania na " "nastÄ™pny/poprzedni mechanizm." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "Zapisany numer wersji" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" "Zapisany numer wersji bÄ™dzie używany do sprawdzania różnicy miÄ™dzy wersjÄ… " "poprzednio zainstalowanego IBus a obecnego." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "UkÅ‚ady Å‚aciÅ„skie nie posiadajÄ…ce ASCII" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "UkÅ‚ad US jest dołączany do ukÅ‚adów Å‚aciÅ„skich. Można pominąć variant." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "Użycie xmodmap" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Wykonuje xmodmap, jeÅ›li istnieje .xmodmap lub .Xmodmap, kiedy mechanizmy " "IBus sÄ… przełączane." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "Klawisze skrótów przełącznika" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Klawisz skrótu dla gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "Włącza skróty klawiszowe" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "Skróty klawiszowe do włączania metody wprowadzania" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "Wyłącza skróty klawiszowe" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "Skróty klawiszowe do wyłączania metody wprowadzania" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "Klawisze skrótów nastÄ™pnego mechanizmu" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Klawisze skrótu do przełączania na nastÄ™pnÄ… metodÄ™ wprowadzania na liÅ›cie" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "Klawisze skrótów poprzedniego mechanizmu" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "" "Klawisze skrótu do przełączania na poprzedniÄ… metodÄ™ wprowadzania na liÅ›cie" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "Automatyczne ukrywanie" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Zachowanie panela wÅ‚aÅ›ciwoÅ›ci. 0 = bez wyÅ›wietlania, 1 = automatycznie " "ukrywany, 2 = zawsze wyÅ›wietlany" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "Pozycja panela jÄ™zyków" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" "Pozycja panela jÄ™zyków. 0 = górny lewy róg, 1 = górny prawy róg, 2 = dolny " "lewy róg, 3 = dolny prawy róg, 4 = wÅ‚asna" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "" "Podążanie za kursorem wprowadzania, kiedy panel jest zawsze wyÅ›wietlany" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" "JeÅ›li jest ustawione na \"true\", to panel podążą za kursorem wprowadzania, " "kiedy panel jest zawsze wyÅ›wietlany. JeÅ›li jest ustawione na \"false\", to " "panel jest wyÅ›wietlany w staÅ‚ym poÅ‚ożeniu." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "Milisekundy do wyÅ›wietlenia panelu wÅ‚aÅ›ciwoÅ›ci" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Milisekundy do wyÅ›wietlenia panelu wÅ‚aÅ›ciwoÅ›ci po zmianie aktywnoÅ›ci lub " "wÅ‚aÅ›ciwoÅ›ci." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "Orientacja tablicy wyszukiwania" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientacja tablicy wyszukiwania. 0 = pozioma, 1 = pionowa" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "WyÅ›wietlanie nazwy metody wprowadzania" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "Wartość RGBA ikony XKB" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "" "Ikona XKB wyÅ›wietla ciÄ…g ukÅ‚adu, który jest wyÅ›wietlany za pomocÄ… wartoÅ›ci " "RGBA. Wartość RGBA może wynosić 1. nazwÄ™ kolory z X11, 2. wartość " "szesnastkowÄ… w formie \"#rrggbb\", gdzie \"r\", \"g\" i \"b\" sÄ… cyframi " "szesnastkowymi koloru czerwonego, zielonego i niebieskiego, 3. kolor RGB w " "formie \"rgb(r,g,b)\" lub 4. kolor RGBA w formie \"rgba(r,g,b,a)\", gdzie " "\"r\", \"g\" i \"b\" sÄ… liczbami caÅ‚kowitymi w zakresie od 0 do 255 lub " "wartoÅ›ciami procentowymi w zakresie od 0% do 100%, a \"a\" jest wartoÅ›ciÄ… " "zmiennoprzecinkowÄ… w zakresie od 0 do 1 alfy." #: ../data/ibus.schemas.in.h:42 msgid "The milliseconds to show the panel icon for a property" msgstr "Milisekundy do wyÅ›wietlenia ikony panelu dla wÅ‚aÅ›ciwoÅ›ci" #: ../data/ibus.schemas.in.h:43 msgid "" "The milliseconds to show the panel icon from the engine icon to a property " "icon whenever engines are switched if the property is specified by the value " "of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " "property icon is shown immediately." msgstr "" "Milisekundy do wyÅ›wietlenia ikony panelu z ikony mechanizmu do ikony " "wÅ‚aÅ›ciwoÅ›ci, kiedy mechanizmy sÄ… przełączane, jeÅ›li wÅ‚aÅ›ciwość zostaÅ‚a " "podana za pomocÄ… wartoÅ›ci \"icon-prop-key\" w IBusEngineDesc. JeÅ›li wartość " "wynosi 0, to nie bÄ™dzie żadnego opóźnienia i ikona zostanie wyÅ›wietlona od " "razu." #: ../data/ibus.schemas.in.h:46 msgid "Use custom font" msgstr "Użycie wÅ‚asnej czcionki" #: ../data/ibus.schemas.in.h:47 msgid "Use custom font name for language panel" msgstr "Nazwa wÅ‚asnej czcionki użytej w panelu jÄ™zyków" #: ../data/ibus.schemas.in.h:48 msgid "Custom font" msgstr "WÅ‚asna czcionka" #: ../data/ibus.schemas.in.h:49 msgid "Custom font name for language panel" msgstr "Nazwa wÅ‚asnej czcionki dla panelu jÄ™zyków" #: ../data/ibus.schemas.in.h:50 msgid "Embed Preedit Text" msgstr "Osadzanie wczeÅ›niej wprowadzonego tekstu" #: ../data/ibus.schemas.in.h:51 msgid "Embed Preedit Text in Application Window" msgstr "Osadzanie wczeÅ›niej wprowadzonego tekstu w oknie aplikacji" #: ../data/ibus.schemas.in.h:52 msgid "Use global input method" msgstr "Użycie globalnej metody wprowadzania" #: ../data/ibus.schemas.in.h:54 msgid "Enable input method by default" msgstr "DomyÅ›lne włączanie metody wprowadzania" #: ../data/ibus.schemas.in.h:55 msgid "Enable input method by default when the application gets input focus" msgstr "" "DomyÅ›lne włączanie metody wprowadzania, kiedy aplikacja uzyskuje aktywność " "wprowadzania" #: ../data/ibus.schemas.in.h:56 msgid "DConf preserve name prefixes" msgstr "DConf zachowuje przedrostki nazw" #: ../data/ibus.schemas.in.h:57 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Przedrostki kluczy DConf zatrzymujÄ…ce konwersjÄ™ nazw" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:158 msgid "Other" msgstr "Inne" #: ../setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "JÄ™zyk: %s\n" #: ../setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "UkÅ‚ad klawiatury: %s\n" #: ../setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: ../setup/engineabout.py:81 msgid "Description:\n" msgstr "Opis:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 msgid "Select an input method" msgstr "Wybór metodÄ™ wprowadzania" #: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 #: ../setup/main.py:414 msgid "_Cancel" msgstr "_Anuluj" #: ../setup/enginedialog.py:205 msgid "More…" msgstr "WiÄ™cej…" #: ../setup/enginetreeview.py:96 msgid "Kbd" msgstr "KBD" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Ustawianie preferencji usÅ‚ugi IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Kod klawisza:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modyfikatory:" #. apply button #: ../setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Zastosuj" #. delete button #: ../setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_UsuÅ„" #: ../setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" "ProszÄ™ nacisnąć klawisz (lub kombinacjÄ™ klawiszy).\n" "Okno dialogowe zostanie zamkniÄ™te po zwolnieniu klawisza." #: ../setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "ProszÄ™ nacisnąć klawisz (lub kombinacjÄ™ klawiszy)" #: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 msgid "_OK" msgstr "_OK" #: ../setup/main.py:114 ../setup/main.py:439 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Użycie skrótu z klawiszem Shift do przełączania do poprzedniej metody " "wprowadzania" #: ../setup/main.py:369 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "UsÅ‚uga IBus nie jest uruchomiona. Uruchomić jÄ…?" #: ../setup/main.py:390 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to " "your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" "IBus zostaÅ‚ uruchomiony. JeÅ›li nie można używać IBus, należy dodać poniższe " "wiersze do pliku $HOME/.bashrc i zalogować siÄ™ ponownie.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:404 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Nie można uruchomić usÅ‚ugi IBus od %d sekund" #: ../setup/main.py:416 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Wybór skrótu klawiszowego dla %s" #. Translators: Title of the window #: ../setup/main.py:418 msgid "switching input methods" msgstr "przełączanie metod wprowadzania" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "WyÅ›wietla tylko nazwÄ™ mechanizmu" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "Nie można połączyć z IBus.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "jÄ™zyk: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "Nie ustawiono żadnego mechanizmu.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "Ustawienie globalnego mechanizmu siÄ™ nie powiodÅ‚o.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "Uzyskanie globalnego mechanizmu siÄ™ nie powiodÅ‚o.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "Odczytuje pamięć podrÄ™cznÄ… rejestru systemu." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "Odczytuje PLIK pamiÄ™ci podrÄ™cznej rejestru." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "Pamięć podrÄ™czna rejestru jest nieprawidÅ‚owa.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "Zapisuje pamięć podrÄ™cznÄ… rejestru systemu." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "Zapisuje PLIK pamiÄ™ci podrÄ™cznej systemu." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "Przywracanie…" #: ../tools/main.vala:318 msgid "Done" msgstr "Gotowe" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "Ustawia lub uzyskuje mechanizm" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "KoÅ„czy dziaÅ‚anie usÅ‚ugi ibus-daemon" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "WyÅ›wietla dostÄ™pne mechanizmy" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(Niezaimplementowane)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "Ponownie uruchamia usÅ‚ugÄ™ ibus-daemon" #: ../tools/main.vala:342 msgid "Show version" msgstr "WyÅ›wietla wersjÄ™" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "WyÅ›wietla zawartość pamiÄ™ci podrÄ™cznej rejestru" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "Tworzy pamięć podrÄ™cznÄ… rejestru" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "WyÅ›wietla adres D-Bus usÅ‚ugi ibus-daemon" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "WyÅ›wietla wartoÅ›ci konfiguracji" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "Przywraca wartoÅ›ci konfiguracji" #: ../tools/main.vala:348 msgid "Show this information" msgstr "WyÅ›wietla tÄ™ informacjÄ™" #: ../tools/main.vala:354 #, c-format msgid "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Użycie: %s POLECENIE [OPCJA...]\n" "\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "Polecenia:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s jest nieznanym poleceniem.\n" #: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 msgid "IBus Panel" msgstr "Panel IBus" #: ../ui/gtk3/panel.vala:731 msgid "IBus Update" msgstr "Aktualizacja IBus" #: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 msgid "Super+space is now the default hotkey." msgstr "DomyÅ›lnym przełącznikiem sÄ… teraz klawisze Super+Spacja." #: ../ui/gtk3/panel.vala:1086 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" "IBus jest inteligentnÄ… magistralÄ… wprowadzania dla systemu Linux/UNIX." #: ../ui/gtk3/panel.vala:1090 msgid "translator-credits" msgstr "Piotr DrÄ…g , 2009-2014" #: ../ui/gtk3/panel.vala:1109 msgid "Preferences" msgstr "Preferencje" #: ../ui/gtk3/panel.vala:1119 msgid "Restart" msgstr "Uruchom ponownie" #: ../ui/gtk3/panel.vala:1123 msgid "Quit" msgstr "ZakoÅ„cz" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/zh_HK.po0000644000000000000000000004127512551654123011426 00000000000000# translation of zh_TW.po to Traditional Chinese # Traditional Chinese translation for ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Cheng-Chia Tseng , 2010 # Peng Huang , 2008 # Peng Huang , 2008 # Terry Chuang , 2010 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:50+0000\n" "Last-Translator: Terry Chuang \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_HK\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "æ°´å¹³" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "垂直" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "左上角" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "å³ä¸Šè§’" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "左下角" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "å³ä¸‹è§’" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "自訂" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "總是" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus å好設定" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "用來切æ›åˆ°æ¸…單內下一個輸入法的快æ·éµ" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "下一個輸入法:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "用來切æ›åˆ°æ¸…單內上一個輸入法的快æ·éµ" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "上一個輸入法:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "用來開啟或關閉輸入法的快æ·éµ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "啟用或åœç”¨ï¼š" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "éµç›¤å¿«æ·éµ" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "設置查詢表單內候é¸å­—詞的排列方å‘" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "候é¸è©žæŽ’列方å‘:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "設置 ibus 如何顯示或隱è—語言列的行為" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "èªžè¨€é¢æ¿ä½ç½®ï¼š" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "在系統匣內顯示圖示" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "在語言列上顯示輸入法å稱" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ç•¶é¸å–時在語言列上輸入法å稱" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "在應用程å¼è¦–窗中內嵌編輯模å¼" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "在應用程å¼è¦–窗中內嵌輸入法的é å…ˆç·¨è¼¯æ–‡å­—" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "使用自訂字型:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "字型與風格" #: ../setup/setup.ui.h:34 msgid "General" msgstr "通用" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "加入(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "加入é¸å–的輸入法到已啟用的輸入法內" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "移除(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "從已啟用的輸入法中移除所é¸çš„輸入法" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "å‘上(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移所é¸å–的輸入法" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "å‘下(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "下移所é¸å–的輸入法" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "關於(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "顯示所é¸å–的輸入法資訊" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "å好設定(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "輸入法" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "使用系統éµç›¤é…ç½®" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "使用系統éµç›¤ (XKB) é…ç½®" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "éµç›¤é…ç½®" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "在所有的應用程å¼ä¸­å…±äº«åŒä¸€å€‹è¼¸å…¥æ³•" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "全域輸入法設定值" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "進階" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\n智慧型輸入框架\n首é : https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "在登入時啟動 ibus" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "啟動" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "關於" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "關閉(_C)" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "é å…ˆè¼‰å…¥å¼•擎" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "ç•¶ ibus 啟動時é å…ˆè¼‰å…¥å¼•擎" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "觸發用快æ·éµ" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "「下一個引擎ã€å¿«æ·éµ" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "「上一個引擎ã€å¿«æ·éµ" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "自動隱è—" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "èªžè¨€é¢æ¿ä½ç½®" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "語言列的ä½ç½®ã€‚0 = 左上角, 1 = å³ä¸Šè§’, 2 = 左下角, 3 = å³ä¸‹è§’, 4 = 自訂" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "查é¸è¡¨å–®è¡¨æŽ’列方å‘" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "查詢表單的排列方å‘。0 = 水平,1 = 垂直" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "顯示輸入法å稱" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "使用自訂字型" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "èªžè¨€é¢æ¿æ˜¯å¦ä½¿ç”¨è‡ªè¨‚å­—åž‹" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "自訂字型" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "ç‚ºèªžè¨€é¢æ¿è‡ªè¨‚å­—åž‹" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "內嵌編輯模å¼" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "在應用程å¼è¦–窗中內嵌編輯模å¼" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "使用全域輸入法" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "版權所有 (c) 2007-2010 黃鵬\n版權所有 (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "其它" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "語言:%s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "éµç›¤é…ç½®: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "作者:%s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "æè¿°ï¼š\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "é¸å–輸入法" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "éµç›¤" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "éµç›¤å¿«æ·éµ" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "按éµç¢¼ï¼š" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "çµ„åˆæŒ‰éµï¼š" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "套用(_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "刪除(_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "請按一個éµç›¤æŒ‰éµ (或是按éµçµ„åˆ)\nç•¶æ‚¨æ”¾é–‹æŒ‰éµæ™‚,å°è©±æ¡†æœƒè‡ªå‹•關閉。" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "請按一個éµç›¤æŒ‰éµ (或是按éµçµ„åˆ)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "確定(_O)" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "為 %s é¸å–éµç›¤å¿«æ·éµ" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Ding-Yi Chen 陳定彞 , 2009\nCheng-Chia Tseng , 2010" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "å好設定" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "釿–°å•Ÿå‹•" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "çµæŸ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/it.po0000644000000000000000000004663312551654123011042 00000000000000# translation of ibus.pot to Italian # Italian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # fvalen , 2012-2013 # fvalen , 2013 # fvalen , 2012 # Gruppo traduzione Italiano di Ubuntu , 2009 # milo , 2009 # milo , 2009 # primes2h , 2009 # primes2h , 2009 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: fvalen \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Orizzontale" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Verticale" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Angolo superiore sinistro" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Angolo superiore destro" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Angolo inferiore sinistro" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Angolo inferiore destro" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Personalizzato" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Sempre" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Preferenze di IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "I tasti scorciatoia per passare al metodo di input successivo nell'elenco" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Metodo di input successivo:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "I tasti scorciatoia per passare al metodo di input precedente nell'elenco" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Metodo di input precedente:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Abilitare o disabilitare:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "Abilita:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "Disabilita:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Scorciatoie da tastiera" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Imposta l'orientamento dei candidati nella tabella di ricerca" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Orientamento dei candidati:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Imposta il comportamento di IBus su come mostrare o nascondere la barra della lingua" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Posizione pannello della lingua:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Mostrare l'icona nell'area di notifica" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Mostrare il nome del metodo di input nella barra della lingua" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Quando la casella è spuntata mostra il nome del metodo di input nella barra della lingua" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Inserisce il testo premodificato del metodo di input nella finestra dell'applicazione" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Usare carattere personalizzato:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Tipo di carattere e stile" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Generali" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "A_ggiungi" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Aggiunge il metodo selezionato ai metodi di input abilitati" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Rimuovi" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Rimuove il metodo selezionato dai metodi di input abilitati" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Su" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Sposta in alto il metodo selezionato nei metodi di input abilitati" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Giù" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Sposta in basso il metodo selezionato nei metodi di input abilitati" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "I_nformazioni" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Mostra le informazioni sul metodo di input selezionato" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "Preferen_ze" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "Mostra l'impostazione dell'input method selezionato" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Metodo di input" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Usa la disposizione di tastiera del sistema" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Usa la disposizione di tastiera del sistema (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Disposizione tastiera" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Condivide lo stesso metodo di input tra le applicazioni" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Seleziona un metodo di input" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Avanzate" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nIl bus di input intelligente\nSito web: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Avvia IBus all'accesso" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Avvio" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Informazioni" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Chiudi" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Pre-carica i motori" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Precarica i motori durante l'avvio di ibus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "Ordine motori" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "Ordine motori salvati nell'elenco del metodo di input" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "Ritardo popup in millisecondi per la finestra del selettore IME" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Imposta ritardo del popup in millisecondi per mostrare la finestra del selettore IME. Il valore predefinito è 400. 0 = Mostra la finestra immediatamente. 0 < Ritardo in millisecondi. 0 > Non mostrare la finestra e passa ai motori prec/succ." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Tasto di scelta rapida di avvio" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Attiva i tasti scorciatoia per gtk_accelerator_parse" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "Abilita i tasti scorciatoia" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "I tasti scorciatoia per abilitare l'input method" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "Disabilita i tasti scorciatoia" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "I tasti scorciatoia per disabilitare l'input method" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Motore dei tasti di scelta rapida successivo" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "I tasti scorciatoia per passare al metodo di input successivo nell'elenco" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Motore dei tasti di scelta rapida precedente" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "I tasti scorciatoia per passare al metodo di input precedente" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Nasconde automaticamente" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Posizione pannello della lingua" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "La posizione del pannello della lingua. 0 = Angolo in alto a sinistra, 1 = Angolo in alto a destra, 2 = Angolo in basso a sinistra, 3 = Angolo in basso a destra, 4 = Personalizzata" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Orientamento della tabella di ricerca" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientamento della tabella di ricerca. 0 = Orizzontale, 1 = Verticale" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Mostra il nome del metodo di input" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Usare carattere personalizzato" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Usa un tipo di carattere personalizzato per il pannello della lingua" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Carattere personalizzato" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Nome del tipo di carattere personalizzato per il pannello della lingua" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Inserire il testo pre-modificato" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Usa il metodo di input globale" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "Abilita per impostazione predefinita il metodo di input" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "Abilita per impostazione predefinita il metodo di input quando le applicazioni ottengono l'input focus" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "Mantieni i prefissi dei nomi DConf" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefissi di chiavi DConf per arrestare la conversione dei nomi" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright © 2007-2010 Peng Huang\nCopyright © 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Altro" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Lingua: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposizione tastiera: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Autore: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Descrizione:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Seleziona un metodo di input" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "Imposta Preferenze di IBus" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Codice del tasto:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Modificatori:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "A_pplica" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "Eli_mina" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Premere un tasto (o una combinazione di tasti).\nLa finestra verrà chiusa dopo il rilascio del tasto stesso." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Premere un tasto (o una combinazione di tasti)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "A_nnulla" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Usa i tasti scorciatoia e shift per passare al metodo di input successivo" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Il demone IBus non è in esecuzione. Desideri avviarlo?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus è stato avviato! Se non puoi utilizzare IBus aggiungi le seguenti righe in $HOME/.bashrc; successivamente eseguire una nuova registrazione sul desktop.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus\"" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Impossibile avviare il demone IBus in %d secondi" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selezione delle scorciatoie da tastiera per %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "selezione metodi di input in corso" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "Elenca solo il nome del motore" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "Impossibile collegarsi a IBus.\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "lingua: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "Nessun motore impostato.\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "Impostazione motore globale fallita.\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "Acquisizione motore globale fallita.\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "Utilizzo: %s COMANDO [OPZIONE...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "Comandi:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s è un comando sconosciuto!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus è un bus di input intelligente per Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Launchpad Contributions:\n Sergio Zanchetta https://launchpad.net/~primes2h" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Preferenze" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Riavvia" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Esci" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/bn_IN.po0000644000000000000000000010014112551654123011374 00000000000000# translation of ibus.pot to Bengali (India) # Bengali (India) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Saibal Ray, 2013 # Runa Bhattacharjee , 2009 # runab , 2009, 2010 # runa , 2012 # runab , 2009-2010 # runa , 2012 # Saibal Ray, 2013-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-11-11 10:28+0000\n" "Last-Translator: Saibal Ray\n" "Language-Team: Bengali (India) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bn_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "অনà§à¦­à§‚মিক" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "উলà§à¦²à¦®à§à¦¬" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "উপরে বাà¦à¦¦à¦¿à¦•ের কোণায়" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "উপরে ডানদিকের কোণায়" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "নীচে বাà¦à¦¦à¦¿à¦•ের কোণায়" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "নীচে ডানদিকের কোণায়" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "দেখাবেন না" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ ভাবে লà§à¦•ান" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "সরà§à¦¬à¦¦à¦¾" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus সংকà§à¦°à¦¾à¦¨à§à¦¤ পছনà§à¦¦" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ খোলা ও বনà§à¦§ করার জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ শরà§à¦Ÿ-কাট কি নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "সকà§à¦°à¦¿à§Ÿ অথা নিষà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "সকà§à¦°à¦¿à§Ÿ করà§à¦¨:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "নিষà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "লà§à¦•-আপ টেবিলের মধà§à¦¯à§‡ পà§à¦°à¦¯à§‹à¦œà§à¦¯ বিকলà§à¦ªà¦—à§à¦²à¦¿à¦° দিশা নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦° দিশা:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষার বার পà§à¦°à¦¦à¦°à§à¦¶à¦¨ ও আড়াল করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ ibus-র আচরণ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "বিশিষà§à¦Ÿà¦¤à¦¾ পà§à¦¯à¦¾à¦¨à§‡à¦² দেখান:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "সিসà§à¦Ÿà§‡à¦® টà§à¦°à§‡à¦° মধà§à¦¯à§‡ আইকন পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "ভাষার বারের মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবকà§à¦¸ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ হলে, ভাষার বারের মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ পà§à¦°à§Ÿà§‹à¦— করà§à¦¨:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ফনà§à¦Ÿ ও বিনà§à¦¯à¦¾à¦¸" #: ../setup/setup.ui.h:34 msgid "General" msgstr "সাধারণ" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "যোগ করà§à¦¨ (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকা যোগ করা হবে" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "মà§à¦›à§‡ ফেলà§à¦¨ (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকা থেকে নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿ মà§à¦›à§‡ ফেলা হবে" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "উপরে (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকায় উপরে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হবে" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "নীচে (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকায় নীচে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হবে" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "পরিচিতি (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "পছনà§à¦¦ (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° সেট-আপ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "কীবোরà§à¦¡ শরà§à¦Ÿà¦•াট কী টিপে বা পà§à¦¯à¦¾à¦¨à§‡à¦² অাইকনে কà§à¦²à¦¿à¦• করে, উপরের তালিকায় নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦Ÿà¦¿ থেকে সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ পালà§à¦Ÿà¦¾à¦¨à§‹ যেতে পারে।" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "সিসà§à¦Ÿà§‡à¦® কি-বোরà§à¦¡ বিনà§à¦¯à¦¾à¦¸ পà§à¦°à§Ÿà§‹à¦— করা হবে" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "সিসà§à¦Ÿà§‡à¦® কি-বোরà§à¦¡ (XKB) বিনà§à¦¯à¦¾à¦¸ পà§à¦°à§Ÿà§‹à¦— করা হবে" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "কি-বোরà§à¦¡à§‡à¦° বিনà§à¦¯à¦¾à¦¸" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "সকল অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের মধà§à¦¯à§‡ à¦à¦•ই ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° সারà§à¦¬à¦œà¦¨à§€à¦¨ বৈশিষà§à¦Ÿà§à¦¯" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "উনà§à¦¨à¦¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nবà§à¦¦à§à¦§à¦¿à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ ইনপà§à¦Ÿ বাস\nহোম-পেজ: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "লগ-ইন করার সময় ibus আরমà§à¦­ করা হবে" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "পà§à¦°à¦¾à¦°à¦®à§à¦­" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "পরিচিতি" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "বনà§à¦§ করà§à¦¨ (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "ইঞà§à¦œà¦¿à¦¨ পূরà§à¦¬à§‡ লোড করা হবে" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus আরমà§à¦­à§‡à¦° সময় ইঞà§à¦œà¦¿à¦¨à¦—à§à¦²à¦¿ পূরà§à¦¬à§‡ লোড করা হবে" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "ইঞà§à¦œà¦¿à¦¨à§‡à¦° অনà§à¦•à§à¦°à¦®" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকায় সংরকà§à¦·à¦¿à¦¤ ইঞà§à¦œà¦¿à¦¨à§‡à¦° অনà§à¦•à§à¦°à¦®" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME সà§à¦¯à§à¦‡à¦šà¦¾à¦° উইনà§à¦¡à§‹à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ পপ-অাপ মিলিসেকেনà§à¦¡ বিলমà§à¦¬" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME সà§à¦¯à§à¦‡à¦šà¦¾à¦° উইনà§à¦¡à§‹ দেখাতে পপ-অাপ বিলমà§à¦¬ মিলিসেকেনà§à¦¡ সেট করà§à¦¨à¥¤ ডিফলà§à¦Ÿ হল 400. 0 = উইনà§à¦¡à§‹ সংগে সংগে দেখান। 0 < মিলিসেকেনà§à¦¡ বিলমà§à¦¬à¥¤ 0 > উইনà§à¦¡à§‹ দেখাবেন না à¦à¦¬à¦‚ পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ à¦à¦¬à¦‚ পরবরà§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§‡ পালà§à¦Ÿà¦¾à¦¨à¥¤" #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "সংরকà§à¦·à¦¿à¦¤ সংসà§à¦•রণ নমà§à¦¬à¦°" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "পূরà§à¦¬à§‡ ইনসà§à¦Ÿà¦² করা ibus à¦à¦¬à¦‚ বরà§à¦¤à¦®à¦¾à¦¨ ibus à¦à¦° à¦à¦•টির মধà§à¦¯à§‡ পারà§à¦¥à¦•à§à¦¯ যাচাই করতে সংরকà§à¦·à¦¿à¦¤ সংসà§à¦•রণ নমà§à¦¬à¦° বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হবে।" #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "লà§à¦¯à¦¾à¦Ÿà¦¿à¦¨ সজà§à¦œà¦¾ যাতে কোনো ASCII নেই" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US সজà§à¦œà¦¾ লà§à¦¯à¦¾à¦Ÿà¦¿à¦¨ সজà§à¦œà¦¾à¦¤à§‡ পà§à¦°à§Ÿà§‹à¦— করা হয়। বৈচিতà§à¦°à§à¦¯ বাদ দেওয়া হতে পারে।" #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ইঞà§à¦œà¦¿à¦¨à¦—à§à¦²à¦¿ পালà§à¦Ÿà¦¾à¦¨à§‹à¦° সময়ে, .xmodmap বা .Xmodmap বিদà§à¦¯à¦®à¦¾à¦¨ থাকলে xmodmap চালান।" #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "টà§à¦°à¦¿à¦—ারের শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse à¦à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ শরà§à¦Ÿà¦•াট কী টà§à¦°à¦¿à¦—ার" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "শরà§à¦Ÿ-কাট কি সকà§à¦°à¦¿à§Ÿ করà§à¦¨" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ চালৠকরার জনà§à¦¯ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "শরà§à¦Ÿ-কাট কি নিষà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বনà§à¦§ করার জনà§à¦¯ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "পরবরà§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§‡à¦° জনà§à¦¯ শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§‡à¦° শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦­à¦¾à¦¬à§‡ আড়াল করা হবে" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "বিশিষà§à¦Ÿà¦¤à¦¾ পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অাচরণ। 0 = দেখাবেন না, 1 = সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ ভাবে লà§à¦•ানো, 2 = সরà§à¦¬à¦¦à¦¾ দেখান" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨à¥¤ 0 = উপরে বাà¦à¦¦à¦¿à¦•ের কোণায়, 1 = উপরে ডানদিকের কোণায়, 2 = নীচে বাà¦à¦¦à¦¿à¦•ের কোণায়, 3 = নীচে ডানদিকের কোণায়, 4 = সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "পà§à¦¯à¦¾à¦¨à§‡à¦² সরà§à¦¬à¦¦à¦¾ দেখানো হলে, ইনপà§à¦Ÿ কারà§à¦¸à¦¾à¦° অনà§à¦¸à¦°à¦£ করà§à¦¨" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "সতà§à¦¯ হলে, পà§à¦¯à¦¾à¦¨à§‡à¦² সরà§à¦¬à¦¦à¦¾ দেখানো হলে পà§à¦¯à¦¾à¦¨à§‡à¦² ইনপà§à¦Ÿ কারà§à¦¸à¦¾à¦° অনà§à¦¸à¦°à¦£ করে। মিথà§à¦¯à¦¾ হলে, পà§à¦¯à¦¾à¦¨à§‡à¦² à¦à¦•টি নিরà§à¦¦à¦¿à¦·à§à¦Ÿ অবসà§à¦¥à¦¾à¦¨à§‡ দেখানো হয়।" #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "বিশিষà§à¦Ÿà¦¤à¦¾ পà§à¦¯à¦¾à¦¨à§‡à¦² দেখাতে মিলিসেকেনà§à¦¡" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "ফোকাস-ইন বা বিশিষà§à¦Ÿà¦¤à¦¾ পরিবরà§à¦¤à¦¿à¦¤ হওয়ার পরে, বিশিষà§à¦Ÿà¦¤à¦¾ পà§à¦¯à¦¾à¦¨à§‡à¦² দেখাতে মিলিসেকেনà§à¦¡à¥¤" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "লà§à¦•-আপ টেবিলের দিশা" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লà§à¦•-আপ টেবিলের দিশা। 0 (০) = অনà§à¦­à§à¦®à¦¿à¦•, 1 (à§§) = উলà§à¦²à¦®à§à¦¬" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB অাইকনের RGBA মান" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB অাইকন সজà§à¦œà¦¾ সà§à¦Ÿà§à¦°à§€à¦‚ দেখায় à¦à¦¬à¦‚ সà§à¦Ÿà§à¦°à§€à¦‚ RGBA মানের সাথে রেনà§à¦¡à¦¾à¦° হয়। RGBA মান হতে পারে 1. X11 থেকে à¦à¦•টি রঙের নাম, 2. '#rrggbb' থেকে à¦à¦•টি হেকà§à¦¸ মান যেখানে 'r', 'g' à¦à¦¬à¦‚ 'b' হল লাল, সবà§à¦œ, à¦à¦¬à¦‚ নীলের হেকà§à¦¸ ডিজিট 3. à¦à¦•টি RGB রঙ, 'rgb(r,g,b)' ফরà§à¦®à§‡ অথবা 4. à¦à¦•টি RGBA রঙ, 'rgba(r,g,b,a)' ফরà§à¦®à§‡, যেখানে 'r', 'g', à¦à¦¬à¦‚ 'b' হয় 0 থেকে 255 রেঞà§à¦œà§‡ পূরà§à¦£à¦¸à¦‚খà§à¦¯à¦¾ বা 0% থেকে 100% রেঞà§à¦œà§‡ শতাংশ মান, à¦à¦¬à¦‚ 'a' হল à¦à¦•টি ফà§à¦²à§‹à¦Ÿà¦¿à¦‚ পয়েনà§à¦Ÿ মান, অালফার 0 থেকে 1 রেঞà§à¦œà§‡à¥¤" #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ পà§à¦°à§Ÿà§‹à¦— করà§à¦¨" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° জনà§à¦¯ সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° নাম বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° জনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° নাম" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশন উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "সারà§à¦¬à¦œà¦¨à§€à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ " #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "ডিফলà§à¦Ÿ অবসà§à¦¥à¦¾à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সকà§à¦°à¦¿à§Ÿ করা হবে" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "ইনপà§à¦Ÿ পà§à¦°à¦¾à¦ªà§à¦¤ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনে ফোকাস করা হলে, ডিফলà§à¦Ÿ রূপে ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সকà§à¦°à¦¿à§Ÿ করা হবে" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf দà§à¦¬à¦¾à¦°à¦¾ নেম পà§à¦°à§‡à¦«à¦¿à¦•à§à¦¸ সংরকà§à¦·à¦£ করা হবে" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "নেম পরিবরà§à¦¤à¦¨ পà§à¦°à¦¤à¦¿à¦°à§‹à¦§ করার জনà§à¦¯ DConf-কির পà§à¦°à§‡à¦«à¦¿à¦•à§à¦¸" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ার (c) ২০০৭-২০০৯ পেং হà§à§Ÿà¦¾à¦‚\nসà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ার (c) ২০০৭-২০০৯ Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "অনà§à¦¯à¦¾à¦¨à§à¦¯" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "ভাষা: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "কি-বোরà§à¦¡ বিনà§à¦¯à¦¾à¦¸: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "নিরà§à¦®à¦¾à¦¤à¦¾: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "বিবরণ:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "à¦à¦•টি ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "বাতিল (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "অারো…" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus সংকà§à¦°à¦¾à¦¨à§à¦¤ পছনà§à¦¦ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "কি-র কোড:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "পরিবরà§à¦¤à¦•:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "পà§à¦°à§Ÿà§‹à¦— করà§à¦¨ (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "মà§à¦›à§‡ ফেলà§à¦¨ (_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "অনà§à¦—à§à¦°à¦¹ করে কোনো কি (অথবা কি সংকলন) টিপà§à¦¨à¥¤\nকি মà§à¦•à§à¦¤ করা হলে à¦à¦‡ ডায়লগ বকà§à¦¸à¦Ÿà¦¿ বনà§à¦§ করা হবে।" #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "অনà§à¦—à§à¦°à¦¹ করে à¦à¦•টি কি (অথবা কি সংকলন) টিপà§à¦¨" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "ঠিক আছে (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ শিফà§à¦Ÿ সমেত শরà§à¦Ÿ-কাট কি বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ডেমন বরà§à¦¤à¦®à¦¾à¦¨à§‡ চলছে না। à¦à¦Ÿà¦¿ আরমà§à¦­ করা হবে কি?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus আরমà§à¦­ করা হয়েছে! IBus বà§à¦¯à¦¬à¦¹à¦¾à¦° করা সমà§à¦­à¦¬ না হলে $HOME/.bashrc ফাইলের মধà§à¦¯à§‡ নিমà§à¦¨à¦²à¦¿à¦–িত পংকà§à¦¤à¦¿à¦—à§à¦²à¦¿ যোগ করে ডেসà§à¦•টপে পà§à¦¨à¦°à¦¾à§Ÿ লগ-ইন করà§à¦¨à¥¤\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ডেমনটি %d সেকেনà§à¦¡à§‡ আরমà§à¦­ করা যায়নি।" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-র জনà§à¦¯ কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট ধারà§à¦¯ করà§à¦¨" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ পরিবরà§à¦¤à¦¨" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ইঞà§à¦œà¦¿à¦¨à§‡à¦° নামের তালিকা পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus-র সাথে সংযোগ করতে বà§à¦¯à¦°à§à¦¥à¥¤\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "ভাষা: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "কোনো ইঞà§à¦œà¦¿à¦¨ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি।\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "গà§à¦²à§‹à¦¬à¦¾à¦² ইঞà§à¦œà¦¿à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করতে বà§à¦¯à¦°à§à¦¥à¥¤\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "গà§à¦²à§‹à¦¬à¦¾à¦² ইঞà§à¦œà¦¿à¦¨ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥à¥¤\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "সিসà§à¦Ÿà§‡à¦® রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ পড়à§à¦¨à¥¤" #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ FILE পড়à§à¦¨à¥¤" #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ অবৈধ।\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "সিসà§à¦Ÿà§‡à¦® রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ লিখà§à¦¨à¥¤" #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ FILE লিখà§à¦¨à¥¤" #: ../tools/main.vala:304 msgid "Resetting…" msgstr "পà§à¦¨à¦ƒà¦¸à§‡à¦Ÿâ€¦" #: ../tools/main.vala:318 msgid "Done" msgstr "সমà§à¦ªà¦¨à§à¦¨" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "ইঞà§à¦œà¦¿à¦¨ সেট করà§à¦¨ বা পান" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon থেকে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "উপলবà§à¦§ ইঞà§à¦œà¦¿à¦¨à¦—à§à¦²à¦¿ দেখান" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¿à¦¤ নয়)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon বনà§à¦§ করে অাবার চালৠকরà§à¦¨" #: ../tools/main.vala:342 msgid "Show version" msgstr "সংসà§à¦•রণ দেখান" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶à§‡à¦° বিষয়বসà§à¦¤à§ দেখান" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "রেজিসà§à¦Ÿà§à¦°à¦¿ কà§à¦¯à¦¾à¦¶ তৈরি করà§à¦¨" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon à¦à¦° D-Bus ঠিকানা পà§à¦°à¦¿à¦¨à§à¦Ÿ করà§à¦¨" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "কনফিগারেশন মানগà§à¦²à¦¿ দেখান" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "কনফিগারেশন মানগà§à¦²à¦¿ পà§à¦¨à¦ƒà¦¸à§‡à¦Ÿ করà§à¦¨" #: ../tools/main.vala:348 msgid "Show this information" msgstr "à¦à¦‡ তথà§à¦¯ দেখান" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦ªà§à¦°à¦£à¦¾à¦²à§€: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "কমানà§à¦¡:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s à¦à¦•টি অজানা কমানà§à¦¡!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus অাপডেট" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space হল à¦à¦–ন ডিফলà§à¦Ÿ হট-কী।" #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix-র সাথে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ বà§à¦¦à§à¦§à¦¿à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ ইনপà§à¦Ÿ বাস হল IBus" #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "রà§à¦£à¦¾ ভটà§à¦Ÿà¦¾à¦šà¦¾à¦°à§à¦¯à§à¦¯ (runab@fedoraproject.org)" #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "পছনà§à¦¦" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/bn.po0000644000000000000000000005676712551654123011036 00000000000000# translation of ibus.pot to Bengali # Bengali translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Ayesha Akhtar , 2012 # Mahay Alam Khan , 2012 # newton , 2012 # newton , 2012 # Robin Mehdee , 2012 # Runa Bhattacharjee , 2009 # runab , 2009, 2010 # runab , 2009-2010 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Ayesha Akhtar \n" "Language-Team: Bengali \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "অনà§à¦­à§‚মিক" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "উলà§à¦²à¦®à§à¦¬" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "উপরে বাà¦à¦¦à¦¿à¦•ের কোণায়" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "উপরে ডানদিকের কোণায়" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "নীচে বাà¦à¦¦à¦¿à¦•ের কোণায়" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "নীচে ডানদিকের কোণায়" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "সরà§à¦¬à¦¦à¦¾" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus সংকà§à¦°à¦¾à¦¨à§à¦¤ পছনà§à¦¦" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ খোলা ও বনà§à¦§ করার জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ শরà§à¦Ÿ-কাট কি নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "সকà§à¦°à¦¿à§Ÿ অথা নিষà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "সকà§à¦°à¦¿à¦¯à¦¼:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "লà§à¦•-আপ টেবিলের মধà§à¦¯à§‡ পà§à¦°à¦¯à§‹à¦œà§à¦¯ বিকলà§à¦ªà¦—à§à¦²à¦¿à¦° দিশা নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦° দিশা:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষার বার পà§à¦°à¦¦à¦°à§à¦¶à¦¨ ও আড়াল করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ ibus-র আচরণ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "সিসà§à¦Ÿà§‡à¦® টà§à¦°à§‡à¦° মধà§à¦¯à§‡ আইকন পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "ভাষার বারের মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবকà§à¦¸ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ হলে, ভাষার বারের মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ পà§à¦°à§Ÿà§‹à¦— করà§à¦¨:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ফনà§à¦Ÿ ও বিনà§à¦¯à¦¾à¦¸" #: ../setup/setup.ui.h:34 msgid "General" msgstr "সাধারণ" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "যোগ করà§à¦¨ (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকা যোগ করা হবে" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "অপসারণ (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকা থেকে নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿ মà§à¦›à§‡ ফেলা হবে" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "উপরে (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকায় উপরে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হবে" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "নীচে (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦Ÿà¦¿, সকà§à¦°à¦¿à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° তালিকায় নীচে সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হবে" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "পরিচিতি (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "পছনà§à¦¦à¦¸à¦®à§‚হ (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ইনপà§à¦Ÿ মেথডের সেটআপ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "সিসà§à¦Ÿà§‡à¦® কি-বোরà§à¦¡ বিনà§à¦¯à¦¾à¦¸ পà§à¦°à§Ÿà§‹à¦— করা হবে" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "সিসà§à¦Ÿà§‡à¦® কি-বোরà§à¦¡ (XKB) বিনà§à¦¯à¦¾à¦¸ পà§à¦°à§Ÿà§‹à¦— করা হবে" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "কি-বোরà§à¦¡à§‡à¦° বিনà§à¦¯à¦¾à¦¸" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "সকল অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনের মধà§à¦¯à§‡ à¦à¦•ই ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° সারà§à¦¬à¦œà¦¨à§€à¦¨ বৈশিষà§à¦Ÿà§à¦¯" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "উনà§à¦¨à¦¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: us\n" "\n" "\n" "\n" msgstr "IBus\nবà§à¦¦à§à¦§à¦¿à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ ইনপà§à¦Ÿ বাস\nহোম-পেজ: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "লগ-ইন করার সময় ibus আরমà§à¦­ করা হবে" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "পà§à¦°à¦¾à¦°à¦®à§à¦­" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "পরিচিতি" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "বনà§à¦§ (_C)" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "ইঞà§à¦œà¦¿à¦¨ পূরà§à¦¬à§‡ লোড করা হবে" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "ibus আরমà§à¦­à§‡à¦° সময় ইঞà§à¦œà¦¿à¦¨à¦—à§à¦²à¦¿ পূরà§à¦¬à§‡ লোড করা হবে" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "টà§à¦°à¦¿à¦—ারের শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "শরà§à¦Ÿà¦•াট কী সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ চালৠকরার জনà§à¦¯ শরà§à¦Ÿà¦•াট কী" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "শরà§à¦Ÿà¦•াট কী নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করà§à¦¨" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ বনà§à¦§ করার জনà§à¦¯ শরà§à¦Ÿà¦•াট কী" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "পরবরà§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§‡à¦° জনà§à¦¯ শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পরবরà§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইঞà§à¦œà¦¿à¦¨à§‡à¦° শরà§à¦Ÿà¦•াট-কি" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকায় উপসà§à¦¥à¦¿à¦¤ পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¤à§‡ পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ শরà§à¦Ÿ-কাট কি" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦­à¦¾à¦¬à§‡ আড়াল করা হবে" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° অবসà§à¦¥à¦¾à¦¨à¥¤ 0 = উপরে বাà¦à¦¦à¦¿à¦•ের কোণায়, 1 = উপরে ডানদিকের কোণায়, 2 = নীচে বাà¦à¦¦à¦¿à¦•ের কোণায়, 3 = নীচে ডানদিকের কোণায়, 4 = সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "লà§à¦•-আপ টেবিলের দিশা" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লà§à¦•-আপ টেবিলের দিশা। 0 (০) = অনà§à¦­à§à¦®à¦¿à¦•, 1 (à§§) = উলà§à¦²à¦®à§à¦¬" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦° নাম পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ পà§à¦°à§Ÿà§‹à¦— করà§à¦¨" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° জনà§à¦¯ সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° নাম বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿ" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "ভাষার পà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° জনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° নাম" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশন উইনà§à¦¡à§‹à¦° মধà§à¦¯à§‡ পà§à¦°à¦¿-à¦à¦¡à¦¿à¦Ÿ টেকà§à¦¸à¦Ÿ সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করা হবে" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "সারà§à¦¬à¦œà¦¨à§€à¦¨ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ " #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "ডিফলà§à¦Ÿ অবসà§à¦¥à¦¾à§Ÿ ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সকà§à¦°à¦¿à§Ÿ করা হবে" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "ইনপà§à¦Ÿ পà§à¦°à¦¾à¦ªà§à¦¤ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশনে ফোকাস করা হলে, ডিফলà§à¦Ÿ রূপে ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ সকà§à¦°à¦¿à§Ÿ করা হবে" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ার (c) ২০০৭-২০০৯ পেং হà§à§Ÿà¦¾à¦‚\nসà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ার (c) ২০০৭-২০০৯ Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "অনà§à¦¯à¦¾à¦¨à§à¦¯" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "ভাষা: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "কি-বোরà§à¦¡ বিনà§à¦¯à¦¾à¦¸: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "নিরà§à¦®à¦¾à¦¤à¦¾: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "বিবরণ:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "à¦à¦•টি ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus সংকà§à¦°à¦¾à¦¨à§à¦¤ পছনà§à¦¦ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "কি-র কোড:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "পরিবরà§à¦¤à¦•:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "পà§à¦°à§Ÿà§‹à¦— করà§à¦¨ (_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "মà§à¦›à§‡ ফেলà§à¦¨ (_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "অনà§à¦—à§à¦°à¦¹ করে কোনো কি (অথবা কি সংকলন) টিপà§à¦¨à¥¤\nকি মà§à¦•à§à¦¤ করা হলে à¦à¦‡ ডায়লগ বকà§à¦¸à¦Ÿà¦¿ বনà§à¦§ করা হবে।" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "অনà§à¦—à§à¦°à¦¹ করে à¦à¦•টি কি (অথবা কি সংকলন) টিপà§à¦¨" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "বাতিল (_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "ঠিক আছে (_O)" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-র জনà§à¦¯ কি-বোরà§à¦¡ শরà§à¦Ÿ-কাট ধারà§à¦¯ করà§à¦¨" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix-র সাথে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ বà§à¦¦à§à¦§à¦¿à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ ইনপà§à¦Ÿ বাস হল IBus" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "রà§à¦£à¦¾ ভটà§à¦Ÿà¦¾à¦šà¦¾à¦°à§à¦¯à§à¦¯ (runab@fedoraproject.org)" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "পছনà§à¦¦à¦¸à¦®à§‚হ" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ur.po0000644000000000000000000003237712551654123011054 00000000000000# translation of ibus.pot to Urdu # Urdu translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-12 15:12+0900\n" "PO-Revision-Date: 2014-02-12 07:40+0000\n" "Last-Translator: fujiwara \n" "Language-Team: Urdu \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ur\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "" #: ../setup/setup.ui.h:34 msgid "General" msgstr "" #: ../setup/setup.ui.h:35 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:36 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:38 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:40 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:41 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:42 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:43 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:44 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:45 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:46 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:47 msgid "Global input method settings" msgstr "" #: ../setup/setup.ui.h:48 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:49 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:56 msgid "Start ibus on login" msgstr "" #: ../setup/setup.ui.h:57 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:58 ../setup/engineabout.py:34 msgid "About" msgstr "" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:54 msgid "Keyboard shortcuts" msgstr "" #: ../setup/keyboardshortcut.py:65 msgid "Key code:" msgstr "" #: ../setup/keyboardshortcut.py:80 msgid "Modifiers:" msgstr "" #: ../setup/keyboardshortcut.py:250 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:252 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "" #: ../ui/gtk3/panel.vala:743 msgid "Restart" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.11/po/vi.po0000644000000000000000000004254312551654123011040 00000000000000# translation of ibus.pot to Vietnamese # Vietnamese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Lê Quốc Tuấn , 2009 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Lê Quốc Tuấn \n" "Language-Team: Vietnamese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "Ngang" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "Dá»c" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "Góc trên bên trái" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "Góc trên bên phải" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "Góc dưới bên trái" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "Góc dưới bên phải" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "Tùy biến" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "Luôn luôn" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "Tùy chá»n IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "Phím tắt dùng để chuyển đến kiểu gõ kế tiếp trong danh sách" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Kiểu gõ kế tiếp:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Phím tắt dùng để chuyển vá» kiểu gõ trước trong danh sách" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "Kiểu gõ trước:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "Phím tắt để bật hoặc tắt kiểu gõ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Bật hoặc tắt:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Phím tắt" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "Äặt hướng cá»§a từ gợi ý trong bảng tra cứu" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Hướng danh sách từ ứng cá»­:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Thiết lập việc ẩn hay hiển thị thanh ngôn ngữ" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "Vị trí thanh ngôn ngữ:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "Hiển thị biểu tượng trên khay hệ thống" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "Hiển thị tên kiểu gõ trên thanh ngôn ngữ" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "Hiển thị tên cá»§a kiểu gõ trên thanh ngôn ngữ khi đánh dấu vào ô kiểm" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "Nhúng văn bản tiá»n soạn thảo trong cá»­a sổ ứng dụng" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "Nhúng văn bản tiá»n soạn thảo cá»§a bá»™ gõ trong cá»­a sổ ứng dụng" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Dùng phông chữ tùy biến:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Phông và kiểu" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Chung" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "Thê_m" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "Thêm kiểu gõ đã chá»n vào những kiểu gõ cho phép sá»­ dụng" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Bá»" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "Xóa kiểu gõ đã chá»n ra khá»i những kiểu gõ cho phép sá»­ dụng" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Lên" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "Di chuyển kiểu gõ đã chá»n lên trên trong những kiểu gõ cho phép sá»­ dụng" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Xuống" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "Di chuyển kiểu gõ đã chá»n xuống dưới trong những kiểu gõ cho phép sá»­ dụng" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "G_iá»›i thiệu" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "Hiển thị thông tin vá» kiểu gõ đã chá»n" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "Tù_y thích" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Kiểu gõ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "Dùng kiểu bố trí bàn phím cá»§a hệ thống" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "Dùng kiểu bố trí bàn phím hệ thống (XKB)" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "Bố trí bàn phím" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "Chia sẻ cùng kiểu gõ cho tất cả các ứng dụng" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Chá»n má»™t kiểu gõ" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Nâng cao" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nBá»™ gõ thông minh\nTrang chá»§: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Khởi động ibus khi đăng nhập" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Khởi động" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "Giá»›i thiệu" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "Äón_g" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "Nạp trước các kiểu gõ" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "Nạp trước các kiểu gõ khi khởi động ibus" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "Phím tắt kích hoạt" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "Phím tắt cho kiểu gõ kế tiếp" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "Phím tắt cho kiểu gõ trước" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "Tá»± động ẩn" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "Vị trí thanh ngôn ngữ:" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "Vị trí cá»§a thanh ngôn ngữ. 0 = góc trên bên trái, 1 = góc trên bên phải, 2 = góc dưới bên trái, 3 = góc dưới bên phái, 4 = Tùy chá»n" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "Hướng cá»§a bảng tra cứu" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Hướng cá»§a bảng tra cứu. 0 = Ngang, 1 = Dá»c" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "Hiển thị tên kiểu gõ" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Dùng phông chữ tùy biến" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Dùng phông tùy biến cho thanh ngôn ngữ" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "Tùy biến phông" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Tùy biến phông cho thanh ngôn ngữ" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "Nhúng văn bản tiá»n soạn thảo" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "Nhúng văn bản tiá»n soạn thảo trong cá»­a sổ ứng dụng" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Dùng chung kiểu gõ cho toàn hệ thống" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Khác" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "Ngôn ngữ: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "Bố trí bàn phím: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "Tác giả: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "Mô tả:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Chá»n má»™t kiểu gõ" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Những phím tắt" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Mã phím:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Phím bổ sung:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "Ã_p dụng" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Xoá" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "Vui lòng nhấn má»™t phím (hoặc tổ hợp phím).\nHá»™p thoại này sẽ được đóng lại khi bạn thả phím ấn." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "Vui lòng nhấn má»™t phím (hoặc tổ hợp phím)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_Thôi" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_OK" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Chá»n phím tắt để %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus là má»™t bá»™ gõ thông minh cho Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Lê Quốc Tuấn " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Tùy thích" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Khởi động lại" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Thoát" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/ar.po0000644000000000000000000003660712551654123011030 00000000000000# translation of ibus.pot to Arabic # Arabic translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Muayyad Alsadi , 2009 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Muayyad Alsadi \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "ØªÙØ¶ÙŠÙ„ات IBus" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "طريقة الإدخال التالية" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "طريقة الإدخال السابقة" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "ØªÙØ¹ÙŠÙ‘Ù„ أو تثبيط:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "اختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "الاتجاهات المرشحة:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "الخط والتنسيق" #: ../setup/setup.ui.h:34 msgid "General" msgstr "عام" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "Ø£_ضÙ" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "ا_حذÙÙ" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "Ù_وق" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "Ø£_سÙÙ„" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_عنْ" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_Ø§Ù„ØªÙØ¶ÙŠÙ„ات" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "اختر طريقة الإدخال" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nناقل الإدخال الذكي\nالموقع: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "بدء ibus عند الولوج" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "البدء" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "حول" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "Ø£_غلق" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "استعمال خط مخصص" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "استخدم خط مخصص ÙÙŠ لوحة اللغة" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "اسم الخط المخصص للوحة اللغة" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "أخرى" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "اختر طريقة الإدخال" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "اختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "كود Ø§Ù„Ù…ÙØªØ§Ø­" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_طبّق" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "ا_حذÙ" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ÙØ¶Ù„ا اضغط Ù…ÙØªØ§Ø­ أو (عدة Ù…ÙØ§ØªÙŠØ­).\nصندوق الحوار سيغلق عند ترك Ø§Ù„Ù…ÙØªØ§Ø­." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "ÙØ¶Ù„ا اضغط Ù…ÙØªØ§Ø­ أو عدة Ù…ÙØ§ØªÙŠØ­" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "أل_غÙ" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_نعم" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "اختر الاختصار Ù„ %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "نظام IBus هو ناقل إدخال ذكي لنظام لينكس ويونكس." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Muayyad Alsadi " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "Ø§Ù„ØªÙØ¶ÙŠÙ„ات" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "إعادة تشغيل" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "أنهÙ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.11/po/fa.po0000644000000000000000000003566112551654123011013 00000000000000# translation of ibus.pot to Persian # Persian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Daniyal Yousefi , 2011 # Mostafa Daneshvar , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: danialyousefi \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "اÙÙ‚ÛŒ" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "عمودی" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "گوشه بالا سمت Ú†Ù¾" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "گوشه بالا سمت راست" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "گوشه پایین سمت Ú†Ù¾" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "چوشه پایین سمت راست" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "انتخابی" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "همیشه" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "ÙØ¹Ø§Ù„ یا ØºÛŒØ±ÙØ¹Ø§Ù„:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "ÙØ¹Ø§Ù„:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "موقعیت پنل زبان:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ùونت انتخابی" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "" #: ../setup/setup.ui.h:34 msgid "General" msgstr "اصلی" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "ا_ÙØ²ÙˆØ¯Ù†" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_حذÙ" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_بالا" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_پایین" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_درباره" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "_ترجیحات" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "Ù¾ÛŒØ´Ø±ÙØªÙ‡" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "درباره" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_بستن" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "ÙØ¹Ø§Ù„‌کردن کلیدهای میانبر" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "دیگر" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "زبان: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "نویسنده: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "شرح:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "میانبرهای ØµÙØ­Ù‡â€ŒÚ©Ù„ید" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_اعمال" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_حذÙ" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "_انصراÙ" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "_تأیید" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ترجیحات" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "راه‌اندازی مجدد" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "ترک" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.11/po/sr.po0000644000000000000000000003732712551654123011052 00000000000000# translation of ibus.pot to Serbian # Serbian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # MiloÅ¡ KomarÄević , 2009 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: MiloÅ¡ KomarÄević \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus поÑтавке" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "Следећа метода уноÑа:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "Укључи или иÑкључи:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "Пречице таÑтатуре" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "Оријентације кандидата:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "Фонт и Ñтил" #: ../setup/setup.ui.h:34 msgid "General" msgstr "Опште" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "_Додај" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "_Уклони" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "_Горе" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "_Доле" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "_О програму" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "ПоÑ_тавке" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "Изаберите методу уноÑа" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nИнтелигентна магиÑтрала уноÑа\nМатична Ñтраница: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "Покрени ibus при пријави" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "Покретање" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "О програму" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "_Затвори" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Употреби прилагођени фонт" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "КориÑти прилагођени фонт за језички панел" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "Ðазив прилагођеног фонта за језички панел" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "Друго" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "Изаберите методу уноÑа" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Пречице таÑтатуре" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "Код таÑтера:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "Модификатори:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "_Примени" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "_Обриши" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ПритиÑните таÑтер (или комбинацију таÑтера).\nПрозорче ће бити затворено када Ñе таÑтер отпуÑти." #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "ПритиÑните таÑтер (или комбинацију таÑтера)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "О_дуÑтани" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "У _реду" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Изаберите пречицу таÑтатуре за %s" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus је интелигентна магиÑтрала уноÑа за Linux/Unix." #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "Serbian " #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ПоÑтавке" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "Покрени поново" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "Изађи" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/gu.po0000644000000000000000000007377612551654123011051 00000000000000# translation of ibus.pot to Gujarati # Gujarati translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Ankit Patel , 2014 # Ankit Patel , 2010 # sweta , 2009-2010 # sweta , 2011-2013 # sweta , 2013-2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-29 09:30+0000\n" "Last-Translator: sweta \n" "Language-Team: Gujarati (http://www.transifex.com/projects/p/ibus/language/gu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "આડà«" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "ઊભà«àª‚" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ઉંચે ડાબી બાજà«àª¨à«‹ ખૂણો" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ઉંચે જમણી બાજà«àª¨à«‹ ખૂણો" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "નીચે ડાબી બાજà«àª¨à«‹ ખૂણો" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "નીચે જમણી બાજà«àª¨à«‹ ખૂણો" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "વૈવિધà«àª¯" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "બતાવશો નહિ" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "આપોઆપ છà«àªªàª¾àªµà«‹" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "હંમેશા" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus પસંદગીઓ" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "યાદીમાં પછીની ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ખસેડવા માટે ટૂંકાણ કીઓ" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "પછીની ઇનપà«àªŸ પદà«àª¦àª¤àª¿:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "યાદીમાં પહેલાંની ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ખસેડવા માટે ટૂંકાણ કીઓ" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "પહેલાંની ઇનપà«àªŸ પદà«àª¦àª¤àª¿:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ફેરબદલી કરવાનà«àª‚ ચાલૠઅથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "સકà«àª°àª¿àª¯ અથવા નિષà«àª•à«àª°àª¿àª¯:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "સકà«àª°àª¿àª¯:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "નિષà«àª•à«àª°àª¿àª¯:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "કિબોરà«àª¡ ટૂંકાણો" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "કોષà«àªŸàª• જોવામાં સભà«àª¯à«‹àª¨à«€ દિશાને સà«àª¯à«‹àªœàª¿àª¤ કરો" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ઉમેદવારોની દિશા:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ભાષા પેનલને કેવી રીતે બતાવવી અથવા છà«àªªàª¾àª¡àªµà«€ તે માટે ibus નાં વરà«àª£àª¤à«‚કને સà«àª¯à«‹àªœàª¿àª¤ કરો" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "ગà«àª£àª§àª°à«àª® પેનલ બતાવો:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ભાષા પેનલનà«àª‚ સà«àª¥àª¾àª¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "સિસà«àªŸàª® ટà«àª°à«‡ પર ચિહà«àª¨àª¨à«‡ બતાવો" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "ભાષા પેનલ પર ઇનપà«àªŸ પદà«àª¦àª¤àª¿ નામને બતાવો" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "જà«àª¯àª¾àª°à«‡ ચેકબોકà«àª¸àª¨à«‡ ચકાસતા હોય તà«àª¯àª¾àª°à«‡ ભાષા પેનલ પર ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨àª¾àª‚ નામને બતાવો" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "કારà«àª¯àª•à«àª°àª® વિનà«àª¡à«‹àª®àª¾àª‚ બેસાડેલ Preedit લખાણ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "કાર યકà«àª® વિનà«àª¡à«‹àª®àª¾àª‚ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨àª¾àª‚ preedit લખાણને બેસાડો" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "વૈવિધà«àª¯àªªà«‚રà«àª£ ફોનà«àªŸ વાપરો:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ફોનà«àªŸ અને શૈલીઓ" #: ../setup/setup.ui.h:34 msgid "General" msgstr "સામાનà«àª¯" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "ઉમેરો (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "સકà«àª°àª¿àª¯ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª“માં પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ઉમેરો" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "દૂર કરો (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "સકà«àª°àª¿àª¯ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª“ માંથી પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ દૂર કરો" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ઉપર કરો (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "સકà«àª°àª¿àª¯ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª“ યાદીમાં પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ઉપર ખસેડો" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "નીચે કરો (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "સકà«àª°àª¿àª¯ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª“માં પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ નીચે ખસેડો" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "વિશે (_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«€ જાણકારીને બતાવો" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "પસંદગીઓ (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "પસંદ થયેલ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨àª¾àª‚ સà«àª¯à«‹àªœàª¨àª¨à«‡ બતાવો" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "કિબોરà«àª¡ ટૂંકાણ કીને દબાવીને અથવા પેનલ ચિહà«àª¨ પર કà«àª²àª¿àª• કરીને ઉપરની યાદીમાં પસંદ થયેલ àªàª•માંથી સકà«àª°àª¿àª¯ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ બદલી શકાય છે." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "સિસà«àªŸàª® કિબોરà«àª¡ લેઆઉટને વાપરો" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "સિસà«àªŸàª® કિબોરà«àª¡ (XKB) લેઆઉટને વાપરો" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "કિબોરà«àª¡ લેઆઉટ" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "બધા કારà«àª¯àª•à«àª°àª®à«‹àª®àª¾àª‚ àªàªœ ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ વહેંચો" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "વૈશà«àª°à«àªµàª¿àª• ઇનપà«àªŸ પદà«àª¦àª¤àª¿ સà«àª¯à«‹àªœàª¨à«‹" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "ઉનà«àª¨àª¤" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nહોશિયાર ઇનપà«àªŸ બસ\nઘરપાનà«àª‚: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "પà«àª°àªµà«‡àª¶ પર ibus ને શરૂ કરો" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "શરૂઆત કરો" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "વિશે" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "બંધ કરો (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "àªàª‚જિનોને ફરીથી લોડ કરો" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus શરૂ કરવા દરમà«àª¯àª¾àª¨ àªàª‚જિનોને ફરીથી લોડ કરો" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "àªàª‚જિન કà«àª°àª®" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿ યાદીમાં સંગà«àª°àª¹à«‡àª² àªàª‚જિન કà«àª°àª®" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME સà«àªµà«€àªšàª° વિનà«àª¡à«‹ માટે પોપઅપનો મિલીસેકંડનો વિલંબ" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME સà«àªµà«€àªšàª° વિનà«àª¡à«‹àª¨à«‡ બતાવવા માટે મિલિસેકંડનો વિલંબ સà«àª¯à«‹àªœàª¿àª¤ કરો. મૂળભૂત 400 છે. 0 = વિનà«àª¡à«‹àª¨à«‡ તરત જ બતાવો. 0 < મિલિસેકંડમાં વિલંબ. 0 > વિનà«àª¡à«‹àª¨à«‡ બતાવો નહિં અને પહેલાંનà«/પછીનાં àªàª‚જિનને બદલો." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "સંગà«àª°àª¹à«‡àª² આવૃતà«àª¤àª¿ નંબર" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "પહેલાંની સà«àª¥àª¾àªªàª¿àª¤ થયેલ ibus અને હાલની ibus ની àªàª•ની આવૃતà«àª¤àª¿ વચà«àªšà«‡ તફાવત ચકાસવા માટે સંગà«àª°àª¹à«‡àª² આવૃતà«àª¤àª¿ નંબરને વાપરેલ હશે." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "લેટિન લેઆઉટ કે જેની પાસે ASCII નથી" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "US લેઆઉટ ઠલેટિન લેઆઉટ સાથે જોડાયેલ છે. ચલને કાઢી શકાય છે." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmap ને વાપરો" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "xmodmap ને ચલાવો જો .xmodmap અથવા .Xmodmap અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ હોય જà«àª¯àª¾àª°à«‡ ibus àªàª‚જિન બદલેલ હોય." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "ટà«àª°à«€àª—ર ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse માટે ટà«àª°à«€àª—ર ટૂંકાણ કી" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "ટૂંકાણ કીઓને સકà«àª°àª¿àª¯ કરો" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ ચાલૠકરવા માટે ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "ટૂંકાણ કીઓને નિષà«àª•à«àª°àª¿àª¯ કરો" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ બંધ કરવા માટે ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "પછીની àªàª‚જિન ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "યાદીમાં પછીની ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ બદલવા માટે ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "પહેલાંની àªàª‚જિન ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "યાદીમાં પહેલાંની ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ લાવવા માટે ટૂંકાણ કીઓ" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "આપમેળે છà«àªªàª¾àªµà«‹" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "ગà«àª£àª§àª°à«àª® પેનલનà«àª‚ વરà«àª¤àª¨. 0 = બતાવો નહિં, 1 = આપમેળે છà«àªªàª¾àª¡à«‹, 2 = હંમેસા બતાવો" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "ભાષા પેનલ સà«àª¥àª¾àª¨" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ભાષા પેનલનà«àª‚ સà«àª¥àª¾àª¨. ૦ = ઉંચે ડાબી બાજà«àª¨à«‹ ખૂણો, à«§ = ઉંચે જમણી બાજà«àª¨à«‹ ખૂણો, ૨ = નીચે ડાબી બાજà«àª¨à«‹ ખૂણો, à«© = નીચે જમણી બાજà«àª¨à«‹ ખૂણો, ૪ = વૈવિધà«àª¯" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ઇનપà«àªŸ કરà«àª¸àª°àª¨à«‡ અનૂસરો જે પેનલ હંમેશા બતાવેલ હોય" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "જો true હોય તો, પેનલ હંમેશા બતાવેલ છે તે સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ઇનપà«àªŸ કરà«àª¸àª°àª¨à«‡ અનૂસરે છે. જો false હોય તો, પેનલ સà«àª§àª¾àª°à«‡àª² સà«àª¥àª¾àª¨ પર બતાવેલ છે." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "ગà«àª£àª§àª°à«àª® પેનલને બતાવવા માટે મિલિસેકંડ" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "પà«àª°àª•ાશિત થાય પછી ગà«àª£àª§àª°à«àª® પેનલને બતાવવા માટે મિલિસેકંડ અથવા ગà«àª£àª§àª°à«àª®à«‹ બદલેલ છે" #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "કોષà«àªŸàª•ને જોવાની દિશા" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "કોષà«àªŸàª•ને જોવાની દિશા. 0 = આડà«, 1 = ઊભૠ" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿ નામને બતાવો" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB ચિહà«àª¨àª¨à«€ RGBA કિંમત" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB ચિહà«àª¨ ઠલેઆઉટ શબà«àª¦àª®àª¾àª³àª¾àª¨à«‡ બતાવે છે અને શબà«àª¦àª®àª¾àª³àª¾ ઠRGBA કિંમત સાથે રેનà«àª¡àª° થયેલ છે. RGBA કિંમત 1 હોઇ શકે છે. X11 માંથી રંગ નામ, 2. '#rrggbb' માંથી હેકà«àª¸ કિંમત જà«àª¯àª¾àª‚ 'r', 'g' અને 'b' ઠલાલ, લીલો, અને વાદળીનાં હેકà«àª¸ આંકડા છે, 3. 'rgb(r,g,b)' રૂપમાં RGB રંગ અથવા 4. 'rgba(r,g,b,a)' રૂપમાં RGBA રંગ જà«àª¯àª¾àª‚ 'r', 'g', અને 'b' ઠકà«àª¯àª¾àª‚તો સીમા 0 થી 255 માં પૂરà«àª£àª¾àª‚કો અથવા સીમા 0% થી 100% સીમામાં ટકાવારી કિંમતો, અને 'a' ઠઆલà«àª«àª¾àª¨à«€ સીમા 0 થી 1 માં ફà«àª²à«‹àªŸà«€àª‚ગ પોઇંટ કિંમત છે." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "વૈવિધà«àª¯ ફોનà«àªŸàª¨à«‡ વાપરો" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "ભાષા પેનલ માટે વૈવિધેય ફોનà«àªŸ નામ ને વાપરો" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "વૈવિધà«àª¯ ફોનà«àªŸ" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ભાષા પેનલ માટે વૈવિધà«àª¯ ફોનà«àªŸ નામ" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "બેસાડેલ Preedit લખાણ" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "કારà«àª¯àª•à«àª°àª® વિનà«àª¡à«‹àª®àª¾àª‚ બેસાડેલ Preedit લખાણ" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "વૈશà«àª°à«àªµàª¿àª• ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ વાપરો" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "મૂળભૂત રીતે ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ સકà«àª°àª¿àª¯ કરો" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "મૂળભૂત રીતે ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ સકà«àª°àª¿àª¯ કરો જà«àª¯àª¾àª°à«‡ કારà«àª¯àª•à«àª°àª®àª¨à«‡ ઇનપà«àªŸ ફોકસ મળે છે" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf નામ ઉપસરà«àª—ને સાચવે છે" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "નામનà«àª‚ રૂપાંતરણને બંધ કરવા માટે DConf કીઓનાં ઉપસરà«àª—à«‹" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "બીજા" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "ભાષા: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "કિબોરà«àª¡ લેઆઉટ: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "લેખક: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "વરà«àª£àª¨:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ પસંદ કરો" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "રદ કરો (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "વધારે..." #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus પસંદગીઓને સà«àª¯à«‹àªœàª¿àª¤ કરો" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "કિબોરà«àª¡ ટૂંકાણો" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "કિ કોડ:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "બદલનારો:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "અમલમાં મૂકો (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "કાઢી નાંખો (_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "મહેરબાની કરીને કીને દબાવો (અથવા કી સંયોજન).\nસંવાદ ઠબંધ થયેલ હશે જà«àª¯àª¾àª°à«‡ કી પà«àª°àª•ાશિત થયેલ હોય તો." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "મહેરબાની કરીને કી ને દબાવો (અથવા કી સંયોજન)" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "બરાબર (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "પહેલાંની ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ બદલવા shift સાથે ટૂંકાણ વાપરો" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ડિમન ચાલી રહà«àª¯à« નથી. શà«àª‚ તમે તેને શરૂ કરવા ઇચà«àª›à«‹ છો?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus ને શરૂ કરી દેવામાં આવી છે! જો તમે IBus ને વાપરી શકતા ન હોય તો, તમારી $HOME/.bashrc માં નીચેના વાકà«àª¯à«‹àª¨à«‡ ઉમેરો; પછી ડેસà«àª•ટોપમાં પà«àª¨:લોગ કરો.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ડિમન %d સેકંડમાં શરૂ કરી શકà«àª¯àª¾ નહિં" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s માટે કિબોરà«àª¡ ટૂંકાણોને પસંદ કરો" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "ઇનપà«àªŸ પદà«àª¦àª¤àª¿àª¨à«‡ બદલી રહà«àª¯àª¾ છે" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "ફકà«àª¤ àªàª‚જિન નામની યાદી કરો" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus માં જોડી શકાતૠનથી.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "ભાષા: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "àªàªœàª¿àª‚ન સà«àª¯à«‹àªœàª¿àª¤ નથી.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "વૈશà«àª°à«àªµàª¿àª• àªàª‚જિનને સà«àª¯à«‹àªœàª¿àª¤ કરવામાં નિષà«àª«àª³àª¤àª¾.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "વૈશà«àª°à«àªµàª¿àª• àªàª‚જિનને મેળવવામાં નિષà«àª«àª³àª¤àª¾.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "સિસà«àªŸàª® રજીસà«àªŸàª°à«€ કેશને વાંચો." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "રજીસà«àªŸàª°à«€ કેશ FILE ને વાંચો." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "રજીસà«àªŸàª°à«€ કેશ અયોગà«àª¯ છે.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "સિસà«àªŸàª® રજીસà«àªŸàª°à«€ કેશને લખો." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "રજીસà«àªŸàª°à«€ કેશ FILE ને લખો." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "પà«àª¨:સà«àª¯à«‹àªœàª¿àª¤ કરી રહà«àª¯àª¾ છે.." #: ../tools/main.vala:318 msgid "Done" msgstr "પૂરà«àª£" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "àªàª‚જિનને સà«àª¯à«‹àªœàª¿àª¤ અથવા મેળવો" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon માંથી બહાર નીકળો" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "ઉપલબà«àª§ àªàª‚જિનને બતાવો" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(અમલીકરણ થયેલ નથી)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon ને પà«àª¨:શરૂ કરો" #: ../tools/main.vala:342 msgid "Show version" msgstr "આવૃતà«àª¤àª¿àª¨à«‡ બતાવો" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "રજીસà«àªŸàª°à«€ કેશનાં સમાવિષà«àªŸàª¨à«‡ બતાવો" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "રજીસà«àªŸàª°à«€ કેશને બનાવો" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon નાં D-Bus સરનામાંને છાપો" #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "રૂપરેખાંકન કિંમતોને બતાવો" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "રૂપરેખાંકન કિંમતોને પà«àª¨:સà«àª¯à«‹àªœàª¿àª¤ કરો" #: ../tools/main.vala:348 msgid "Show this information" msgstr "આ જાણકારીને બતાવો" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "વપરાશ: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "આદેશો:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s ઠઅજà«àªžàª¾àª¤ આદેશ છે!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus સà«àª§àª¾àª°à«‹" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space ઠહવે મૂળભૂત હોટકી છે." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ઠLinux/Unix માટે હોશિયાર ઇનપà«àªŸ બસ છે." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "શà«àª°à«àªµà«‡àª¤àª¾ કોઠારી " #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "પસંદગીઓ " #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "પà«àª¨:શરૂ કરો" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "બહાર નીકળો " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/he.po0000644000000000000000000003337412551654123011020 00000000000000# translation of ibus.pot to Hebrew # Hebrew translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-17 12:25+0900\n" "PO-Revision-Date: 2014-02-17 05:02+0000\n" "Last-Translator: fujiwara \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "" #: ../setup/setup.ui.h:16 msgid "..." msgstr "" #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "" #: ../setup/setup.ui.h:34 msgid "General" msgstr "" #: ../setup/setup.ui.h:35 msgid "_Add" msgstr "" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "" #: ../setup/setup.ui.h:65 msgid "_Close" msgstr "" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "" #: ../setup/keyboardshortcut.py:54 msgid "Keyboard shortcuts" msgstr "" #: ../setup/keyboardshortcut.py:65 msgid "Key code:" msgstr "" #: ../setup/keyboardshortcut.py:80 msgid "Modifiers:" msgstr "" #: ../setup/keyboardshortcut.py:250 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" #: ../setup/keyboardshortcut.py:252 msgid "Please press a key (or a key combination)" msgstr "" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #: ../setup/main.py:377 msgid "switching input methods" msgstr "" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "" #: ../tools/main.vala:298 msgid "Show version" msgstr "" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: ../tools/main.vala:302 msgid "Show this information" msgstr "" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.11/po/Makevars0000644000000000000000000000345112551654123011551 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Peng Huang # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = $(PACKAGE_BUGREPORT) # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = ibus-1.5.11/po/pa.po0000644000000000000000000006010112551654123011010 00000000000000# translation of ibus.pot to Panjabi # Panjabi translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # asaini , 2013 # Amanpreet Singh , 2008 # asaini , 2013 # A S Alam , 2009 # A S Alam , 2011-2012 # Jaswinder Singh , 2009-2010 # Jaswinder Singh , 2011,2013 # Jaswinder Singh , 2011,2013 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-02-18 13:46+0900\n" "PO-Revision-Date: 2014-02-18 05:48+0000\n" "Last-Translator: asaini \n" "Language-Team: Panjabi (Punjabi) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "ਲੇਟਵਾਂ" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "ਖੜà©à¨¹à¨µà¨¾à¨‚" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "ਪਸੰਦ" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "ਹਮੇਸ਼ਾ" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus ਪਸੰਦ" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "ਅਗਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "ਪਿਛਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 msgid "The shortcut keys for turning input method on or off" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬੰਦ ਜਾਂ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "ਚਾਲੂ ਜਾਂ ਬੰਦ:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "ਚਾਲੂ:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "ਬੰਦ:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "ਖੋਜ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦਵਾਰ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰੋ" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "ਉਮੀਦਵਾਰ ਸਥਿਤੀ:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus ਦਾ ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ ਕਿ ਭਾਸ਼ਾ ਪੱਟੀ ਕਿਵੇਂ ਵੇਖਾਈ ਜਾਵੇ" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 msgid "Show icon on system tray" msgstr "ਸਿਸਟਮ ਟਰੇਅ ਵਿੱਚ ਆਈਕਾਨ ਵੇਖਾਓ" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 msgid "Show input method name on language bar" msgstr "ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "ਜਦੋਂ ਚੈੱਕ ਬਾਕਸ ਚà©à¨£à¨¿à¨† ਹੋਵੇ ਤਾਂ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਨਾਂ ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਵੇਖੋ" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਦਾ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "ਫੋਂਟ ਅਤੇ ਸਟਾਈਲ" #: ../setup/setup.ui.h:34 msgid "General" msgstr "ਆਮ" #. add button #: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 msgid "_Add" msgstr "ਸ਼ਾਮਲ(_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "ਚà©à¨£à¨¿à¨† ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚਾਲੂ ਕੀਤੇ ਇੰਪà©à©±à¨Ÿ ਢੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "ਹਟਾਓ(_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "ਚà©à¨£à¨¿à¨† ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚਾਲੂ ਇੰਪà©à©±à¨Ÿ ਢੰਗਾਂ ਵਿੱਚੋਂ ਹਟਾਓ" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "ਉੱਤੇ(_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "ਚà©à¨£à¨¿à¨† ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚਾਲੂ ਇੰਪà©à©±à¨Ÿ ਢੰਗਾਂ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋ" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "ਹੇਠਾਂ(_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "ਚà©à¨£à¨¿à¨† ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚਾਲੂ ਇੰਪà©à©±à¨Ÿ ਢੰਗਾਂ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋ" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "ਇਸ ਬਾਰੇ(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "ਚà©à¨£à©‡ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "ਚà©à¨£à¨¿à¨† ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਦਾ ਸੈਟਅੱਪ ਵੇਖਾਓ" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr "" #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 msgid "Use system keyboard layout" msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ ਲੇਆਉਟ ਵਰਤੋ" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 msgid "Use system keyboard (XKB) layout" msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ (XKB) ਲੇਆਉਟ ਵਰਤੋ" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 msgid "Share the same input method among all applications" msgstr "ਸਭ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵਿੱਚ ਇੱਕੋ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਸਾਂà¨à¨¾ ਕਰੋ" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "ਗਲੋਬਲ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਸੈਟਿੰਗ" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "ਤਕਨੀਕੀ" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nਇੰਟੈਲੀਜੈਂਟ ਇੰਪà©à©±à¨Ÿ ਢੰਗ\nਮà©à©±à¨– ਸਫ਼ਾ: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "ਲਾਗਇਨ ਕਰਨ ਸਮੇਂ ibus ਚਲਾਓ" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "ਸ਼à©à¨°à©‚" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 msgid "About" msgstr "ਇਸ ਬਾਰੇ" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 msgid "_Close" msgstr "ਬੰਦ ਕਰੋ(_C)" #: ../data/ibus.schemas.in.h:1 msgid "Preload engines" msgstr "ਪà©à¨°à©€-ਲੋਡ ਇੰਜਣ" #: ../data/ibus.schemas.in.h:2 msgid "Preload engines during ibus starts up" msgstr "ibus ਸ਼à©à¨°à©‚ ਹੋਣ ਸਮੇਂ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਇੰਜਣ" #: ../data/ibus.schemas.in.h:3 msgid "Engines order" msgstr "ਇੰਜਣ ਕà©à¨°à¨®" #: ../data/ibus.schemas.in.h:4 msgid "Saved engines order in input method list" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਸੂਚੀ ਵਿੱਚ ਸੰਭਾਲੇ ਇੰਜਣਾਂ ਦਾ ਕà©à¨°à¨®" #: ../data/ibus.schemas.in.h:5 msgid "Popup delay milliseconds for IME switcher window" msgstr "ਮਿਲੀਸਕਿੰਟ 'ਚ ਸ਼à©à¨°à©‚ਆਤੀ ਦੇਰੀ" #: ../data/ibus.schemas.in.h:6 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "Set popup delay milliseconds to show IME switcher window. The default is 400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show the window and switch prev/next engines." #: ../data/ibus.schemas.in.h:7 msgid "Saved version number" msgstr "ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ" #: ../data/ibus.schemas.in.h:8 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ ਪà©à¨°à¨¾à¨£à©‡ ਇੰਸਟਾਲ ਕੀਤੇ ਹੋਠibus ਅਤੇ ਮੌਜੂਦਾ ibus ਦੇ ਸੰਸਕਰਣ ਵਿਚਲੇ ਫ਼ਰਕ ਨੂੰ ਜਾਂਚਣ ਲਈ ਵਰਤਿਆ ਜਾà¨à¨—ਾ।" #: ../data/ibus.schemas.in.h:9 msgid "Trigger shortcut keys" msgstr "ਟਰਿੱਗਰ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:11 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕà©à©°à¨œà©€à¨†à¨‚ ਟਰਿੱਗਰ ਕਰੋ" #: ../data/ibus.schemas.in.h:12 msgid "Enable shortcut keys" msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕਰੋ" #: ../data/ibus.schemas.in.h:13 msgid "The shortcut keys for turning input method on" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:14 msgid "Disable shortcut keys" msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਬੰਦ ਕਰੋ" #: ../data/ibus.schemas.in.h:15 msgid "The shortcut keys for turning input method off" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬੰਦ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:16 msgid "Next engine shortcut keys" msgstr "ਅਗਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:17 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:18 msgid "Prev engine shortcut keys" msgstr "ਪਿਛਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for switching to the previous input method" msgstr "ਪਿਛਲਾ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: ../data/ibus.schemas.in.h:20 msgid "Auto hide" msgstr "ਆਟੋਮੈਟਿਕ ਓਹਲੇ" #: ../data/ibus.schemas.in.h:21 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: ../data/ibus.schemas.in.h:22 msgid "Language panel position" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ" #: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਦੀ ਸਥਿਤੀ. 0 = ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ, 1 = ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ, 2 = ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ, 3 = ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ, 4 = ਪਸੰਦੀਦਾ" #: ../data/ibus.schemas.in.h:24 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 msgid "The milliseconds to show property panel" msgstr "" #: ../data/ibus.schemas.in.h:27 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: ../data/ibus.schemas.in.h:28 msgid "Orientation of lookup table" msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ" #: ../data/ibus.schemas.in.h:29 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ। 0 = ਲੇਟਵਾਂ, 1 =ਖੜà©à¨¹à¨µà¨¾" #: ../data/ibus.schemas.in.h:31 msgid "Show input method name" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" #: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "ਮਨਪਸੰਦ ਫੋਂਟ ਵਰਤੋਂ" #: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ ਵਰਤੋਂ" #: ../data/ibus.schemas.in.h:37 msgid "Custom font" msgstr "ਮਨਪਸੰਦ ਫੋਂਟ" #: ../data/ibus.schemas.in.h:38 msgid "Custom font name for language panel" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ" #: ../data/ibus.schemas.in.h:39 msgid "Embed Preedit Text" msgstr "ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: ../data/ibus.schemas.in.h:40 msgid "Embed Preedit Text in Application Window" msgstr "à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "ਗਲੋਬਲ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਵਰਤੋ" #: ../data/ibus.schemas.in.h:43 msgid "Enable input method by default" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਾਲੂ ਕਰੋ" #: ../data/ibus.schemas.in.h:44 msgid "Enable input method by default when the application gets input focus" msgstr "ਜਦੋਂ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਇੰਪà©à©±à¨Ÿ ਫੋਕਸ ਲਵੇ ਤਾਂ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਲਾਉ" #: ../data/ibus.schemas.in.h:45 msgid "DConf preserve name prefixes" msgstr "DConf ਨਾਂ ਅਗੇਤਰ ਰੱਖਦਾ ਹੈ" #: ../data/ibus.schemas.in.h:46 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf ਦੇ ਅਗੇਤਰ ਨਾਂ ਤਬਦੀਲੀ ਰੋਕਣ ਲਈ" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "ਹੋਰ" #: ../setup/engineabout.py:68 #, python-format msgid "Language: %s\n" msgstr "ਭਾਸ਼ਾ: %s\n" #: ../setup/engineabout.py:71 #, python-format msgid "Keyboard layout: %s\n" msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ: %s\n" #: ../setup/engineabout.py:74 #, python-format msgid "Author: %s\n" msgstr "ਲੇਖਕ: %s\n" #: ../setup/engineabout.py:77 msgid "Description:\n" msgstr "ਵੇਰਵਾ:\n" #: ../setup/enginecombobox.py:139 msgid "Select an input method" msgstr "ਇੱਕ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਚà©à¨£à©‹" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus ਪਸੰਦ ਸੈੱਟ ਕਰੋ" #: ../setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" #: ../setup/keyboardshortcut.py:66 msgid "Key code:" msgstr "ਕੀ ਕੋਡ:" #: ../setup/keyboardshortcut.py:81 msgid "Modifiers:" msgstr "ਮੋਡੀਫਾਇਰ:" #. apply button #: ../setup/keyboardshortcut.py:133 msgid "_Apply" msgstr "ਲਾਗੂ ਕਰੋ(_A)" #. delete button #: ../setup/keyboardshortcut.py:139 msgid "_Delete" msgstr "ਹਟਾਓ(_D)" #: ../setup/keyboardshortcut.py:254 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਕੋਈ ਸਵਿੱਚ ਜੋੜ)।\nਜਦੋਂ ਸਵਿੱਚ ਛੱਡੀ ਜਾਵੇਗੀ ਤਾਂ ਇਹ ਡਾਇਲਾਗ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।" #: ../setup/keyboardshortcut.py:256 msgid "Please press a key (or a key combination)" msgstr "ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਸਵਿੱਚ ਜੋੜ)" #: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 msgid "_Cancel" msgstr "ਰੱਦ ਕਰੋ(_C)" #: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 msgid "_OK" msgstr "ਠੀਕ ਹੈ(_O)" #: ../setup/main.py:102 ../setup/main.py:395 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲੇ ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਤੇ ਜਾਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਬਟਨ" #: ../setup/main.py:329 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ। ਕੀ ਤà©à¨¸à©€à¨‚ ਇਸਨੂੰ ਚਲਾਉਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?" #: ../setup/main.py:350 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus ਚੱਲ ਪਿਆ ਹੈ! ਜੇ ਤà©à¨¸à©€à¨‚ IBus ਨਹੀਂ ਵਰਤ ਸਕੇ, ਤਾਂ ਹੇਠਲੀ ਲਾਈਨ ਆਪਣੀ $HOME/.bashrc ਵਿੱਚ ਜੋੜੋ; ਅਤੇ ਦà©à¨¬à¨¾à¨°à¨¾ ਲਾਗਇਨ ਕਰੋ।\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:364 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ਡੈਮਨ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" #: ../setup/main.py:376 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ਲਈ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਚà©à¨£à©‹" #: ../setup/main.py:377 msgid "switching input methods" msgstr "ਇੰਪà©à©±à¨Ÿ ਢੰਗ ਬਦਲਨਾ" #: ../tools/main.vala:42 msgid "List engine name only" msgstr "ਸਿਰਫ ਇੰਜਣ ਨਾਂ ਵੇਖਾਓ" #: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 #, c-format msgid "Can't connect to IBus.\n" msgstr "IBus ਨਾਲ ਨਹੀਂ ਜà©à©œ ਸਕਿਆ।\n" #: ../tools/main.vala:84 #, c-format msgid "language: %s\n" msgstr "ਭਾਸ਼ਾ: %s\n" #: ../tools/main.vala:152 #, c-format msgid "No engine is set.\n" msgstr "ਕੋਈ ਇੰਜਣ ਸੈੱਟ ਨਹੀਂ ਹੈ।\n" #: ../tools/main.vala:160 #, c-format msgid "Set global engine failed.\n" msgstr "ਗਲੋਬਲ ਇੰਜਣ ਸੈੱਟ ਕਰਨ ਲਈ ਫੇਲà©à¨¹à¥¤\n" #: ../tools/main.vala:165 #, c-format msgid "Get global engine failed.\n" msgstr "ਗਲੋਬਲ ਇੰਜਣ ਫੇਲ ਹੋਇਆ।\n" #: ../tools/main.vala:204 msgid "Read the system registry cache." msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਪੜà©à¨¹à©‹à¥¤" #: ../tools/main.vala:206 msgid "Read the registry cache FILE." msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਈਲ ਪੜà©à¨¹à©‹à¥¤" #: ../tools/main.vala:224 ../tools/main.vala:229 #, c-format msgid "The registry cache is invalid.\n" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਅਯੋਗ ਹੈ।\n" #: ../tools/main.vala:244 msgid "Write the system registry cache." msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਲਿਖੋ।" #: ../tools/main.vala:246 msgid "Write the registry cache FILE." msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਾਈਲ ਲਿਖੋ।" #: ../tools/main.vala:293 msgid "Set or get engine" msgstr "ਇੰਜਣ ਸੈੱਟ ਜਾਂ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰੋ" #: ../tools/main.vala:294 msgid "Exit ibus-daemon" msgstr "ibus-daemon ਤੋਂ ਬਾਹਰ ਆਓ" #: ../tools/main.vala:295 msgid "Show available engines" msgstr "ਉਪਲੱਬਧ ਇੰਜਣ ਵਿਖਾਓ" #: ../tools/main.vala:296 msgid "(Not implemented)" msgstr "(ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਹੋਈ)" #: ../tools/main.vala:297 msgid "Restart ibus-daemon" msgstr "ibus-daemon ਮà©à©œ ਸ਼à©à¨°à©‚ ਕਰੋ" #: ../tools/main.vala:298 msgid "Show version" msgstr "ਸੰਸਕਰਣ ਵਿਖਾਓ" #: ../tools/main.vala:299 msgid "Show the content of registry cache" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਦੇ ਅੰਸ਼ ਵਿਖਾਓ" #: ../tools/main.vala:300 msgid "Create registry cache" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਬਣਾਓ।" #: ../tools/main.vala:301 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ਦਾ D-Bus ਪਤਾ ਛਾਪੋ" #: ../tools/main.vala:302 msgid "Show this information" msgstr "ਇਹ ਜਾਣਕਾਰੀ ਵਿਖਾਓ" #: ../tools/main.vala:308 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "ਵਰਤੋਂ: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:309 #, c-format msgid "Commands:\n" msgstr "ਕਮਾਂਡ:\n" #: ../tools/main.vala:338 #, c-format msgid "%s is unknown command!\n" msgstr "%s ਅਣਜਾਣ ਕਮਾਂਡ ਹੈ!\n" #: ../ui/gtk3/panel.vala:425 msgid "IBus Update" msgstr "IBus ਅੱਪਡੇਟ" #: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 msgid "Super+space is now the default hotkey." msgstr "Super+space ਹà©à¨£ ਮੂਲ ਹੌਟ-ਕੀ ਹੈ।" #: ../ui/gtk3/panel.vala:707 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ਲੀਨਕਸ/ਯੂਨੈਕਸ ਲਈ ਮਾਹਰ ਇੰਪà©à©±à¨Ÿ ਬੱਸ ਹੈ।" #: ../ui/gtk3/panel.vala:711 msgid "translator-credits" msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ ੨੦੦੮-੨੦੧੨\nਜਸਵਿੰਦਰ ਸਿੰਘ \nhttp://www.satluj.com/" #: ../ui/gtk3/panel.vala:732 msgid "Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ" #: ../ui/gtk3/panel.vala:742 msgid "Restart" msgstr "ਮà©à©œ-ਚਾਲੂ ਕਰੋ" #: ../ui/gtk3/panel.vala:746 msgid "Quit" msgstr "ਬਾਹਰ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:374 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/po/POTFILES.skip0000644000000000000000000000110312551654144012165 00000000000000# Files with translatable strings. # Please keep this file in alphabetical order. # Files under ui/gtk2/ are not shipped in the distribution, but kept # in the git repository for reference. ibus/_config.py sub/ibus/_config.py tools/main.c ui/gtk2/candidatepanel.py ui/gtk2/engineabout.py ui/gtk2/languagebar.py ui/gtk2/panel.py ui/gtk3/application.c ui/gtk3/candidatearea.c ui/gtk3/candidatepanel.c ui/gtk3/handle.c ui/gtk3/iconwidget.c ui/gtk3/keybindingmanager.c ui/gtk3/panel.c ui/gtk3/pango.c ui/gtk3/property.c ui/gtk3/propertypanel.c ui/gtk3/separator.c ui/gtk3/switcher.c ibus-1.5.11/po/mr.po0000644000000000000000000007356612551654123011051 00000000000000# translation of mr.po to Marathi # Marathi translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Sandeep Shedmake , 2009 # sandeeps , 2009,2012 # sandeeps , 2009,2011-2013 # sandeeps , 2014 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2014-07-18 13:09+0900\n" "PO-Revision-Date: 2014-09-22 06:57+0000\n" "Last-Translator: sandeeps \n" "Language-Team: Marathi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../setup/setup.ui.h:1 msgid "Horizontal" msgstr "आडवे" #: ../setup/setup.ui.h:2 msgid "Vertical" msgstr "उभे" #: ../setup/setup.ui.h:3 msgid "Top left corner" msgstr "वरील डावा कोपरा" #: ../setup/setup.ui.h:4 msgid "Top right corner" msgstr "वरील उजवा कोपरा" #: ../setup/setup.ui.h:5 msgid "Bottom left corner" msgstr "तळापासून डावा कोपरा" #: ../setup/setup.ui.h:6 msgid "Bottom right corner" msgstr "तळापासून उजवा कोपरा" #: ../setup/setup.ui.h:7 msgid "Custom" msgstr "मनपसंत" #: ../setup/setup.ui.h:8 msgid "Do not show" msgstr "पà¥à¤¨à¥à¤¹à¤¾ दाखवू नका" #: ../setup/setup.ui.h:9 msgid "Hide automatically" msgstr "सà¥à¤µ छà¥à¤ªà¥‡ करा" #: ../setup/setup.ui.h:10 msgid "Always" msgstr "नेहमी" #: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus आवड निवड" #: ../setup/setup.ui.h:12 msgid "The shortcut keys for switching to next input method in the list" msgstr "सूचीतील पà¥à¤¢à¤šà¥€ इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडणà¥à¤¯à¤¾à¤•रीता वापरणà¥à¤¯à¤¾à¤œà¥‹à¤—ी शारà¥à¤Ÿà¤•ट किजà¥" #: ../setup/setup.ui.h:13 msgid "Next input method:" msgstr "पà¥à¤¢à¤šà¥€ इंपà¥à¤Ÿ पदà¥à¤§à¤¤:" #: ../setup/setup.ui.h:14 msgid "The shortcut keys for switching to previous input method in the list" msgstr "सूचीतील मागील इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडणà¥à¤¯à¤¾à¤•रीता वापरणà¥à¤¯à¤¾à¤œà¥‹à¤—ी शारà¥à¤Ÿà¤•ट किजà¥" #: ../setup/setup.ui.h:15 msgid "Previous input method:" msgstr "मागील इंपà¥à¤Ÿ पदà¥à¤§à¤¤:" #: ../setup/setup.ui.h:16 msgid "..." msgstr "..." #: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 msgid "The shortcut keys for turning input method on or off" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤ सà¥à¤°à¥‚ किंवा बंद करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ शारà¥à¤Ÿà¤•ट किजà¥" #: ../setup/setup.ui.h:18 msgid "Enable or disable:" msgstr "कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करा किंवा अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करा:" #: ../setup/setup.ui.h:19 msgid "Enable:" msgstr "सà¥à¤°à¥‚ करा:" #: ../setup/setup.ui.h:20 msgid "Disable:" msgstr "बंद करा:" #: ../setup/setup.ui.h:21 msgid "Keyboard Shortcuts" msgstr "कळफलक शारà¥à¤Ÿà¤•ट" #: ../setup/setup.ui.h:22 msgid "Set the orientation of candidates in lookup table" msgstr "लà¥à¤•अप टेबल मधील घटकांचे निरà¥à¤¦à¥‡à¤¶à¤¨ ठरवा" #: ../setup/setup.ui.h:23 msgid "Candidates orientation:" msgstr "घटकांचे निरà¥à¤¦à¥‡à¤¶à¤¨:" #: ../setup/setup.ui.h:24 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "भाषा पटà¥à¤Ÿà¥€ कसे दाखवायचे किंवा लपवायचे यासाठी ibus चे वरà¥à¤¤à¤¨ ठरवा" #: ../setup/setup.ui.h:25 msgid "Show property panel:" msgstr "गà¥à¤£à¤§à¤°à¥à¤® पटल दाखवा:" #: ../setup/setup.ui.h:26 msgid "Language panel position:" msgstr "भाषा पटलाचे सà¥à¤¥à¤¾à¤¨:" #: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 msgid "Show icon on system tray" msgstr "चिनà¥à¤¹ पà¥à¤°à¤£à¤¾à¤²à¥€ टà¥à¤°à¥‡à¤µà¤° दाखवा" #: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 msgid "Show input method name on language bar" msgstr "भाषा पटà¥à¤Ÿà¥€à¤µà¤°à¥€à¤² इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¥‡ नाव दाखवा" #: ../setup/setup.ui.h:29 msgid "Show input method's name on language bar when check the checkbox" msgstr "चेकबॉकà¥à¤¸ नीवडलà¥à¤¯à¤¾à¤¨à¤‚तर भाषा पटà¥à¤Ÿà¥€à¤µà¤°à¥€à¤² इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¥‡ नाव दाखवा" #: ../setup/setup.ui.h:30 msgid "Embed preedit text in application window" msgstr "à¤à¤ªà¥à¤²à¤¿à¤•ेशन पटलात पà¥à¤°à¤¿à¤à¤¡à¥€à¤Ÿ मजूकर à¤à¤®à¥à¤¬à¥‡à¤¡ करा" #: ../setup/setup.ui.h:31 msgid "Embed the preedit text of input method in the application window" msgstr "à¤à¤ªà¥à¤²à¤¿à¤•ेशन पटलात इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¥‡ पà¥à¤°à¤¿à¤à¤¡à¥€à¤Ÿ मजकूर à¤à¤®à¥à¤¬à¥‡à¤¡ करा" #: ../setup/setup.ui.h:32 msgid "Use custom font:" msgstr "मनपसंत फॉनà¥à¤Ÿà¤šà¤¾ वापर करा:" #: ../setup/setup.ui.h:33 msgid "Font and Style" msgstr "फॉनà¥à¤Ÿ व शैली" #: ../setup/setup.ui.h:34 msgid "General" msgstr "सरà¥à¤µà¤¸à¤¾à¤§à¤¾à¤°à¤£" #. add button #: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 #: ../setup/keyboardshortcut.py:128 msgid "_Add" msgstr "समावेष करा (_A)" #: ../setup/setup.ui.h:36 msgid "Add the selected input method into the enabled input methods" msgstr "नीवडलेली इंपà¥à¤Ÿ पदà¥à¤§à¤¤ कारà¥à¤¯à¤•à¥à¤·à¤® इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤‚मधà¥à¤¯à¥‡ समावेश करा" #: ../setup/setup.ui.h:37 msgid "_Remove" msgstr "काढूण टाका (_R)" #: ../setup/setup.ui.h:38 msgid "Remove the selected input method from the enabled input methods" msgstr "कारà¥à¤¯à¤•à¥à¤·à¤® इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤ªà¤¾à¤¸à¥‚न नीवडलेली इंपà¥à¤Ÿ पदà¥à¤§à¤¤ काढून टाका" #: ../setup/setup.ui.h:39 msgid "_Up" msgstr "वर (_U)" #: ../setup/setup.ui.h:40 msgid "Move up the selected input method in the enabled input methods list" msgstr "कारà¥à¤¯à¤•à¥à¤·à¤® इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤‚मधà¥à¤¯à¥‡ नीवडलेली इंपà¥à¤Ÿ पदà¥à¤§à¤¤ वर सरकवा" #: ../setup/setup.ui.h:41 msgid "_Down" msgstr "खाली (_D)" #: ../setup/setup.ui.h:42 msgid "Move down the selected input method in the enabled input methods" msgstr "कारà¥à¤¯à¤•à¥à¤·à¤® इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤‚मधà¥à¤¯à¥‡ नीवडलेली इंपà¥à¤Ÿ पदà¥à¤§à¤¤ खाली सरकवा" #: ../setup/setup.ui.h:43 msgid "_About" msgstr "विषयी(_A)" #: ../setup/setup.ui.h:44 msgid "Show information of the selected input method" msgstr "नीवडलेलà¥à¤¯à¤¾ इंपà¥à¤Ÿ पदà¥à¤§à¤¤ विषयी माहिती दाखवा" #: ../setup/setup.ui.h:45 msgid "_Preferences" msgstr "आवड निवड (_P)" #: ../setup/setup.ui.h:46 msgid "Show setup of the selected input method" msgstr "नीवडलेलà¥à¤¯à¤¾ इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¥€ मांडणी दाखवा" #: ../setup/setup.ui.h:47 msgid "" "The active input method can be switched around from the selected " "ones in the above list by pressing the keyboard shortcut keys or clicking " "the panel icon." msgstr " कळफलक शॉरà¥à¤Ÿà¤•ट किज दाबून किंवा पटलावरील चिनà¥à¤¹ कà¥à¤²à¤¿à¤• करून वरील सूचीपासून पसंत केलेलà¥à¤¯à¤¾ सकà¥à¤°à¥€à¤¯ इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¤¾ वापर शकà¥à¤¯ आहे." #. create im name & icon column #: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤" #: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 msgid "Use system keyboard layout" msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ कळफलक मांडणीचा वापर करा" #: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 msgid "Use system keyboard (XKB) layout" msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ कळफलक (XKB) मांडणीचा वापर करा" #: ../setup/setup.ui.h:51 msgid "Keyboard Layout" msgstr "कळफलक मांडणी" #: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 msgid "Share the same input method among all applications" msgstr "सरà¥à¤µ à¤à¤ªà¥à¤²à¤¿à¤•ेशनà¥à¤¸à¥ मधà¥à¤¯à¥‡ à¤à¤•सारखेच इंपà¥à¤Ÿ पदà¥à¤§à¤¤ शेअर करा" #: ../setup/setup.ui.h:53 msgid "Global input method settings" msgstr "गà¥à¤²à¥‹à¤¬à¤² इंपà¥à¤Ÿ पदà¥à¤§à¤¤ सेटिंगà¥à¤¸à¥" #: ../setup/setup.ui.h:54 msgid "Advanced" msgstr "पà¥à¤°à¤—त" #: ../setup/setup.ui.h:55 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "IBus\nहà¥à¤¶à¤¾à¤° इनपà¥à¤Ÿ बस\nमà¥à¤–à¥à¤¯à¤ªà¤¾à¤¨: https://github.com/ibus/ibus/wiki\n\n\n\n" #: ../setup/setup.ui.h:62 msgid "Start ibus on login" msgstr "पà¥à¤°à¤µà¥‡à¤¶à¤µà¥‡à¤³à¥€ ibus सà¥à¤°à¥‚ करा" #: ../setup/setup.ui.h:63 msgid "Startup" msgstr "सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प" #: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "विषयी" #: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 msgid "_Close" msgstr "बंद करा (_C)" #. Translators: Here “Preload†is a verb #: ../data/ibus.schemas.in.h:2 msgid "Preload engines" msgstr "पà¥à¤°à¥€à¤²à¥‹à¤¡ इंजीनà¥à¤¸à¥" #. Translators: Tooltip for the button “Preload Engines†#: ../data/ibus.schemas.in.h:4 msgid "Preload engines during ibus starts up" msgstr "ibus सà¥à¤°à¥‚ होतेवेळी इंजीन आधिपासूनच लोड करा" #: ../data/ibus.schemas.in.h:5 msgid "Engines order" msgstr "इंजिनचे कà¥à¤°à¤®" #: ../data/ibus.schemas.in.h:6 msgid "Saved engines order in input method list" msgstr "इंपà¥à¤Ÿ मेथड सूचमधà¥à¤¯à¥‡ इंजिनचे कà¥à¤°à¤® साठवे" #: ../data/ibus.schemas.in.h:7 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME सà¥à¤µà¥€à¤šà¤° पटलकरिता डिले मिलिसेकंद पॉपअप करा" #: ../data/ibus.schemas.in.h:8 msgid "" "Set popup delay milliseconds to show IME switcher window. The default is " "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " "not show the window and switch prev/next engines." msgstr "IME सà¥à¤µà¤¿à¤šà¤° पटल दाखवणà¥à¤¯à¤¾à¤•रिता पॉपअप डिले मिलिसेकंदामधà¥à¤¯à¥‡ सेट करा. पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ 400. 0 = पटल पटकन दाखवा. 0 < मिलिसेकंदातील विलंब. 0 > पटल दाखवू नका व मागील किंवा पà¥à¤¢à¥€à¤² इंजिनà¥à¤¸à¥à¤šà¤¾ वापर करू नका." #: ../data/ibus.schemas.in.h:9 msgid "Saved version number" msgstr "आवृतà¥à¤¤à¥€ कà¥à¤°à¤®à¤¾à¤‚क साठवले" #: ../data/ibus.schemas.in.h:10 msgid "" "The saved version number will be used to check the difference between the " "version of the previous installed ibus and one of the current ibus." msgstr "साठवलेले आवृतà¥à¤¤à¥€ कà¥à¤°à¤®à¤¾à¤‚काचा वापर मागील इंसà¥à¤Ÿà¥‰à¤² à¤à¤¾à¤²à¥‡à¤²à¥‡ ibus आणि सधà¥à¤¯à¤¾ इंसà¥à¤Ÿà¥‰à¤² à¤à¤¾à¤²à¥‡à¤²à¥à¤¯à¤¾ ibus मधील भेद जाणून घेणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ केला जाईल." #: ../data/ibus.schemas.in.h:11 msgid "Latin layouts which have no ASCII" msgstr "लॅटिन मांडणी जà¥à¤¯à¤¾à¤•डे ASCII नाही" #: ../data/ibus.schemas.in.h:12 msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "लॅटिन मांडणीमधà¥à¤¯à¥‡ US मांडणी समावेश केली आहे. वेरिà¤à¤‚ट आवशà¥à¤¯à¤• नाही." #: ../data/ibus.schemas.in.h:13 msgid "Use xmodmap" msgstr "xmodmapचा वापर करा" #: ../data/ibus.schemas.in.h:14 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus इंजिनà¥à¤¸à¤šà¤¾ वापर करतेवेळी, xmodmap किंवा .Xmodmap असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ असलà¥à¤¯à¤¾à¤¸ xmodmap चालवा." #: ../data/ibus.schemas.in.h:15 msgid "Trigger shortcut keys" msgstr "शॉरà¥à¤Ÿà¤•ट किजॠटà¥à¤°à¤¿à¤—र करा" #: ../data/ibus.schemas.in.h:17 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse करिता शॉरà¥à¤Ÿà¤•ट किज सà¥à¤°à¥‚ करा" #: ../data/ibus.schemas.in.h:18 msgid "Enable shortcut keys" msgstr "शारà¥à¤Ÿà¤•ट किजॠसà¥à¤°à¥‚ करा" #: ../data/ibus.schemas.in.h:19 msgid "The shortcut keys for turning input method on" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€ सà¥à¤°à¥‚ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ शारà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:20 msgid "Disable shortcut keys" msgstr "शारà¥à¤Ÿà¤•ट किजॠबंद करा" #: ../data/ibus.schemas.in.h:21 msgid "The shortcut keys for turning input method off" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€ बंद करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ शारà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:22 msgid "Next engine shortcut keys" msgstr "पà¥à¤¢à¥€à¤² इंजीनचे शारà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:23 msgid "The shortcut keys for switching to the next input method in the list" msgstr "सूचीतील पà¥à¤¢à¥€à¤² इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडणà¥à¤¯à¤¾à¤•रीता वापरणà¥à¤¯à¤¾à¤œà¥‹à¤—ी शारà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:24 msgid "Prev engine shortcut keys" msgstr "मागील इंजीनचे शॉरà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:25 msgid "The shortcut keys for switching to the previous input method" msgstr "मागील इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडणà¥à¤¯à¤¾à¤•रीता वापरणà¥à¤¯à¤¾à¤œà¥‹à¤—ी शारà¥à¤Ÿà¤•ट किजà¥" #: ../data/ibus.schemas.in.h:26 msgid "Auto hide" msgstr "सà¥à¤µà¤¯à¤‚ लपवा" #: ../data/ibus.schemas.in.h:27 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "गà¥à¤£à¤§à¤°à¥à¤® पटलाचे वरà¥à¤¤à¤¨. 0 = दाखवू नका, 1 = सà¥à¤µ छà¥à¤ªà¥‡ करा, 2 = नेहमी दाखवा" #: ../data/ibus.schemas.in.h:28 msgid "Language panel position" msgstr "भाषा पटलचे सà¥à¤¥à¤¾à¤¨" #: ../data/ibus.schemas.in.h:29 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "भाषा पटलाचे सà¥à¤¥à¤¾à¤¨. 0 = Top left corner, 1 = Top right corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" #: ../data/ibus.schemas.in.h:30 msgid "Follow the input cursor in case the panel is always shown" msgstr "पटल नेहमी दाखवले जात असलà¥à¤¯à¤¾à¤¸ इंपà¥à¤Ÿ करà¥à¤¸à¤°à¤šà¥‡ पालन करा" #: ../data/ibus.schemas.in.h:31 msgid "" "If true, the panel follows the input cursor in case the panel is always " "shown. If false, the panel is shown at a fixed location." msgstr "खरे असलà¥à¤¯à¤¾à¤¸, पटल नेहमी दाखवले जात असलà¥à¤¯à¤¾à¤¸ पटल इंपà¥à¤Ÿ करà¥à¤¸à¤°à¤šà¥‡ पालन करते. खोटे असलà¥à¤¯à¤¾à¤¸, पटल ठराविक ठिकाणी दाखविले जाते." #: ../data/ibus.schemas.in.h:32 msgid "The milliseconds to show property panel" msgstr "गà¥à¤£à¤§à¤°à¥à¤® पटल दाखवणà¥à¤¯à¤¾à¤•रिता मिलिसेकंद" #: ../data/ibus.schemas.in.h:33 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "फोकस-इन किंवा गà¥à¤£à¤§à¤°à¥à¤® बदलवणà¥à¤¯à¤¾à¤¨à¤‚तर, गà¥à¤£à¤§à¤°à¥à¤® पटल दाखवणà¥à¤¯à¤¾à¤•रिता मिलिसेकंद." #: ../data/ibus.schemas.in.h:34 msgid "Orientation of lookup table" msgstr "लà¥à¤•अप टेबलचे निरà¥à¤¦à¥‡à¤¶à¤¨" #: ../data/ibus.schemas.in.h:35 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "लà¥à¤•अप टेबलचे निरà¥à¤¦à¥‡à¤¶à¤¨. 0 = Horizontal, 1 = Vertical" #: ../data/ibus.schemas.in.h:37 msgid "Show input method name" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¥‡ नाव दाखवा" #: ../data/ibus.schemas.in.h:39 msgid "RGBA value of XKB icon" msgstr "XKB चिनà¥à¤¹à¤¾à¤šà¥‡ RGBA मूलà¥à¤¯" #: ../data/ibus.schemas.in.h:41 #, no-c-format msgid "" "XKB icon shows the layout string and the string is rendered with the RGBA " "value. The RGBA value can be 1. a color name from X11, 2. a hex value in " "form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " "blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " "'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " "to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " "point value in the range 0 to 1 of the alpha." msgstr "XKB चिनà¥à¤¹ मांडणी सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग दाखवते आणि सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग RGBA मूलà¥à¤¯à¤¸à¤¹ दाखविले जाईल. RGBA मूलà¥à¤¯ 1 असू शकते. X11 पासून रंग नाव, 2. फॉरà¥à¤® '#rrggbb' मधील हेकà¥à¤¸ मूलà¥à¤¯ जेथे 'r', 'g' आणि 'b' हे रेड, गà¥à¤°à¥€à¤¨, आणि बà¥à¤²à¥à¤šà¥‡ हेकà¥à¤¸ अंक आहेत, 3. RGB रंग 'rgb(r,g,b)' सà¥à¤µà¤°à¥‚पात किंवा 4. à¤à¤• RGBA रंग, 'rgba(r,g,b,a)' सà¥à¤µà¤°à¥‚पात जेथे 'r', 'g', आणि 'b' à¤à¤•तर इंटिजरà¥à¤¸ असतात, 0 ते 255 वà¥à¤¯à¤¾à¤ªà¥à¤¤à¤¿à¤®à¤§à¥à¤¯à¥‡ किंवा टकà¥à¤•ेवारि मूलà¥à¤¯, 0% ते 100% अशा वà¥à¤¯à¤¾à¤ªà¥à¤¤à¤¿ अंतरà¥à¤—त, आणि 'a' फà¥à¤²à¥‹à¤Ÿà¤¿à¤‚ग पॉइंट मूलà¥à¤¯ आहे, अलà¥à¤«à¤¾à¤šà¥à¤¯à¤¾ 0 ते 1 अशा वà¥à¤¯à¤¾à¤ªà¥à¤¤à¤¿à¤®à¤§à¥à¤¯à¥‡." #: ../data/ibus.schemas.in.h:44 msgid "Use custom font" msgstr "सà¥à¤µà¤ªà¤¸à¤‚त फॉनà¥à¤Ÿ वापरा" #: ../data/ibus.schemas.in.h:45 msgid "Use custom font name for language panel" msgstr "भाषा पटल करीत सà¥à¤µà¤ªà¤¸à¤‚त फॉनà¥à¤Ÿ नाव वापरा" #: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "मनपसंत फॉनà¥à¤Ÿ" #: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "भाषा पटल करीता सà¥à¤µà¤ªà¤¸à¤‚त फॉनà¥à¤Ÿ नाव" #: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "पà¥à¤°à¤¿à¤à¤¡à¥€à¤Ÿ मजकूर à¤à¤®à¥à¤¬à¥‡à¤¡ करा" #: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "à¤à¤ªà¥à¤²à¤¿à¤•ेशन पटलात पà¥à¤°à¤¿à¤à¤¡à¥€à¤Ÿ मजकूर à¤à¤®à¥à¤¬à¥‡à¤¡ करा" #: ../data/ibus.schemas.in.h:50 msgid "Use global input method" msgstr "गà¥à¤²à¥‹à¤¬à¤² इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडा" #: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "पूरà¥à¤µà¤¨à¤¿à¤¤à¤°à¥à¤§à¤¾à¤°à¥€à¤¤à¤ªà¤£à¥‡ इंपà¥à¤Ÿ पदà¥à¤§à¤¤ सà¥à¤°à¥‚ करा" #: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "à¤à¤ªà¥à¤²à¤¿à¤•ेशनला इंपà¥à¤Ÿ फोकस पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥à¤¯à¤¾à¤µà¤° इंपà¥à¤Ÿ पदà¥à¤§à¤¤ पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¥€à¤¤à¤ªà¤£à¥‡ सà¥à¤°à¥‚ करा" #: ../data/ibus.schemas.in.h:54 msgid "DConf preserve name prefixes" msgstr "DConf पà¥à¤°à¤¿à¤à¤°à¥à¤µà¥à¤¹ नेम पà¥à¤°à¤¿à¤«à¤¿à¤•à¥à¤¸à¥‡à¤¸à¥" #: ../data/ibus.schemas.in.h:55 msgid "Prefixes of DConf keys to stop name conversion" msgstr "नाव रूपांतर थांबवणà¥à¤¯à¤¾à¤•रीता DConf किजà¥à¤šà¥‡ पà¥à¤°à¤¿à¤«à¤¿à¤•à¥à¤¸à¥‡à¤¸à¥" #: ../ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "सरà¥à¤µà¤¹à¤•à¥à¤•ाधिकार (c) 2007-2010 पेंग हà¥à¤†à¤‚ग\nसरà¥à¤µà¤¹à¤•à¥à¤•ाधिकार (c) 2007-2010 Red Hat, Inc." #: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 msgid "Other" msgstr "इतर" #: ../setup/engineabout.py:70 #, python-format msgid "Language: %s\n" msgstr "भाषा: %s\n" #: ../setup/engineabout.py:73 #, python-format msgid "Keyboard layout: %s\n" msgstr "कळफलक मांडणी: %s\n" #: ../setup/engineabout.py:76 #, python-format msgid "Author: %s\n" msgstr "लेखक: %s\n" #: ../setup/engineabout.py:79 msgid "Description:\n" msgstr "वरà¥à¤£à¤¨:\n" #: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 msgid "Select an input method" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤ नीवडा" #: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 #: ../setup/main.py:413 msgid "_Cancel" msgstr "रदà¥à¤¦ करा (_C)" #: ../setup/enginedialog.py:203 msgid "More…" msgstr "आणखी…" #: ../setup/enginetreeview.py:94 msgid "Kbd" msgstr "Kbd" #: ../setup/ibus-setup.desktop.in.h:2 msgid "Set IBus Preferences" msgstr "IBus पसंती सà¥à¤°à¥‚ करा" #: ../setup/keyboardshortcut.py:56 msgid "Keyboard shortcuts" msgstr "कळफलक शारà¥à¤Ÿà¤•ट" #: ../setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "कि कोड:" #: ../setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "मॉडिफायर:" #. apply button #: ../setup/keyboardshortcut.py:134 msgid "_Apply" msgstr "लागू करा (_A)" #. delete button #: ../setup/keyboardshortcut.py:140 msgid "_Delete" msgstr "नषà¥à¤Ÿ करा (_D)" #: ../setup/keyboardshortcut.py:256 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "कृपया कि (किंवा कि जोडणी) दाबा.\nकि सोडलà¥à¤¯à¤¾à¤µà¤° संवाद बंद होईल." #: ../setup/keyboardshortcut.py:259 msgid "Please press a key (or a key combination)" msgstr "कृपया कि (किंवा कि जोडणी) दाबा" #: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 msgid "_OK" msgstr "ठिक आहे (_O)" #: ../setup/main.py:113 ../setup/main.py:438 msgid "Use shortcut with shift to switch to the previous input method" msgstr "मागील इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤šà¤¾ वापर करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ शिफà¥à¤Ÿà¤¸à¤¹ शारà¥à¤Ÿà¤•टचा वापर करा" #: ../setup/main.py:368 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus डिमन सà¥à¤°à¥‚ नाही. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ ते सà¥à¤°à¥‚ करायचे?" #: ../setup/main.py:389 msgid "" "IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "IBus सà¥à¤°à¥‚ à¤à¤¾à¤²à¥‡! IBus चा वापर न केलà¥à¤¯à¤¾à¤¸, खालील ओळींना $HOME/.bashrc मधà¥à¤¯à¥‡ समाविषà¥à¤Ÿ करा; व तà¥à¤¯à¤¾à¤¨à¤‚तर डेसà¥à¤•टॉपमधà¥à¤¯à¥‡ पà¥à¤¨à¤ƒ पà¥à¤°à¤µà¥‡à¤¶ करा.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: ../setup/main.py:403 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus डिमन %d सेकंदात सà¥à¤°à¥‚ करणे अशकà¥à¤¯" #: ../setup/main.py:415 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s करीता कळफलक शारà¥à¤Ÿà¤•ट नीवडा" #. Translators: Title of the window #: ../setup/main.py:417 msgid "switching input methods" msgstr "इंपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤‚चा वापर करत आहे" #: ../tools/main.vala:48 msgid "List engine name only" msgstr "फकà¥à¤¤ इंजिन नाव सूचीत दाखवा" #: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 msgid "Can't connect to IBus.\n" msgstr "IBus शी जोडणी अशकà¥à¤¯.\n" #: ../tools/main.vala:90 #, c-format msgid "language: %s\n" msgstr "भाषा: %s\n" #: ../tools/main.vala:158 msgid "No engine is set.\n" msgstr "इंजिन ठरवले नाही.\n" #: ../tools/main.vala:166 msgid "Set global engine failed.\n" msgstr "गà¥à¤°à¥‹à¤¬à¤² इंजिन ठरवणà¥à¤¯à¤¾à¤¸ अपयशी.\n" #: ../tools/main.vala:171 msgid "Get global engine failed.\n" msgstr "गà¥à¤°à¥‹à¤¬à¤² इंजिन ठरवणà¥à¤¯à¤¾à¤¸ अपयशी.\n" #: ../tools/main.vala:210 msgid "Read the system registry cache." msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे वाचा." #: ../tools/main.vala:212 msgid "Read the registry cache FILE." msgstr "रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे FILE वाचा." #: ../tools/main.vala:230 ../tools/main.vala:235 msgid "The registry cache is invalid.\n" msgstr "रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे अवैध आहे.\n" #: ../tools/main.vala:250 msgid "Write the system registry cache." msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे लिहा." #: ../tools/main.vala:252 msgid "Write the registry cache FILE." msgstr "रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे FILE लिहा." #: ../tools/main.vala:304 msgid "Resetting…" msgstr "पà¥à¤¨à¥à¤¹à¤¾ सेट करत आहे…" #: ../tools/main.vala:318 msgid "Done" msgstr "पूरà¥à¤£ à¤à¤¾à¤²à¥‡" #: ../tools/main.vala:337 msgid "Set or get engine" msgstr "इंजिन सेट किंवा पà¥à¤°à¤¾à¤ªà¥à¤¤ करा" #: ../tools/main.vala:338 msgid "Exit ibus-daemon" msgstr "ibus-daemon पासून बाहेर पडा" #: ../tools/main.vala:339 msgid "Show available engines" msgstr "उपलबà¥à¤§ इंजिनà¥à¤¸ दाखवा" #: ../tools/main.vala:340 msgid "(Not implemented)" msgstr "(लागू केले नाही)" #: ../tools/main.vala:341 msgid "Restart ibus-daemon" msgstr "ibus-daemon पà¥à¤¨à¥à¤¹à¤¾ सà¥à¤°à¥‚ करा" #: ../tools/main.vala:342 msgid "Show version" msgstr "आवृतà¥à¤¤à¥€ दाखवा" #: ../tools/main.vala:343 msgid "Show the content of registry cache" msgstr "रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशेमधील अंतरà¥à¤­à¥à¤¤ माहिती दाखवा" #: ../tools/main.vala:344 msgid "Create registry cache" msgstr "रेजिसà¥à¤Ÿà¥à¤°à¤¿ कॅशे निरà¥à¤®à¤¾à¤£ करा" #: ../tools/main.vala:345 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon चà¥à¤¯à¤¾ D-Bus पतà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ छपाई करा " #: ../tools/main.vala:346 msgid "Show the configuration values" msgstr "संरचना मूलà¥à¤¯à¥‡ दाखवा" #: ../tools/main.vala:347 msgid "Reset the configuration values" msgstr "संरचना मूलà¥à¤¯ मूळसà¥à¤¥à¤¿à¤¤à¥€à¤¤ आणा" #: ../tools/main.vala:348 msgid "Show this information" msgstr "ही माहिती दाखवा" #: ../tools/main.vala:354 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "वापर: %s COMMAND [OPTION...]\n\n" #: ../tools/main.vala:355 msgid "Commands:\n" msgstr "आदेश:\n" #: ../tools/main.vala:384 #, c-format msgid "%s is unknown command!\n" msgstr "%s अपरिचीत आदेश आहे!\n" #: ../ui/gtk3/panel.vala:611 msgid "IBus Update" msgstr "IBus सà¥à¤§à¤¾à¤°à¤£à¤¾" #: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 msgid "Super+space is now the default hotkey." msgstr "Super+space आतà¥à¤¤à¤¾ पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ हॉटि आहे." #: ../ui/gtk3/panel.vala:903 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix करीता IBus हे à¤à¤• हà¥à¤¶à¤¾à¤° इनपà¥à¤Ÿ बस आहे." #: ../ui/gtk3/panel.vala:907 msgid "translator-credits" msgstr "संदिप शेडमाके , 2009; संदिप शेडमाके , 2009, 2010." #: ../ui/gtk3/panel.vala:928 msgid "Preferences" msgstr "आवड निवड" #: ../ui/gtk3/panel.vala:938 msgid "Restart" msgstr "पà¥à¤¨à¥à¤¹à¤¾ चालू करा" #: ../ui/gtk3/panel.vala:942 msgid "Quit" msgstr "बाहेर पडा " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ../ui/gtk3/propertypanel.vala:371 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.11/ibus/0000755000000000000000000000000012551655055010463 500000000000000ibus-1.5.11/ibus/bus.py0000644000000000000000000001376412551654123011554 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "Bus", ) import dbus import dbus.lowlevel import dbus.connection import dbus.mainloop.glib import gobject import common import object import serializable import config dbus.mainloop.glib.DBusGMainLoop(set_as_default = True) class Bus(object.Object): __gtype_name__ = "PYIBusBus" __gsignals__ = { "disconnected" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "config-reloaded" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "registry-changed" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), } def __init__(self): super(Bus, self).__init__() self.__dbusconn = dbus.connection.Connection(common.get_address()) _dbus = self.__dbusconn.get_object(dbus.BUS_DAEMON_NAME, dbus.BUS_DAEMON_PATH) self.__dbus = dbus.Interface (_dbus, dbus_interface="org.freedesktop.DBus") self.__unique_name = self.hello() _ibus = self.__dbusconn.get_object(common.IBUS_SERVICE_IBUS, common.IBUS_PATH_IBUS) self.__ibus = dbus.Interface (_ibus, dbus_interface='org.freedesktop.IBus') self.__ibus.connect_to_signal("RegistryChanged", self.__registry_changed_cb) self.__dbusconn.call_on_disconnection(self.__dbusconn_disconnected_cb) # self.__dbusconn.add_message_filter(self.__filter_cb) def __filter_cb(self, conn, message): if message.get_type() == 4: print "Signal %s" % message.get_member() print " sender = %s" % message.get_sender() print " path = %s" % message.get_path() return dbus.lowlevel.HANDLER_RESULT_NOT_YET_HANDLED def __dbusconn_disconnected_cb(self, dbusconn): assert self.__dbusconn == dbusconn self.__dbusconn = None self.emit("disconnected") def __registry_changed_cb(self): self.emit("registry-changed") def get_name(self): return self.__unique_name def get_is_connected(self): if self.__dbusconn == None: return False return self.__dbusconn.get_is_connected() # define dbus methods def get_dbus(self): return self.__dbus def hello(self): return self.__dbus.Hello() def request_name(self, name, flags): return self.__dbus.RequestName(name, dbus.UInt32 (flags)) def release_name(self, name): return self.__dbus.ReleaseName(name) def start_service_by_name(self, name, flags): return self.__dbus.StartServiceByName(name, dbus.UInt32 (flags)) def list_queued_owners(self, name): return self.__dbus.ListQueuedOwners(name) def get_name_owner(self, name): return self.__dbus.GetNameOwner(name) def add_match(self, rule): return self.__dbus.AddMatch(rule) def remove_match(self, rule): return self.__dbus.RemoveMatch(rule) def get_dbusconn(self): return self.__dbusconn def get_address(self): return common.get_address() # define ibus methods def register_component(self, component): component = serializable.serialize_object(component) return self.__ibus.RegisterComponent(component) def list_engines(self): engines = self.__ibus.ListEngines() return map(serializable.deserialize_object, engines) def get_engines_by_names(self, names): engines = self.__ibus.GetEnginesByNames(names) return map(serializable.deserialize_object, engines) def list_active_engines(self): engines = self.__ibus.ListActiveEngines() return map(serializable.deserialize_object, engines) def set_global_engine(self, name): return self.__ibus.SetGlobalEngine(name) def create_input_context(self, client_name): return self.__ibus.CreateInputContext(client_name) def current_input_contxt(self): return self.__ibus.CurrentInputContext() def exit(self, restart): return self.__ibus.Exit(restart) def ping(self, data): flag = isinstance(data, serializable.Serializable) if flag: data = serializable.serialize_object(data) data = self.__ibus.Ping(data, dbus_interface="org.freedesktop.IBus") if flag: data = serializable.deserialize_object(data) return data def introspect_ibus(self): return self.__ibus.Introspect() def introspect_dbus(self): return self.__dbus.Introspect() def get_config(self): try: return self.__config except: self.__config = config.Config(self) return self.__config def test(): import glib import factory import text mainloop = glib.MainLoop() def __disconnected_cb(*args): print "Disconnected", args mainloop.quit() b = Bus() b.connect("disconnected", __disconnected_cb) print "unique_name =", b.get_name() for i in b.list_factories(): print i.name mainloop.run() print "Exit" if __name__ == "__main__": test() ibus-1.5.11/ibus/inputcontext.py0000644000000000000000000003053012551654123013515 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "InputContext", ) import sys import gobject import dbus import dbus.lowlevel import object import common import serializable from text import Text class InputContext(object.Object): __gtype_name__ = "PYIBusInputContext" __gsignals__ = { "commit-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, ) ), "update-preedit-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_UINT, gobject.TYPE_BOOLEAN) ), "show-preedit-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "hide-preedit-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "update-auxiliary-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN) ), "show-auxiliary-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "hide-auxiliary-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "update-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN) ), "show-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "hide-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "page-up-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "page-down-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "cursor-up-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "cursor-down-lookup-table" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "enabled" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "disabled" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "forward-key-event" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_UINT, gobject.TYPE_UINT, gobject.TYPE_UINT) ), "delete-surrounding-text" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT, gobject.TYPE_UINT) ), } def __init__(self, bus, path, watch_signals=False): super(InputContext, self).__init__() self.__bus = bus _context = bus.get_dbusconn().get_object(common.IBUS_SERVICE_IBUS, path) self.__context = dbus.Interface(_context, dbus_interface="org.freedesktop.IBus.InputContext") self.__signal_matches = [] self.__needs_surrounding_text = False self.__surrounding_text = Text() self.__surrounding_cursor_pos = 0 self.__selection_anchor_pos = 0 if not watch_signals: return m = self.__context.connect_to_signal("CommitText", self.__commit_text_cb) self.__signal_matches.append(m) m = self.__context.connect_to_signal("UpdatePreeditText", self.__update_preedit_text_cb) self.__signal_matches.append(m) m = self.__context.connect_to_signal("UpdateAuxiliaryText", self.__update_auxiliary_text_cb) self.__signal_matches.append(m) m = self.__context.connect_to_signal("UpdateLookupTable", self.__update_lookup_table_cb) self.__signal_matches.append(m) m = self.__context.connect_to_signal("RequireSurroundingText", self.__require_surrounding_text_cb) self.__signal_matches.append(m) m = self.__context.connect_to_signal("ForwardKeyEvent", lambda *args: self.emit("forward-key-event", *args)) self.__signal_matches.append(m) m = self.__context.connect_to_signal("DeleteSurroundingText", lambda *args: self.emit("delete-surrounding-text", *args)) self.__signal_matches.append(m) m = self.__context.connect_to_signal("Disabled", lambda *args: self.emit("disabled")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("ShowPreeditText", lambda *args: self.emit("show-preedit-text")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("HidePreeditText", lambda *args: self.emit("hide-preedit-text")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("ShowAuxiliaryText", lambda *args: self.emit("show-auxiliary-text")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("HideAuxiliaryText", lambda *args: self.emit("hide-auxiliary-text")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("ShowLookupTable", lambda *args: self.emit("show-lookup-table")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("HideLookupTable", lambda *argss: self.emit("hide-lookup-table")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("PageUpLookupTable", lambda *args: self.emit("page-up-lookup-table")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("PageDownLookupTable", lambda *args: self.emit("page-down-lookup-table")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("CursorUpLookupTable", lambda *args: self.emit("cursor-up-lookup-table")) self.__signal_matches.append(m) m = self.__context.connect_to_signal("CursorDownLookupTable", lambda *args: self.emit("cursor-down-lookup-table")) self.__signal_matches.append(m) def __commit_text_cb(self, *args): text = serializable.deserialize_object(args[0]) self.emit("commit-text", text) def __update_preedit_text_cb(self, *args): text = serializable.deserialize_object(args[0]) cursor_pos = args[1] visible = args[2] self.emit("update-preedit-text", text, cursor_pos, visible) def __update_auxiliary_text_cb(self, *args): text = serializable.deserialize_object(args[0]) visible = args[1] self.emit("update-auxiliary-text", text, visible) def __update_lookup_table_cb(self, *args): table = serializable.deserialize_object(args[0]) visible = args[1] self.emit("update-lookup-table", table, visible) def __require_surrounding_text_cb(self, *args): self.__needs_surrounding_text = True def needs_surrounding_text(self): return self.__needs_surrounding_text def set_surrounding_text(self, text, cursor_pos, anchor_pos): if self.__surrounding_text.get_text() != text or \ self.__surrounding_cursor_pos != cursor_pos or \ self.__selection_anchor_pos != anchor_pos: self.__surrounding_text = Text(text) self.__surrounding_cursor_pos = cursor_pos self.__selection_anchor_pos = anchor_pos text = serializable.serialize_object(self.__surrounding_text) cursor_pos = dbus.UInt32(self.__surrounding_cursor_pos) anchor_pos = dbus.UInt32(self.__selection_anchor_pos) self.__context.SetSurroundingText(text, cursor_pos, anchor_pos) def process_key_event(self, keyval, keycode, modifiers): keyval = dbus.UInt32(keyval) keycode = dbus.UInt32(keycode) modifiers = dbus.UInt32(modifiers) return self.__context.ProcessKeyEvent(keyval, keycode, modifiers) def set_cursor_location(self, x, y, w, h): x = dbus.Int32(x) y = dbus.Int32(y) w = dbus.Int32(w) h = dbus.Int32(h) return self.__context.SetCursorLocation(x, y, w, h) def focus_in(self): return self.__context.FocusIn() def focus_out(self): return self.__context.FocusOut() def reset(self): return self.__context.Reset() def set_capabilities(self, caps): caps = dbus.UInt32(caps) return self.__context.SetCapabilities(caps) def detach_signals(self): for m in self.__signal_matches: m.remove() del self.__signal_matches[:] def destroy(self): self.detach_signals() super(InputContext, self).destroy() def get_engine(self): try: engine = self.__context.GetEngine() engine = serializable.deserialize_object(engine) return engine except: return None def set_engine(self, engine): return self.__context.SetEngine(engine.name) def introspect(self): return self.__context.Introspect() def test(): import gtk import gtk.gdk from bus import Bus import modifier import text import attribute import property import lookuptable import factory class TestWindow(gtk.Window): def __init__(self): super(TestWindow,self).__init__() self.__bus = Bus() print self.__bus.get_name() self.__bus.connect("disconnected", gtk.main_quit) context_path = self.__bus.create_input_context("Test") print context_path self.__context = InputContext(self.__bus, context_path) self.__context.set_capabilities (9) self.__context.connect("commit-text", self.__commit_text_cb) self.__context.connect("update-preedit-text", self.__update_preedit_text_cb) self.__context.connect("show-preedit-text", self.__show_preedit_text_cb) self.__context.connect("update-auxiliary-text", self.__update_auxiliary_text_cb) self.__context.connect("update-lookup-table", self.__update_lookup_table_cb) self.set_events(gtk.gdk.KEY_PRESS_MASK | gtk.gdk.KEY_RELEASE_MASK | gtk.gdk.FOCUS_CHANGE_MASK) self.connect("key-press-event", self.__key_press_event_cb) self.connect("key-release-event", self.__key_release_event_cb) self.connect("delete-event", gtk.main_quit) self.connect("focus-in-event", lambda *args: self.__context.focus_in()) self.connect("focus-out-event", lambda *args: self.__context.focus_out()) self.show_all() def __commit_text_cb(self, context, text): print "commit-text:", text.text def __update_preedit_text_cb(self, context, text, cursor_pos, visible): print "preedit-text:", text.text, cursor_pos, visible def __show_preedit_text_cb(self, context): print "show-preedit-text" def __hide_preedit_text_cb(self, context): print "hide-preedit-text" def __update_auxiliary_text_cb(self, context, text, visible): print "auxiliary-text:", text.text, visible def __update_lookup_table_cb(self, context, table, visible): print "update-lookup-table:", visible def __key_press_event_cb(self, widget, event): self.__context.process_key_event(event.keyval, event.state) def __key_release_event_cb(self, widget, event): self.__context.process_key_event(event.keyval, event.state | modifier.RELEASE_MASK) w = TestWindow() gtk.main() if __name__ == "__main__": test() ibus-1.5.11/ibus/interface/0000755000000000000000000000000012551655056012424 500000000000000ibus-1.5.11/ibus/interface/iengine.py0000644000000000000000000000767712551654123014347 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright(c) 2007-2010 Peng Huang # Copyright(c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IEngine", ) import dbus.service from ibus.common import \ IBUS_IFACE_ENGINE class IEngine(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_ENGINE, \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface=IBUS_IFACE_ENGINE, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_ENGINE, \ async_callbacks=("reply_cb", "error_cb"), \ **args) @method(in_signature="uuu", out_signature="b") def ProcessKeyEvent(self, keyval, keycode, state): pass @method(in_signature="iiii") def SetCursorLocation(self, x, y, w, h): pass @method(in_signature="vuu") def SetSurroundingText(self, text, cursor_index, anchor_pos): pass @method(in_signature="u") def SetCapabilities(self, cap): pass @method() def FocusIn(self): pass @method() def FocusOut(self): pass @method() def Reset(self): pass # signals for lookup table @method() def PageUp(self): pass @method() def PageDown(self): pass @method() def CursorUp(self): pass @method() def CursorDown(self): pass @method(in_signature="uuu") def CandidateClicked(self, index, button, state): pass @method() def Enable(self): pass @method() def Disable(self): pass @method(in_signature="su") def PropertyActivate(self, prop_name, prop_state): pass @method(in_signature="s") def PropertyShow(self, prop_name): pass @method(in_signature="s") def PropertyHide(self, prop_name): pass @method() def Destroy(self): pass @signal(signature="v") def CommitText(self, text): pass @signal(signature="uuu") def ForwardKeyEvent(self, keyval, keycode, state): pass @signal(signature="vubu") def UpdatePreeditText(self, text, cursor_pos, visible, mode): pass @signal() def ShowPreeditText(self): pass @signal() def HidePreeditText(self): pass @signal(signature="vb") def UpdateAuxiliaryText(self, text, visible): pass @signal() def ShowAuxiliaryText(self): pass @signal() def HideAuxiliaryText(self): pass @signal(signature="vb") def UpdateLookupTable(self, lookup_table, visible): pass @signal() def ShowLookupTable(self): pass @signal() def HideLookupTable(self): pass @signal() def PageUpLookupTable(self): pass @signal() def PageDownLookupTable(self): pass @signal() def CursorUpLookupTable(self): pass @signal() def CursorDownLookupTable(self): pass @signal(signature="v") def RegisterProperties(self, props): pass @signal(signature="v") def UpdateProperty(self, prop): pass @signal(signature="iu") def DeleteSurroundingText(self, offset_from_cursor, nchars): pass @signal() def RequireSurroundingText(self): pass ibus-1.5.11/ibus/interface/__init__.py0000644000000000000000000000204212551654123014445 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA from iibus import * from iinputcontext import * from iengine import * from ienginefactory import * from ipanel import * from iconfig import * from inotifications import * ibus-1.5.11/ibus/interface/inotifications.py0000644000000000000000000000376112551654123015741 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright(c) 2007-2010 Peng Huang # Copyright(c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("INotifications", ) import dbus.service from ibus.common import \ IBUS_IFACE_NOTIFICATIONS class INotifications(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface = IBUS_IFACE_NOTIFICATIONS, \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface = IBUS_IFACE_NOTIFICATIONS, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface = IBUS_IFACE_NOTIFICATIONS, \ async_callbacks = ("reply_cb", "error_cb"), \ **args) @method(in_signature="usssasi", out_signature="u") def Notify(self, replaces_id, app_icon, summary, body, actions, expire_timeout): pass @method(in_signature="u") def CloseNotification(self, id): pass #signals @signal(signature="uu") def NotificationClosed(self, id, reason): pass @signal(signature="us") def ActionInvoked(self, id, action_key): pass ibus-1.5.11/ibus/interface/ienginefactory.py0000644000000000000000000000405112551654123015716 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IEngineFactory", ) import dbus.service from ibus.common import \ IBUS_IFACE_ENGINE_FACTORY class IEngineFactory(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_ENGINE_FACTORY, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_ENGINE_FACTORY, \ async_callbacks=("reply_cb", "error_cb"), \ **args) # Return a array. [name, default_language, icon_path, authors, credits] @method(out_signature="as") def GetInfo(self): pass # Factory should allocate all resources in this method @method() def Initialize(self): pass # Factory should free all allocated resources in this method @method() def Uninitialize(self): pass # Create an input context and return the id of the context. # If failed, it will return "" or None. @method(in_signature="s", out_signature="o") def CreateEngine(self, engine_name): pass # Destroy the engine @method() def Destroy(self): pass ibus-1.5.11/ibus/interface/iconfig.py0000644000000000000000000000372112551654123014331 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IConfig", ) import dbus.service from ibus.common import \ IBUS_IFACE_CONFIG class IConfig(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_CONFIG, \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface=IBUS_IFACE_CONFIG, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_CONFIG, \ async_callbacks=("reply_cb", "error_cb"), \ **args) @method(in_signature="ss", out_signature="v") def GetValue(self, section, name): pass @method(in_signature="s", out_signature="s{sv}") def GetValues(self, section): pass @method(in_signature="ssv") def SetValue(self, section, name, value): pass @method(in_signature="ss") def UnsetValue(self, section, name): pass @method() def Destroy(self): pass @signal(signature="ssv") def ValueChanged(self, section, name, value): pass ibus-1.5.11/ibus/interface/ipanel.py0000644000000000000000000000672112551654123014166 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright(c) 2007-2010 Peng Huang # Copyright(c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IPanel", ) import dbus.service from ibus.common import \ IBUS_IFACE_PANEL class IPanel(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_PANEL, \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface=IBUS_IFACE_PANEL, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_PANEL, \ async_callbacks=("reply_cb", "error_cb"), \ **args) @method(in_signature="iiii") def SetCursorLocation(self, x, y, w, h): pass @method(in_signature="vub") def UpdatePreeditText(self, text, cursor_pos, visible): pass @method() def ShowPreeditText(self): pass @method() def HidePreeditText(self): pass @method(in_signature="vb") def UpdateAuxiliaryText(self, text, visible): pass @method() def ShowAuxiliaryText(self): pass @method() def HideAuxiliaryText(self): pass @method(in_signature="vb") def UpdateLookupTable(self, lookup_table, visible): pass @method() def ShowLookupTable(self): pass @method() def HideLookupTable(self): pass @method() def PageUpLookupTable(self): pass @method() def PageDownLookupTable(self): pass @method() def CursorUpLookupTable(self): pass @method() def CursorDownLookupTable(self): pass @method(in_signature="v") def RegisterProperties(self, props): pass @method(in_signature="v") def UpdateProperty(self, prop): pass @method() def ShowLanguageBar(self): pass @method() def HideLanguageBar(self): pass @method(in_signature="o") def FocusIn(self, ic): pass @method(in_signature="o") def FocusOut(self, ic): pass @method() def StateChanged(self): pass @method() def Reset(self): pass @method() def StartSetup(self): pass @method() def Destroy(self): pass #signals @signal() def PageUp(self): pass @signal() def PageDown(self): pass @signal() def CursorUp(self): pass @signal(signature="uuu") def CandidateClicked(self, index, button, state): pass @signal() def CursorDown(self): pass @signal(signature="su") def PropertyActivate(self, prop_name, prop_state): pass @signal(signature="s") def PropertyShow(self, prop_name): pass @signal(signature="s") def PropertyHide(self, prop_name): pass ibus-1.5.11/ibus/interface/iibus.py0000644000000000000000000000521012551654123014021 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IIBus", ) import dbus.service from ibus.common import \ IBUS_IFACE_IBUS, \ IBUS_IFACE_CONFIG class IIBus(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_IBUS, \ connection_keyword="dbusconn", \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_IBUS, \ connection_keyword="dbusconn", \ async_callbacks=("reply_cb", "error_cb"), \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface=IBUS_IFACE_IBUS, \ **args) @method(out_signature="s") def GetAddress(self, dbusconn): pass # methods for ibus clients @method(in_signature="s", out_signature="o") def CreateInputContext(self, client_name, dbusconn): pass @method(out_signature="o") def CurrentInputContext(self, dbusconn): pass # general methods @method(in_signature="av") def RegisterComponent(self, components, dbusconn): pass @method(out_signature="av") def ListEngines(self, dbusconn): pass @method(in_signature="as", out_signature="av") def GetEnginesByNames(self, names, dbusconn): pass @method(out_signature="av") def ListActiveEngines(self, dbusconn): pass @method(in_signature="s") def SetGlobalEngine(self, name, dbusconn):pass @method(in_signature="b") def Exit(self, restart, dbusconn): pass @method(in_signature="v", out_signature="v") def Ping(self, data, dbusconn): pass @signal(signature="") def RegistryChanged(self): pass ibus-1.5.11/ibus/interface/Makefile.in0000644000000000000000000005126512551654260014416 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = ibus/interface ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(ibus_interface_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__installdirs = "$(DESTDIR)$(ibus_interfacedir)" am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = $(PYTHON2) PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ibus_interface_PYTHON = \ iconfig.py \ ienginefactory.py \ iengine.py \ iibus.py \ iinputcontext.py \ ipanel.py \ inotifications.py \ __init__.py \ $(NULL) ibus_interfacedir = @pkgpython2dir@/interface CLEANFILES = \ *.pyc \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ibus/interface/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ibus/interface/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-ibus_interfacePYTHON: $(ibus_interface_PYTHON) @$(NORMAL_INSTALL) @list='$(ibus_interface_PYTHON)'; dlist=; list2=; test -n "$(ibus_interfacedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibus_interfacedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibus_interfacedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ibus_interfacedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(ibus_interfacedir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(ibus_interfacedir)" $$dlist; \ else :; fi uninstall-ibus_interfacePYTHON: @$(NORMAL_UNINSTALL) @list='$(ibus_interface_PYTHON)'; test -n "$(ibus_interfacedir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(ibus_interfacedir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: for dir in "$(DESTDIR)$(ibus_interfacedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-ibus_interfacePYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-ibus_interfacePYTHON .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-ibus_interfacePYTHON install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-ibus_interfacePYTHON .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/ibus/interface/Makefile.am0000644000000000000000000000223612551654123014375 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA PYTHON = $(PYTHON2) ibus_interface_PYTHON = \ iconfig.py \ ienginefactory.py \ iengine.py \ iibus.py \ iinputcontext.py \ ipanel.py \ inotifications.py \ __init__.py \ $(NULL) ibus_interfacedir = @pkgpython2dir@/interface CLEANFILES = \ *.pyc \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/ibus/interface/iinputcontext.py0000644000000000000000000000672412551654123015636 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IInputContext", ) import dbus.service from ibus.common import \ IBUS_IFACE_INPUT_CONTEXT class IInputContext(dbus.service.Object): # define method decorator. method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_INPUT_CONTEXT, \ **args) # define async method decorator. async_method = lambda **args: \ dbus.service.method(dbus_interface=IBUS_IFACE_INPUT_CONTEXT, \ async_callbacks=("reply_cb", "error_cb"), \ **args) # define signal decorator. signal = lambda **args: \ dbus.service.signal(dbus_interface=IBUS_IFACE_INPUT_CONTEXT, \ **args) @async_method(in_signature="uuu", out_signature="b") def ProcessKeyEvent(self, keyval, keycode, state, reply_cb, error_cb): pass @method(in_signature="iiii") def SetCursorLocation(self, x, y, w, h): pass @method(in_signature="vuu") def SetSurroundingText(self, text, cursor_index, anchor_pos): pass @method() def FocusIn(self): pass @method() def FocusOut(self): pass @method() def Reset(self): pass @method(in_signature="u") def SetCapabilities(self, caps): pass @method(out_signature="v") def GetEngine(self): pass @method(in_signature="s") def SetEngine(self, engine_name): pass @method() def Destroy(self): pass #sigals @signal(signature="v") def CommitText(self, text): pass @signal(signature="uuu") def ForwardKeyEvent(self, keyval, keycode, state): pass @signal(signature="iu") def DeleteSurroundingText(self, offset_from_cursor, nchars): pass @signal(signature="vub") def UpdatePreeditText(self, text, cursor_pos, visible): pass @signal() def ShowPreeditText(self): pass @signal() def HidePreeditText(self): pass @signal(signature="vb") def UpdateAuxiliaryText(self, text, visible): pass @signal() def ShowAuxiliaryText(self): pass @signal() def HideAuxiliaryText(self): pass @signal(signature="vb") def UpdateLookupTable(self, lookup_table, visible): pass @signal() def ShowLookupTable(self): pass @signal() def HideLookupTable(self): pass @signal() def PageUpLookupTable(self): pass @signal() def PageDownLookupTable(self): pass @signal() def CursorUpLookupTable(self): pass @signal() def CursorDownLookupTable(self): pass @signal(signature="v") def RegisterProperties(self, props): pass @signal(signature="v") def UpdateProperty(self, prop): pass ibus-1.5.11/ibus/_config.py.in0000644000000000000000000000340112551654123012757 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2007-2008 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "get_version", "get_copyright", "get_license", "get_ICON_KEYBOARD", "LIBIBUS_SONAME", "ISOCODES_PREFIX", "_" ) import gettext _ = lambda a: gettext.dgettext("@GETTEXT_PACKAGE@", a) def get_version(): return '@PACKAGE_VERSION@' def get_copyright(): return _('''Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.''') def get_license(): return 'LGPL' def get_ICON_KEYBOARD(): import gtk icon = '@IBUS_ICON_KEYBOARD@' fallback_icon = 'ibus-keyboard' settings = gtk.settings_get_default() if settings.get_property('gtk-icon-theme-name') != 'gnome': return fallback_icon theme = gtk.icon_theme_get_default() if not theme.lookup_icon(icon, 18, 0): return fallback_icon return icon LIBIBUS_SONAME='libibus-@IBUS_API_VERSION@.so.@LT_CURRENT_MINUS_AGE@' ISOCODES_PREFIX='@ISOCODES_PREFIX@' ibus-1.5.11/ibus/object.py0000644000000000000000000000326612551654123012225 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "Object", ) import gobject class Object(gobject.GObject): __gtype_name__ = "PYIBusObject" __gsignals__ = { 'destroy' : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()) } def __init__(self): super(Object, self).__init__() self.__destroyed = False self.__handlers = [] def destroy(self): if not self.__destroyed: self.emit("destroy") self.__destroyed = True def do_destroy(self): self.__disconnect_all() def connect(self, signal_name, handler, *args): id = super(Object, self).connect(signal_name, handler, *args) self.__handlers.append(id) def __disconnect_all(self): map(self.disconnect, self.__handlers) self.__handlers = [] ibus-1.5.11/ibus/modifier.py0000644000000000000000000000310412551654123012544 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SHIFT_MASK = 1 << 0 LOCK_MASK = 1 << 1 CONTROL_MASK = 1 << 2 ALT_MASK = 1 << 3 MOD1_MASK = 1 << 3 MOD2_MASK = 1 << 4 MOD3_MASK = 1 << 5 MOD4_MASK = 1 << 6 MOD5_MASK = 1 << 7 BUTTON1_MASK = 1 << 8 BUTTON2_MASK = 1 << 9 BUTTON3_MASK = 1 << 10 BUTTON4_MASK = 1 << 11 BUTTON5_MASK = 1 << 12 HANDLED_MASK = 1 << 24 IGNORED_MASK = 1 << 25 FORWARD_MASK = 1 << 25 SUPER_MASK = 1 << 26 HYPER_MASK = 1 << 27 META_MASK = 1 << 28 RELEASE_MASK = 1 << 30 MODIFIER_MASK = 0x5c001fff MODIFIER_NAME_TABLE = ( ("Shift", SHIFT_MASK), ("CapsLock", LOCK_MASK), ("Ctrl", CONTROL_MASK), ("Alt", MOD1_MASK), ("SUPER", SUPER_MASK), ("Hyper", HYPER_MASK), ("Meta", META_MASK), ("Release", RELEASE_MASK), ) ibus-1.5.11/ibus/exception.py0000644000000000000000000000167712551654123012761 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ("IBusException", ) class IBusException(Exception): pass ibus-1.5.11/ibus/lookuptable.py0000644000000000000000000001723712551654123013303 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "LookupTable", ) import dbus from common import * from serializable import * from exception import * class LookupTable(Serializable): __gtype_name__ = "PYIBusLookupTable" __NAME__ = "IBusLookupTable" def __init__(self, page_size=5, cursor_pos=0, coursor_visible=True, round=False, orientation=ORIENTATION_SYSTEM, candidates=None, labels=None): super(LookupTable, self).__init__() self.__cursor_pos = cursor_pos self.__cursor_visible = True self.__round = round self.__orientation = orientation if candidates == None: self.__candidates = list() else: self.__candidates = candidates self.set_page_size(page_size) self.set_labels(labels) def set_page_size(self, page_size): self.__page_size = page_size def get_page_size(self): return self.__page_size def get_current_page_size(self): nr_candidate = len(self.__candidates) nr_page, last_page_size = divmod(nr_candidate, self.__page_size) if self.__cursor_pos / self.__page_size == nr_page: return last_page_size else: return self.__page_size def set_labels(self, labels): if labels == None: self.__labels = list() else: self.__labels = labels def get_labels(self): return self.__labels def show_cursor(self, show=True): self.__cursor_visible = show def is_cursor_visible(self): return self.__cursor_visible def get_current_page_start(self): return (self.__cursor_pos / self.__page_size) * self.__page_size def set_cursor_pos(self, pos): if pos >= len(self.__candidates) or pos < 0: return False self.__cursor_pos = pos return True def get_cursor_pos(self): return self.__cursor_pos def get_cursor_pos_in_current_page(self): page, pos_in_page = divmod(self.__cursor_pos, self.__page_size) return pos_in_page def set_cursor_pos_in_current_page(self, pos): if pos < 0 or pos >= self.__page_size: return False pos += self.get_current_page_start() if pos >= len(self.__candidates): return False self.__cursor_pos = pos return True def set_orientation(self, orientation): self.__orientation = orientation def get_orientation(self): return self.__orientation def page_up(self): if self.__cursor_pos < self.__page_size: if self.__round: nr_candidates = len(self.__candidates) max_page = nr_candidates / self.__page_size self.__cursor_pos += max_page * self.__page_size if self.__cursor_pos > nr_candidates - 1: self.__cursor_pos = nr_candidates - 1 return True else: return False self.__cursor_pos -= self.__page_size return True def page_down(self): current_page = self.__cursor_pos / self.__page_size nr_candidates = len(self.__candidates) max_page = nr_candidates / self.__page_size if current_page >= max_page: if self.__round: self.__cursor_pos %= self.__page_size return True else: return False pos = self.__cursor_pos + self.__page_size if pos >= nr_candidates: pos = nr_candidates - 1 self.__cursor_pos = pos return True def cursor_up(self): if self.__cursor_pos == 0: if self.__round: self.__cursor_pos = len(self.__candidates) - 1 return True else: return False self.__cursor_pos -= 1 return True def cursor_down(self): if self.__cursor_pos == len(self.__candidates) - 1: if self.__round: self.__cursor_pos = 0 return True else: return False self.__cursor_pos += 1 return True def clean(self): self.__candidates = list() self.__cursor_pos = 0 def append_candidate(self, text): self.__candidates.append(text) def get_candidate(self, index): return self.__candidates[index] def append_label(self, text): self.__labels.append(text) def get_label(self, index): return self.__labels[index] def get_candidates_in_current_page(self): page = self.__cursor_pos / self.__page_size start_index = page * self.__page_size end_index = min((page + 1) * self.__page_size, len(self.__candidates)) return self.__candidates[start_index:end_index] def get_current_candidate(self): return self.__candidates [self.__cursor_pos] def get_number_of_candidates(self): return len(self.__candidates) def __len__(self): return self.get_number_of_candidates() def serialize(self, struct): super(LookupTable, self).serialize(struct) struct.append(dbus.UInt32(self.__page_size)) struct.append(dbus.UInt32(self.__cursor_pos)) struct.append(dbus.Boolean(self.__cursor_visible)) struct.append(dbus.Boolean(self.__round)) struct.append(dbus.Int32(self.__orientation)) candidates = map(lambda c: serialize_object(c), self.__candidates) struct.append(dbus.Array(candidates, signature="v")) labels = map(lambda c: serialize_object(c), self.__labels) struct.append(dbus.Array(labels, signature="v")) def get_current_page_as_lookup_table(self): candidates = self.get_candidates_in_current_page() return LookupTable(self.__page_size, self.__cursor_pos % self.__page_size, self.__cursor_visible, self.__round, self.__orientation, candidates, self.__labels) def deserialize(self, struct): super(LookupTable, self).deserialize(struct) self.__page_size = struct.pop(0) self.__cursor_pos = struct.pop(0) self.__cursor_visible = struct.pop(0) self.__round = struct.pop(0) self.__orientation = struct.pop(0) self.__candidates = map(deserialize_object, struct.pop(0)) self.__labels = map(deserialize_object, struct.pop(0)) def test(): t = LookupTable() # attrs = AttrList() # attrs.append(AttributeBackground(RGB(233, 0,1), 0, 3)) # attrs.append(AttributeUnderline(1, 3, 5)) t.append_candidate("Hello") value = serialize_object(t) t = deserialize_object(value) t = t.get_current_page_as_lookup_table() value = serialize_object(t) t = deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/observedpath.py0000644000000000000000000000363012551654123013440 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "ObservedPath", ) import dbus from exception import IBusException from serializable import * class ObservedPath(Serializable): __gtype_name__ = "PYIBusObservedPath" __NAME__ = "IBusObservedPath" def __init__ (self, path="", mtime=0): super(ObservedPath, self).__init__() self.__path = path self.__mtime = mtime def get_path(self): return self.__path def get_mtime(self): return self.__mtime path = property(get_path) mtime = property(get_mtime) def serialize(self, struct): super(ObservedPath, self).serialize(struct) struct.append (dbus.String(self.__path)) struct.append (dbus.Int64(self.__mtime)) def deserialize(self, struct): super(ObservedPath, self).deserialize(struct) self.__path = struct.pop(0) self.__mtime = struct.pop(0) def test(): op = ObservedPath("/tmp", 111) value = serialize_object(op) op= deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/__init__.py0000644000000000000000000000276512551654123012521 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA import warnings warnings.warn("The ibus module is deprecated; " "Please use gobject-introspection instead", DeprecationWarning) from object import * from attribute import * from property import * from common import * from interface import * from exception import * from lookuptable import * from bus import * from inputcontext import * from lang import * from utility import * from engine import * from factory import * from panel import * from notifications import * from config import * from serializable import * from text import * from observedpath import * from enginedesc import * from component import * from _config import * ibus-1.5.11/ibus/factory.py0000644000000000000000000000772112551654123012426 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "EngineFactoryBase", "FactoryInfo" ) import dbus import object import interface from serializable import * from exception import * class EngineFactoryBase(object.Object): def __init__(self, bus): super(EngineFactoryBase, self).__init__() self.__proxy = EngineFactoryProxy (self, bus.get_dbusconn(), "/org/freedesktop/IBus/Factory") self.__bus = bus def initialize(self): pass def uninitialize(self): pass def create_engine(self, engine_name): raise IBusException("Can not create engine %s" % engine_name) def do_destroy(self): self.__proxy = None self.__bus = None super(EngineFactoryBase, self).do_destroy() class EngineFactoryProxy(interface.IEngineFactory): def __init__(self, factory, conn, object_path): super(EngineFactoryProxy, self).__init__(conn, object_path) self.__factory = factory def GetInfo(self): return self.__factory.get_info() def Initialize(self): return self.__factory.initialize() def Uninitialize(self): return self.__factory.uninitialize() def CreateEngine(self, engine_name): engine = self.__factory.create_engine(engine_name) return engine.get_dbus_object() def Destroy(self): self.__factory.destroy() self.__factory = None self.remove_from_connection () class FactoryInfo(Serializable): __gtype_name__ = "PYIBusFactoryInfo" __NAME__ = "IBusFactoryInfo" def __init__ (self, path=None, name=None, lang=None, icon=None, authors=None, credits=None): super(FactoryInfo, self).__init__() self.__path = path self.__name = name self.__lang = lang self.__icon = icon self.__authors = authors self.__credits = credits def get_path(self): return self.__path def get_name(self): return self.__name def get_lang(self): return self.__lang def get_icon(self): return self.__icon def get_authors(self): return self.__authors def get_credits(self): return self.__credits path = property(get_path) name = property(get_name) lang = property(get_lang) icon = property(get_icon) authors = property(get_authors) credits = property(get_credits) def serialize(self, struct): super(FactoryInfo, self).serialize(struct) struct.append (dbus.ObjectPath(self.__path)) struct.append (dbus.String(self.__name)) struct.append (dbus.String(self.__lang)) struct.append (dbus.String(self.__icon)) struct.append (dbus.String(self.__authors)) struct.append (dbus.String(self.__credits)) def deserialize(self, struct): super(FactoryInfo, self).deserialize(struct) if len(struct) < 5: raise IBusException ("Can not deserialize IBusFactoryInfo") self.__path = struct.pop(0) self.__name = struct.pop(0) self.__lang = struct.pop(0) self.__icon = struct.pop(0) self.__authors = struct.pop(0) self.__credits = struct.pop(0) ibus-1.5.11/ibus/attribute.py0000644000000000000000000001136412551654123012760 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "ATTR_TYPE_UNDERLINE", "ATTR_TYPE_FOREGROUND", "ATTR_TYPE_BACKGROUND", "ATTR_UNDERLINE_NONE", "ATTR_UNDERLINE_SINGLE", "ATTR_UNDERLINE_DOUBLE", "ATTR_UNDERLINE_LOW", "ATTR_UNDERLINE_ERROR", "Attribute", "AttributeUnderline", "AttributeForeground", "AttributeBackground", "AttrList", "ARGB", "RGB" ) import dbus from exception import IBusException from serializable import * ATTR_TYPE_UNDERLINE = 1 ATTR_TYPE_FOREGROUND = 2 ATTR_TYPE_BACKGROUND = 3 ATTR_UNDERLINE_NONE = 0 ATTR_UNDERLINE_SINGLE = 1 ATTR_UNDERLINE_DOUBLE = 2 ATTR_UNDERLINE_LOW = 3 ATTR_UNDERLINE_ERROR = 4 class Attribute(Serializable): __gtype_name__ = "PYIBusAttribute" __NAME__ = "IBusAttribute" def __init__ (self, type=0, value=0, start_index=0, end_index=0): super(Attribute, self).__init__() self.__type = type self.__value = value self.__start_index = start_index self.__end_index = end_index def get_type(self): return self.__type def get_value(self): return self.__value def get_start_index(self): return self.__start_index def get_end_index(self): return self.__end_index type = property(get_type) value = property(get_value) start_index = property(get_start_index) end_index = property(get_end_index) def serialize(self, struct): super(Attribute, self).serialize(struct) struct.append (dbus.UInt32(self.__type)) struct.append (dbus.UInt32(self.__value)) struct.append (dbus.UInt32(self.__start_index)) struct.append (dbus.UInt32(self.__end_index)) def deserialize(self, struct): super(Attribute, self).deserialize(struct) if len(struct) < 4: raise IBusException ("Can not deserialize IBusAttribute") self.__type = struct.pop(0) self.__value = struct.pop(0) self.__start_index = struct.pop(0) self.__end_index = struct.pop(0) class AttributeUnderline (Attribute): def __init__(self, value, start_index, end_index): Attribute.__init__ (self, ATTR_TYPE_UNDERLINE, value, start_index, end_index) class AttributeForeground (Attribute): def __init__(self, value, start_index, end_index): Attribute.__init__ (self, ATTR_TYPE_FOREGROUND, value, start_index, end_index) class AttributeBackground (Attribute): def __init__(self, value, start_index, end_index): Attribute.__init__ (self, ATTR_TYPE_BACKGROUND, value, start_index, end_index) def ARGB (a, r, g, b): return ((a & 0xff)<<24) + ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff) def RGB (r, g, b): return ARGB (255, r, g, b) class AttrList(Serializable): __gtype_name__ = "PYIBusAttrList" __NAME__ = "IBusAttrList" def __init__ (self, attrs = []): super(AttrList, self).__init__() self._attrs = [] for attr in attrs: self.append (attr) def append (self, attr): assert isinstance (attr, Attribute) self._attrs.append (attr) def serialize (self, struct): super(AttrList, self).serialize (struct) array = map (lambda a: serialize_object(a), self._attrs) array = dbus.Array (array, signature = "v") struct.append(array) def deserialize (self, struct): super(AttrList, self).deserialize(struct) attrs = map(lambda v: deserialize_object(v), struct.pop(0)) self._attrs = attrs def __iter__ (self): return self._attrs.__iter__ () def test(): attr_list = AttrList() attr_list.append (Attribute()) attr_list.append (Attribute()) attr_list.append (Attribute()) attr_list.append (Attribute()) attr_list.append (Attribute()) value = serialize_object(attr_list) attr_list = deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/component.py0000644000000000000000000001102312551654123012747 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "Component", ) import dbus from exception import IBusException from serializable import * from enginedesc import * from observedpath import * class Component(Serializable): __gtype_name__ = "PYIBusComponent" __NAME__ = "IBusComponent" def __init__ (self, name="", description="", version="", license="", author="", homepage="", _exec="", textdomain=""): super(Component, self).__init__() self.__name = name self.__description = description self.__version = version self.__license = license self.__author = author self.__homepage = homepage self.__exec = _exec self.__textdomain = textdomain self.__observed_paths = [] self.__engines = [] def get_name(self): return self.__name def get_description(self): return self.__description def get_version(self): return self.__version def get_license(self): return self.__license def get_author(self): return self.__author def get_homepage(self): return self.__homepage def get_exec(self): return self.__exec def get_textdomain(self): return self.__textdomain def get_observed_paths(self): return self.__observed_paths[:] def get_engines(self): return self.__engines[:] name = property(get_name) description = property(get_description) version = property(get_version) license = property(get_license) author = property(get_author) homepage = property(get_homepage) _exec = property(get_exec) textdomain = property(get_textdomain) observed_paths = property(get_observed_paths) engines = property(get_engines) def add_observed_path(self, path): self.__observed_paths.append(ObservedPath(path)) def add_engine(self, name="", longname="", description="", language="", license="", author="", icon="", layout="", hotkeys=""): engine = EngineDesc(name, longname, description, language, license, author, icon, layout, hotkeys) self.__engines.append(engine) def add_engines(self, engines): if not isinstance(engines, list): raise TypeError("engines must be an instance of list") self.__engines.extend(engines) def serialize(self, struct): super(Component, self).serialize(struct) struct.append (dbus.String(self.__name)) struct.append (dbus.String(self.__description)) struct.append (dbus.String(self.__version)) struct.append (dbus.String(self.__license)) struct.append (dbus.String(self.__author)) struct.append (dbus.String(self.__homepage)) struct.append (dbus.String(self.__exec)) struct.append (dbus.String(self.__textdomain)) struct.append (dbus.Array(map(serialize_object,self.__observed_paths), signature="v")) struct.append (dbus.Array(map(serialize_object,self.__engines), signature="v")) def deserialize(self, struct): super(Component, self).deserialize(struct) self.__name = struct.pop(0) self.__description = struct.pop(0) self.__version = struct.pop(0) self.__license = struct.pop(0) self.__author = struct.pop(0) self.__homepage = struct.pop(0) self.__exec = struct.pop(0) self.__textdomain = struct.pop(0) self.__observed_paths = map(deserialize_object, struct.pop(0)) self.__engines = map(deserialize_object, struct.pop(0)) def test(): text = Component("Hello", "", "", "", "", "", "", "") value = serialize_object(text) text= deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/notifications.py0000644000000000000000000000430112551654123013617 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "NotificationsBase", "IBUS_SERVICE_NOTIFICATIONS", "IBUS_PATH_NOTIFICATIONS" ) IBUS_SERVICE_NOTIFICATIONS = "org.freedesktop.IBus.Notifications" IBUS_PATH_NOTIFICATIONS = "/org/freedesktop/IBus/Notifications" import ibus from ibus import interface class NotificationsBase(ibus.Object): def __init__(self, bus): super(NotificationsBase, self).__init__() self.__proxy = NotificationsProxy(self, bus.get_dbusconn()) def notify(self, replaces_id, app_icon, summary, body, actions, expire_timeout): pass def close_notification(self, id): pass def notification_closed(self, id, reason): self.__proxy.NotificationClosed(id, reason) def action_invoked(self, id, action_key): self.__proxy.ActionInvoked(id, action_key) class NotificationsProxy(interface.INotifications): def __init__ (self, notify, dbusconn): super(NotificationsProxy, self).__init__(dbusconn, IBUS_PATH_NOTIFICATIONS) self.__dbusconn = dbusconn self.__notify = notify def Notify(self, replaces_id, app_icon, summary, body, actions, expire_timeout): return self.__notify.notify(replaces_id, app_icon, summary, body, actions, expire_timeout) def CloseNotification(self, id): return self.__notify.close_notification(id) ibus-1.5.11/ibus/lang.py0000644000000000000000000000437612551654123011703 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "get_language_name", ) import xml.parsers.expat import locale import gettext _ = lambda a: gettext.dgettext("ibus", a) __languages_dict = {} def get_language_name(_locale): lang = _locale.split("_")[0] lang = lang.lower() if lang in __languages_dict: lang = __languages_dict[lang] lang = gettext.dgettext("iso_639", lang) else: lang = _(u"Other") lang = gettext.dgettext("ibus", lang) return lang def __start_element(name, attrs): global __languages_dict try: name = attrs[u"name"] for attr_name in (u"iso_639_2B_code", u"iso_639_2T_code", u"iso_639_1_code"): if attr_name in attrs: attr_value = attrs[attr_name] __languages_dict[attr_value] = name except: pass def __end_element(name): pass def __char_data(data): pass def __load_lang(): import os import _config iso_639_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639.xml") p = xml.parsers.expat.ParserCreate() p.StartElementHandler = __start_element p.EndElementHandler = __end_element p.CharacterDataHandler = __char_data p.ParseFile(file(iso_639_xml)) __load_lang() if __name__ == "__main__": print get_language_name("mai") print get_language_name("zh") print get_language_name("ja") print get_language_name("ko") ibus-1.5.11/ibus/keysyms.py0000644000000000000000000007347212551654123012471 00000000000000# -*- Mode: Python; py-indent-offset: 4 -*- # pygtk - Python bindings for the GTK toolkit. # Copyright (C) 1998-2003 James Henstridge # # gtk/keysyms.py: list of keysyms. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA VoidSymbol = 0xFFFFFF BackSpace = 0xFF08 Tab = 0xFF09 Linefeed = 0xFF0A Clear = 0xFF0B Return = 0xFF0D Pause = 0xFF13 Scroll_Lock = 0xFF14 Sys_Req = 0xFF15 Escape = 0xFF1B Delete = 0xFFFF Multi_key = 0xFF20 Codeinput = 0xFF37 SingleCandidate = 0xFF3C MultipleCandidate = 0xFF3D PreviousCandidate = 0xFF3E Kanji = 0xFF21 Muhenkan = 0xFF22 Henkan_Mode = 0xFF23 Henkan = 0xFF23 Romaji = 0xFF24 Hiragana = 0xFF25 Katakana = 0xFF26 Hiragana_Katakana = 0xFF27 Zenkaku = 0xFF28 Hankaku = 0xFF29 Zenkaku_Hankaku = 0xFF2A Touroku = 0xFF2B Massyo = 0xFF2C Kana_Lock = 0xFF2D Kana_Shift = 0xFF2E Eisu_Shift = 0xFF2F Eisu_toggle = 0xFF30 Kanji_Bangou = 0xFF37 Zen_Koho = 0xFF3D Mae_Koho = 0xFF3E Home = 0xFF50 Left = 0xFF51 Up = 0xFF52 Right = 0xFF53 Down = 0xFF54 Prior = 0xFF55 Page_Up = 0xFF55 Next = 0xFF56 Page_Down = 0xFF56 End = 0xFF57 Begin = 0xFF58 Select = 0xFF60 Print = 0xFF61 Execute = 0xFF62 Insert = 0xFF63 Undo = 0xFF65 Redo = 0xFF66 Menu = 0xFF67 Find = 0xFF68 Cancel = 0xFF69 Help = 0xFF6A Break = 0xFF6B Mode_switch = 0xFF7E script_switch = 0xFF7E Num_Lock = 0xFF7F KP_Space = 0xFF80 KP_Tab = 0xFF89 KP_Enter = 0xFF8D KP_F1 = 0xFF91 KP_F2 = 0xFF92 KP_F3 = 0xFF93 KP_F4 = 0xFF94 KP_Home = 0xFF95 KP_Left = 0xFF96 KP_Up = 0xFF97 KP_Right = 0xFF98 KP_Down = 0xFF99 KP_Prior = 0xFF9A KP_Page_Up = 0xFF9A KP_Next = 0xFF9B KP_Page_Down = 0xFF9B KP_End = 0xFF9C KP_Begin = 0xFF9D KP_Insert = 0xFF9E KP_Delete = 0xFF9F KP_Equal = 0xFFBD KP_Multiply = 0xFFAA KP_Add = 0xFFAB KP_Separator = 0xFFAC KP_Subtract = 0xFFAD KP_Decimal = 0xFFAE KP_Divide = 0xFFAF KP_0 = 0xFFB0 KP_1 = 0xFFB1 KP_2 = 0xFFB2 KP_3 = 0xFFB3 KP_4 = 0xFFB4 KP_5 = 0xFFB5 KP_6 = 0xFFB6 KP_7 = 0xFFB7 KP_8 = 0xFFB8 KP_9 = 0xFFB9 F1 = 0xFFBE F2 = 0xFFBF F3 = 0xFFC0 F4 = 0xFFC1 F5 = 0xFFC2 F6 = 0xFFC3 F7 = 0xFFC4 F8 = 0xFFC5 F9 = 0xFFC6 F10 = 0xFFC7 F11 = 0xFFC8 L1 = 0xFFC8 F12 = 0xFFC9 L2 = 0xFFC9 F13 = 0xFFCA L3 = 0xFFCA F14 = 0xFFCB L4 = 0xFFCB F15 = 0xFFCC L5 = 0xFFCC F16 = 0xFFCD L6 = 0xFFCD F17 = 0xFFCE L7 = 0xFFCE F18 = 0xFFCF L8 = 0xFFCF F19 = 0xFFD0 L9 = 0xFFD0 F20 = 0xFFD1 L10 = 0xFFD1 F21 = 0xFFD2 R1 = 0xFFD2 F22 = 0xFFD3 R2 = 0xFFD3 F23 = 0xFFD4 R3 = 0xFFD4 F24 = 0xFFD5 R4 = 0xFFD5 F25 = 0xFFD6 R5 = 0xFFD6 F26 = 0xFFD7 R6 = 0xFFD7 F27 = 0xFFD8 R7 = 0xFFD8 F28 = 0xFFD9 R8 = 0xFFD9 F29 = 0xFFDA R9 = 0xFFDA F30 = 0xFFDB R10 = 0xFFDB F31 = 0xFFDC R11 = 0xFFDC F32 = 0xFFDD R12 = 0xFFDD F33 = 0xFFDE R13 = 0xFFDE F34 = 0xFFDF R14 = 0xFFDF F35 = 0xFFE0 R15 = 0xFFE0 Shift_L = 0xFFE1 Shift_R = 0xFFE2 Control_L = 0xFFE3 Control_R = 0xFFE4 Caps_Lock = 0xFFE5 Shift_Lock = 0xFFE6 Meta_L = 0xFFE7 Meta_R = 0xFFE8 Alt_L = 0xFFE9 Alt_R = 0xFFEA Super_L = 0xFFEB Super_R = 0xFFEC Hyper_L = 0xFFED Hyper_R = 0xFFEE ISO_Lock = 0xFE01 ISO_Level2_Latch = 0xFE02 ISO_Level3_Shift = 0xFE03 ISO_Level3_Latch = 0xFE04 ISO_Level3_Lock = 0xFE05 ISO_Group_Shift = 0xFF7E ISO_Group_Latch = 0xFE06 ISO_Group_Lock = 0xFE07 ISO_Next_Group = 0xFE08 ISO_Next_Group_Lock = 0xFE09 ISO_Prev_Group = 0xFE0A ISO_Prev_Group_Lock = 0xFE0B ISO_First_Group = 0xFE0C ISO_First_Group_Lock = 0xFE0D ISO_Last_Group = 0xFE0E ISO_Last_Group_Lock = 0xFE0F ISO_Left_Tab = 0xFE20 ISO_Move_Line_Up = 0xFE21 ISO_Move_Line_Down = 0xFE22 ISO_Partial_Line_Up = 0xFE23 ISO_Partial_Line_Down = 0xFE24 ISO_Partial_Space_Left = 0xFE25 ISO_Partial_Space_Right = 0xFE26 ISO_Set_Margin_Left = 0xFE27 ISO_Set_Margin_Right = 0xFE28 ISO_Release_Margin_Left = 0xFE29 ISO_Release_Margin_Right = 0xFE2A ISO_Release_Both_Margins = 0xFE2B ISO_Fast_Cursor_Left = 0xFE2C ISO_Fast_Cursor_Right = 0xFE2D ISO_Fast_Cursor_Up = 0xFE2E ISO_Fast_Cursor_Down = 0xFE2F ISO_Continuous_Underline = 0xFE30 ISO_Discontinuous_Underline = 0xFE31 ISO_Emphasize = 0xFE32 ISO_Center_Object = 0xFE33 ISO_Enter = 0xFE34 dead_grave = 0xFE50 dead_acute = 0xFE51 dead_circumflex = 0xFE52 dead_tilde = 0xFE53 dead_macron = 0xFE54 dead_breve = 0xFE55 dead_abovedot = 0xFE56 dead_diaeresis = 0xFE57 dead_abovering = 0xFE58 dead_doubleacute = 0xFE59 dead_caron = 0xFE5A dead_cedilla = 0xFE5B dead_ogonek = 0xFE5C dead_iota = 0xFE5D dead_voiced_sound = 0xFE5E dead_semivoiced_sound = 0xFE5F dead_belowdot = 0xFE60 First_Virtual_Screen = 0xFED0 Prev_Virtual_Screen = 0xFED1 Next_Virtual_Screen = 0xFED2 Last_Virtual_Screen = 0xFED4 Terminate_Server = 0xFED5 AccessX_Enable = 0xFE70 AccessX_Feedback_Enable = 0xFE71 RepeatKeys_Enable = 0xFE72 SlowKeys_Enable = 0xFE73 BounceKeys_Enable = 0xFE74 StickyKeys_Enable = 0xFE75 MouseKeys_Enable = 0xFE76 MouseKeys_Accel_Enable = 0xFE77 Overlay1_Enable = 0xFE78 Overlay2_Enable = 0xFE79 AudibleBell_Enable = 0xFE7A Pointer_Left = 0xFEE0 Pointer_Right = 0xFEE1 Pointer_Up = 0xFEE2 Pointer_Down = 0xFEE3 Pointer_UpLeft = 0xFEE4 Pointer_UpRight = 0xFEE5 Pointer_DownLeft = 0xFEE6 Pointer_DownRight = 0xFEE7 Pointer_Button_Dflt = 0xFEE8 Pointer_Button1 = 0xFEE9 Pointer_Button2 = 0xFEEA Pointer_Button3 = 0xFEEB Pointer_Button4 = 0xFEEC Pointer_Button5 = 0xFEED Pointer_DblClick_Dflt = 0xFEEE Pointer_DblClick1 = 0xFEEF Pointer_DblClick2 = 0xFEF0 Pointer_DblClick3 = 0xFEF1 Pointer_DblClick4 = 0xFEF2 Pointer_DblClick5 = 0xFEF3 Pointer_Drag_Dflt = 0xFEF4 Pointer_Drag1 = 0xFEF5 Pointer_Drag2 = 0xFEF6 Pointer_Drag3 = 0xFEF7 Pointer_Drag4 = 0xFEF8 Pointer_Drag5 = 0xFEFD Pointer_EnableKeys = 0xFEF9 Pointer_Accelerate = 0xFEFA Pointer_DfltBtnNext = 0xFEFB Pointer_DfltBtnPrev = 0xFEFC _3270_Duplicate = 0xFD01 _3270_FieldMark = 0xFD02 _3270_Right2 = 0xFD03 _3270_Left2 = 0xFD04 _3270_BackTab = 0xFD05 _3270_EraseEOF = 0xFD06 _3270_EraseInput = 0xFD07 _3270_Reset = 0xFD08 _3270_Quit = 0xFD09 _3270_PA1 = 0xFD0A _3270_PA2 = 0xFD0B _3270_PA3 = 0xFD0C _3270_Test = 0xFD0D _3270_Attn = 0xFD0E _3270_CursorBlink = 0xFD0F _3270_AltCursor = 0xFD10 _3270_KeyClick = 0xFD11 _3270_Jump = 0xFD12 _3270_Ident = 0xFD13 _3270_Rule = 0xFD14 _3270_Copy = 0xFD15 _3270_Play = 0xFD16 _3270_Setup = 0xFD17 _3270_Record = 0xFD18 _3270_ChangeScreen = 0xFD19 _3270_DeleteWord = 0xFD1A _3270_ExSelect = 0xFD1B _3270_CursorSelect = 0xFD1C _3270_PrintScreen = 0xFD1D _3270_Enter = 0xFD1E space = 0x020 exclam = 0x021 quotedbl = 0x022 numbersign = 0x023 dollar = 0x024 percent = 0x025 ampersand = 0x026 apostrophe = 0x027 quoteright = 0x027 parenleft = 0x028 parenright = 0x029 asterisk = 0x02a plus = 0x02b comma = 0x02c minus = 0x02d period = 0x02e slash = 0x02f _0 = 0x030 _1 = 0x031 _2 = 0x032 _3 = 0x033 _4 = 0x034 _5 = 0x035 _6 = 0x036 _7 = 0x037 _8 = 0x038 _9 = 0x039 colon = 0x03a semicolon = 0x03b less = 0x03c equal = 0x03d greater = 0x03e question = 0x03f at = 0x040 A = 0x041 B = 0x042 C = 0x043 D = 0x044 E = 0x045 F = 0x046 G = 0x047 H = 0x048 I = 0x049 J = 0x04a K = 0x04b L = 0x04c M = 0x04d N = 0x04e O = 0x04f P = 0x050 Q = 0x051 R = 0x052 S = 0x053 T = 0x054 U = 0x055 V = 0x056 W = 0x057 X = 0x058 Y = 0x059 Z = 0x05a bracketleft = 0x05b backslash = 0x05c bracketright = 0x05d asciicircum = 0x05e underscore = 0x05f grave = 0x060 quoteleft = 0x060 a = 0x061 b = 0x062 c = 0x063 d = 0x064 e = 0x065 f = 0x066 g = 0x067 h = 0x068 i = 0x069 j = 0x06a k = 0x06b l = 0x06c m = 0x06d n = 0x06e o = 0x06f p = 0x070 q = 0x071 r = 0x072 s = 0x073 t = 0x074 u = 0x075 v = 0x076 w = 0x077 x = 0x078 y = 0x079 z = 0x07a braceleft = 0x07b bar = 0x07c braceright = 0x07d asciitilde = 0x07e nobreakspace = 0x0a0 exclamdown = 0x0a1 cent = 0x0a2 sterling = 0x0a3 currency = 0x0a4 yen = 0x0a5 brokenbar = 0x0a6 section = 0x0a7 diaeresis = 0x0a8 copyright = 0x0a9 ordfeminine = 0x0aa guillemotleft = 0x0ab notsign = 0x0ac hyphen = 0x0ad registered = 0x0ae macron = 0x0af degree = 0x0b0 plusminus = 0x0b1 twosuperior = 0x0b2 threesuperior = 0x0b3 acute = 0x0b4 mu = 0x0b5 paragraph = 0x0b6 periodcentered = 0x0b7 cedilla = 0x0b8 onesuperior = 0x0b9 masculine = 0x0ba guillemotright = 0x0bb onequarter = 0x0bc onehalf = 0x0bd threequarters = 0x0be questiondown = 0x0bf Agrave = 0x0c0 Aacute = 0x0c1 Acircumflex = 0x0c2 Atilde = 0x0c3 Adiaeresis = 0x0c4 Aring = 0x0c5 AE = 0x0c6 Ccedilla = 0x0c7 Egrave = 0x0c8 Eacute = 0x0c9 Ecircumflex = 0x0ca Ediaeresis = 0x0cb Igrave = 0x0cc Iacute = 0x0cd Icircumflex = 0x0ce Idiaeresis = 0x0cf ETH = 0x0d0 Eth = 0x0d0 Ntilde = 0x0d1 Ograve = 0x0d2 Oacute = 0x0d3 Ocircumflex = 0x0d4 Otilde = 0x0d5 Odiaeresis = 0x0d6 multiply = 0x0d7 Ooblique = 0x0d8 Ugrave = 0x0d9 Uacute = 0x0da Ucircumflex = 0x0db Udiaeresis = 0x0dc Yacute = 0x0dd THORN = 0x0de Thorn = 0x0de ssharp = 0x0df agrave = 0x0e0 aacute = 0x0e1 acircumflex = 0x0e2 atilde = 0x0e3 adiaeresis = 0x0e4 aring = 0x0e5 ae = 0x0e6 ccedilla = 0x0e7 egrave = 0x0e8 eacute = 0x0e9 ecircumflex = 0x0ea ediaeresis = 0x0eb igrave = 0x0ec iacute = 0x0ed icircumflex = 0x0ee idiaeresis = 0x0ef eth = 0x0f0 ntilde = 0x0f1 ograve = 0x0f2 oacute = 0x0f3 ocircumflex = 0x0f4 otilde = 0x0f5 odiaeresis = 0x0f6 division = 0x0f7 oslash = 0x0f8 ugrave = 0x0f9 uacute = 0x0fa ucircumflex = 0x0fb udiaeresis = 0x0fc yacute = 0x0fd thorn = 0x0fe ydiaeresis = 0x0ff Aogonek = 0x1a1 breve = 0x1a2 Lstroke = 0x1a3 Lcaron = 0x1a5 Sacute = 0x1a6 Scaron = 0x1a9 Scedilla = 0x1aa Tcaron = 0x1ab Zacute = 0x1ac Zcaron = 0x1ae Zabovedot = 0x1af aogonek = 0x1b1 ogonek = 0x1b2 lstroke = 0x1b3 lcaron = 0x1b5 sacute = 0x1b6 caron = 0x1b7 scaron = 0x1b9 scedilla = 0x1ba tcaron = 0x1bb zacute = 0x1bc doubleacute = 0x1bd zcaron = 0x1be zabovedot = 0x1bf Racute = 0x1c0 Abreve = 0x1c3 Lacute = 0x1c5 Cacute = 0x1c6 Ccaron = 0x1c8 Eogonek = 0x1ca Ecaron = 0x1cc Dcaron = 0x1cf Dstroke = 0x1d0 Nacute = 0x1d1 Ncaron = 0x1d2 Odoubleacute = 0x1d5 Rcaron = 0x1d8 Uring = 0x1d9 Udoubleacute = 0x1db Tcedilla = 0x1de racute = 0x1e0 abreve = 0x1e3 lacute = 0x1e5 cacute = 0x1e6 ccaron = 0x1e8 eogonek = 0x1ea ecaron = 0x1ec dcaron = 0x1ef dstroke = 0x1f0 nacute = 0x1f1 ncaron = 0x1f2 odoubleacute = 0x1f5 udoubleacute = 0x1fb rcaron = 0x1f8 uring = 0x1f9 tcedilla = 0x1fe abovedot = 0x1ff Hstroke = 0x2a1 Hcircumflex = 0x2a6 Iabovedot = 0x2a9 Gbreve = 0x2ab Jcircumflex = 0x2ac hstroke = 0x2b1 hcircumflex = 0x2b6 idotless = 0x2b9 gbreve = 0x2bb jcircumflex = 0x2bc Cabovedot = 0x2c5 Ccircumflex = 0x2c6 Gabovedot = 0x2d5 Gcircumflex = 0x2d8 Ubreve = 0x2dd Scircumflex = 0x2de cabovedot = 0x2e5 ccircumflex = 0x2e6 gabovedot = 0x2f5 gcircumflex = 0x2f8 ubreve = 0x2fd scircumflex = 0x2fe kra = 0x3a2 kappa = 0x3a2 Rcedilla = 0x3a3 Itilde = 0x3a5 Lcedilla = 0x3a6 Emacron = 0x3aa Gcedilla = 0x3ab Tslash = 0x3ac rcedilla = 0x3b3 itilde = 0x3b5 lcedilla = 0x3b6 emacron = 0x3ba gcedilla = 0x3bb tslash = 0x3bc ENG = 0x3bd eng = 0x3bf Amacron = 0x3c0 Iogonek = 0x3c7 Eabovedot = 0x3cc Imacron = 0x3cf Ncedilla = 0x3d1 Omacron = 0x3d2 Kcedilla = 0x3d3 Uogonek = 0x3d9 Utilde = 0x3dd Umacron = 0x3de amacron = 0x3e0 iogonek = 0x3e7 eabovedot = 0x3ec imacron = 0x3ef ncedilla = 0x3f1 omacron = 0x3f2 kcedilla = 0x3f3 uogonek = 0x3f9 utilde = 0x3fd umacron = 0x3fe OE = 0x13bc oe = 0x13bd Ydiaeresis = 0x13be overline = 0x47e kana_fullstop = 0x4a1 kana_openingbracket = 0x4a2 kana_closingbracket = 0x4a3 kana_comma = 0x4a4 kana_conjunctive = 0x4a5 kana_middledot = 0x4a5 kana_WO = 0x4a6 kana_a = 0x4a7 kana_i = 0x4a8 kana_u = 0x4a9 kana_e = 0x4aa kana_o = 0x4ab kana_ya = 0x4ac kana_yu = 0x4ad kana_yo = 0x4ae kana_tsu = 0x4af kana_tu = 0x4af prolongedsound = 0x4b0 kana_A = 0x4b1 kana_I = 0x4b2 kana_U = 0x4b3 kana_E = 0x4b4 kana_O = 0x4b5 kana_KA = 0x4b6 kana_KI = 0x4b7 kana_KU = 0x4b8 kana_KE = 0x4b9 kana_KO = 0x4ba kana_SA = 0x4bb kana_SHI = 0x4bc kana_SU = 0x4bd kana_SE = 0x4be kana_SO = 0x4bf kana_TA = 0x4c0 kana_CHI = 0x4c1 kana_TI = 0x4c1 kana_TSU = 0x4c2 kana_TU = 0x4c2 kana_TE = 0x4c3 kana_TO = 0x4c4 kana_NA = 0x4c5 kana_NI = 0x4c6 kana_NU = 0x4c7 kana_NE = 0x4c8 kana_NO = 0x4c9 kana_HA = 0x4ca kana_HI = 0x4cb kana_FU = 0x4cc kana_HU = 0x4cc kana_HE = 0x4cd kana_HO = 0x4ce kana_MA = 0x4cf kana_MI = 0x4d0 kana_MU = 0x4d1 kana_ME = 0x4d2 kana_MO = 0x4d3 kana_YA = 0x4d4 kana_YU = 0x4d5 kana_YO = 0x4d6 kana_RA = 0x4d7 kana_RI = 0x4d8 kana_RU = 0x4d9 kana_RE = 0x4da kana_RO = 0x4db kana_WA = 0x4dc kana_N = 0x4dd voicedsound = 0x4de semivoicedsound = 0x4df kana_switch = 0xFF7E Arabic_comma = 0x5ac Arabic_semicolon = 0x5bb Arabic_question_mark = 0x5bf Arabic_hamza = 0x5c1 Arabic_maddaonalef = 0x5c2 Arabic_hamzaonalef = 0x5c3 Arabic_hamzaonwaw = 0x5c4 Arabic_hamzaunderalef = 0x5c5 Arabic_hamzaonyeh = 0x5c6 Arabic_alef = 0x5c7 Arabic_beh = 0x5c8 Arabic_tehmarbuta = 0x5c9 Arabic_teh = 0x5ca Arabic_theh = 0x5cb Arabic_jeem = 0x5cc Arabic_hah = 0x5cd Arabic_khah = 0x5ce Arabic_dal = 0x5cf Arabic_thal = 0x5d0 Arabic_ra = 0x5d1 Arabic_zain = 0x5d2 Arabic_seen = 0x5d3 Arabic_sheen = 0x5d4 Arabic_sad = 0x5d5 Arabic_dad = 0x5d6 Arabic_tah = 0x5d7 Arabic_zah = 0x5d8 Arabic_ain = 0x5d9 Arabic_ghain = 0x5da Arabic_tatweel = 0x5e0 Arabic_feh = 0x5e1 Arabic_qaf = 0x5e2 Arabic_kaf = 0x5e3 Arabic_lam = 0x5e4 Arabic_meem = 0x5e5 Arabic_noon = 0x5e6 Arabic_ha = 0x5e7 Arabic_heh = 0x5e7 Arabic_waw = 0x5e8 Arabic_alefmaksura = 0x5e9 Arabic_yeh = 0x5ea Arabic_fathatan = 0x5eb Arabic_dammatan = 0x5ec Arabic_kasratan = 0x5ed Arabic_fatha = 0x5ee Arabic_damma = 0x5ef Arabic_kasra = 0x5f0 Arabic_shadda = 0x5f1 Arabic_sukun = 0x5f2 Arabic_switch = 0xFF7E Serbian_dje = 0x6a1 Macedonia_gje = 0x6a2 Cyrillic_io = 0x6a3 Ukrainian_ie = 0x6a4 Ukranian_je = 0x6a4 Macedonia_dse = 0x6a5 Ukrainian_i = 0x6a6 Ukranian_i = 0x6a6 Ukrainian_yi = 0x6a7 Ukranian_yi = 0x6a7 Cyrillic_je = 0x6a8 Serbian_je = 0x6a8 Cyrillic_lje = 0x6a9 Serbian_lje = 0x6a9 Cyrillic_nje = 0x6aa Serbian_nje = 0x6aa Serbian_tshe = 0x6ab Macedonia_kje = 0x6ac Ukrainian_ghe_with_upturn = 0x6ad Byelorussian_shortu = 0x6ae Cyrillic_dzhe = 0x6af Serbian_dze = 0x6af numerosign = 0x6b0 Serbian_DJE = 0x6b1 Macedonia_GJE = 0x6b2 Cyrillic_IO = 0x6b3 Ukrainian_IE = 0x6b4 Ukranian_JE = 0x6b4 Macedonia_DSE = 0x6b5 Ukrainian_I = 0x6b6 Ukranian_I = 0x6b6 Ukrainian_YI = 0x6b7 Ukranian_YI = 0x6b7 Cyrillic_JE = 0x6b8 Serbian_JE = 0x6b8 Cyrillic_LJE = 0x6b9 Serbian_LJE = 0x6b9 Cyrillic_NJE = 0x6ba Serbian_NJE = 0x6ba Serbian_TSHE = 0x6bb Macedonia_KJE = 0x6bc Ukrainian_GHE_WITH_UPTURN = 0x6bd Byelorussian_SHORTU = 0x6be Cyrillic_DZHE = 0x6bf Serbian_DZE = 0x6bf Cyrillic_yu = 0x6c0 Cyrillic_a = 0x6c1 Cyrillic_be = 0x6c2 Cyrillic_tse = 0x6c3 Cyrillic_de = 0x6c4 Cyrillic_ie = 0x6c5 Cyrillic_ef = 0x6c6 Cyrillic_ghe = 0x6c7 Cyrillic_ha = 0x6c8 Cyrillic_i = 0x6c9 Cyrillic_shorti = 0x6ca Cyrillic_ka = 0x6cb Cyrillic_el = 0x6cc Cyrillic_em = 0x6cd Cyrillic_en = 0x6ce Cyrillic_o = 0x6cf Cyrillic_pe = 0x6d0 Cyrillic_ya = 0x6d1 Cyrillic_er = 0x6d2 Cyrillic_es = 0x6d3 Cyrillic_te = 0x6d4 Cyrillic_u = 0x6d5 Cyrillic_zhe = 0x6d6 Cyrillic_ve = 0x6d7 Cyrillic_softsign = 0x6d8 Cyrillic_yeru = 0x6d9 Cyrillic_ze = 0x6da Cyrillic_sha = 0x6db Cyrillic_e = 0x6dc Cyrillic_shcha = 0x6dd Cyrillic_che = 0x6de Cyrillic_hardsign = 0x6df Cyrillic_YU = 0x6e0 Cyrillic_A = 0x6e1 Cyrillic_BE = 0x6e2 Cyrillic_TSE = 0x6e3 Cyrillic_DE = 0x6e4 Cyrillic_IE = 0x6e5 Cyrillic_EF = 0x6e6 Cyrillic_GHE = 0x6e7 Cyrillic_HA = 0x6e8 Cyrillic_I = 0x6e9 Cyrillic_SHORTI = 0x6ea Cyrillic_KA = 0x6eb Cyrillic_EL = 0x6ec Cyrillic_EM = 0x6ed Cyrillic_EN = 0x6ee Cyrillic_O = 0x6ef Cyrillic_PE = 0x6f0 Cyrillic_YA = 0x6f1 Cyrillic_ER = 0x6f2 Cyrillic_ES = 0x6f3 Cyrillic_TE = 0x6f4 Cyrillic_U = 0x6f5 Cyrillic_ZHE = 0x6f6 Cyrillic_VE = 0x6f7 Cyrillic_SOFTSIGN = 0x6f8 Cyrillic_YERU = 0x6f9 Cyrillic_ZE = 0x6fa Cyrillic_SHA = 0x6fb Cyrillic_E = 0x6fc Cyrillic_SHCHA = 0x6fd Cyrillic_CHE = 0x6fe Cyrillic_HARDSIGN = 0x6ff Greek_ALPHAaccent = 0x7a1 Greek_EPSILONaccent = 0x7a2 Greek_ETAaccent = 0x7a3 Greek_IOTAaccent = 0x7a4 Greek_IOTAdiaeresis = 0x7a5 Greek_OMICRONaccent = 0x7a7 Greek_UPSILONaccent = 0x7a8 Greek_UPSILONdieresis = 0x7a9 Greek_OMEGAaccent = 0x7ab Greek_accentdieresis = 0x7ae Greek_horizbar = 0x7af Greek_alphaaccent = 0x7b1 Greek_epsilonaccent = 0x7b2 Greek_etaaccent = 0x7b3 Greek_iotaaccent = 0x7b4 Greek_iotadieresis = 0x7b5 Greek_iotaaccentdieresis = 0x7b6 Greek_omicronaccent = 0x7b7 Greek_upsilonaccent = 0x7b8 Greek_upsilondieresis = 0x7b9 Greek_upsilonaccentdieresis = 0x7ba Greek_omegaaccent = 0x7bb Greek_ALPHA = 0x7c1 Greek_BETA = 0x7c2 Greek_GAMMA = 0x7c3 Greek_DELTA = 0x7c4 Greek_EPSILON = 0x7c5 Greek_ZETA = 0x7c6 Greek_ETA = 0x7c7 Greek_THETA = 0x7c8 Greek_IOTA = 0x7c9 Greek_KAPPA = 0x7ca Greek_LAMDA = 0x7cb Greek_LAMBDA = 0x7cb Greek_MU = 0x7cc Greek_NU = 0x7cd Greek_XI = 0x7ce Greek_OMICRON = 0x7cf Greek_PI = 0x7d0 Greek_RHO = 0x7d1 Greek_SIGMA = 0x7d2 Greek_TAU = 0x7d4 Greek_UPSILON = 0x7d5 Greek_PHI = 0x7d6 Greek_CHI = 0x7d7 Greek_PSI = 0x7d8 Greek_OMEGA = 0x7d9 Greek_alpha = 0x7e1 Greek_beta = 0x7e2 Greek_gamma = 0x7e3 Greek_delta = 0x7e4 Greek_epsilon = 0x7e5 Greek_zeta = 0x7e6 Greek_eta = 0x7e7 Greek_theta = 0x7e8 Greek_iota = 0x7e9 Greek_kappa = 0x7ea Greek_lamda = 0x7eb Greek_lambda = 0x7eb Greek_mu = 0x7ec Greek_nu = 0x7ed Greek_xi = 0x7ee Greek_omicron = 0x7ef Greek_pi = 0x7f0 Greek_rho = 0x7f1 Greek_sigma = 0x7f2 Greek_finalsmallsigma = 0x7f3 Greek_tau = 0x7f4 Greek_upsilon = 0x7f5 Greek_phi = 0x7f6 Greek_chi = 0x7f7 Greek_psi = 0x7f8 Greek_omega = 0x7f9 Greek_switch = 0xFF7E leftradical = 0x8a1 topleftradical = 0x8a2 horizconnector = 0x8a3 topintegral = 0x8a4 botintegral = 0x8a5 vertconnector = 0x8a6 topleftsqbracket = 0x8a7 botleftsqbracket = 0x8a8 toprightsqbracket = 0x8a9 botrightsqbracket = 0x8aa topleftparens = 0x8ab botleftparens = 0x8ac toprightparens = 0x8ad botrightparens = 0x8ae leftmiddlecurlybrace = 0x8af rightmiddlecurlybrace = 0x8b0 topleftsummation = 0x8b1 botleftsummation = 0x8b2 topvertsummationconnector = 0x8b3 botvertsummationconnector = 0x8b4 toprightsummation = 0x8b5 botrightsummation = 0x8b6 rightmiddlesummation = 0x8b7 lessthanequal = 0x8bc notequal = 0x8bd greaterthanequal = 0x8be integral = 0x8bf therefore = 0x8c0 variation = 0x8c1 infinity = 0x8c2 nabla = 0x8c5 approximate = 0x8c8 similarequal = 0x8c9 ifonlyif = 0x8cd implies = 0x8ce identical = 0x8cf radical = 0x8d6 includedin = 0x8da includes = 0x8db intersection = 0x8dc union = 0x8dd logicaland = 0x8de logicalor = 0x8df partialderivative = 0x8ef function = 0x8f6 leftarrow = 0x8fb uparrow = 0x8fc rightarrow = 0x8fd downarrow = 0x8fe blank = 0x9df soliddiamond = 0x9e0 checkerboard = 0x9e1 ht = 0x9e2 ff = 0x9e3 cr = 0x9e4 lf = 0x9e5 nl = 0x9e8 vt = 0x9e9 lowrightcorner = 0x9ea uprightcorner = 0x9eb upleftcorner = 0x9ec lowleftcorner = 0x9ed crossinglines = 0x9ee horizlinescan1 = 0x9ef horizlinescan3 = 0x9f0 horizlinescan5 = 0x9f1 horizlinescan7 = 0x9f2 horizlinescan9 = 0x9f3 leftt = 0x9f4 rightt = 0x9f5 bott = 0x9f6 topt = 0x9f7 vertbar = 0x9f8 emspace = 0xaa1 enspace = 0xaa2 em3space = 0xaa3 em4space = 0xaa4 digitspace = 0xaa5 punctspace = 0xaa6 thinspace = 0xaa7 hairspace = 0xaa8 emdash = 0xaa9 endash = 0xaaa signifblank = 0xaac ellipsis = 0xaae doubbaselinedot = 0xaaf onethird = 0xab0 twothirds = 0xab1 onefifth = 0xab2 twofifths = 0xab3 threefifths = 0xab4 fourfifths = 0xab5 onesixth = 0xab6 fivesixths = 0xab7 careof = 0xab8 figdash = 0xabb leftanglebracket = 0xabc decimalpoint = 0xabd rightanglebracket = 0xabe marker = 0xabf oneeighth = 0xac3 threeeighths = 0xac4 fiveeighths = 0xac5 seveneighths = 0xac6 trademark = 0xac9 signaturemark = 0xaca trademarkincircle = 0xacb leftopentriangle = 0xacc rightopentriangle = 0xacd emopencircle = 0xace emopenrectangle = 0xacf leftsinglequotemark = 0xad0 rightsinglequotemark = 0xad1 leftdoublequotemark = 0xad2 rightdoublequotemark = 0xad3 prescription = 0xad4 minutes = 0xad6 seconds = 0xad7 latincross = 0xad9 hexagram = 0xada filledrectbullet = 0xadb filledlefttribullet = 0xadc filledrighttribullet = 0xadd emfilledcircle = 0xade emfilledrect = 0xadf enopencircbullet = 0xae0 enopensquarebullet = 0xae1 openrectbullet = 0xae2 opentribulletup = 0xae3 opentribulletdown = 0xae4 openstar = 0xae5 enfilledcircbullet = 0xae6 enfilledsqbullet = 0xae7 filledtribulletup = 0xae8 filledtribulletdown = 0xae9 leftpointer = 0xaea rightpointer = 0xaeb club = 0xaec diamond = 0xaed heart = 0xaee maltesecross = 0xaf0 dagger = 0xaf1 doubledagger = 0xaf2 checkmark = 0xaf3 ballotcross = 0xaf4 musicalsharp = 0xaf5 musicalflat = 0xaf6 malesymbol = 0xaf7 femalesymbol = 0xaf8 telephone = 0xaf9 telephonerecorder = 0xafa phonographcopyright = 0xafb caret = 0xafc singlelowquotemark = 0xafd doublelowquotemark = 0xafe cursor = 0xaff leftcaret = 0xba3 rightcaret = 0xba6 downcaret = 0xba8 upcaret = 0xba9 overbar = 0xbc0 downtack = 0xbc2 upshoe = 0xbc3 downstile = 0xbc4 underbar = 0xbc6 jot = 0xbca quad = 0xbcc uptack = 0xbce circle = 0xbcf upstile = 0xbd3 downshoe = 0xbd6 rightshoe = 0xbd8 leftshoe = 0xbda lefttack = 0xbdc righttack = 0xbfc hebrew_doublelowline = 0xcdf hebrew_aleph = 0xce0 hebrew_bet = 0xce1 hebrew_beth = 0xce1 hebrew_gimel = 0xce2 hebrew_gimmel = 0xce2 hebrew_dalet = 0xce3 hebrew_daleth = 0xce3 hebrew_he = 0xce4 hebrew_waw = 0xce5 hebrew_zain = 0xce6 hebrew_zayin = 0xce6 hebrew_chet = 0xce7 hebrew_het = 0xce7 hebrew_tet = 0xce8 hebrew_teth = 0xce8 hebrew_yod = 0xce9 hebrew_finalkaph = 0xcea hebrew_kaph = 0xceb hebrew_lamed = 0xcec hebrew_finalmem = 0xced hebrew_mem = 0xcee hebrew_finalnun = 0xcef hebrew_nun = 0xcf0 hebrew_samech = 0xcf1 hebrew_samekh = 0xcf1 hebrew_ayin = 0xcf2 hebrew_finalpe = 0xcf3 hebrew_pe = 0xcf4 hebrew_finalzade = 0xcf5 hebrew_finalzadi = 0xcf5 hebrew_zade = 0xcf6 hebrew_zadi = 0xcf6 hebrew_qoph = 0xcf7 hebrew_kuf = 0xcf7 hebrew_resh = 0xcf8 hebrew_shin = 0xcf9 hebrew_taw = 0xcfa hebrew_taf = 0xcfa Hebrew_switch = 0xFF7E Thai_kokai = 0xda1 Thai_khokhai = 0xda2 Thai_khokhuat = 0xda3 Thai_khokhwai = 0xda4 Thai_khokhon = 0xda5 Thai_khorakhang = 0xda6 Thai_ngongu = 0xda7 Thai_chochan = 0xda8 Thai_choching = 0xda9 Thai_chochang = 0xdaa Thai_soso = 0xdab Thai_chochoe = 0xdac Thai_yoying = 0xdad Thai_dochada = 0xdae Thai_topatak = 0xdaf Thai_thothan = 0xdb0 Thai_thonangmontho = 0xdb1 Thai_thophuthao = 0xdb2 Thai_nonen = 0xdb3 Thai_dodek = 0xdb4 Thai_totao = 0xdb5 Thai_thothung = 0xdb6 Thai_thothahan = 0xdb7 Thai_thothong = 0xdb8 Thai_nonu = 0xdb9 Thai_bobaimai = 0xdba Thai_popla = 0xdbb Thai_phophung = 0xdbc Thai_fofa = 0xdbd Thai_phophan = 0xdbe Thai_fofan = 0xdbf Thai_phosamphao = 0xdc0 Thai_moma = 0xdc1 Thai_yoyak = 0xdc2 Thai_rorua = 0xdc3 Thai_ru = 0xdc4 Thai_loling = 0xdc5 Thai_lu = 0xdc6 Thai_wowaen = 0xdc7 Thai_sosala = 0xdc8 Thai_sorusi = 0xdc9 Thai_sosua = 0xdca Thai_hohip = 0xdcb Thai_lochula = 0xdcc Thai_oang = 0xdcd Thai_honokhuk = 0xdce Thai_paiyannoi = 0xdcf Thai_saraa = 0xdd0 Thai_maihanakat = 0xdd1 Thai_saraaa = 0xdd2 Thai_saraam = 0xdd3 Thai_sarai = 0xdd4 Thai_saraii = 0xdd5 Thai_saraue = 0xdd6 Thai_sarauee = 0xdd7 Thai_sarau = 0xdd8 Thai_sarauu = 0xdd9 Thai_phinthu = 0xdda Thai_maihanakat_maitho = 0xdde Thai_baht = 0xddf Thai_sarae = 0xde0 Thai_saraae = 0xde1 Thai_sarao = 0xde2 Thai_saraaimaimuan = 0xde3 Thai_saraaimaimalai = 0xde4 Thai_lakkhangyao = 0xde5 Thai_maiyamok = 0xde6 Thai_maitaikhu = 0xde7 Thai_maiek = 0xde8 Thai_maitho = 0xde9 Thai_maitri = 0xdea Thai_maichattawa = 0xdeb Thai_thanthakhat = 0xdec Thai_nikhahit = 0xded Thai_leksun = 0xdf0 Thai_leknung = 0xdf1 Thai_leksong = 0xdf2 Thai_leksam = 0xdf3 Thai_leksi = 0xdf4 Thai_lekha = 0xdf5 Thai_lekhok = 0xdf6 Thai_lekchet = 0xdf7 Thai_lekpaet = 0xdf8 Thai_lekkao = 0xdf9 Hangul = 0xff31 Hangul_Start = 0xff32 Hangul_End = 0xff33 Hangul_Hanja = 0xff34 Hangul_Jamo = 0xff35 Hangul_Romaja = 0xff36 Hangul_Codeinput = 0xff37 Hangul_Jeonja = 0xff38 Hangul_Banja = 0xff39 Hangul_PreHanja = 0xff3a Hangul_PostHanja = 0xff3b Hangul_SingleCandidate = 0xff3c Hangul_MultipleCandidate = 0xff3d Hangul_PreviousCandidate = 0xff3e Hangul_Special = 0xff3f Hangul_switch = 0xFF7E Hangul_Kiyeog = 0xea1 Hangul_SsangKiyeog = 0xea2 Hangul_KiyeogSios = 0xea3 Hangul_Nieun = 0xea4 Hangul_NieunJieuj = 0xea5 Hangul_NieunHieuh = 0xea6 Hangul_Dikeud = 0xea7 Hangul_SsangDikeud = 0xea8 Hangul_Rieul = 0xea9 Hangul_RieulKiyeog = 0xeaa Hangul_RieulMieum = 0xeab Hangul_RieulPieub = 0xeac Hangul_RieulSios = 0xead Hangul_RieulTieut = 0xeae Hangul_RieulPhieuf = 0xeaf Hangul_RieulHieuh = 0xeb0 Hangul_Mieum = 0xeb1 Hangul_Pieub = 0xeb2 Hangul_SsangPieub = 0xeb3 Hangul_PieubSios = 0xeb4 Hangul_Sios = 0xeb5 Hangul_SsangSios = 0xeb6 Hangul_Ieung = 0xeb7 Hangul_Jieuj = 0xeb8 Hangul_SsangJieuj = 0xeb9 Hangul_Cieuc = 0xeba Hangul_Khieuq = 0xebb Hangul_Tieut = 0xebc Hangul_Phieuf = 0xebd Hangul_Hieuh = 0xebe Hangul_A = 0xebf Hangul_AE = 0xec0 Hangul_YA = 0xec1 Hangul_YAE = 0xec2 Hangul_EO = 0xec3 Hangul_E = 0xec4 Hangul_YEO = 0xec5 Hangul_YE = 0xec6 Hangul_O = 0xec7 Hangul_WA = 0xec8 Hangul_WAE = 0xec9 Hangul_OE = 0xeca Hangul_YO = 0xecb Hangul_U = 0xecc Hangul_WEO = 0xecd Hangul_WE = 0xece Hangul_WI = 0xecf Hangul_YU = 0xed0 Hangul_EU = 0xed1 Hangul_YI = 0xed2 Hangul_I = 0xed3 Hangul_J_Kiyeog = 0xed4 Hangul_J_SsangKiyeog = 0xed5 Hangul_J_KiyeogSios = 0xed6 Hangul_J_Nieun = 0xed7 Hangul_J_NieunJieuj = 0xed8 Hangul_J_NieunHieuh = 0xed9 Hangul_J_Dikeud = 0xeda Hangul_J_Rieul = 0xedb Hangul_J_RieulKiyeog = 0xedc Hangul_J_RieulMieum = 0xedd Hangul_J_RieulPieub = 0xede Hangul_J_RieulSios = 0xedf Hangul_J_RieulTieut = 0xee0 Hangul_J_RieulPhieuf = 0xee1 Hangul_J_RieulHieuh = 0xee2 Hangul_J_Mieum = 0xee3 Hangul_J_Pieub = 0xee4 Hangul_J_PieubSios = 0xee5 Hangul_J_Sios = 0xee6 Hangul_J_SsangSios = 0xee7 Hangul_J_Ieung = 0xee8 Hangul_J_Jieuj = 0xee9 Hangul_J_Cieuc = 0xeea Hangul_J_Khieuq = 0xeeb Hangul_J_Tieut = 0xeec Hangul_J_Phieuf = 0xeed Hangul_J_Hieuh = 0xeee Hangul_RieulYeorinHieuh = 0xeef Hangul_SunkyeongeumMieum = 0xef0 Hangul_SunkyeongeumPieub = 0xef1 Hangul_PanSios = 0xef2 Hangul_KkogjiDalrinIeung = 0xef3 Hangul_SunkyeongeumPhieuf = 0xef4 Hangul_YeorinHieuh = 0xef5 Hangul_AraeA = 0xef6 Hangul_AraeAE = 0xef7 Hangul_J_PanSios = 0xef8 Hangul_J_KkogjiDalrinIeung = 0xef9 Hangul_J_YeorinHieuh = 0xefa Korean_Won = 0xeff Armenian_eternity = 0x14a1 Armenian_section_sign = 0x14a2 Armenian_full_stop = 0x14a3 Armenian_verjaket = 0x14a3 Armenian_parenright = 0x14a4 Armenian_parenleft = 0x14a5 Armenian_guillemotright = 0x14a6 Armenian_guillemotleft = 0x14a7 Armenian_em_dash = 0x14a8 Armenian_dot = 0x14a9 Armenian_mijaket = 0x14a9 Armenian_separation_mark = 0x14aa Armenian_but = 0x14aa Armenian_comma = 0x14ab Armenian_en_dash = 0x14ac Armenian_hyphen = 0x14ad Armenian_yentamna = 0x14ad Armenian_ellipsis = 0x14ae Armenian_exclam = 0x14af Armenian_amanak = 0x14af Armenian_accent = 0x14b0 Armenian_shesht = 0x14b0 Armenian_question = 0x14b1 Armenian_paruyk = 0x14b1 Armenian_AYB = 0x14b2 Armenian_ayb = 0x14b3 Armenian_BEN = 0x14b4 Armenian_ben = 0x14b5 Armenian_GIM = 0x14b6 Armenian_gim = 0x14b7 Armenian_DA = 0x14b8 Armenian_da = 0x14b9 Armenian_YECH = 0x14ba Armenian_yech = 0x14bb Armenian_ZA = 0x14bc Armenian_za = 0x14bd Armenian_E = 0x14be Armenian_e = 0x14bf Armenian_AT = 0x14c0 Armenian_at = 0x14c1 Armenian_TO = 0x14c2 Armenian_to = 0x14c3 Armenian_ZHE = 0x14c4 Armenian_zhe = 0x14c5 Armenian_INI = 0x14c6 Armenian_ini = 0x14c7 Armenian_LYUN = 0x14c8 Armenian_lyun = 0x14c9 Armenian_KHE = 0x14ca Armenian_khe = 0x14cb Armenian_TSA = 0x14cc Armenian_tsa = 0x14cd Armenian_KEN = 0x14ce Armenian_ken = 0x14cf Armenian_HO = 0x14d0 Armenian_ho = 0x14d1 Armenian_DZA = 0x14d2 Armenian_dza = 0x14d3 Armenian_GHAT = 0x14d4 Armenian_ghat = 0x14d5 Armenian_TCHE = 0x14d6 Armenian_tche = 0x14d7 Armenian_MEN = 0x14d8 Armenian_men = 0x14d9 Armenian_HI = 0x14da Armenian_hi = 0x14db Armenian_NU = 0x14dc Armenian_nu = 0x14dd Armenian_SHA = 0x14de Armenian_sha = 0x14df Armenian_VO = 0x14e0 Armenian_vo = 0x14e1 Armenian_CHA = 0x14e2 Armenian_cha = 0x14e3 Armenian_PE = 0x14e4 Armenian_pe = 0x14e5 Armenian_JE = 0x14e6 Armenian_je = 0x14e7 Armenian_RA = 0x14e8 Armenian_ra = 0x14e9 Armenian_SE = 0x14ea Armenian_se = 0x14eb Armenian_VEV = 0x14ec Armenian_vev = 0x14ed Armenian_TYUN = 0x14ee Armenian_tyun = 0x14ef Armenian_RE = 0x14f0 Armenian_re = 0x14f1 Armenian_TSO = 0x14f2 Armenian_tso = 0x14f3 Armenian_VYUN = 0x14f4 Armenian_vyun = 0x14f5 Armenian_PYUR = 0x14f6 Armenian_pyur = 0x14f7 Armenian_KE = 0x14f8 Armenian_ke = 0x14f9 Armenian_O = 0x14fa Armenian_o = 0x14fb Armenian_FE = 0x14fc Armenian_fe = 0x14fd Armenian_apostrophe = 0x14fe Armenian_ligature_ew = 0x14ff Georgian_an = 0x15d0 Georgian_ban = 0x15d1 Georgian_gan = 0x15d2 Georgian_don = 0x15d3 Georgian_en = 0x15d4 Georgian_vin = 0x15d5 Georgian_zen = 0x15d6 Georgian_tan = 0x15d7 Georgian_in = 0x15d8 Georgian_kan = 0x15d9 Georgian_las = 0x15da Georgian_man = 0x15db Georgian_nar = 0x15dc Georgian_on = 0x15dd Georgian_par = 0x15de Georgian_zhar = 0x15df Georgian_rae = 0x15e0 Georgian_san = 0x15e1 Georgian_tar = 0x15e2 Georgian_un = 0x15e3 Georgian_phar = 0x15e4 Georgian_khar = 0x15e5 Georgian_ghan = 0x15e6 Georgian_qar = 0x15e7 Georgian_shin = 0x15e8 Georgian_chin = 0x15e9 Georgian_can = 0x15ea Georgian_jil = 0x15eb Georgian_cil = 0x15ec Georgian_char = 0x15ed Georgian_xan = 0x15ee Georgian_jhan = 0x15ef Georgian_hae = 0x15f0 Georgian_he = 0x15f1 Georgian_hie = 0x15f2 Georgian_we = 0x15f3 Georgian_har = 0x15f4 Georgian_hoe = 0x15f5 Georgian_fi = 0x15f6 EcuSign = 0x20a0 ColonSign = 0x20a1 CruzeiroSign = 0x20a2 FFrancSign = 0x20a3 LiraSign = 0x20a4 MillSign = 0x20a5 NairaSign = 0x20a6 PesetaSign = 0x20a7 RupeeSign = 0x20a8 WonSign = 0x20a9 NewSheqelSign = 0x20aa DongSign = 0x20ab EuroSign = 0x20ac __name_to_keycode = {} __keycode_to_name = {} for key, value in vars().items(): if key.startswith("__") or \ key in ("name_to_keycode", "keycode_to_name", "VoidSymbol"): continue if key.startswith("_"): key = key[1:] __name_to_keycode[key] = value __keycode_to_name[value] = key def name_to_keycode(name): return __name_to_keycode.get(name, VoidSymbol) def keycode_to_name(code): if __keycode_to_name.has_key(code): return __keycode_to_name[code] if code < 0xffff: return "0x%04x" % code else: return "0x%06x" % code ibus-1.5.11/ibus/serializable.py0000644000000000000000000000554612551654123013430 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "Serializable", "serialize_object", "deserialize_object", ) from object import Object import dbus import gobject __serializable_name_dict = dict() def serializable_register(classobj): # if not issubclass(classobj, Serializable): # raise "%s is not a sub-class of Serializable" % str(classobj) __serializable_name_dict[classobj.__NAME__] = classobj def serialize_object(o): if isinstance(o, Serializable): l = [o.__NAME__] o.serialize(l) return dbus.Struct(l) else: return o def deserialize_object(v): if isinstance(v, tuple): struct = list(v) type_name = struct.pop(0) type_class = __serializable_name_dict[type_name] o = type_class() o.deserialize (struct) return o return v class SerializableMeta(gobject.GObjectMeta): def __init__(cls, name, bases, dict_): super(SerializableMeta, cls).__init__(name, bases, dict_) if "__NAME__" in cls.__dict__: serializable_register(cls) class Serializable(Object): __metaclass__ = SerializableMeta __gtype_name__ = "PYIBusSerializable" __NAME__ = "IBusSerializable" def __init__(self): super(Serializable, self).__init__() self.__attachments = dict() def set_attachment(self, name, value): self.__attachments[name] = value def get_attachment(self, name): return self.__attachments.get(name, None) def serialize(self, struct): d = dbus.Dictionary(signature="sv") for k, v in self.__attachments.items(): d[k] = serialize_object(v) struct.append(d) def deserialize(self, struct): d = struct.pop(0) self.__attachments = dict() for k, v in d.items(): self.__attachments[k] = deserialize_object(v) def do_destroy(self): self.__attachments = None super(Serializable, self).do_destroy() __serializable_name_dict["IBusSerializable"] = Serializable ibus-1.5.11/ibus/engine.py0000644000000000000000000001655712551654123012233 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "EngineBase", ) import common import object import serializable import interface from text import Text class EngineBase(object.Object): def __init__(self, bus, object_path): super(EngineBase, self).__init__() self.__proxy = EngineProxy (self, bus.get_dbusconn(), object_path) self.__surrounding_text = Text() self.__surrounding_cursor_pos = 0 self.__selection_anchor_pos = 0 def process_key_event(self, keyval, keycode, state): return False def focus_in(self): pass def focus_out(self): pass def set_cursor_location(self, x, y, w, h): pass def set_surrounding_text(self, text, cursor_pos, anchor_pos): text = serializable.deserialize_object(text) self.__surrounding_text = text self.__surrounding_cursor_pos = cursor_pos self.__selection_anchor_pos = anchor_pos def get_surrounding_text(self): # Tell the client that this engine will utilize surrounding-text # feature, which causes periodical update. Note that the client # should request the initial surrounding-text when the engine is # enabled. self.__proxy.RequireSurroundingText() return (self.__surrounding_text, self.__surrounding_cursor_pos) def delete_surrounding_text(self, offset_from_cursor, nchars): # Update surrounding-text cache. This is necessary since some # engines call get_surrounding_text() immediately after # delete_surrounding_text(). text = self.__surrounding_text.get_text() cursor_pos = self.__surrounding_cursor_pos + offset_from_cursor if cursor_pos >= 0 and len(text) - cursor_pos >= nchars: text = text[cursor_pos + nchars:] self.__surrounding_text = Text(text) self.__surrounding_cursor_pos = cursor_pos else: self.__surrounding_text = Text() self.__surrounding_cursor_pos = 0 self.__proxy.DeleteSurroundingText(offset_from_cursor, nchars) def set_capabilities(self, cap): pass def reset(self): pass def page_up(self): pass def page_down(self): pass def cursor_up(self): pass def cursor_down(self): pass def enable(self): pass def disable(self): pass def property_activate(self, prop_name, prop_state): pass def property_show(self, prop_name): pass def property_hide(self, prop_name): pass def commit_text(self, text): text = serializable.serialize_object(text) return self.__proxy.CommitText(text) def forward_key_event(self, keyval, keycode, state): return self.__proxy.ForwardKeyEvent(keyval, keycode, state) def update_preedit_text(self, text, cursor_pos, visible, mode=common.IBUS_ENGINE_PREEDIT_CLEAR): text = serializable.serialize_object(text) return self.__proxy.UpdatePreeditText(text, cursor_pos, visible, mode) def show_preedit_text(self): return self.__proxy.ShowPreeditText() def hide_preedit_text(self): return self.__proxy.HidePreeditText() def update_auxiliary_text(self, text, visible): text = serializable.serialize_object(text) return self.__proxy.UpdateAuxiliaryText(text, visible) def show_auxiliary_text(self): return self.__proxy.ShowAuxiliaryText() def hide_auxiliary_text(self): return self.__proxy.HideAuxiliaryText() def update_lookup_table(self, lookup_table, visible, just_current_page = False): if just_current_page: lookup_table = lookup_table.get_current_page_as_lookup_table() dbus_values = serializable.serialize_object(lookup_table) return self.__proxy.UpdateLookupTable(dbus_values, visible) def show_lookup_table(self): return self.__proxy.ShowLookupTable() def hide_lookup_table(self): return self.__proxy.HideLookupTable() def page_up_lookup_table(self): return self.__proxy.PageUpLookupTable() def page_down_lookup_table(self): return self.__proxy.PageDownLookupTable() def cursor_up_lookup_table(self): return self.__proxy.CursorUpLookupTable() def cursor_down_lookup_table(self): return self.__proxy.CursorDownLookupTable() def register_properties(self, props): dbus_values = serializable.serialize_object(props) return self.__proxy.RegisterProperties(dbus_values) def update_property(self, prop): dbus_values = serializable.serialize_object(prop) return self.__proxy.UpdateProperty(dbus_values) def get_dbus_object(self): return self.__proxy def do_destroy(self): self.__proxy = None super(EngineBase,self).do_destroy() class EngineProxy(interface.IEngine): def __init__(self, engine, conn, object_path): super(EngineProxy, self).__init__(conn, object_path) self.__engine = engine def ProcessKeyEvent(self, keyval, keycode, state): return self.__engine.process_key_event(keyval, keycode, state) def FocusIn(self): return self.__engine.focus_in() def FocusOut(self): return self.__engine.focus_out() def SetCursorLocation(self, x, y, w, h): return self.__engine.set_cursor_location(x, y, w, h) def SetSurroundingText(self, text, cursor_pos, anchor_pos): return self.__engine.set_surrounding_text(text, cursor_pos, anchor_pos) def SetCapabilities(self, caps): return self.__engine.set_capabilities(caps) def Reset(self): return self.__engine.reset() def PageUp(self): return self.__engine.page_up() def PageDown(self): return self.__engine.page_down() def CursorUp(self): return self.__engine.cursor_up() def CursorDown(self): return self.__engine.cursor_down() def CandidateClicked(self, index, button, state): return self.__engine.candidate_clicked(index, button, state) def Enable(self): return self.__engine.enable() def Disable(self): return self.__engine.disable() def PropertyActivate(self, prop_name, prop_state): return self.__engine.property_activate(prop_name, prop_state) def PropertyShow(self, prop_name): return self.__engine.property_show(prop_name) def PropertyHide(self, prop_name): return self.__engine.property_hide(prop_name) def Destroy(self): self.__engine.destroy() self.__engine = None self.remove_from_connection () ibus-1.5.11/ibus/config.py0000644000000000000000000001223012551654123012213 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "ConfigBase", "IBUS_SERVICE_CONFIG", "IBUS_PATH_CONFIG" ) IBUS_SERVICE_CONFIG = "org.freedesktop.IBus.Config" IBUS_PATH_CONFIG = "/org/freedesktop/IBus/Config" import gobject import object import interface import dbus from dbus.proxies import ProxyObject class ConfigBase(object.Object): def __init__(self, bus): super(ConfigBase, self).__init__() self.__proxy = ConfigProxy(self, bus.get_dbusconn()) def get_value(self, section, name): pass def get_values(self, section): pass def set_value(self, section, name, value): pass def unset_value(self, section, name): pass def value_changed(self, section, name, value): self.__proxy.ValueChanged(section, name, value) class ConfigProxy(interface.IConfig): def __init__ (self, config, dbusconn): super(ConfigProxy, self).__init__(dbusconn, IBUS_PATH_CONFIG) self.__dbusconn = dbusconn self.__config = config def GetValue(self, section, name): return self.__config.get_value(section, name) def GetValues(self, section): return self.__config.get_values(section) def SetValue(self, section, name, value): return self.__config.set_value(section, name, value) def UnsetValue(self, section, name): return self.__config.unset_value(section, name) def Destroy(self): self.__config.destroy() class Config(object.Object): __gtype_name__ = "PYIBusConfig" __gsignals__ = { "reloaded" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), "value-changed" : ( gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) ), } def __init__(self, bus): super(Config, self).__init__() self.__bus = bus self.__bus_name = None self.__bus.add_match("type='signal',\ sender='org.freedesktop.DBus',\ member='NameOwnerChanged',\ arg0='org.freedesktop.IBus.Config'") self.__bus.get_dbusconn().add_signal_receiver(self.__name_owner_changed_cb, signal_name="NameOwnerChanged") try: self.__init_config() except: self.__config = None def __name_owner_changed_cb(self, name, old_name, new_name): if name == "org.freedesktop.IBus.Config": if new_name == "": self.__config = None else: self.__init_config(new_name) def __init_config(self, bus_name=None): if bus_name == None: bus_name = self.__bus.get_name_owner(IBUS_SERVICE_CONFIG) match_rule = "type='signal',\ sender='%s',\ member='ValueChanged',\ path='/org/freedesktop/IBus/Config'" if self.__bus_name: self.__bus.remove_match(match_rule % self.__bus_name) self.__bus_name = None _config = self.__bus.get_dbusconn().get_object(bus_name, IBUS_PATH_CONFIG) self.__config = dbus.Interface(_config, dbus_interface="org.freedesktop.IBus.Config") self.__config.connect_to_signal("ValueChanged", self.__value_changed_cb) self.__bus_name = bus_name self.__bus.add_match(match_rule % self.__bus_name) self.emit("reloaded") def __value_changed_cb(self, section, name, value): self.emit("value-changed", section, name, value) def get_value(self, section, name, default_value): try: return self.__config.GetValue(section, name) except: return default_value def get_values(self, section): try: return self.__config.GetValues(section) except: return None def set_value(self, section, name, value): try: return self.__config.SetValue(section, name, value) except: return def set_list(self, section, name, value, signature): return self.set_value(section, name, dbus.Array(value, signature=signature)) def unset_value(self, section, name): try: return self.__config.UnsetValue(section, name) except: return ibus-1.5.11/ibus/ascii.py0000644000000000000000000000505712551654123012047 00000000000000"""Constants and membership tests for ASCII characters""" NUL = 0x00 # ^@ SOH = 0x01 # ^A STX = 0x02 # ^B ETX = 0x03 # ^C EOT = 0x04 # ^D ENQ = 0x05 # ^E ACK = 0x06 # ^F BEL = 0x07 # ^G BS = 0x08 # ^H TAB = 0x09 # ^I HT = 0x09 # ^I LF = 0x0a # ^J NL = 0x0a # ^J VT = 0x0b # ^K FF = 0x0c # ^L CR = 0x0d # ^M SO = 0x0e # ^N SI = 0x0f # ^O DLE = 0x10 # ^P DC1 = 0x11 # ^Q DC2 = 0x12 # ^R DC3 = 0x13 # ^S DC4 = 0x14 # ^T NAK = 0x15 # ^U SYN = 0x16 # ^V ETB = 0x17 # ^W CAN = 0x18 # ^X EM = 0x19 # ^Y SUB = 0x1a # ^Z ESC = 0x1b # ^[ FS = 0x1c # ^\ GS = 0x1d # ^] RS = 0x1e # ^^ US = 0x1f # ^_ SP = 0x20 # space DEL = 0x7f # delete controlnames = [ "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US", "SP" ] def _ctoi(c): if type(c) == type(""): return ord(c) else: return c def isalnum(c): return isalpha(c) or isdigit(c) def isalpha(c): return isupper(c) or islower(c) def isascii(c): return _ctoi(c) <= 127 # ? def isblank(c): return _ctoi(c) in (8,32) def iscntrl(c): return _ctoi(c) <= 31 def isdigit(c): return _ctoi(c) >= 48 and _ctoi(c) <= 57 def isgraph(c): return _ctoi(c) >= 33 and _ctoi(c) <= 126 def islower(c): return _ctoi(c) >= 97 and _ctoi(c) <= 122 def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126 def ispunct(c): return _ctoi(c) != 32 and not isalnum(c) def isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32) def isupper(c): return _ctoi(c) >= 65 and _ctoi(c) <= 90 def isxdigit(c): return isdigit(c) or \ (_ctoi(c) >= 65 and _ctoi(c) <= 70) or (_ctoi(c) >= 97 and _ctoi(c) <= 102) def isctrl(c): return _ctoi(c) < 32 def ismeta(c): return _ctoi(c) > 127 def ascii(c): if type(c) == type(""): return chr(_ctoi(c) & 0x7f) else: return _ctoi(c) & 0x7f def ctrl(c): if type(c) == type(""): return chr(_ctoi(c) & 0x1f) else: return _ctoi(c) & 0x1f def alt(c): if type(c) == type(""): return chr(_ctoi(c) | 0x80) else: return _ctoi(c) | 0x80 def unctrl(c): bits = _ctoi(c) if bits == 0x7f: rep = "^?" elif isprint(bits & 0x7f): rep = chr(bits & 0x7f) else: rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20) if bits & 0x80: return "!" + rep return rep ibus-1.5.11/ibus/common.py0000644000000000000000000001376512551654123012254 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "IBUS_IFACE_IBUS", "IBUS_SERVICE_IBUS", "IBUS_PATH_IBUS", "IBUS_IFACE_CONFIG", "IBUS_IFACE_PANEL", "IBUS_IFACE_ENGINE", "IBUS_IFACE_ENGINE_FACTORY", "IBUS_IFACE_INPUT_CONTEXT", "IBUS_IFACE_NOTIFICATIONS", "ORIENTATION_HORIZONTAL", "ORIENTATION_VERTICAL", "ORIENTATION_SYSTEM", "BUS_NAME_FLAG_ALLOW_REPLACEMENT", "BUS_NAME_FLAG_REPLACE_EXISTING", "BUS_NAME_FLAG_DO_NOT_QUEUE", "BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER", "BUS_REQUEST_NAME_REPLY_IN_QUEUE", "BUS_REQUEST_NAME_REPLY_EXISTS", "BUS_REQUEST_NAME_REPLY_ALREADY_OWNER", "default_reply_handler", "default_error_handler", "DEFAULT_ASYNC_HANDLERS", "CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT", "CONFIG_GENERAL_SHORTCUT_ENABLE_DEFAULT", "CONFIG_GENERAL_SHORTCUT_DISABLE_DEFAULT", "CONFIG_GENERAL_SHORTCUT_NEXT_ENGINE_DEFAULT", "CONFIG_GENERAL_SHORTCUT_PREV_ENGINE_DEFAULT", "main", "main_quit", "main_iteration", "get_address", "get_socket_path", ) import os import sys #from xdg import BaseDirectory import ctypes import _config # __display = os.environ["DISPLAY"] # __hostname, __display_screen = __display.split(":", 1) # if not __hostname.strip(): # __hostname = "unix" # __display_number = __display_screen.split(".")[0] # # __username = None # try: # __username = os.getlogin() # except: # pass # if not __username: # __username = os.getenv ("LOGNAME") # if not __username: # __username = os.getenv ("USER") # if not __username: # __username = os.getenv ("LNAME") # if not __username: # __username = os.getenv ("USERNAME") # libibus = ctypes.CDLL("libibus.so") # id = ctypes.c_char_p(libibus.ibus_get_local_machine_id()).value # # IBUS_SOCKET_FILE = os.path.join(BaseDirectory.xdg_config_home, # "ibus", "bus", # "%s-%s-%s"% (id, __hostname, __display_number)) # def get_address(): # libibus = ctypes.CDLL("libibus.so") # address = ctypes.c_char_p(libibus.ibus_get_address()).value # return address # # address = os.getenv("IBUS_ADDRESS") # if address: # return address # try: # for l in file(IBUS_SOCKET_FILE): # if not l.startswith("IBUS_ADDRESS="): # continue # address = l[13:] # address = address.strip() # break # except: # return None # return address libibus = ctypes.CDLL(_config.LIBIBUS_SONAME) get_address = libibus.ibus_get_address get_address.restype=ctypes.c_char_p get_socket_path = libibus.ibus_get_socket_path get_socket_path.restype=ctypes.c_char_p # __session_id = os.getenv ("IBUS_SESSION_ID") # # IBUS_ADDR = "unix:path=/tmp/ibus-%s%s/ibus-%s-%s" % (__username, # "-" + __session_id if __session_id else "", # __hostname, # __display_number) # IBUS_ADDR = "tcp:host=localhost,port=7799" IBUS_IFACE_IBUS = "org.freedesktop.IBus" IBUS_PATH_IBUS = "/org/freedesktop/IBus" IBUS_SERVICE_IBUS = "org.freedesktop.IBus" IBUS_IFACE_PANEL = "org.freedesktop.IBus.Panel" IBUS_IFACE_CONFIG = "org.freedesktop.IBus.Config" IBUS_IFACE_ENGINE = "org.freedesktop.IBus.Engine" IBUS_IFACE_ENGINE_FACTORY = "org.freedesktop.IBus.Factory" IBUS_IFACE_INPUT_CONTEXT = "org.freedesktop.IBus.InputContext" IBUS_IFACE_NOTIFICATIONS = "org.freedesktop.IBus.Notifications" # define pre-edit commit mode when the focus is lost IBUS_ENGINE_PREEDIT_CLEAR = 0 IBUS_ENGINE_PREEDIT_COMMIT = 1 # define orientation ORIENTATION_HORIZONTAL = 0 ORIENTATION_VERTICAL = 1 ORIENTATION_SYSTEM = 2 # define bus name flag BUS_NAME_FLAG_ALLOW_REPLACEMENT = (1 << 0) BUS_NAME_FLAG_REPLACE_EXISTING = (1 << 1) BUS_NAME_FLAG_DO_NOT_QUEUE = (1 << 2) # define bus request name reply BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1 BUS_REQUEST_NAME_REPLY_IN_QUEUE = 2 BUS_REQUEST_NAME_REPLY_EXISTS = 3 BUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4 def default_reply_handler( *args): pass def default_error_handler(e): print >> sys.stderr, e DEFAULT_ASYNC_HANDLERS = { "reply_handler" : default_reply_handler, "error_handler" : default_error_handler } CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT = [ "Control+space", "Zenkaku_Hankaku", "Hangul"] CONFIG_GENERAL_SHORTCUT_ENABLE_DEFAULT = [] CONFIG_GENERAL_SHORTCUT_DISABLE_DEFAULT = [] CONFIG_GENERAL_SHORTCUT_NEXT_ENGINE_DEFAULT = [] CONFIG_GENERAL_SHORTCUT_PREV_ENGINE_DEFAULT = [] __mainloop = None def __init_main_loop(): global __mainloop if __mainloop == None: import gobject __mainloop = gobject.MainLoop() def main(): __init_main_loop() __mainloop.run() def main_quit(): global __mainloop if __mainloop: __mainloop.quit() def main_iteration(may_block=False): __init_main_loop() return __mainloop.get_context().iteration(may_block) ibus-1.5.11/ibus/application.py0000644000000000000000000000250612551654123013256 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA import ibus import dbus class Application: def __init__ (self): self._dbusconn = dbus.connection.Connection (ibus.get_address()) self._dbusconn.add_signal_receiver (self._disconnected_cb, "Disconnected", dbus_interface = dbus.LOCAL_IFACE) def _disconnected_cb (self): self.on_disconnected () def on_disconnected (self): pass def run (self): pass ibus-1.5.11/ibus/property.py0000644000000000000000000001644012551654123012641 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "PROP_TYPE_NORMAL", "PROP_TYPE_TOGGLE", "PROP_TYPE_RADIO", "PROP_TYPE_SEPARATOR", "PROP_TYPE_MENU", "PROP_STATE_UNCHECKED", "PROP_STATE_CHECKED", "PROP_STATE_INCONSISTENT", "Property", "PropList", ) import dbus from text import Text from serializable import * PROP_TYPE_NORMAL = 0 PROP_TYPE_TOGGLE = 1 PROP_TYPE_RADIO = 2 PROP_TYPE_MENU = 3 PROP_TYPE_SEPARATOR = 4 PROP_STATE_UNCHECKED = 0 PROP_STATE_CHECKED = 1 PROP_STATE_INCONSISTENT = 2 def _to_unicode(text): if isinstance(text, unicode): return text if isinstance(text, str): return unicode(text, "utf8") raise TypeError("text must be instance of unicode or str") def _to_text(text): if isinstance(text, Text): return text text = _to_unicode(text) return Text(text) class Property(Serializable): __gtype_name__ = "PYIBusProperty" __NAME__ = "IBusProperty" def __init__(self, key="", type=PROP_TYPE_NORMAL, label=u"", icon=u"", tooltip=u"", sensitive=True, visible=True, state=PROP_STATE_UNCHECKED, symbol=u""): super(Property, self).__init__() self.__key = _to_unicode(key) self.__type = type self.label = label self.symbol = symbol self.icon = icon self.tooltip = tooltip self.sensitive = sensitive self.visible = visible self.state = state self.sub_props = PropList() def set_sub_props(self, props): self.__sub_props = props def get_sub_props(self): return self.__sub_props def get_key(self): return self.__key def get_type(self): return self.__type def set_label(self, label): self.__label = _to_text(label) def get_label(self): return self.__label def set_symbol(self, symbol): self.__symbol = _to_text(symbol) def get_symbol(self): return self.__symbol def set_icon(self, icon): self.__icon = _to_unicode(icon) def get_icon(self): return self.__icon def set_tooltip(self, tooltip): self.__tooltip = _to_text(tooltip) def get_tooltip(self): return self.__tooltip def set_state(self, state): self.__state = state def get_state(self): return self.__state def set_sensitive(self, sensitive): self.__sensitive = sensitive def get_sensitive(self): return self.__sensitive def set_visible(self, visible): self.__visible = visible def get_visible(self): return self.__visible key = property(get_key) type = property(get_type) label = property(get_label, set_label) symbol = property(get_symbol, set_symbol) icon = property(get_icon, set_icon) tooltip = property(get_tooltip, set_tooltip) state = property(get_state, set_state) sensitive = property(get_sensitive, set_sensitive) visible = property(get_visible, set_visible) sub_props = property(get_sub_props, set_sub_props) def is_same(self, prop, test_all = True): if self.__name != prop.__name or self.__type != prop.__type: return False if not test_all: return True if self.__label != prop.__label or \ self.__symbol != prop.__symbol or \ self.__icon != prop.__icon or \ self.__tooltip != prop.__tooltip or \ self.__sensitive != prop.__sensitive or \ self.__visible != prop.__visible or \ self.__state != prop.__state: return False return self.__sub_props.is_same(prop.__sub_props, test_all) def serialize(self, struct): super(Property, self).serialize(struct) struct.append(dbus.String(self.__key)) struct.append(dbus.UInt32(self.__type)) struct.append(serialize_object(self.__label)) struct.append(dbus.String(self.__icon)) struct.append(serialize_object(self.__tooltip)) struct.append(dbus.Boolean(self.__sensitive)) struct.append(dbus.Boolean(self.__visible)) struct.append(dbus.UInt32(self.__state)) sub_props = serialize_object(self.__sub_props) struct.append(sub_props) struct.append(serialize_object(self.__symbol)) def deserialize(self, struct): super(Property, self).deserialize(struct) self.__key = struct.pop(0) self.__type = struct.pop(0) self.__label = deserialize_object(struct.pop(0)) self.__icon = struct.pop(0) self.__tooltip = deserialize_object(struct.pop(0)) self.__sensitive = deserialize_object(struct.pop(0)) self.__visible = struct.pop(0) self.__state = struct.pop(0) props = struct.pop(0) self.__sub_props = deserialize_object(props) self.__symbol = deserialize_object(struct.pop(0)) class PropList(Serializable): __gtype_name__ = "PYIBusPropList" __NAME__ = "IBusPropList" def __init__(self): super(PropList, self).__init__() self.__props = [] def append(self, prop): self.__props.append(prop) def prepend(self, prop): self.__props.insert(0, prop) def insert(self, index, prop): self.__props.insert(index, prop) def get_properties(self): return self.__props[:] def is_same(self, props, test_all = True): if len(props.get_properties()) != len(self.get_properties()): return False for a, b in zip(self.get_properties(), props.get_properties()): if not a.is_same(b, test_all): return False return False def serialize(self, struct): super(PropList, self).serialize(struct) props = map(lambda p: serialize_object(p), self.__props) struct.append (dbus.Array(props, signature = "v")) def deserialize(self, struct): super(PropList, self).deserialize(struct) props = map(lambda v: deserialize_object(v), struct.pop(0)) self.__props = props def __iter__(self): return self.__props.__iter__() def __getitem__(self, i): return self.__props.__getitem__(i) def test(): props = PropList() props.append(Property(u"a")) props.append(Property(u"b")) props.append(Property(u"c")) props.append(Property(u"d")) value = serialize_object(props) props = deserialize_object(value) print props if __name__ == "__main__": test() ibus-1.5.11/ibus/text.py0000644000000000000000000000375012551654123011741 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "Text", ) import dbus from exception import IBusException from serializable import * from attribute import AttrList class Text(Serializable): __gtype_name__ = "PYIBusText" __NAME__ = "IBusText" def __init__ (self, text="", attrs=None): super(Text, self).__init__() self.__text = text self.__attrs = attrs def get_text(self): return self.__text def get_attributes(self): return self.__attrs text = property(get_text) attributes = property(get_attributes) def serialize(self, struct): super(Text, self).serialize(struct) struct.append (dbus.String(self.__text)) if self.__attrs == None: self.__attrs = AttrList() struct.append (serialize_object(self.__attrs)) def deserialize(self, struct): super(Text, self).deserialize(struct) self.__text = struct.pop(0) self.__attrs = deserialize_object(struct.pop(0)) def test(): text = Text("Hello") value = serialize_object(text) text = deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/enginedesc.py0000644000000000000000000001270412551654123013060 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "EngineDesc", ) import dbus from exception import IBusException from serializable import * class EngineDesc(Serializable): __gtype_name__ = "PYIBusEngineDesc" __NAME__ = "IBusEngineDesc" def __init__(self, name="", longname="", description="", language="", license="", author="", icon="", layout="us", hotkeys="", rank=0, symbol="", setup="", layout_variant="", layout_option="", version=""): super(EngineDesc, self).__init__() self.__name = name self.__longname = longname self.__description = description self.__language = language self.__license = license self.__author = author self.__icon = icon self.__layout = layout self.__layout_variant = layout_variant self.__layout_option = layout_option self.__rank = rank self.__hotkeys = hotkeys self.__symbol = symbol self.__setup = setup self.__version = version def get_name(self): return self.__name def get_longname(self): return self.__longname def get_description(self): return self.__description def get_language(self): return self.__language def get_license(self): return self.__license def get_author(self): return self.__author def get_icon(self): return self.__icon def get_layout(self): return self.__layout def get_layout_variant(self): return self.__layout_variant def get_layout_option(self): return self.__layout_option def get_rank(self): return self.__rank def get_hotkeys(self): return self.__hotkeys def get_symbol(self): return self.__symbol def get_setup(self): return self.__setup def get_version(self): return self.__version name = property(get_name) longname = property(get_longname) description = property(get_description) language = property(get_language) license = property(get_license) author = property(get_author) icon = property(get_icon) layout = property(get_layout) layout_variant = property(get_layout_variant) layout_option = property(get_layout_option) rank = property(get_rank) hotkeys = property(get_hotkeys) symbol = property(get_symbol) setup = property(get_setup) version = property(get_version) def serialize(self, struct): super(EngineDesc, self).serialize(struct) struct.append(dbus.String(self.__name)) struct.append(dbus.String(self.__longname)) struct.append(dbus.String(self.__description)) struct.append(dbus.String(self.__language)) struct.append(dbus.String(self.__license)) struct.append(dbus.String(self.__author)) struct.append(dbus.String(self.__icon)) struct.append(dbus.String(self.__layout)) struct.append(dbus.UInt32(self.__rank)) # Keep the serialize order. struct.append(dbus.String(self.__hotkeys)) struct.append(dbus.String(self.__symbol)) struct.append(dbus.String(self.__setup)) struct.append(dbus.String(self.__layout_variant)) struct.append(dbus.String(self.__layout_option)) struct.append(dbus.String(self.__version)) def deserialize(self, struct): super(EngineDesc, self).deserialize(struct) self.__name = struct.pop(0) self.__longname = struct.pop(0) self.__description = struct.pop(0) self.__language = struct.pop(0) self.__license = struct.pop(0) self.__author = struct.pop(0) self.__icon = struct.pop(0) self.__layout = struct.pop(0) self.__rank = struct.pop(0) # Keep the serialize order. self.__hotkeys = struct.pop(0) self.__symbol = struct.pop(0) self.__setup = struct.pop(0) if len(struct) < 2: return self.__layout_variant = struct.pop(0) self.__layout_option = struct.pop(0) if len(struct) < 1: return self.__version = struct.pop(0) def test(): engine = EngineDesc("Hello", "", "", "", "", "", "", "", "", 0, "", "") value = serialize_object(engine) engine = deserialize_object(value) if __name__ == "__main__": test() ibus-1.5.11/ibus/Makefile.in0000644000000000000000000007210212551654260012447 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = ibus ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(ibus_PYTHON) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = _config.py CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__installdirs = "$(DESTDIR)$(ibusdir)" "$(DESTDIR)$(ibusdir)" am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/_config.py.in \ $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = $(PYTHON2) PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SUBDIRS = \ interface \ $(NULL) ibus_PYTHON = \ ascii.py \ application.py \ attribute.py \ common.py \ bus.py \ inputcontext.py \ engine.py \ exception.py \ factory.py \ _gtk.py \ __init__.py \ keysyms.py \ lang.py \ lookuptable.py \ modifier.py \ object.py \ panel.py \ notifications.py \ property.py \ serializable.py \ text.py \ component.py \ enginedesc.py \ observedpath.py \ utility.py \ config.py \ $(NULL) nodist_ibus_PYTHON = \ _config.py \ $(NULL) ibusdir = @pkgpython2dir@ EXTRA_DIST = \ _config.py.in \ $(NULL) CLEANFILES = \ *.pyc \ $(NULL) DISTCLEANFILES = \ _config.py \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ibus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ibus/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): _config.py: $(top_builddir)/config.status $(srcdir)/_config.py.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-ibusPYTHON: $(ibus_PYTHON) @$(NORMAL_INSTALL) @list='$(ibus_PYTHON)'; dlist=; list2=; test -n "$(ibusdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibusdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibusdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ibusdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(ibusdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(ibusdir)" $$dlist; \ else :; fi uninstall-ibusPYTHON: @$(NORMAL_UNINSTALL) @list='$(ibus_PYTHON)'; test -n "$(ibusdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(ibusdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st install-nodist_ibusPYTHON: $(nodist_ibus_PYTHON) @$(NORMAL_INSTALL) @list='$(nodist_ibus_PYTHON)'; dlist=; list2=; test -n "$(ibusdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibusdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibusdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ibusdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(ibusdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(ibusdir)" $$dlist; \ else :; fi uninstall-nodist_ibusPYTHON: @$(NORMAL_UNINSTALL) @list='$(nodist_ibus_PYTHON)'; test -n "$(ibusdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(ibusdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(ibusdir)" "$(DESTDIR)$(ibusdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-ibusPYTHON install-nodist_ibusPYTHON install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-ibusPYTHON uninstall-nodist_ibusPYTHON .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-ibusPYTHON install-info \ install-info-am install-man install-nodist_ibusPYTHON \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-ibusPYTHON uninstall-nodist_ibusPYTHON .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/ibus/Makefile.am0000644000000000000000000000304312551654123012432 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SUBDIRS = \ interface \ $(NULL) PYTHON = $(PYTHON2) ibus_PYTHON = \ ascii.py \ application.py \ attribute.py \ common.py \ bus.py \ inputcontext.py \ engine.py \ exception.py \ factory.py \ _gtk.py \ __init__.py \ keysyms.py \ lang.py \ lookuptable.py \ modifier.py \ object.py \ panel.py \ notifications.py \ property.py \ serializable.py \ text.py \ component.py \ enginedesc.py \ observedpath.py \ utility.py \ config.py \ $(NULL) nodist_ibus_PYTHON = \ _config.py \ $(NULL) ibusdir = @pkgpython2dir@ EXTRA_DIST = \ _config.py.in \ $(NULL) CLEANFILES = \ *.pyc \ $(NULL) DISTCLEANFILES = \ _config.py \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/ibus/utility.py0000644000000000000000000000556712551654123012470 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "unichar_half_to_full", "unichar_full_to_half" ) __half_full_table = [ (0x0020, 0x3000, 1), (0x0021, 0xFF01, 0x5E), (0x00A2, 0xFFE0, 2), (0x00A5, 0xFFE5, 1), (0x00A6, 0xFFE4, 1), (0x00AC, 0xFFE2, 1), (0x00AF, 0xFFE3, 1), (0x20A9, 0xFFE6, 1), (0xFF61, 0x3002, 1), (0xFF62, 0x300C, 2), (0xFF64, 0x3001, 1), (0xFF65, 0x30FB, 1), (0xFF66, 0x30F2, 1), (0xFF67, 0x30A1, 1), (0xFF68, 0x30A3, 1), (0xFF69, 0x30A5, 1), (0xFF6A, 0x30A7, 1), (0xFF6B, 0x30A9, 1), (0xFF6C, 0x30E3, 1), (0xFF6D, 0x30E5, 1), (0xFF6E, 0x30E7, 1), (0xFF6F, 0x30C3, 1), (0xFF70, 0x30FC, 1), (0xFF71, 0x30A2, 1), (0xFF72, 0x30A4, 1), (0xFF73, 0x30A6, 1), (0xFF74, 0x30A8, 1), (0xFF75, 0x30AA, 2), (0xFF77, 0x30AD, 1), (0xFF78, 0x30AF, 1), (0xFF79, 0x30B1, 1), (0xFF7A, 0x30B3, 1), (0xFF7B, 0x30B5, 1), (0xFF7C, 0x30B7, 1), (0xFF7D, 0x30B9, 1), (0xFF7E, 0x30BB, 1), (0xFF7F, 0x30BD, 1), (0xFF80, 0x30BF, 1), (0xFF81, 0x30C1, 1), (0xFF82, 0x30C4, 1), (0xFF83, 0x30C6, 1), (0xFF84, 0x30C8, 1), (0xFF85, 0x30CA, 6), (0xFF8B, 0x30D2, 1), (0xFF8C, 0x30D5, 1), (0xFF8D, 0x30D8, 1), (0xFF8E, 0x30DB, 1), (0xFF8F, 0x30DE, 5), (0xFF94, 0x30E4, 1), (0xFF95, 0x30E6, 1), (0xFF96, 0x30E8, 6), (0xFF9C, 0x30EF, 1), (0xFF9D, 0x30F3, 1), (0xFFA0, 0x3164, 1), (0xFFA1, 0x3131, 30), (0xFFC2, 0x314F, 6), (0xFFCA, 0x3155, 6), (0xFFD2, 0x315B, 9), (0xFFE9, 0x2190, 4), (0xFFED, 0x25A0, 1), (0xFFEE, 0x25CB, 1)] def unichar_half_to_full (c): code = ord (c) for half, full, size in __half_full_table: if code >= half and code < half + size: return unichr (full + code - half) return c def unichar_full_to_half (c): code = ord (c) for half, full, size in __half_full_table: if code >= full and code < full + size: return unichr (half + code - full) return c ibus-1.5.11/ibus/_gtk.py0000644000000000000000000000475212551654123011704 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "PangoAttrList", ) import pango import ibus class PangoAttrList(pango.AttrList): def __init__(self, attrs, unistr): super(PangoAttrList, self).__init__() if attrs == None: return offsets = [] offset = 0 for c in unistr: offsets.append(offset) offset += len(c.encode("utf8")) offsets.append(offset) for attr in attrs: pango_attr = None start_index = attr.start_index if attr.start_index >= 0 else 0 end_index = attr.end_index if attr.end_index >= 0 else 0 start_index = offsets[start_index] if start_index < len(offsets) else offsets[-1] end_index = offsets[end_index] if end_index < len(offsets) else offsets[-1] if attr.type == ibus.ATTR_TYPE_FOREGROUND: r = (attr.value & 0x00ff0000) >> 8 g = (attr.value & 0x0000ff00) b = (attr.value & 0x000000ff) << 8 pango_attr = pango.AttrForeground(r, g, b, start_index, end_index) elif attr.type == ibus.ATTR_TYPE_BACKGROUND: r = (attr.value & 0x00ff0000) >> 8 g = (attr.value & 0x0000ff00) b = (attr.value & 0x000000ff) << 8 pango_attr = pango.AttrBackground(r, g, b, start_index, end_index) elif attr.type == ibus.ATTR_TYPE_UNDERLINE: pango_attr = pango.AttrUnderline(int(attr.value), start_index, end_index) if pango_attr != None: self.insert(pango_attr) ibus-1.5.11/ibus/panel.py0000644000000000000000000001606412551654123012056 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA __all__ = ( "PanelBase", "PanelItem", "PanelButton", "PanelToggleButton", "PanelMenu", "IBUS_SERVICE_PANEL", "IBUS_PATH_PANEL" ) IBUS_SERVICE_PANEL = "org.freedesktop.IBus.Panel" IBUS_PATH_PANEL = "/org/freedesktop/IBus/Panel" from serializable import * from object import Object import interface import dbus class PanelItem: pass class PanelButton(PanelItem): pass class PanelToggleButton(PanelButton): pass class PanelMenu(PanelItem): pass class PanelBase(Object): def __init__(self, bus): super(PanelBase, self).__init__() self.__bus = bus self.__proxy = PanelProxy(self, bus) def set_cursor_location(self, x, y, w, h): pass def update_preedit_text(self, text, cursor_pos, visible): pass def show_preedit_text(self): pass def hide_preedit_text(self): pass def update_auxiliary_text(self, text, visible): pass def show_auxiliary_text(self): pass def hide_auxiliary_text(self): pass def update_lookup_table(self, lookup_table, visible): pass def show_lookup_table(self): pass def hide_lookup_table(self): pass def show_candidate_window(self): pass def page_up_lookup_table(self): pass def page_down_lookup_table(self): pass def cursor_up_lookup_table(self): pass def cursor_down_lookup_table(self): pass def hide_candidate_window(self): pass def show_language_bar(self): pass def hide_language_bar(self): pass def register_properties(self, props): pass def update_property(self, prop): pass def focus_in(self, ic): pass def focus_out(self, ic): pass def state_changed(self): pass def reset(self): pass def start_setup(self): pass def page_up(self): self.__proxy.PageUp() def page_down(self): self.__proxy.PageDown() def cursor_up(self): self.__proxy.CursorUp() def cursor_down(self): self.__proxy.CursorDown() def candidate_clicked(self, index, button, state): self.__proxy.CandidateClicked(index, button, state) def property_activate(self, prop_name, prop_state): prop_name = dbus.String(prop_name) prop_state = dbus.Int32(prop_state) self.__proxy.PropertyActivate(prop_name, prop_state) def property_show(self, prop_name): prop_name = dbus.String(prop_name) self.__proxy.PropertyShow(prop_name) def property_hide(self, prop_name): prop_name = dbus.String(prop_name) self.__proxy.PropertyHide(prop_name) class PanelProxy(interface.IPanel): def __init__ (self, panel, bus): super(PanelProxy, self).__init__(bus.get_dbusconn(), IBUS_PATH_PANEL) self.__bus = bus self.__panel = panel self.__focus_ic = None def SetCursorLocation(self, x, y, w, h): self.__panel.set_cursor_location(x, y, w, h) def UpdatePreeditText(self, text, cursor_pos, visible): text = deserialize_object(text) self.__panel.update_preedit_text(text, cursor_pos, visible) def ShowPreeditText(self): self.__panel.show_preedit_text() def HidePreeditText(self): self.__panel.hide_preedit_text() def UpdateAuxiliaryText(self, text, visible): text = deserialize_object(text) self.__panel.update_auxiliary_text(text, visible) def ShowAuxiliaryText(self): self.__panel.show_auxiliary_text() def HideAuxiliaryText(self): self.__panel.hide_auxiliary_text() def UpdateLookupTable(self, lookup_table, visible): lookup_table = deserialize_object(lookup_table) self.__panel.update_lookup_table(lookup_table, visible) def ShowLookupTable(self): self.__panel.show_lookup_table() def HideLookupTable(self): self.__panel.hide_lookup_table() def PageUpLookupTable(self): self.__panel.page_up_lookup_table() def PageDownLookupTable(self): self.__panel.page_down_lookup_table() def CursorUpLookupTable(self): self.__panel.cursor_up_lookup_table() def CursorDownLookupTable(self): self.__panel.cursor_down_lookup_table() def ShowCandidateWindow(self): self.__panel.show_candidate_window() def HideCandidateWindow(self): self.__panel.hide_candidate_window() def ShowLanguageBar(self): self.__panel.show_language_bar() def HideLanguageBar(self): self.__panel.hide_language_bar() def RegisterProperties(self, props): props = deserialize_object(props) self.__panel.register_properties(props) def UpdateProperty(self, prop): prop = deserialize_object(prop) self.__panel.update_property(prop) def FocusIn(self, ic): self.__panel.focus_in(ic) def FocusOut(self, ic): self.__panel.focus_out(ic) def StateChanged(self): self.__panel.state_changed() def Reset(self): self.__panel.reset() def StartSetup(self): self.__panel.start_setup() def Destroy(self): self.__panel.destroy() def test(): import gtk from bus import Bus from inputcontext import InputContext import factory import attribute import property import text import lookuptable class TestPanel(PanelBase): def __init__(self): self.__bus = Bus() self.__bus.connect("disconnected", gtk.main_quit) super(TestPanel, self).__init__(self.__bus) self.__bus.request_name(IBUS_SERVICE_PANEL, 0) def focus_in(self, ic): print "focus-in:", ic context = InputContext(self.__bus, ic) info = context.get_factory_info() print "factory:", info.name def focus_out(self, ic): print "focus-out:", ic def update_auxiliary_text(self, text, visible): print "update-auxiliary-text:", text.text def update_lookup_table(self, table, visible): print "update-lookup-table", table panel = TestPanel() gtk.main() if __name__ == "__main__": test() ibus-1.5.11/COPYING0000644000000000000000000006350412551654123010477 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ibus-1.5.11/AUTHORS0000644000000000000000000000263412551654123010511 00000000000000 Peng Huang Maintainers: ----------- Takao Fujiwara Translators: ----------- ar.po: muayyad.alsadi@ojuba.org as.po: Amitakhya Phukan bn_IN.po: Runa Bhattacharjee ca.po: Xavier Conde Rueda da.po: Kris Thomsen de.po: Fabian Affolter en_GB.po: Steven Panek es.po: Domingo Becker fr.po: Julroy67 gu.po: Sweta Kothari hi.po: Rajesh Ranjan hu.po: Sulyok Peti it.po: Milo Casagrande ja.po: UTUMI Hirosi kn.po: Shankar Prasad Venkateshbhat ko.po: Eun Ju Kim ml.po: Ani Peter mr.po: sandeep shedmake or.po: Manoj Giri pa.po: Amanpreet Singh pl.po: Piotr DrÄ…g pt_BR.po: Glaucia Freitas ru.po: koterpillar sr.po sr@latin.po: MiloÅ¡ KomarÄević te.po krishna k ta.po: Felix vi.po: Lê Quốc Tuấn zh_CN.po: Peng Huang zh_HK.po: Caius "kaio" Chance zh_TW.po: Ding-Yi Chen ibus-1.5.11/ibus-1.0.pc.in0000644000000000000000000000046112551654123011624 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ datadir=@datadir@ pkgdatadir=@datadir@/ibus Name: IBus Description: IBus Library Version: @VERSION@ Requires: gobject-2.0 gio-2.0 Libs: -L${libdir} -libus-@IBUS_API_VERSION@ Cflags: -I${includedir}/ibus-@IBUS_API_VERSION@ ibus-1.5.11/compile0000755000000000000000000001624512551654253011026 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/INSTALL0000644000000000000000000003661012551654253010477 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command `./configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. ibus-1.5.11/gtk-doc.make0000644000000000000000000002246712551654176011646 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc if ENABLE_GTK_DOC all-local: all-gtk-doc endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp #### scan #### GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### xml #### GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if HAVE_GTK_DOC dist-check-gtkdoc: docs else dist-check-gtkdoc: @echo "*** gtk-doc is needed to run 'make dist'. ***" @echo "*** gtk-doc was not found when 'configure' ran. ***" @echo "*** please install gtk-doc and rerun 'configure'. ***" @false endif dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs ibus-1.5.11/aclocal.m40000644000000000000000000025566712551654241011322 00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Configure paths for GLIB # Owen Taylor 1997-2001 dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, dnl gthread, or gio is specified in MODULES, pass to pkg-config dnl AC_DEFUN([AM_PATH_GLIB_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], , enable_glibtest=yes) pkg_config_args=glib-2.0 for module in . $4 do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done PKG_PROG_PKG_CONFIG([0.16]) no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" dnl dnl Now check if the installed GLIB is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.glibtest AC_TRY_RUN([ #include #include #include int main () { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" AC_TRY_LINK([ #include #include ], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" ifelse([$3], , :, [$3]) fi AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) AC_SUBST(GLIB_GENMARSHAL) AC_SUBST(GOBJECT_QUERY) AC_SUBST(GLIB_MKENUMS) AC_SUBST(GLIB_COMPILE_RESOURCES) rm -f conf.glibtest ]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) dnl GLIB_GSETTINGS dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether dnl the schema should be compiled dnl AC_DEFUN([GLIB_GSETTINGS], [ m4_pattern_allow([AM_V_GEN]) AC_ARG_ENABLE(schemas-compile, AS_HELP_STRING([--disable-schemas-compile], [Disable regeneration of gschemas.compiled on install]), [case ${enableval} in yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE="" ;; no) GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-compile]) ;; esac]) AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE]) PKG_PROG_PKG_CONFIG([0.16]) AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas]) if test x$cross_compiling != xyes; then GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0` else AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas) fi AC_SUBST(GLIB_COMPILE_SCHEMAS) if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2]) else ifelse([$1],,[:],[$1]) fi GSETTINGS_RULES=' .PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas mostlyclean-am: clean-gsettings-schemas gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE)) %.gschema.valid: %.gschema.xml $(gsettings__enum_file) $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$< && mkdir -p [$](@D) && touch [$]@ all-am: $(gsettings_SCHEMAS:.xml=.valid) uninstall-am: uninstall-gsettings-schemas install-data-am: install-gsettings-schemas .SECONDARY: $(gsettings_SCHEMAS) install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file) @$(NORMAL_INSTALL) if test -n "$^"; then \ test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \ $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \ test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \ fi uninstall-gsettings-schemas: @$(NORMAL_UNINSTALL) @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \ test -n "$$files" || exit 0; \ echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir) clean-gsettings-schemas: rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file) ifdef gsettings_ENUM_NAMESPACE $(gsettings__enum_file): $(gsettings_ENUM_FILES) $(AM_V_GEN) glib-mkenums --comments '\'''\'' --fhead "" --vhead " <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod " " --vtail " " --ftail "" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@ endif ' _GSETTINGS_SUBST(GSETTINGS_RULES) ]) dnl _GSETTINGS_SUBST(VARIABLE) dnl Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST AC_DEFUN([_GSETTINGS_SUBST], [ AC_SUBST([$1]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) ] ) # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR # Autoconf support for the Vala compiler # Copyright (C) 2008-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the Vala compiler exists in $PATH. If it is found, the # variable VALAC is set pointing to its absolute path. Otherwise, it is # simply set to 'valac'. # Optionally a minimum release number of the compiler can be requested. # If the ACTION-IF-FOUND parameter is given, it will be run if a proper # Vala compiler is found. # Similarly, if the ACTION-IF-FOUND is given, it will be run if no proper # Vala compiler is found. It defaults to simply print a warning about the # situation, but otherwise proceeding with the configuration. # # AM_PROG_VALAC([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # -------------------------------------------------------------------------- AC_DEFUN([AM_PROG_VALAC], [AC_PATH_PROG([VALAC], [valac], [valac]) AS_IF([test "$VALAC" != valac && test -n "$1"], [AC_MSG_CHECKING([whether $VALAC is at least version $1]) am__vala_version=`$VALAC --version | sed 's/Vala *//'` AS_VERSION_COMPARE([$1], ["$am__vala_version"], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) VALAC=valac])]) if test "$VALAC" = valac; then m4_default([$3], [AC_MSG_WARN([no proper vala compiler found]) AC_MSG_WARN([you will not be able to compile vala source files])]) else m4_default([$2], [:]) fi]) m4_include([m4/gconf-2.m4]) m4_include([m4/gtk-doc.m4]) m4_include([m4/intltool.m4]) m4_include([m4/introspection.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/vapigen.m4]) ibus-1.5.11/engine/0000755000000000000000000000000012551655045010765 500000000000000ibus-1.5.11/engine/simple.xml.in0000644000000000000000000006022512551654123013326 00000000000000 org.freedesktop.IBus.Simple A table based simple engine @libexecdir@/ibus-engine-simple @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus xkb:us::eng eng GPL Peng Huang <shawn.p.huang@gmail.com> us English (US) English (US) ibus-keyboard 99 xkb:us:intl:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> us intl English (US, international with dead keys) English (US, international with dead keys) ibus-keyboard 1 xkb:us:colemak:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> us colemak English (Colemak) English (Colemak) ibus-keyboard 1 xkb:us:dvorak:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> us dvorak English (Dvorak) English (Dvorak) ibus-keyboard 1 xkb:us:altgr-intl:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> us altgr-intl English (international AltGr dead keys) English (international AltGr dead keys) ibus-keyboard 1 xkb:ara::ara ara GPL Peng Huang <shawn.p.huang@gmail.com> ara Arabic Arabic ibus-keyboard 99 xkb:be::ger ger GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 1 xkb:be::nld nld GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 99 xkb:be::fra fra GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 1 xkb:br::por por GPL Peng Huang <shawn.p.huang@gmail.com> br Portuguese (Brazil) Portuguese (Brazil) ibus-keyboard 99 xkb:br:dvorak:por por GPL Peng Huang <shawn.p.huang@gmail.com> br dvorak Portuguese (Brazil, Dvorak) Portuguese (Brazil, Dvorak) ibus-keyboard 1 xkb:bg::bul bul GPL Peng Huang <shawn.p.huang@gmail.com> bg Bulgarian Bulgarian ibus-keyboard 99 xkb:bg:phonetic:bul bul GPL Peng Huang <shawn.p.huang@gmail.com> bg phonetic Bulgarian (traditional phonetic) Bulgarian (traditional phonetic) ibus-keyboard 99 xkb:ca::fra fra GPL Peng Huang <shawn.p.huang@gmail.com> ca French (Canada) French (Canada) ibus-keyboard 1 xkb:ca:eng:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> ca eng English (Canada) English (Canada) ibus-keyboard 1 xkb:hr::scr scr GPL Peng Huang <shawn.p.huang@gmail.com> hr Croatian Croatian ibus-keyboard 99 xkb:cz::cze cze GPL Peng Huang <shawn.p.huang@gmail.com> cz Czech Czech ibus-keyboard 99 xkb:cz:qwerty:cze cze GPL Peng Huang <shawn.p.huang@gmail.com> cz qwerty Czech (qwerty) Czech (qwerty) ibus-keyboard 99 xkb:dk::dan dan GPL Peng Huang <shawn.p.huang@gmail.com> dk Danish Danish ibus-keyboard 99 xkb:ee::est est GPL Peng Huang <shawn.p.huang@gmail.com> ee Estonian Estonian ibus-keyboard 99 xkb:fi::fin fin GPL Peng Huang <shawn.p.huang@gmail.com> fi Finnish Finnish ibus-keyboard 99 xkb:fr::fra fra GPL Peng Huang <shawn.p.huang@gmail.com> fr French French ibus-keyboard 99 xkb:fr:oss:fra fra GPL Peng Huang <shawn.p.huang@gmail.com> fr oss French (alternative) French (alternative) ibus-keyboard 1 xkb:fr:bepo:fra fra GPL Peng Huang <shawn.p.huang@gmail.com> fr bepo French (Bepo, ergonomic, Dvorak way) French (Bepo, ergonomic, Dvorak way) ibus-keyboard 1 xkb:fr:dvorak:fra fra GPL Peng Huang <shawn.p.huang@gmail.com> fr dvorak French (Dvorak) French (Dvorak) ibus-keyboard 1 xkb:de::ger ger GPL Peng Huang <shawn.p.huang@gmail.com> de German German ibus-keyboard 99 xkb:de:dvorak:ger ger GPL Peng Huang <shawn.p.huang@gmail.com> de dvorak German (Dvorak) German (Dvorak) ibus-keyboard 1 xkb:de:neo:ger ger GPL Peng Huang <shawn.p.huang@gmail.com> de neo German (Neo 2) German (Neo 2) ibus-keyboard 1 xkb:de:nodeadkeys:ger ger GPL Peng Huang <shawn.p.huang@gmail.com> de nodeadkeys German (eliminate dead keys) German (eliminate dead keys) ibus-keyboard 1 xkb:gr::gre gre GPL Peng Huang <shawn.p.huang@gmail.com> gr Greek Greek ibus-keyboard 99 xkb:hu::hun hun GPL Peng Huang <shawn.p.huang@gmail.com> hu Hungarian Hungarian ibus-keyboard 99 xkb:il::heb heb GPL Peng Huang <shawn.p.huang@gmail.com> il Hebrew Hebrew ibus-keyboard 99 xkb:it::ita ita GPL Peng Huang <shawn.p.huang@gmail.com> it Italian Italian ibus-keyboard 99 xkb:jp::jpn jpn GPL Peng Huang <shawn.p.huang@gmail.com> jp Japanese Japanese ibus-keyboard 1 xkb:latam::spa spa GPL Peng Huang <shawn.p.huang@gmail.com> latam Spanish (Latin American) Spanish (Latin American) ibus-keyboard 1 xkb:lt::lit lit GPL Peng Huang <shawn.p.huang@gmail.com> lt Lithuanian Lithuanian ibus-keyboard 99 xkb:lv:apostrophe:lav lav GPL Peng Huang <shawn.p.huang@gmail.com> lv apostrophe Latvian (apostrophe variant) Latvian (apostrophe variant) ibus-keyboard 99 xkb:no::nor nor GPL Peng Huang <shawn.p.huang@gmail.com> no Norwegian Norwegian ibus-keyboard 99 xkb:no:dvorak:nor nor GPL Peng Huang <shawn.p.huang@gmail.com> no dvorak Norwegian (Dvorak) Norwegian (Dvorak) ibus-keyboard 1 xkb:pl::pol pol GPL Peng Huang <shawn.p.huang@gmail.com> pl Polish Polish ibus-keyboard 99 xkb:pl:dvorak:pol pol GPL Peng Huang <shawn.p.huang@gmail.com> pl dvorak Polish (Dvorak) Polish (Dvorak) ibus-keyboard 1 xkb:pl:qwertz:pol pol GPL Peng Huang <shawn.p.huang@gmail.com> pl qwertz Polish (qwertz) Polish (qwertz) ibus-keyboard 1 xkb:pt::por por GPL Peng Huang <shawn.p.huang@gmail.com> pt Portuguese Portuguese ibus-keyboard 99 xkb:ro::rum rum GPL Peng Huang <shawn.p.huang@gmail.com> ro Romanian Romanian ibus-keyboard 99 xkb:ru::rus rus GPL Peng Huang <shawn.p.huang@gmail.com> ru Russian Russian ibus-keyboard 99 xkb:ru:phonetic:rus rus GPL Peng Huang <shawn.p.huang@gmail.com> ru phonetic Russian (phonetic) Russian (phonetic) ibus-keyboard 1 xkb:rs::srp srp GPL Peng Huang <shawn.p.huang@gmail.com> rs Serbian Serbian ibus-keyboard 99 xkb:si::slv slv GPL Peng Huang <shawn.p.huang@gmail.com> si Slovenian Slovenian ibus-keyboard 99 xkb:sk::slo slo GPL Peng Huang <shawn.p.huang@gmail.com> sk Slovak Slovak ibus-keyboard 99 xkb:sk:qwerty:slo slo GPL Peng Huang <shawn.p.huang@gmail.com> sk qwerty Slovak (qwerty) Slovak (qwerty) ibus-keyboard 99 xkb:es::spa spa GPL Peng Huang <shawn.p.huang@gmail.com> es Spanish Spanish ibus-keyboard 99 xkb:es:cat:cat cat GPL Peng Huang <shawn.p.huang@gmail.com> es cat Catalan (Spain, with middle-dot L) Catalan (Spain, with middle-dot L) ibus-keyboard 99 xkb:se::swe swe GPL Peng Huang <shawn.p.huang@gmail.com> se Swedish Swedish ibus-keyboard 99 xkb:se:dvorak:swe swe GPL Peng Huang <shawn.p.huang@gmail.com> se dvorak Swedish (Dvorak) Swedish (Dvorak) ibus-keyboard 1 xkb:se:svdvorak:swe swe GPL Peng Huang <shawn.p.huang@gmail.com> se svdvorak Swedish (Svdvorak) Swedish (Svdvorak) ibus-keyboard 1 xkb:ch::ger ger GPL Peng Huang <shawn.p.huang@gmail.com> ch German (Switzerland) German (Switzerland) ibus-keyboard 1 xkb:ch:fr:fra fra GPL Peng Huang <shawn.p.huang@gmail.com> ch fr French (Switzerland) French (Switzerland) ibus-keyboard 1 xkb:tr::tur tur GPL Peng Huang <shawn.p.huang@gmail.com> tr Turkish Turkish ibus-keyboard 99 xkb:ua::ukr ukr GPL Peng Huang <shawn.p.huang@gmail.com> ua Ukrainian Ukrainian ibus-keyboard 99 xkb:gb:extd:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> gb extd English (UK, extended WinKeys) English (UK, extended WinKeys) ibus-keyboard 1 xkb:gb:dvorak:eng eng GPL Peng Huang <shawn.p.huang@gmail.com> gb dvorak English (UK, Dvorak) English (UK, Dvorak) ibus-keyboard 1 ibus-1.5.11/engine/main.vala0000644000000000000000000000662512551654123012503 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2011-2013 Peng Huang * Copyright (c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ using IBus; class DummyEngine : IBus.EngineSimple { } public int main(string[] args) { Intl.setlocale(LocaleCategory.ALL, ""); IBus.init(); IBus.Bus bus = new IBus.Bus(); if (!bus.is_connected()) { warning("ibus-daemon does not exist."); return 1; } bus.disconnected.connect((bus) => { debug("bus disconnected"); IBus.quit(); }); IBus.Factory factory = new IBus.Factory(bus.get_connection()); int id = 0; factory.create_engine.connect((factory, name) => { if (!name.has_prefix("xkb:")) return null; const string path = "/org/freedesktop/IBus/engine/simple/%d"; IBus.Engine engine = new IBus.Engine.with_type( typeof(IBus.EngineSimple), name, path.printf(++id), bus.get_connection()); /* Use Idle.add() to reduce the lag caused by file io */ GLib.Idle.add(() => { /* I think "c" + "'" is c with acute U+0107 and * "c" + "," is c with cedilla U+00E7 and they are * visually comprehensible. But pt-br people need * "c" + "'" is c with cedilla and I think the * cedilla_compose_seqs is needed for the specific keyboards * or regions. * X11 uses compose by locale: * In /usr/share/X11/locale/en_US.UTF-8/Compose , * : U0107 */ IBus.EngineSimple? simple = (IBus.EngineSimple ?) engine; simple.add_table_by_locale(null); string user_file = null; var home = GLib.Environment.get_home_dir(); if (home != null) { user_file = home + "/.XCompose"; if (GLib.FileUtils.test(user_file, GLib.FileTest.EXISTS)) simple.add_compose_file(user_file); } user_file = GLib.Environment.get_variable("XCOMPOSEFILE"); if (user_file != null) { if (GLib.FileUtils.test(user_file, GLib.FileTest.EXISTS)) simple.add_compose_file(user_file); } return false; }); return engine; }); uint flags = IBus.BusNameFlag.REPLACE_EXISTING | IBus.BusNameFlag.ALLOW_REPLACEMENT; uint retval = bus.request_name("org.freedesktop.IBus.Simple", flags); if (retval == 0) { warning("Registry bus name org.freedesktop.IBus.Simple failed!"); return 1; } IBus.main(); return 0; } ibus-1.5.11/engine/ibus_engine_simple_vala.stamp0000644000000000000000000000000612551655044016611 00000000000000stamp ibus-1.5.11/engine/main.c0000644000000000000000000002661612551655045012010 00000000000000/* main.c generated by valac 0.28.0, the Vala compiler * generated from main.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2011-2013 Peng Huang * Copyright (c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #define TYPE_DUMMY_ENGINE (dummy_engine_get_type ()) #define DUMMY_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DUMMY_ENGINE, DummyEngine)) #define DUMMY_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DUMMY_ENGINE, DummyEngineClass)) #define IS_DUMMY_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DUMMY_ENGINE)) #define IS_DUMMY_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DUMMY_ENGINE)) #define DUMMY_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DUMMY_ENGINE, DummyEngineClass)) typedef struct _DummyEngine DummyEngine; typedef struct _DummyEngineClass DummyEngineClass; typedef struct _DummyEnginePrivate DummyEnginePrivate; typedef struct _Block1Data Block1Data; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) typedef struct _Block2Data Block2Data; #define _g_free0(var) (var = (g_free (var), NULL)) struct _DummyEngine { IBusEngineSimple parent_instance; DummyEnginePrivate * priv; }; struct _DummyEngineClass { IBusEngineSimpleClass parent_class; }; struct _Block1Data { int _ref_count_; IBusBus* bus; gint id; }; struct _Block2Data { int _ref_count_; Block1Data * _data1_; IBusEngine* engine; }; static gpointer dummy_engine_parent_class = NULL; GType dummy_engine_get_type (void) G_GNUC_CONST; enum { DUMMY_ENGINE_DUMMY_PROPERTY }; DummyEngine* dummy_engine_new (void); DummyEngine* dummy_engine_construct (GType object_type); gint _vala_main (gchar** args, int args_length1); static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static void __lambda4_ (IBusBus* bus); static void ___lambda4__ibus_bus_disconnected (IBusBus* _sender, gpointer self); static IBusEngine* __lambda5_ (Block1Data* _data1_, IBusFactory* factory, const gchar* name); static Block2Data* block2_data_ref (Block2Data* _data2_); static void block2_data_unref (void * _userdata_); static gboolean __lambda6_ (Block2Data* _data2_); static gboolean ___lambda6__gsource_func (gpointer self); static IBusEngine* ___lambda5__ibus_factory_create_engine (IBusFactory* _sender, const gchar* engine_name, gpointer self); DummyEngine* dummy_engine_construct (GType object_type) { DummyEngine * self = NULL; self = (DummyEngine*) g_object_new (object_type, NULL); return self; } DummyEngine* dummy_engine_new (void) { return dummy_engine_construct (TYPE_DUMMY_ENGINE); } static void dummy_engine_class_init (DummyEngineClass * klass) { dummy_engine_parent_class = g_type_class_peek_parent (klass); } static void dummy_engine_instance_init (DummyEngine * self) { } GType dummy_engine_get_type (void) { static volatile gsize dummy_engine_type_id__volatile = 0; if (g_once_init_enter (&dummy_engine_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (DummyEngineClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) dummy_engine_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DummyEngine), 0, (GInstanceInitFunc) dummy_engine_instance_init, NULL }; GType dummy_engine_type_id; dummy_engine_type_id = g_type_register_static (ibus_engine_simple_get_type (), "DummyEngine", &g_define_type_info, 0); g_once_init_leave (&dummy_engine_type_id__volatile, dummy_engine_type_id); } return dummy_engine_type_id__volatile; } static Block1Data* block1_data_ref (Block1Data* _data1_) { g_atomic_int_inc (&_data1_->_ref_count_); return _data1_; } static void block1_data_unref (void * _userdata_) { Block1Data* _data1_; _data1_ = (Block1Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { _g_object_unref0 (_data1_->bus); g_slice_free (Block1Data, _data1_); } } static void __lambda4_ (IBusBus* bus) { g_return_if_fail (bus != NULL); g_debug ("main.vala:40: bus disconnected"); ibus_quit (); } static void ___lambda4__ibus_bus_disconnected (IBusBus* _sender, gpointer self) { __lambda4_ (_sender); } static Block2Data* block2_data_ref (Block2Data* _data2_) { g_atomic_int_inc (&_data2_->_ref_count_); return _data2_; } static void block2_data_unref (void * _userdata_) { Block2Data* _data2_; _data2_ = (Block2Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { _g_object_unref0 (_data2_->engine); block1_data_unref (_data2_->_data1_); _data2_->_data1_ = NULL; g_slice_free (Block2Data, _data2_); } } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static gboolean __lambda6_ (Block2Data* _data2_) { Block1Data* _data1_; gboolean result = FALSE; IBusEngineSimple* simple = NULL; IBusEngine* _tmp0_ = NULL; IBusEngineSimple* _tmp1_ = NULL; IBusEngineSimple* _tmp2_ = NULL; gchar* user_file = NULL; gchar* home = NULL; const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; const gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; _data1_ = _data2_->_data1_; _tmp0_ = _data2_->engine; _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, ibus_engine_simple_get_type (), IBusEngineSimple)); simple = _tmp1_; _tmp2_ = simple; ibus_engine_simple_add_table_by_locale (_tmp2_, NULL); user_file = NULL; _tmp3_ = g_get_home_dir (); _tmp4_ = g_strdup (_tmp3_); home = _tmp4_; _tmp5_ = home; if (_tmp5_ != NULL) { const gchar* _tmp6_ = NULL; gchar* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; gboolean _tmp9_ = FALSE; _tmp6_ = home; _tmp7_ = g_strconcat (_tmp6_, "/.XCompose", NULL); _g_free0 (user_file); user_file = _tmp7_; _tmp8_ = user_file; _tmp9_ = g_file_test (_tmp8_, G_FILE_TEST_EXISTS); if (_tmp9_) { IBusEngineSimple* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; _tmp10_ = simple; _tmp11_ = user_file; ibus_engine_simple_add_compose_file (_tmp10_, _tmp11_); } } _tmp12_ = g_getenv ("XCOMPOSEFILE"); _tmp13_ = g_strdup (_tmp12_); _g_free0 (user_file); user_file = _tmp13_; _tmp14_ = user_file; if (_tmp14_ != NULL) { const gchar* _tmp15_ = NULL; gboolean _tmp16_ = FALSE; _tmp15_ = user_file; _tmp16_ = g_file_test (_tmp15_, G_FILE_TEST_EXISTS); if (_tmp16_) { IBusEngineSimple* _tmp17_ = NULL; const gchar* _tmp18_ = NULL; _tmp17_ = simple; _tmp18_ = user_file; ibus_engine_simple_add_compose_file (_tmp17_, _tmp18_); } } result = FALSE; _g_free0 (home); _g_free0 (user_file); _g_object_unref0 (simple); return result; } static gboolean ___lambda6__gsource_func (gpointer self) { gboolean result; result = __lambda6_ (self); return result; } static IBusEngine* __lambda5_ (Block1Data* _data1_, IBusFactory* factory, const gchar* name) { IBusEngine* result = NULL; Block2Data* _data2_; const gchar* _tmp0_ = NULL; gboolean _tmp1_ = FALSE; static const char path[] = "/org/freedesktop/IBus/engine/simple/%d"; const gchar* _tmp2_ = NULL; gint _tmp3_ = 0; gint _tmp4_ = 0; gchar* _tmp5_ = NULL; gchar* _tmp6_ = NULL; IBusBus* _tmp7_ = NULL; GDBusConnection* _tmp8_ = NULL; IBusEngine* _tmp9_ = NULL; IBusEngine* _tmp10_ = NULL; IBusEngine* _tmp11_ = NULL; IBusEngine* _tmp12_ = NULL; g_return_val_if_fail (factory != NULL, NULL); g_return_val_if_fail (name != NULL, NULL); _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->_data1_ = block1_data_ref (_data1_); _tmp0_ = name; _tmp1_ = g_str_has_prefix (_tmp0_, "xkb:"); if (!_tmp1_) { result = NULL; block2_data_unref (_data2_); _data2_ = NULL; return result; } _tmp2_ = name; _tmp3_ = _data1_->id; _data1_->id = _tmp3_ + 1; _tmp4_ = _data1_->id; _tmp5_ = g_strdup_printf (path, _tmp4_); _tmp6_ = _tmp5_; _tmp7_ = _data1_->bus; _tmp8_ = ibus_bus_get_connection (_tmp7_); _tmp9_ = ibus_engine_new_with_type (ibus_engine_simple_get_type (), _tmp2_, _tmp6_, _tmp8_); g_object_ref_sink (_tmp9_); _tmp10_ = _tmp9_; _g_free0 (_tmp6_); _data2_->engine = _tmp10_; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda6__gsource_func, block2_data_ref (_data2_), block2_data_unref); _tmp11_ = _data2_->engine; _tmp12_ = _g_object_ref0 (_tmp11_); result = _tmp12_; block2_data_unref (_data2_); _data2_ = NULL; return result; } static IBusEngine* ___lambda5__ibus_factory_create_engine (IBusFactory* _sender, const gchar* engine_name, gpointer self) { IBusEngine* result; result = __lambda5_ (self, _sender, engine_name); return result; } gint _vala_main (gchar** args, int args_length1) { gint result = 0; Block1Data* _data1_; IBusBus* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; gboolean _tmp2_ = FALSE; IBusBus* _tmp3_ = NULL; IBusFactory* factory = NULL; IBusBus* _tmp4_ = NULL; GDBusConnection* _tmp5_ = NULL; IBusFactory* _tmp6_ = NULL; IBusFactory* _tmp7_ = NULL; guint flags = 0U; guint retval = 0U; IBusBus* _tmp8_ = NULL; guint _tmp9_ = 0U; guint32 _tmp10_ = 0U; guint _tmp11_ = 0U; _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; setlocale (LC_ALL, ""); ibus_init (); _tmp0_ = ibus_bus_new (); g_object_ref_sink (_tmp0_); _data1_->bus = _tmp0_; _tmp1_ = _data1_->bus; _tmp2_ = ibus_bus_is_connected (_tmp1_); if (!_tmp2_) { g_warning ("main.vala:35: ibus-daemon does not exist."); result = 1; block1_data_unref (_data1_); _data1_ = NULL; return result; } _tmp3_ = _data1_->bus; g_signal_connect (_tmp3_, "disconnected", (GCallback) ___lambda4__ibus_bus_disconnected, NULL); _tmp4_ = _data1_->bus; _tmp5_ = ibus_bus_get_connection (_tmp4_); _tmp6_ = ibus_factory_new (_tmp5_); g_object_ref_sink (_tmp6_); factory = _tmp6_; _data1_->id = 0; _tmp7_ = factory; g_signal_connect_data (_tmp7_, "create-engine", (GCallback) ___lambda5__ibus_factory_create_engine, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0); flags = (guint) (IBUS_BUS_NAME_FLAG_REPLACE_EXISTING | IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT); _tmp8_ = _data1_->bus; _tmp9_ = flags; _tmp10_ = ibus_bus_request_name (_tmp8_, "org.freedesktop.IBus.Simple", (guint32) _tmp9_); retval = (guint) _tmp10_; _tmp11_ = retval; if (_tmp11_ == ((guint) 0)) { g_warning ("main.vala:100: Registry bus name org.freedesktop.IBus.Simple failed!"); result = 1; _g_object_unref0 (factory); block1_data_unref (_data1_); _data1_ = NULL; return result; } ibus_main (); result = 0; _g_object_unref0 (factory); block1_data_unref (_data1_); _data1_ = NULL; return result; } int main (int argc, char ** argv) { #if !GLIB_CHECK_VERSION (2,35,0) g_type_init (); #endif return _vala_main (argv, argc); } ibus-1.5.11/engine/Makefile.in0000644000000000000000000007540312551654260012761 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2010-2015, Google Inc. All rights reserved. # Copyright (c) 2007-2015 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ libexec_PROGRAMS = ibus-engine-simple$(EXEEXT) subdir = engine ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" PROGRAMS = $(libexec_PROGRAMS) am_ibus_engine_simple_OBJECTS = ibus_engine_simple-main.$(OBJEXT) ibus_engine_simple_OBJECTS = $(am_ibus_engine_simple_OBJECTS) am__DEPENDENCIES_1 = $(libibus) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_engine_simple_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(ibus_engine_simple_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = VALACOMPILE = $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) LTVALACOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) AM_V_VALAC = $(am__v_VALAC_@AM_V@) am__v_VALAC_ = $(am__v_VALAC_@AM_DEFAULT_V@) am__v_VALAC_0 = @echo " VALAC " $@; am__v_VALAC_1 = SOURCES = $(ibus_engine_simple_SOURCES) DIST_SOURCES = $(ibus_engine_simple_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(component_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/ibus_engine_simple_vala.stamp $(top_srcdir)/depcomp \ main.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DBINDIR=\"@bindir@\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --pkg=ibus-1.0 \ --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) ibus_engine_simple_SOURCES = \ main.vala \ $(NULL) ibus_engine_simple_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_engine_simple_LDADD = \ $(AM_LDADD) \ $(NULL) ibus_engine_simple_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ simple.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ simple.xml \ $(NULL) EXTRA_DIST = \ simple.xml.in \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu engine/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu engine/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libexecdir)" && rm -f $$files clean-libexecPROGRAMS: @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-engine-simple$(EXEEXT): $(ibus_engine_simple_OBJECTS) $(ibus_engine_simple_DEPENDENCIES) $(EXTRA_ibus_engine_simple_DEPENDENCIES) @rm -f ibus-engine-simple$(EXEEXT) $(AM_V_CCLD)$(ibus_engine_simple_LINK) $(ibus_engine_simple_OBJECTS) $(ibus_engine_simple_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_engine_simple-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_engine_simple-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_engine_simple_CFLAGS) $(CFLAGS) -MT ibus_engine_simple-main.o -MD -MP -MF $(DEPDIR)/ibus_engine_simple-main.Tpo -c -o ibus_engine_simple-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_engine_simple-main.Tpo $(DEPDIR)/ibus_engine_simple-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_engine_simple-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_engine_simple_CFLAGS) $(CFLAGS) -c -o ibus_engine_simple-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_engine_simple-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_engine_simple_CFLAGS) $(CFLAGS) -MT ibus_engine_simple-main.obj -MD -MP -MF $(DEPDIR)/ibus_engine_simple-main.Tpo -c -o ibus_engine_simple-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_engine_simple-main.Tpo $(DEPDIR)/ibus_engine_simple-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_engine_simple-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_engine_simple_CFLAGS) $(CFLAGS) -c -o ibus_engine_simple-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` $(srcdir)/main.c: $(srcdir)/ibus_engine_simple_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_engine_simple_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_engine_simple_vala.stamp; \ fi $(srcdir)/ibus_engine_simple_vala.stamp: main.vala $(AM_V_at)rm -f $@ && echo stamp > $@-t $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) -C main.vala $(AM_V_at)mv -f $@-t $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-componentDATA: $(component_DATA) @$(NORMAL_INSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(componentdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(componentdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(componentdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(componentdir)" || exit $$?; \ done uninstall-componentDATA: @$(NORMAL_UNINSTALL) @list='$(component_DATA)'; test -n "$(componentdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(componentdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(componentdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f $(srcdir)/ibus_engine_simple_vala.stamp -rm -f $(srcdir)/main.c -rm -f main.c clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-componentDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-componentDATA uninstall-libexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libexecPROGRAMS clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-componentDATA \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libexecPROGRAMS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-componentDATA uninstall-libexecPROGRAMS .PRECIOUS: Makefile simple.xml: simple.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/engine/Makefile.am0000644000000000000000000000432212551654123012736 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2010-2015, Google Inc. All rights reserved. # Copyright (c) 2007-2015 Peng Huang # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DBINDIR=\"@bindir@\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --pkg=ibus-1.0 \ --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) libexec_PROGRAMS = \ ibus-engine-simple \ $(NULL) ibus_engine_simple_SOURCES = \ main.vala \ $(NULL) ibus_engine_simple_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_engine_simple_LDADD = \ $(AM_LDADD) \ $(NULL) ibus_engine_simple_DEPENDENCIES = \ $(libibus) \ $(NULL) component_DATA = \ simple.xml \ $(NULL) componentdir = $(pkgdatadir)/component CLEANFILES = \ simple.xml \ $(NULL) EXTRA_DIST = \ simple.xml.in \ $(NULL) simple.xml: simple.xml.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src -include $(top_srcdir)/git.mk ibus-1.5.11/util/0000755000000000000000000000000012551654524010476 500000000000000ibus-1.5.11/util/IMdkit/0000755000000000000000000000000012551654525011660 500000000000000ibus-1.5.11/util/IMdkit/i18nAttr.c0000644000000000000000000001324512551654124013356 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include "IMdkit.h" #include "Xi18n.h" #include "XimFunc.h" typedef struct { char *name; CARD16 type; } IMListOfAttr; typedef struct { char *name; CARD8 major_opcode; CARD8 minor_opcode; } IMExtList; IMListOfAttr Default_IMattr[] = { {XNQueryInputStyle, XimType_XIMStyles}, /* {XNQueryIMValuesList, XimType_XIMValuesList}, */ {(char *) NULL, (CARD16) 0} }; IMListOfAttr Default_ICattr[] = { {XNInputStyle, XimType_CARD32}, {XNClientWindow, XimType_Window}, {XNFocusWindow, XimType_Window}, {XNFilterEvents, XimType_CARD32}, {XNPreeditAttributes, XimType_NEST}, {XNStatusAttributes, XimType_NEST}, {XNFontSet, XimType_XFontSet}, {XNArea, XimType_XRectangle}, {XNAreaNeeded, XimType_XRectangle}, {XNColormap, XimType_CARD32}, {XNStdColormap, XimType_CARD32}, {XNForeground, XimType_CARD32}, {XNBackground, XimType_CARD32}, {XNBackgroundPixmap, XimType_CARD32}, {XNSpotLocation, XimType_XPoint}, {XNLineSpace, XimType_CARD32}, {XNPreeditState, XimType_CARD32}, {XNSeparatorofNestedList, XimType_SeparatorOfNestedList}, {(char *) NULL, 0} }; IMExtList Default_Extension[] = { {"XIM_EXT_MOVE", XIM_EXTENSION, XIM_EXT_MOVE}, {"XIM_EXT_SET_EVENT_MASK", XIM_EXTENSION, XIM_EXT_SET_EVENT_MASK}, {"XIM_EXT_FORWARD_KEYEVENT", XIM_EXTENSION, XIM_EXT_FORWARD_KEYEVENT}, {(char *) NULL, 0, 0} }; static void CountAttrList(IMListOfAttr *attr, int *total_count) { *total_count = 0; while (attr->name != NULL) { attr++; ++(*total_count); } } static XIMAttr *CreateAttrList (Xi18n i18n_core, IMListOfAttr *attr, int *total_count) { XIMAttr *args, *p; unsigned int buf_size; CountAttrList(attr, total_count); buf_size = (unsigned) (*total_count + 1)*sizeof (XIMAttr); args = (XIMAttr *) malloc (buf_size); if (!args) return (XIMAttr *) NULL; /*endif*/ memset (args, 0, buf_size); for (p = args; attr->name != NULL; attr++, p++) { p->name = attr->name; p->length = strlen (attr->name); p->type = (CARD16) attr->type; p->attribute_id = XrmStringToQuark (p->name); if (strcmp (p->name, XNPreeditAttributes) == 0) i18n_core->address.preeditAttr_id = p->attribute_id; else if (strcmp (p->name, XNStatusAttributes) == 0) i18n_core->address.statusAttr_id = p->attribute_id; else if (strcmp (p->name, XNSeparatorofNestedList) == 0) i18n_core->address.separatorAttr_id = p->attribute_id; /*endif*/ } /*endfor*/ p->name = (char *) NULL; return args; } void _Xi18nInitAttrList (Xi18n i18n_core) { XIMAttr *args; int total_count; /* init IMAttr list */ if (i18n_core->address.xim_attr) XFree ((char *)i18n_core->address.xim_attr); /*endif*/ args = CreateAttrList (i18n_core, Default_IMattr, &total_count); i18n_core->address.im_attr_num = total_count; i18n_core->address.xim_attr = (XIMAttr *)args; /* init ICAttr list */ if (i18n_core->address.xic_attr) XFree ((char *) i18n_core->address.xic_attr); /*endif*/ args = CreateAttrList (i18n_core, Default_ICattr, &total_count); i18n_core->address.ic_attr_num = total_count; i18n_core->address.xic_attr = (XICAttr *) args; } void _Xi18nInitExtension(Xi18n i18n_core) { register int i; IMExtList *extensions = (IMExtList *) Default_Extension; XIMExt *ext_list = (XIMExt *) i18n_core->address.extension; for (i = 0; extensions->name; i++, ext_list++, extensions++) { ext_list->major_opcode = extensions->major_opcode; ext_list->minor_opcode = extensions->minor_opcode; ext_list->name = extensions->name; ext_list->length = strlen(ext_list->name); } /*endfor*/ i18n_core->address.ext_num = i; } ibus-1.5.11/util/IMdkit/Xi18n.h0000644000000000000000000002612012551654124012654 00000000000000/****************************************************************** Copyright (C) 1994-1995 Sun Microsystems, Inc. Copyright (C) 1993-1994 Hewlett-Packard Company Copyright (C) 2014 Peng Huang Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef _Xi18n_h #define _Xi18n_h #include #include #include #include "XimProto.h" /* * Minor Protocol Number for Extension Protocol */ #define XIM_EXTENSION 128 #define XIM_EXT_SET_EVENT_MASK (0x30) #define XIM_EXT_FORWARD_KEYEVENT (0x32) #define XIM_EXT_MOVE (0x33) #define COMMON_EXTENSIONS_NUM 3 #include #include #include "IMdkit.h" /* XI18N Valid Attribute Name Definition */ #define ExtForwardKeyEvent "extForwardKeyEvent" #define ExtMove "extMove" #define ExtSetEventMask "extSetEventMask" /* * Padding macro */ #define IMPAD(length) ((4 - ((length)%4))%4) /* * Target Atom for Transport Connection */ #define LOCALES "LOCALES" #define TRANSPORT "TRANSPORT" #define I18N_OPEN 0 #define I18N_SET 1 #define I18N_GET 2 typedef struct { char *transportname; int namelen; Bool (*checkAddr) (); } TransportSW; typedef struct _XIMPending { unsigned char *p; struct _XIMPending *next; } XIMPending; typedef struct _XimProtoHdr { CARD8 major_opcode; CARD8 minor_opcode; CARD16 length; } XimProtoHdr; typedef struct { CARD16 attribute_id; CARD16 type; CARD16 length; char *name; } XIMAttr; typedef struct { CARD16 attribute_id; CARD16 type; CARD16 length; char *name; } XICAttr; typedef struct { int attribute_id; CARD16 name_length; char *name; int value_length; void *value; int type; } XIMAttribute; typedef struct { int attribute_id; CARD16 name_length; char *name; int value_length; void *value; int type; } XICAttribute; typedef struct { int length; char *name; } XIMStr; typedef struct { CARD16 major_opcode; CARD16 minor_opcode; CARD16 length; char *name; } XIMExt; typedef struct { Atom key; unsigned long offset; } Xi18nAtomOffsetPair; typedef struct { size_t capacity; size_t size; Xi18nAtomOffsetPair *data; } Xi18nOffsetCache; typedef struct _Xi18nClient { int connect_id; CARD8 byte_order; /* '?': initial value 'B': for Big-Endian 'l': for little-endian */ int sync; XIMPending *pending; Xi18nOffsetCache offset_cache; void *trans_rec; /* contains transport specific data */ struct _Xi18nClient *next; } Xi18nClient; typedef struct _Xi18nCore *Xi18n; /* * Callback Struct for XIM Protocol */ typedef struct { int major_code; int minor_code; CARD16 connect_id; } IMAnyStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD8 byte_order; CARD16 major_version; CARD16 minor_version; } IMConnectStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; } IMDisConnectStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; XIMStr lang; } IMOpenStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; } IMCloseStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 number; XIMStr *extension; } IMQueryExtensionStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 number; char **im_attr_list; } IMGetIMValuesStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD16 preedit_attr_num; CARD16 status_attr_num; CARD16 ic_attr_num; XICAttribute *preedit_attr; XICAttribute *status_attr; XICAttribute *ic_attr; } IMChangeICStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; } IMDestroyICStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD16 length; char *commit_string; } IMResetICStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; } IMChangeFocusStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; BITMASK16 sync_bit; CARD16 serial_number; XEvent event; } IMForwardEventStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD16 flag; KeySym keysym; char *commit_string; } IMCommitStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD32 flag; CARD32 key_index; CARD32 event_mask; } IMTriggerNotifyStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 encoding_number; XIMStr *encoding; /* name information */ CARD16 encoding_info_number; XIMStr *encodinginfo; /* detailed information */ CARD16 category; /* #0 for name, #1 for detail */ INT16 enc_index; /* index of the encoding determined */ } IMEncodingNegotiationStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD32 flag; CARD32 forward_event_mask; CARD32 sync_event_mask; } IMSetEventMaskStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD32 filter_event_mask; CARD32 intercept_event_mask; CARD32 select_event_mask; CARD32 forward_event_mask; CARD32 sync_event_mask; } IMExtSetEventMaskStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; CARD16 x; CARD16 y; } IMMoveStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; BITMASK16 flag; CARD16 error_code; CARD16 str_length; CARD16 error_type; char *error_detail; } IMErrorStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; } IMPreeditStateStruct; /* Callbacks */ typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; } IMGeometryCBStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; union { int return_value; /* PreeditStart */ XIMPreeditDrawCallbackStruct draw; /* PreeditDraw */ XIMPreeditCaretCallbackStruct caret; /* PreeditCaret */ } todo; } IMPreeditCBStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; union { XIMStatusDrawCallbackStruct draw; /* StatusDraw */ } todo; } IMStatusCBStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; XIMStringConversionCallbackStruct strconv; } IMStrConvCBStruct; typedef struct { int major_code; int minor_code; CARD16 connect_id; CARD16 icid; } IMSyncXlibStruct; typedef union _IMProtocol { int major_code; IMAnyStruct any; IMConnectStruct imconnect; IMDisConnectStruct imdisconnect; IMOpenStruct imopen; IMCloseStruct imclose; IMQueryExtensionStruct queryext; IMGetIMValuesStruct getim; IMEncodingNegotiationStruct encodingnego; IMExtSetEventMaskStruct extsetevent; IMMoveStruct extmove; IMSetEventMaskStruct setevent; IMChangeICStruct changeic; IMDestroyICStruct destroyic; IMResetICStruct resetic; IMChangeFocusStruct changefocus; IMCommitStruct commitstring; IMForwardEventStruct forwardevent; IMTriggerNotifyStruct triggernotify; IMPreeditStateStruct preedit_state; IMErrorStruct imerror; IMGeometryCBStruct geometry_callback; IMPreeditCBStruct preedit_callback; IMStatusCBStruct status_callback; IMStrConvCBStruct strconv_callback; IMSyncXlibStruct sync_xlib; long pad[32]; } IMProtocol; typedef int (*IMProtoHandler) (XIMS, IMProtocol*); #define DEFAULT_FILTER_MASK (KeyPressMask) /* Xi18nAddressRec structure */ typedef struct _Xi18nAddressRec { Display *dpy; CARD8 im_byteOrder; /* byte order 'B' or 'l' */ /* IM Values */ long imvalue_mask; Window im_window; /* IMServerWindow */ char *im_name; /* IMServerName */ char *im_locale; /* IMLocale */ char *im_addr; /* IMServerTransport */ XIMStyles input_styles; /* IMInputStyles */ XIMTriggerKeys on_keys; /* IMOnKeysList */ XIMTriggerKeys off_keys; /* IMOffKeysList */ XIMEncodings encoding_list; /* IMEncodingList */ IMProtoHandler improto; /* IMProtocolHandler */ long filterevent_mask; /* IMFilterEventMask */ /* XIM_SERVERS target Atoms */ Atom selection; Atom Localename; Atom Transportname; /* XIM/XIC Attr */ int im_attr_num; XIMAttr *xim_attr; int ic_attr_num; XICAttr *xic_attr; CARD16 preeditAttr_id; CARD16 statusAttr_id; CARD16 separatorAttr_id; /* XIMExtension List */ int ext_num; XIMExt extension[COMMON_EXTENSIONS_NUM]; /* transport specific connection address */ void *connect_addr; /* actual data is defined: XSpecRec in Xi18nX.h for X-based connection. TransSpecRec in Xi18nTr.h for Socket-based connection. */ /* clients table */ Xi18nClient *clients; Xi18nClient *free_clients; } Xi18nAddressRec; typedef struct _Xi18nMethodsRec { Bool (*begin) (XIMS); Bool (*end) (XIMS); Bool (*send) (XIMS, CARD16, unsigned char*, long); Bool (*wait) (XIMS, CARD16, CARD8, CARD8); Bool (*disconnect) (XIMS, CARD16); } Xi18nMethodsRec; typedef struct _Xi18nCore { Xi18nAddressRec address; Xi18nMethodsRec methods; } Xi18nCore; #endif ibus-1.5.11/util/IMdkit/i18nIMProto.c0000644000000000000000000004762012551654124014001 00000000000000/****************************************************************** Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts, Copyright 1993, 1994 by Hewlett-Packard Company Copyright 1994, 1995 by Sun Microsystems, Inc. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital or MIT not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hiroyuki Miyamoto Digital Equipment Corporation miyamoto@jrd.dec.com Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ /* Protocol Packet frames */ #include "FrameMgr.h" /* Data type definitions */ static XimFrameRec ximattr_fr[] = { _FRAME(BIT16), /* attribute ID */ _FRAME(BIT16), /* type of the value */ _FRAME(BIT16), /* length of im-attribute */ _FRAME(BARRAY), /* im-attribute */ _PAD4(2), _FRAME(EOL), }; static XimFrameRec xicattr_fr[] = { _FRAME(BIT16), /* attribute ID */ _FRAME(BIT16), /* type of the value */ _FRAME(BIT16), /* length of ic-attribute */ _FRAME(BARRAY), /* ic-attribute */ _PAD4(2), _FRAME(EOL), }; static XimFrameRec ximattribute_fr[] = { _FRAME(BIT16), /* attribute ID */ _FRAME(BIT16), /* value length */ _FRAME(BARRAY), /* value */ _PAD4(1), _FRAME(EOL), }; static XimFrameRec xicattribute_fr[] = { _FRAME(BIT16), /* attribute ID */ _FRAME(BIT16), /* value length */ _FRAME(BARRAY), /* value */ _PAD4(1), _FRAME(EOL), }; static XimFrameRec ximtriggerkey_fr[] = { _FRAME(BIT32), /* keysym */ _FRAME(BIT32), /* modifier */ _FRAME(BIT32), /* modifier mask */ _FRAME(EOL), }; static XimFrameRec encodinginfo_fr[] = { _FRAME(BIT16), /* length of encoding info */ _FRAME(BARRAY), /* encoding info */ _PAD4(2), _FRAME(EOL), }; static XimFrameRec str_fr[] = { _FRAME(BIT8), /* number of byte */ _FRAME(BARRAY), /* string */ _FRAME(EOL), }; static XimFrameRec xpcs_fr[] = { _FRAME(BIT16), /* length of string in bytes */ _FRAME(BARRAY), /* string */ _PAD4(2), }; static XimFrameRec ext_fr[] = { _FRAME(BIT8), /* extension major-opcode */ _FRAME(BIT8), /* extension minor-opcode */ _FRAME(BIT16), /* length of extension name */ _FRAME(BARRAY), /* extension name */ _PAD4(1), _FRAME(EOL), }; static XimFrameRec inputstyle_fr[] = { _FRAME(BIT32), /* inputstyle */ _FRAME(EOL), }; /* Protocol definitions */ xim_externaldef XimFrameRec attr_head_fr[] = { _FRAME(BIT16), /* attribute id */ _FRAME(BIT16), /* attribute length */ _FRAME(EOL), }; xim_externaldef XimFrameRec short_fr[] = { _FRAME(BIT16), /* value */ _FRAME(EOL), }; xim_externaldef XimFrameRec long_fr[] = { _FRAME(BIT32), /* value */ _FRAME(EOL), }; xim_externaldef XimFrameRec xrectangle_fr[] = { _FRAME(BIT16), /* x */ _FRAME(BIT16), /* y */ _FRAME(BIT16), /* width */ _FRAME(BIT16), /* height */ _FRAME(EOL), }; xim_externaldef XimFrameRec xpoint_fr[] = { _FRAME(BIT16), /* x */ _FRAME(BIT16), /* y */ _FRAME(EOL), }; xim_externaldef XimFrameRec fontset_fr[] = { _FRAME(BIT16), /* length of base font name */ _FRAME(BARRAY), /* base font name list */ _PAD4(2), /* unused */ _FRAME(EOL), }; xim_externaldef XimFrameRec input_styles_fr[] = { _FRAME(BIT16), /* number of list */ _PAD4(1), /* unused */ _FRAME(ITER), /* XIMStyle list */ _FRAME(POINTER), _PTR(inputstyle_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec packet_header_fr[] = { _FRAME(BIT8), /* major-opcode */ _FRAME(BIT8), /* minor-opcode */ _FRAME(BIT16), /* length */ _FRAME(EOL), }; xim_externaldef XimFrameRec error_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _FRAME(BIT16), /* Error Code */ _FRAME(BIT16), /* length of error detail */ _FRAME(BIT16), /* type of error detail */ _FRAME(BARRAY), /* error detail */ _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec connect_fr[] = { _FRAME(BIT8), /* byte order */ _PAD2(1), /* unused */ _FRAME(BIT16), /* client-major-protocol-version */ _FRAME(BIT16), /* client-minor-protocol-version */ _BYTE_COUNTER(BIT16, 1), /* length of client-auth-protocol-names */ _FRAME(ITER), /* client-auth-protocol-names */ _FRAME(POINTER), _PTR(xpcs_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec connect_reply_fr[] = { _FRAME(BIT16), /* server-major-protocol-version */ _FRAME(BIT16), /* server-minor-protocol-version */ _FRAME(EOL), }; xim_externaldef XimFrameRec auth_required_fr[] = { _FRAME(BIT8), /* auth-protocol-index */ _FRAME(BIT8), /* auth-data1 */ _FRAME(BARRAY), /* auth-data2 */ _PAD4(3), _FRAME(EOL), }; xim_externaldef XimFrameRec auth_reply_fr[] = { _FRAME(BIT8), _FRAME(BARRAY), _PAD4(2), _FRAME(EOL), }; xim_externaldef XimFrameRec auth_next_fr[] = { _FRAME(BIT8), /* auth-data1 */ _FRAME(BARRAY), /* auth-data2 */ _PAD4(2), _FRAME(EOL), }; xim_externaldef XimFrameRec auth_setup_fr[] = { _BYTE_COUNTER(BIT16, 2), /* number of client-auth-protocol-names */ _PAD4(1), /* unused */ _FRAME(ITER), /* server-auth-protocol-names */ _FRAME(POINTER), _PTR(xpcs_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec auth_ng_fr[] = { _FRAME(EOL), }; xim_externaldef XimFrameRec disconnect_fr[] = { _FRAME(EOL), }; xim_externaldef XimFrameRec disconnect_reply_fr[] = { _FRAME(EOL), }; xim_externaldef XimFrameRec open_fr[] = { _FRAME(POINTER), /* locale name */ _PTR(str_fr), _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec open_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of IM attributes supported */ _FRAME(ITER), /* IM attribute supported */ _FRAME(POINTER), _PTR(ximattr_fr), _BYTE_COUNTER(BIT16, 2), /* number of IC attribute supported */ _PAD4(1), /* unused */ _FRAME(ITER), /* IC attribute supported */ _FRAME(POINTER), _PTR(xicattr_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec close_fr[] = { _FRAME(BIT16), /* input-method-ID */ _PAD4(1), /* unused */ _FRAME(EOL), }; xim_externaldef XimFrameRec close_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _PAD4(1), /* unused */ _FRAME(EOL), }; xim_externaldef XimFrameRec register_triggerkeys_fr[] = { _FRAME(BIT16), /* input-method-ID */ _PAD4(1), /* unused */ _BYTE_COUNTER(BIT32, 1), /* byte length of on-keys */ _FRAME(ITER), /* on-keys list */ _FRAME(POINTER), _PTR(ximtriggerkey_fr), _BYTE_COUNTER(BIT32, 1), /* byte length of off-keys */ _FRAME(ITER), /* off-keys list */ _FRAME(POINTER), _PTR(ximtriggerkey_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec trigger_notify_fr[] = { _FRAME(BIT16), /* input-mehotd-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* flag */ _FRAME(BIT32), /* index of keys list */ _FRAME(BIT32), /* client-select-event-mask */ _FRAME(EOL), }; xim_externaldef XimFrameRec trigger_notify_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec set_event_mask_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* forward-event-mask */ _FRAME(BIT32), /* synchronous-event-mask */ _FRAME(EOL), }; xim_externaldef XimFrameRec encoding_negotiation_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of encodings listed by name */ _FRAME(ITER), /* supported list of encoding in IM library */ _FRAME(POINTER), _PTR(str_fr), _PAD4(1), _BYTE_COUNTER(BIT16, 2), /* byte length of encodings listed by detailed data */ _PAD4(1), _FRAME(ITER), /* list of encodings supported in the IM library */ _FRAME(POINTER), _PTR(encodinginfo_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec encoding_negotiation_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* category of the encoding determined */ _FRAME(BIT16), /* index of the encoding dterminated */ _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec query_extension_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of extensions supported by the IM library */ _FRAME(ITER), /* extensions supported by the IM library */ _FRAME(POINTER), _PTR(str_fr), _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec query_extension_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of extensions supported by the IM server */ _FRAME(ITER), /* list of extensions supported by the IM server */ _FRAME(POINTER), _PTR(ext_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec get_im_values_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of im-attribute-id */ _FRAME(ITER), /* im-attribute-id */ _FRAME(BIT16), _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec get_im_values_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of im-attribute returned */ _FRAME(ITER), /* im-attribute returned */ _FRAME(POINTER), _PTR(ximattribute_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec create_ic_fr[] = { _FRAME(BIT16), /* input-method-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of ic-attributes */ _FRAME(ITER), /* ic-attributes */ _FRAME(POINTER), _PTR(xicattribute_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec create_ic_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec destroy_ic_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec destroy_ic_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec set_ic_values_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _BYTE_COUNTER(BIT16, 2), /* byte length of ic-attributes */ _PAD4(1), _FRAME(ITER), /* ic-attribute */ _FRAME(POINTER), _PTR(xicattribute_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec set_ic_values_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec get_ic_values_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _BYTE_COUNTER(BIT16, 1), /* byte length of ic-attribute-id */ _FRAME(ITER), /* ic-attribute */ _FRAME(BIT16), _PAD4(2), _FRAME(EOL), }; xim_externaldef XimFrameRec get_ic_values_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _BYTE_COUNTER(BIT16, 2), /* byte length of ic-attribute */ _PAD4(1), _FRAME(ITER), /* ic-attribute */ _FRAME(POINTER), _PTR(xicattribute_fr), _FRAME(EOL), }; xim_externaldef XimFrameRec set_ic_focus_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec unset_ic_focus_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec forward_event_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _FRAME(BIT16), /* sequence number */ _FRAME(EOL), }; xim_externaldef XimFrameRec wire_keyevent_fr[] = { _FRAME(BIT8), /* type */ _FRAME(BIT8), /* detail */ _FRAME(BIT16), /* serial number */ _FRAME(BIT32), /* time */ _FRAME(BIT32), /* root */ _FRAME(BIT32), /* window */ _FRAME(BIT32), /* subwindow */ _FRAME(BIT16), /* rootX */ _FRAME(BIT16), /* rootY */ _FRAME(BIT16), /* X */ _FRAME(BIT16), /* Y */ _FRAME(BIT16), /* state */ _FRAME(BIT8), /* sameScreen */ _FRAME(EOL), }; xim_externaldef XimFrameRec sync_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec sync_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; #if 0 xim_externaldef XimFrameRec commit_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _FRAME(BIT16), /* byte length of committed string */ _FRAME(BARRAY), /* committed string */ _PAD4(1), _BYTE_COUNTER(BIT16, 1), /* byte length of keysym */ _FRAME(ITER), /* keysym */ _FRAME(BIT32), _PAD4(1), _FRAME(EOL), }; #endif xim_externaldef XimFrameRec commit_chars_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _FRAME(BIT16), /* byte length of committed string */ _FRAME(BARRAY), /* committed string */ _PAD4(1), _FRAME(EOL), }; xim_externaldef XimFrameRec commit_both_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _PAD4(1), /* unused */ _FRAME(BIT32), /* keysym */ _FRAME(BIT16), /* byte length of committed string */ _FRAME(BARRAY), /* committed string */ _PAD4(2), _FRAME(EOL), }; xim_externaldef XimFrameRec reset_ic_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec reset_ic_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* byte length of committed string */ _FRAME(BARRAY), /* committed string */ _PAD4(2), _FRAME(EOL), }; xim_externaldef XimFrameRec geometry_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec str_conversion_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* XIMStringConversionPosition */ _FRAME(BIT32), /* XIMStringConversionType */ _FRAME(BIT32), /* XIMStringConversionOperation */ _FRAME(BIT16), /* length to multiply the XIMStringConversionType */ _FRAME(BIT16), /* length of the string to be substituted */ #if 0 _FRAME(BARRAY), /* string */ _PAD4(1), #endif _FRAME(EOL), }; xim_externaldef XimFrameRec str_conversion_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* XIMStringConversionFeedback */ _FRAME(BIT16), /* length of the retrieved string */ _FRAME(BARRAY), /* retrieved string */ _PAD4(2), _BYTE_COUNTER(BIT16, 2), /* number of feedback array */ _PAD4(1), _FRAME(ITER), /* feedback array */ _FRAME(BIT32), _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_start_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_start_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* return value */ _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_draw_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* caret */ _FRAME(BIT32), /* chg_first */ _FRAME(BIT32), /* chg_length */ _FRAME(BIT32), /* status */ _FRAME(BIT16), /* length of preedit string */ _FRAME(BARRAY), /* preedit string */ _PAD4(2), _BYTE_COUNTER(BIT16, 2), /* number of feedback array */ _PAD4(1), _FRAME(ITER), /* feedback array */ _FRAME(BIT32), _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_caret_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* position */ _FRAME(BIT32), /* direction */ _FRAME(BIT32), /* style */ _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_caret_reply_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* position */ _FRAME(EOL), }; xim_externaldef XimFrameRec preedit_done_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec status_start_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec status_draw_text_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* type */ _FRAME(BIT32), /* status */ _FRAME(BIT16), /* length of status string */ _FRAME(BARRAY), /* status string */ _PAD4(2), _BYTE_COUNTER(BIT16, 2), /* number of feedback array */ _PAD4(1), _FRAME(ITER), /* feedback array */ _FRAME(BIT32), _FRAME(EOL), }; xim_externaldef XimFrameRec status_draw_bitmap_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* type */ _FRAME(BIT32), /* pixmap data */ _FRAME(EOL), }; xim_externaldef XimFrameRec status_done_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(EOL), }; xim_externaldef XimFrameRec ext_set_event_mask_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT32), /* filter-event-mask */ _FRAME(BIT32), /* intercept-event-mask */ _FRAME(BIT32), /* select-event-mask */ _FRAME(BIT32), /* forward-event-mask */ _FRAME(BIT32), /* synchronous-event-mask */ _FRAME(EOL), }; xim_externaldef XimFrameRec ext_forward_keyevent_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* flag */ _FRAME(BIT16), /* sequence number */ _FRAME(BIT8), /* xEvent.u.u.type */ _FRAME(BIT8), /* keycode */ _FRAME(BIT16), /* state */ _FRAME(BIT32), /* time */ _FRAME(BIT32), /* window */ _FRAME(EOL), }; xim_externaldef XimFrameRec ext_move_fr[] = { _FRAME(BIT16), /* input-method-ID */ _FRAME(BIT16), /* input-context-ID */ _FRAME(BIT16), /* X */ _FRAME(BIT16), /* Y */ _FRAME(EOL), }; ibus-1.5.11/util/IMdkit/i18nMethod.c0000644000000000000000000011065212551654124013664 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #ifndef NEED_EVENTS #define NEED_EVENTS #endif #include #undef NEED_EVENTS #include "FrameMgr.h" #include "IMdkit.h" #include "Xi18n.h" #include "XimFunc.h" extern Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); static void *xi18n_setup (Display *, XIMArg *); static Status xi18n_openIM (XIMS); static Status xi18n_closeIM (XIMS); static char *xi18n_setIMValues (XIMS, XIMArg *); static char *xi18n_getIMValues (XIMS, XIMArg *); static Status xi18n_forwardEvent (XIMS, XPointer); static Status xi18n_commit (XIMS, XPointer); static int xi18n_callCallback (XIMS, XPointer); static int xi18n_preeditStart (XIMS, XPointer); static int xi18n_preeditEnd (XIMS, XPointer); static int xi18n_syncXlib (XIMS, XPointer); #ifndef XIM_SERVERS #define XIM_SERVERS "XIM_SERVERS" #endif static Atom XIM_Servers = None; IMMethodsRec Xi18n_im_methods = { xi18n_setup, xi18n_openIM, xi18n_closeIM, xi18n_setIMValues, xi18n_getIMValues, xi18n_forwardEvent, xi18n_commit, xi18n_callCallback, xi18n_preeditStart, xi18n_preeditEnd, xi18n_syncXlib, }; extern Bool _Xi18nCheckXAddress (Xi18n, TransportSW *, char *); extern Bool _Xi18nCheckTransAddress (Xi18n, TransportSW *, char *); TransportSW _TransR[] = { {"X", 1, _Xi18nCheckXAddress}, #ifdef TCPCONN {"tcp", 3, _Xi18nCheckTransAddress}, {"local", 5, _Xi18nCheckTransAddress}, #endif #ifdef DNETCONN {"decnet", 6, _Xi18nCheckTransAddress}, #endif {(char *) NULL, 0, (Bool (*) ()) NULL} }; static Bool GetInputStyles (Xi18n i18n_core, XIMStyles **p_style) { Xi18nAddressRec *address = (Xi18nAddressRec *) &i18n_core->address; XIMStyles *p; int i; p = &address->input_styles; if ((*p_style = (XIMStyles *) malloc (sizeof (XIMStyles) + p->count_styles*sizeof (XIMStyle))) == NULL) { return False; } /*endif*/ (*p_style)->count_styles = p->count_styles; (*p_style)->supported_styles = (XIMStyle *) ((XPointer) *p_style + sizeof (XIMStyles)); for (i = 0; i < (int) p->count_styles; i++) (*p_style)->supported_styles[i] = p->supported_styles[i]; /*endfor*/ return True; } static Bool GetOnOffKeys (Xi18n i18n_core, long mask, XIMTriggerKeys **p_key) { Xi18nAddressRec *address = (Xi18nAddressRec *) &i18n_core->address; XIMTriggerKeys *p; int i; if (mask & I18N_ON_KEYS) p = &address->on_keys; else p = &address->off_keys; /*endif*/ if ((*p_key = (XIMTriggerKeys *) malloc (sizeof(XIMTriggerKeys) + p->count_keys*sizeof(XIMTriggerKey))) == NULL) { return False; } /*endif*/ (*p_key)->count_keys = p->count_keys; (*p_key)->keylist = (XIMTriggerKey *) ((XPointer) *p_key + sizeof(XIMTriggerKeys)); for (i = 0; i < (int) p->count_keys; i++) { (*p_key)->keylist[i].keysym = p->keylist[i].keysym; (*p_key)->keylist[i].modifier = p->keylist[i].modifier; (*p_key)->keylist[i].modifier_mask = p->keylist[i].modifier_mask; } /*endfor*/ return True; } static Bool GetEncodings(Xi18n i18n_core, XIMEncodings **p_encoding) { Xi18nAddressRec *address = (Xi18nAddressRec *) &i18n_core->address; XIMEncodings *p; int i; p = &address->encoding_list; if ((*p_encoding = (XIMEncodings *) malloc (sizeof (XIMEncodings) + p->count_encodings*sizeof(XIMEncoding))) == NULL) { return False; } /*endif*/ (*p_encoding)->count_encodings = p->count_encodings; (*p_encoding)->supported_encodings = (XIMEncoding *) ((XPointer)*p_encoding + sizeof (XIMEncodings)); for (i = 0; i < (int) p->count_encodings; i++) { (*p_encoding)->supported_encodings[i] = (char *) malloc (strlen (p->supported_encodings[i]) + 1); strcpy ((*p_encoding)->supported_encodings[i], p->supported_encodings[i]); } /*endif*/ return True; } static char *ParseArgs (Xi18n i18n_core, int mode, XIMArg *args) { Xi18nAddressRec *address = (Xi18nAddressRec *) &i18n_core->address; XIMArg *p; if (mode == I18N_OPEN || mode == I18N_SET) { for (p = args; p->name != NULL; p++) { if (strcmp (p->name, IMLocale) == 0) { if (address->imvalue_mask & I18N_IM_LOCALE) return IMLocale; /*endif*/ address->im_locale = (char *) malloc (strlen (p->value) + 1); if (!address->im_locale) return IMLocale; /*endif*/ strcpy (address->im_locale, p->value); address->imvalue_mask |= I18N_IM_LOCALE; } else if (strcmp (p->name, IMServerTransport) == 0) { if (address->imvalue_mask & I18N_IM_ADDRESS) return IMServerTransport; /*endif*/ address->im_addr = (char *) malloc (strlen (p->value) + 1); if (!address->im_addr) return IMServerTransport; /*endif*/ strcpy(address->im_addr, p->value); address->imvalue_mask |= I18N_IM_ADDRESS; } else if (strcmp (p->name, IMServerName) == 0) { if (address->imvalue_mask & I18N_IM_NAME) return IMServerName; /*endif*/ address->im_name = (char *) malloc (strlen (p->value) + 1); if (!address->im_name) return IMServerName; /*endif*/ strcpy (address->im_name, p->value); address->imvalue_mask |= I18N_IM_NAME; } else if (strcmp (p->name, IMServerWindow) == 0) { if (address->imvalue_mask & I18N_IMSERVER_WIN) return IMServerWindow; /*endif*/ address->im_window = (Window) p->value; address->imvalue_mask |= I18N_IMSERVER_WIN; } else if (strcmp (p->name, IMInputStyles) == 0) { if (address->imvalue_mask & I18N_INPUT_STYLES) return IMInputStyles; /*endif*/ address->input_styles.count_styles = ((XIMStyles*)p->value)->count_styles; address->input_styles.supported_styles = (XIMStyle *) malloc (sizeof (XIMStyle)*address->input_styles.count_styles); if (address->input_styles.supported_styles == (XIMStyle *) NULL) return IMInputStyles; /*endif*/ memmove (address->input_styles.supported_styles, ((XIMStyles *) p->value)->supported_styles, sizeof (XIMStyle)*address->input_styles.count_styles); address->imvalue_mask |= I18N_INPUT_STYLES; } else if (strcmp (p->name, IMProtocolHandler) == 0) { address->improto = (IMProtoHandler) p->value; address->imvalue_mask |= I18N_IM_HANDLER; } else if (strcmp (p->name, IMOnKeysList) == 0) { if (address->imvalue_mask & I18N_ON_KEYS) return IMOnKeysList; /*endif*/ address->on_keys.count_keys = ((XIMTriggerKeys *) p->value)->count_keys; address->on_keys.keylist = (XIMTriggerKey *) malloc (sizeof (XIMTriggerKey)*address->on_keys.count_keys); if (address->on_keys.keylist == (XIMTriggerKey *) NULL) return IMOnKeysList; /*endif*/ memmove (address->on_keys.keylist, ((XIMTriggerKeys *) p->value)->keylist, sizeof (XIMTriggerKey)*address->on_keys.count_keys); address->imvalue_mask |= I18N_ON_KEYS; } else if (strcmp (p->name, IMOffKeysList) == 0) { if (address->imvalue_mask & I18N_OFF_KEYS) return IMOffKeysList; /*endif*/ address->off_keys.count_keys = ((XIMTriggerKeys *) p->value)->count_keys; address->off_keys.keylist = (XIMTriggerKey *) malloc (sizeof (XIMTriggerKey)*address->off_keys.count_keys); if (address->off_keys.keylist == (XIMTriggerKey *) NULL) return IMOffKeysList; /*endif*/ memmove (address->off_keys.keylist, ((XIMTriggerKeys *) p->value)->keylist, sizeof (XIMTriggerKey)*address->off_keys.count_keys); address->imvalue_mask |= I18N_OFF_KEYS; } else if (strcmp (p->name, IMEncodingList) == 0) { if (address->imvalue_mask & I18N_ENCODINGS) return IMEncodingList; /*endif*/ address->encoding_list.count_encodings = ((XIMEncodings *) p->value)->count_encodings; address->encoding_list.supported_encodings = (XIMEncoding *) malloc (sizeof (XIMEncoding)*address->encoding_list.count_encodings); if (address->encoding_list.supported_encodings == (XIMEncoding *) NULL) { return IMEncodingList; } /*endif*/ memmove (address->encoding_list.supported_encodings, ((XIMEncodings *) p->value)->supported_encodings, sizeof (XIMEncoding)*address->encoding_list.count_encodings); address->imvalue_mask |= I18N_ENCODINGS; } else if (strcmp (p->name, IMFilterEventMask) == 0) { if (address->imvalue_mask & I18N_FILTERMASK) return IMFilterEventMask; /*endif*/ address->filterevent_mask = (long) p->value; address->imvalue_mask |= I18N_FILTERMASK; } /*endif*/ } /*endfor*/ if (mode == I18N_OPEN) { /* check mandatory IM values */ if (!(address->imvalue_mask & I18N_IM_LOCALE)) { /* locales must be set in IMOpenIM */ return IMLocale; } /*endif*/ if (!(address->imvalue_mask & I18N_IM_ADDRESS)) { /* address must be set in IMOpenIM */ return IMServerTransport; } /*endif*/ } /*endif*/ } else if (mode == I18N_GET) { for (p = args; p->name != NULL; p++) { if (strcmp (p->name, IMLocale) == 0) { p->value = (char *) malloc (strlen (address->im_locale) + 1); if (!p->value) return IMLocale; /*endif*/ strcpy (p->value, address->im_locale); } else if (strcmp (p->name, IMServerTransport) == 0) { p->value = (char *) malloc (strlen (address->im_addr) + 1); if (!p->value) return IMServerTransport; /*endif*/ strcpy (p->value, address->im_addr); } else if (strcmp (p->name, IMServerName) == 0) { if (address->imvalue_mask & I18N_IM_NAME) { p->value = (char *) malloc (strlen (address->im_name) + 1); if (!p->value) return IMServerName; /*endif*/ strcpy (p->value, address->im_name); } else { return IMServerName; } /*endif*/ } else if (strcmp (p->name, IMServerWindow) == 0) { if (address->imvalue_mask & I18N_IMSERVER_WIN) *((Window *) (p->value)) = address->im_window; else return IMServerWindow; /*endif*/ } else if (strcmp (p->name, IMInputStyles) == 0) { if (GetInputStyles (i18n_core, (XIMStyles **) p->value) == False) { return IMInputStyles; } /*endif*/ } else if (strcmp (p->name, IMProtocolHandler) == 0) { if (address->imvalue_mask & I18N_IM_HANDLER) *((IMProtoHandler *) (p->value)) = address->improto; else return IMProtocolHandler; /*endif*/ } else if (strcmp (p->name, IMOnKeysList) == 0) { if (address->imvalue_mask & I18N_ON_KEYS) { if (GetOnOffKeys (i18n_core, I18N_ON_KEYS, (XIMTriggerKeys **) p->value) == False) { return IMOnKeysList; } /*endif*/ } else { return IMOnKeysList; } /*endif*/ } else if (strcmp (p->name, IMOffKeysList) == 0) { if (address->imvalue_mask & I18N_OFF_KEYS) { if (GetOnOffKeys (i18n_core, I18N_OFF_KEYS, (XIMTriggerKeys **) p->value) == False) { return IMOffKeysList; } /*endif*/ } else { return IMOffKeysList; } /*endif*/ } else if (strcmp (p->name, IMEncodingList) == 0) { if (address->imvalue_mask & I18N_ENCODINGS) { if (GetEncodings (i18n_core, (XIMEncodings **) p->value) == False) { return IMEncodingList; } /*endif*/ } else { return IMEncodingList; } /*endif*/ } else if (strcmp (p->name, IMFilterEventMask) == 0) { if (address->imvalue_mask & I18N_FILTERMASK) *((long *) (p->value)) = address->filterevent_mask; else return IMFilterEventMask; /*endif*/ } /*endif*/ } /*endfor*/ } /*endif*/ return NULL; } static int CheckIMName (Xi18n i18n_core) { char *address = i18n_core->address.im_addr; int i; for (i = 0; _TransR[i].transportname; i++) { while (*address == ' ' || *address == '\t') address++; /*endwhile*/ if (strncmp (address, _TransR[i].transportname, _TransR[i].namelen) == 0 && address[_TransR[i].namelen] == '/') { if (_TransR[i].checkAddr (i18n_core, &_TransR[i], address + _TransR[i].namelen + 1) == True) { return True; } /*endif*/ return False; } /*endif*/ } /*endfor*/ return False; } static int SetXi18nSelectionOwner(Xi18n i18n_core) { Display *dpy = i18n_core->address.dpy; Window ims_win = i18n_core->address.im_window; Window root = RootWindow (dpy, DefaultScreen (dpy)); Atom realtype; int realformat; unsigned long bytesafter; long *data=NULL; unsigned long length; Atom atom; int i; int found; int forse = False; char buf[256]; (void)snprintf(buf, 256, "@server=%s", i18n_core->address.im_name); if ((atom = XInternAtom(dpy, buf, False)) == 0) return False; i18n_core->address.selection = atom; if (XIM_Servers == None) XIM_Servers = XInternAtom (dpy, XIM_SERVERS, False); /*endif*/ XGetWindowProperty (dpy, root, XIM_Servers, 0L, 1000000L, False, XA_ATOM, &realtype, &realformat, &length, &bytesafter, (unsigned char **) (&data)); if (realtype != None && (realtype != XA_ATOM || realformat != 32)) { if (data != NULL) XFree ((char *) data); return False; } found = False; for (i = 0; i < length; i++) { if (data[i] == atom) { Window owner; found = True; if ((owner = XGetSelectionOwner (dpy, atom)) != ims_win) { if (owner == None || forse == True) XSetSelectionOwner (dpy, atom, ims_win, CurrentTime); else return False; } break; } } if (found == False) { XSetSelectionOwner (dpy, atom, ims_win, CurrentTime); XChangeProperty (dpy, root, XIM_Servers, XA_ATOM, 32, PropModePrepend, (unsigned char *) &atom, 1); } else { /* * We always need to generate the PropertyNotify to the Root Window */ XChangeProperty (dpy, root, XIM_Servers, XA_ATOM, 32, PropModePrepend, (unsigned char *) data, 0); } if (data != NULL) XFree ((char *) data); /* Intern "LOCALES" and "TRANSOPORT" Target Atoms */ i18n_core->address.Localename = XInternAtom (dpy, LOCALES, False); i18n_core->address.Transportname = XInternAtom (dpy, TRANSPORT, False); return (XGetSelectionOwner (dpy, atom) == ims_win); } static int DeleteXi18nAtom(Xi18n i18n_core) { Display *dpy = i18n_core->address.dpy; Window root = RootWindow (dpy, DefaultScreen (dpy)); Atom realtype; int realformat; unsigned long bytesafter; long *data=NULL; unsigned long length; Atom atom; int i, ret; int found; char buf[256]; (void)snprintf(buf, 256, "@server=%s", i18n_core->address.im_name); if ((atom = XInternAtom(dpy, buf, False)) == 0) return False; i18n_core->address.selection = atom; if (XIM_Servers == None) XIM_Servers = XInternAtom (dpy, XIM_SERVERS, False); XGetWindowProperty (dpy, root, XIM_Servers, 0L, 1000000L, False, XA_ATOM, &realtype, &realformat, &length, &bytesafter, (unsigned char **) (&data)); if (realtype != XA_ATOM || realformat != 32) { if (data != NULL) XFree ((char *) data); return False; } found = False; for (i = 0; i < length; i++) { if (data[i] == atom) { found = True; break; } } if (found == True) { for (i=i+1; iaddress.dpy = dpy; if (ParseArgs (i18n_core, I18N_OPEN, args) != NULL) { XFree (i18n_core); return NULL; } /*endif*/ if (*(char *) &endian) i18n_core->address.im_byteOrder = 'l'; else i18n_core->address.im_byteOrder = 'B'; /*endif*/ /* install IMAttr and ICAttr list in i18n_core */ _Xi18nInitAttrList (i18n_core); /* install IMExtension list in i18n_core */ _Xi18nInitExtension (i18n_core); return i18n_core; } static void ReturnSelectionNotify (Xi18n i18n_core, XSelectionRequestEvent *ev) { XEvent event; Display *dpy = i18n_core->address.dpy; char buf[4096]; event.type = SelectionNotify; event.xselection.requestor = ev->requestor; event.xselection.selection = ev->selection; event.xselection.target = ev->target; event.xselection.time = ev->time; event.xselection.property = ev->property; if (ev->target == i18n_core->address.Localename) { snprintf (buf, 4096, "@locale=%s", i18n_core->address.im_locale); } else if (ev->target == i18n_core->address.Transportname) { snprintf (buf, 4096, "@transport=%s", i18n_core->address.im_addr); } /*endif*/ XChangeProperty (dpy, event.xselection.requestor, ev->target, ev->target, 8, PropModeReplace, (unsigned char *) buf, strlen (buf)); XSendEvent (dpy, event.xselection.requestor, False, NoEventMask, &event); XFlush (i18n_core->address.dpy); } static Bool WaitXSelectionRequest (Display *dpy, Window win, XEvent *ev, XPointer client_data) { XIMS ims = (XIMS) client_data; Xi18n i18n_core = ims->protocol; if (((XSelectionRequestEvent *) ev)->selection == i18n_core->address.selection) { ReturnSelectionNotify (i18n_core, (XSelectionRequestEvent *) ev); return True; } /*endif*/ return False; } static Status xi18n_openIM(XIMS ims) { Xi18n i18n_core = ims->protocol; Display *dpy = i18n_core->address.dpy; if (!CheckIMName (i18n_core) || !SetXi18nSelectionOwner (i18n_core) || !i18n_core->methods.begin (ims)) { XFree (i18n_core->address.im_name); XFree (i18n_core->address.im_locale); XFree (i18n_core->address.im_addr); XFree (i18n_core); return False; } /*endif*/ _XRegisterFilterByType (dpy, i18n_core->address.im_window, SelectionRequest, SelectionRequest, WaitXSelectionRequest, (XPointer)ims); XFlush(dpy); return True; } static Status xi18n_closeIM(XIMS ims) { Xi18n i18n_core = ims->protocol; Display *dpy = i18n_core->address.dpy; DeleteXi18nAtom(i18n_core); if (!i18n_core->methods.end (ims)) return False; _XUnregisterFilter (dpy, i18n_core->address.im_window, WaitXSelectionRequest, (XPointer)ims); XFree (i18n_core->address.im_name); XFree (i18n_core->address.im_locale); XFree (i18n_core->address.im_addr); XFree (i18n_core); return True; } static char *xi18n_setIMValues (XIMS ims, XIMArg *args) { Xi18n i18n_core = ims->protocol; char *ret; if ((ret = ParseArgs (i18n_core, I18N_SET, args)) != NULL) return ret; /*endif*/ return NULL; } static char *xi18n_getIMValues (XIMS ims, XIMArg *args) { Xi18n i18n_core = ims->protocol; char *ret; if ((ret = ParseArgs (i18n_core, I18N_GET, args)) != NULL) return ret; /*endif*/ return NULL; } static void EventToWireEvent (XEvent *ev, xEvent *event, CARD16 *serial, Bool byte_swap) { FrameMgr fm; extern XimFrameRec wire_keyevent_fr[]; extern XimFrameRec short_fr[]; BYTE b; CARD16 c16; CARD32 c32; *serial = (CARD16)(ev->xany.serial >> 16); switch (ev->type) { case KeyPress: case KeyRelease: { XKeyEvent *kev = (XKeyEvent*)ev; /* create FrameMgr */ fm = FrameMgrInit(wire_keyevent_fr, (char *)(&(event->u)), byte_swap); /* set values */ b = (BYTE)kev->type; FrameMgrPutToken(fm, b); b = (BYTE)kev->keycode; FrameMgrPutToken(fm, b); c16 = (CARD16)(kev->serial & (unsigned long)0xffff); FrameMgrPutToken(fm, c16); c32 = (CARD32)kev->time; FrameMgrPutToken(fm, c32); c32 = (CARD32)kev->root; FrameMgrPutToken(fm, c32); c32 = (CARD32)kev->window; FrameMgrPutToken(fm, c32); c32 = (CARD32)kev->subwindow; FrameMgrPutToken(fm, c32); c16 = (CARD16)kev->x_root; FrameMgrPutToken(fm, c16); c16 = (CARD16)kev->y_root; FrameMgrPutToken(fm, c16); c16 = (CARD16)kev->x; FrameMgrPutToken(fm, c16); c16 = (CARD16)kev->y; FrameMgrPutToken(fm, c16); c16 = (CARD16)kev->state; FrameMgrPutToken(fm, c16); b = (BYTE)kev->same_screen; FrameMgrPutToken(fm, b); } break; default: /* create FrameMgr */ fm = FrameMgrInit(short_fr, (char *)(&(event->u.u.sequenceNumber)), byte_swap); c16 = (CARD16)(ev->xany.serial & (unsigned long)0xffff); FrameMgrPutToken(fm, c16); break; } /* free FrameMgr */ FrameMgrFree(fm); } static Status xi18n_forwardEvent (XIMS ims, XPointer xp) { Xi18n i18n_core = ims->protocol; IMForwardEventStruct *call_data = (IMForwardEventStruct *)xp; FrameMgr fm; extern XimFrameRec forward_event_fr[]; register int total_size; unsigned char *reply = NULL; unsigned char *replyp; CARD16 serial; int event_size; Xi18nClient *client; client = (Xi18nClient *) _Xi18nFindClient (i18n_core, call_data->connect_id); /* create FrameMgr */ fm = FrameMgrInit (forward_event_fr, NULL, _Xi18nNeedSwap (i18n_core, call_data->connect_id)); total_size = FrameMgrGetTotalSize (fm); event_size = sizeof (xEvent); reply = (unsigned char *) malloc (total_size + event_size); if (!reply) { _Xi18nSendMessage (ims, call_data->connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size + event_size); FrameMgrSetBuffer (fm, reply); replyp = reply; call_data->sync_bit = 1; /* always sync */ client->sync = True; FrameMgrPutToken (fm, call_data->connect_id); FrameMgrPutToken (fm, call_data->icid); FrameMgrPutToken (fm, call_data->sync_bit); replyp += total_size; EventToWireEvent (&(call_data->event), (xEvent *) replyp, &serial, _Xi18nNeedSwap (i18n_core, call_data->connect_id)); FrameMgrPutToken (fm, serial); _Xi18nSendMessage (ims, call_data->connect_id, XIM_FORWARD_EVENT, 0, reply, total_size + event_size); XFree (reply); FrameMgrFree (fm); return True; } static Status xi18n_commit (XIMS ims, XPointer xp) { Xi18n i18n_core = ims->protocol; IMCommitStruct *call_data = (IMCommitStruct *)xp; FrameMgr fm; extern XimFrameRec commit_chars_fr[]; extern XimFrameRec commit_both_fr[]; register int total_size; unsigned char *reply = NULL; CARD16 str_length; call_data->flag |= XimSYNCHRONUS; /* always sync */ if (!(call_data->flag & XimLookupKeySym) && (call_data->flag & XimLookupChars)) { fm = FrameMgrInit (commit_chars_fr, NULL, _Xi18nNeedSwap (i18n_core, call_data->connect_id)); /* set length of STRING8 */ str_length = strlen (call_data->commit_string); FrameMgrSetSize (fm, str_length); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, call_data->connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); str_length = FrameMgrGetSize (fm); FrameMgrPutToken (fm, call_data->connect_id); FrameMgrPutToken (fm, call_data->icid); FrameMgrPutToken (fm, call_data->flag); FrameMgrPutToken (fm, str_length); FrameMgrPutToken (fm, call_data->commit_string); } else { fm = FrameMgrInit (commit_both_fr, NULL, _Xi18nNeedSwap (i18n_core, call_data->connect_id)); /* set length of STRING8 */ str_length = strlen (call_data->commit_string); if (str_length > 0) FrameMgrSetSize (fm, str_length); /*endif*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, call_data->connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, call_data->connect_id); FrameMgrPutToken (fm, call_data->icid); FrameMgrPutToken (fm, call_data->flag); FrameMgrPutToken (fm, call_data->keysym); if (str_length > 0) { str_length = FrameMgrGetSize (fm); FrameMgrPutToken (fm, str_length); FrameMgrPutToken (fm, call_data->commit_string); } /*endif*/ } /*endif*/ _Xi18nSendMessage (ims, call_data->connect_id, XIM_COMMIT, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); return True; } static int xi18n_callCallback (XIMS ims, XPointer xp) { IMProtocol *call_data = (IMProtocol *)xp; switch (call_data->major_code) { case XIM_GEOMETRY: return _Xi18nGeometryCallback (ims, call_data); case XIM_PREEDIT_START: return _Xi18nPreeditStartCallback (ims, call_data); case XIM_PREEDIT_DRAW: return _Xi18nPreeditDrawCallback (ims, call_data); case XIM_PREEDIT_CARET: return _Xi18nPreeditCaretCallback (ims, call_data); case XIM_PREEDIT_DONE: return _Xi18nPreeditDoneCallback (ims, call_data); case XIM_STATUS_START: return _Xi18nStatusStartCallback (ims, call_data); case XIM_STATUS_DRAW: return _Xi18nStatusDrawCallback (ims, call_data); case XIM_STATUS_DONE: return _Xi18nStatusDoneCallback (ims, call_data); case XIM_STR_CONVERSION: return _Xi18nStringConversionCallback (ims, call_data); } /*endswitch*/ return False; } /* preeditStart and preeditEnd are used only for Dynamic Event Flow. */ static int xi18n_preeditStart (XIMS ims, XPointer xp) { IMProtocol *call_data = (IMProtocol *)xp; Xi18n i18n_core = ims->protocol; IMPreeditStateStruct *preedit_state = (IMPreeditStateStruct *) &call_data->preedit_state; long mask; int on_key_num = i18n_core->address.on_keys.count_keys; int off_key_num = i18n_core->address.off_keys.count_keys; if (on_key_num == 0 && off_key_num == 0) return False; /*endif*/ if (i18n_core->address.imvalue_mask & I18N_FILTERMASK) mask = i18n_core->address.filterevent_mask; else mask = DEFAULT_FILTER_MASK; /*endif*/ _Xi18nSetEventMask (ims, preedit_state->connect_id, preedit_state->connect_id, preedit_state->icid, mask, ~mask); return True; } static int xi18n_preeditEnd (XIMS ims, XPointer xp) { IMProtocol *call_data = (IMProtocol *)xp; Xi18n i18n_core = ims->protocol; int on_key_num = i18n_core->address.on_keys.count_keys; int off_key_num = i18n_core->address.off_keys.count_keys; IMPreeditStateStruct *preedit_state; preedit_state = (IMPreeditStateStruct *) &call_data->preedit_state; if (on_key_num == 0 && off_key_num == 0) return False; /*endif*/ _Xi18nSetEventMask (ims, preedit_state->connect_id, preedit_state->connect_id, preedit_state->icid, 0, 0); return True; } static int xi18n_syncXlib (XIMS ims, XPointer xp) { IMProtocol *call_data = (IMProtocol *)xp; Xi18n i18n_core = ims->protocol; IMSyncXlibStruct *sync_xlib; extern XimFrameRec sync_fr[]; FrameMgr fm; CARD16 connect_id = call_data->any.connect_id; int total_size; unsigned char *reply; sync_xlib = (IMSyncXlibStruct *) &call_data->sync_xlib; fm = FrameMgrInit (sync_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize(fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); /* input input-method ID */ FrameMgrPutToken (fm, connect_id); /* input input-context ID */ FrameMgrPutToken (fm, sync_xlib->icid); _Xi18nSendMessage (ims, connect_id, XIM_SYNC, 0, reply, total_size); FrameMgrFree (fm); XFree(reply); return True; } ibus-1.5.11/util/IMdkit/i18nX.c0000644000000000000000000004300712551654124012652 00000000000000/****************************************************************** Copyright (C) 1994-1995 Sun Microsystems, Inc. Copyright (C) 1993-1994 Hewlett-Packard Company Copyright (C) 2014 Peng Huang Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include #include #include "FrameMgr.h" #include "IMdkit.h" #include "Xi18n.h" #include "Xi18nX.h" #include "XimFunc.h" extern Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); extern Xi18nClient *_Xi18nNewClient (Xi18n); extern void _Xi18nDeleteClient (Xi18n, CARD16); extern unsigned long _Xi18nLookupPropertyOffset (Xi18nOffsetCache *, Atom); extern void _Xi18nSetPropertyOffset (Xi18nOffsetCache *, Atom, unsigned long); static Bool WaitXConnectMessage (Display*, Window, XEvent*, XPointer); static Bool WaitXIMProtocol (Display*, Window, XEvent*, XPointer); static XClient *NewXClient (Xi18n i18n_core, Window new_client) { Display *dpy = i18n_core->address.dpy; Xi18nClient *client = _Xi18nNewClient (i18n_core); XClient *x_client; x_client = (XClient *) malloc (sizeof (XClient)); x_client->client_win = new_client; x_client->accept_win = XCreateSimpleWindow (dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 1, 0, 0); client->trans_rec = x_client; return ((XClient *) x_client); } static unsigned char *ReadXIMMessage (XIMS ims, XClientMessageEvent *ev, int *connect_id) { Xi18n i18n_core = ims->protocol; Xi18nClient *client = i18n_core->address.clients; XClient *x_client = NULL; FrameMgr fm; extern XimFrameRec packet_header_fr[]; unsigned char *p = NULL; unsigned char *p1; while (client != NULL) { x_client = (XClient *) client->trans_rec; if (x_client->accept_win == ev->window) { *connect_id = client->connect_id; break; } client = client->next; } if (ev->format == 8) { /* ClientMessage only */ XimProtoHdr *hdr = (XimProtoHdr *) ev->data.b; unsigned char *rec = (unsigned char *) (hdr + 1); register int total_size; CARD8 major_opcode; CARD8 minor_opcode; CARD16 length; extern int _Xi18nNeedSwap (Xi18n, CARD16); if (client->byte_order == '?') { if (hdr->major_opcode != XIM_CONNECT) return (unsigned char *) NULL; /* can do nothing */ client->byte_order = (CARD8) rec[0]; } fm = FrameMgrInit (packet_header_fr, (char *) hdr, _Xi18nNeedSwap (i18n_core, *connect_id)); total_size = FrameMgrGetTotalSize (fm); /* get data */ FrameMgrGetToken (fm, major_opcode); FrameMgrGetToken (fm, minor_opcode); FrameMgrGetToken (fm, length); FrameMgrFree (fm); if ((p = (unsigned char *) malloc (total_size + length * 4)) == NULL) return (unsigned char *) NULL; p1 = p; memmove (p1, &major_opcode, sizeof (CARD8)); p1 += sizeof (CARD8); memmove (p1, &minor_opcode, sizeof (CARD8)); p1 += sizeof (CARD8); memmove (p1, &length, sizeof (CARD16)); p1 += sizeof (CARD16); memmove (p1, rec, length * 4); } else if (ev->format == 32) { /* ClientMessage and WindowProperty */ unsigned long length = (unsigned long) ev->data.l[0]; Atom atom = (Atom) ev->data.l[1]; int return_code; Atom actual_type_ret; int actual_format_ret; unsigned long bytes_after_ret; unsigned char *prop; unsigned long nitems; Xi18nOffsetCache *offset_cache = &client->offset_cache; unsigned long offset; unsigned long end; unsigned long long_begin; unsigned long long_end; if (length == 0) { fprintf (stderr, "%s: invalid length 0\n", __func__); return NULL; } offset = _Xi18nLookupPropertyOffset (offset_cache, atom); end = offset + length; /* The property data is retrieved in 32-bit chunks */ long_begin = offset / 4; long_end = (end + 3) / 4; return_code = XGetWindowProperty (i18n_core->address.dpy, x_client->accept_win, atom, long_begin, long_end - long_begin, True, AnyPropertyType, &actual_type_ret, &actual_format_ret, &nitems, &bytes_after_ret, &prop); if (return_code != Success || actual_format_ret == 0 || nitems == 0) { if (return_code == Success) XFree (prop); fprintf (stderr, "(XIM-IMdkit) ERROR: XGetWindowProperty failed.\n" "Protocol data is likely to be inconsistent.\n"); _Xi18nSetPropertyOffset (offset_cache, atom, 0); return (unsigned char *) NULL; } /* Update the offset to read next time as needed */ if (bytes_after_ret > 0) _Xi18nSetPropertyOffset (offset_cache, atom, offset + length); else _Xi18nSetPropertyOffset (offset_cache, atom, 0); /* if hit, it might be an error */ if ((p = (unsigned char *) malloc (length)) == NULL) return (unsigned char *) NULL; memcpy (p, prop + (offset % 4), length); XFree (prop); } return (unsigned char *) p; } static void ReadXConnectMessage (XIMS ims, XClientMessageEvent *ev) { Xi18n i18n_core = ims->protocol; XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; XEvent event; Display *dpy = i18n_core->address.dpy; Window new_client = ev->data.l[0]; CARD32 major_version = ev->data.l[1]; CARD32 minor_version = ev->data.l[2]; XClient *x_client = NewXClient (i18n_core, new_client); if (ev->window != i18n_core->address.im_window) return; /* incorrect connection request */ /*endif*/ if (major_version != 0 || minor_version != 0) { major_version = minor_version = 0; /* Only supporting only-CM & Property-with-CM method */ } /*endif*/ _XRegisterFilterByType (dpy, x_client->accept_win, ClientMessage, ClientMessage, WaitXIMProtocol, (XPointer)ims); event.xclient.type = ClientMessage; event.xclient.display = dpy; event.xclient.window = new_client; event.xclient.message_type = spec->connect_request; event.xclient.format = 32; event.xclient.data.l[0] = x_client->accept_win; event.xclient.data.l[1] = major_version; event.xclient.data.l[2] = minor_version; event.xclient.data.l[3] = XCM_DATA_LIMIT; XSendEvent (dpy, new_client, False, NoEventMask, &event); XFlush (dpy); } static Bool Xi18nXBegin (XIMS ims) { Xi18n i18n_core = ims->protocol; Display *dpy = i18n_core->address.dpy; XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; spec->xim_request = XInternAtom (i18n_core->address.dpy, _XIM_PROTOCOL, False); spec->connect_request = XInternAtom (i18n_core->address.dpy, _XIM_XCONNECT, False); _XRegisterFilterByType (dpy, i18n_core->address.im_window, ClientMessage, ClientMessage, WaitXConnectMessage, (XPointer)ims); return True; } static Bool Xi18nXEnd(XIMS ims) { Xi18n i18n_core = ims->protocol; Display *dpy = i18n_core->address.dpy; _XUnregisterFilter (dpy, i18n_core->address.im_window, WaitXConnectMessage, (XPointer)ims); return True; } static char *MakeNewAtom (CARD16 connect_id, char *atomName) { static int sequence = 0; sprintf (atomName, "_server%d_%d", connect_id, ((sequence > 20) ? (sequence = 0) : sequence++)); return atomName; } static Bool Xi18nXSend (XIMS ims, CARD16 connect_id, unsigned char *reply, long length) { Xi18n i18n_core = ims->protocol; Xi18nClient *client = _Xi18nFindClient (i18n_core, connect_id); XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; XClient *x_client = (XClient *) client->trans_rec; XEvent event; event.type = ClientMessage; event.xclient.window = x_client->client_win; event.xclient.message_type = spec->xim_request; if (length > XCM_DATA_LIMIT) { Atom atom; char atomName[16]; Atom actual_type_ret; int actual_format_ret; int return_code; unsigned long nitems_ret; unsigned long bytes_after_ret; unsigned char *win_data; event.xclient.format = 32; atom = XInternAtom (i18n_core->address.dpy, MakeNewAtom (connect_id, atomName), False); return_code = XGetWindowProperty (i18n_core->address.dpy, x_client->client_win, atom, 0L, 10000L, False, XA_STRING, &actual_type_ret, &actual_format_ret, &nitems_ret, &bytes_after_ret, &win_data); if (return_code != Success) return False; /*endif*/ if (win_data) XFree ((char *) win_data); /*endif*/ XChangeProperty (i18n_core->address.dpy, x_client->client_win, atom, XA_STRING, 8, PropModeAppend, (unsigned char *) reply, length); event.xclient.data.l[0] = length; event.xclient.data.l[1] = atom; } else { unsigned char buffer[XCM_DATA_LIMIT]; int i; event.xclient.format = 8; /* Clear unused field with NULL */ memmove(buffer, reply, length); for (i = length; i < XCM_DATA_LIMIT; i++) buffer[i] = (char) 0; /*endfor*/ length = XCM_DATA_LIMIT; memmove (event.xclient.data.b, buffer, length); } XSendEvent (i18n_core->address.dpy, x_client->client_win, False, NoEventMask, &event); XFlush (i18n_core->address.dpy); return True; } static Bool CheckCMEvent (Display *display, XEvent *event, XPointer xi18n_core) { Xi18n i18n_core = (Xi18n) ((void *) xi18n_core); XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; if ((event->type == ClientMessage) && (event->xclient.message_type == spec->xim_request)) { return True; } /*endif*/ return False; } static Bool Xi18nXWait (XIMS ims, CARD16 connect_id, CARD8 major_opcode, CARD8 minor_opcode) { Xi18n i18n_core = ims->protocol; XEvent event; Xi18nClient *client = _Xi18nFindClient (i18n_core, connect_id); XClient *x_client = (XClient *) client->trans_rec; for (;;) { unsigned char *packet; XimProtoHdr *hdr; int connect_id_ret = 0; XIfEvent (i18n_core->address.dpy, &event, CheckCMEvent, (XPointer) i18n_core); if (event.xclient.window == x_client->accept_win) { if ((packet = ReadXIMMessage (ims, (XClientMessageEvent *) & event, &connect_id_ret)) == (unsigned char*) NULL) { return False; } /*endif*/ hdr = (XimProtoHdr *)packet; if ((hdr->major_opcode == major_opcode) && (hdr->minor_opcode == minor_opcode)) { return True; } else if (hdr->major_opcode == XIM_ERROR) { return False; } /*endif*/ } /*endif*/ } /*endfor*/ } static Bool Xi18nXDisconnect (XIMS ims, CARD16 connect_id) { Xi18n i18n_core = ims->protocol; Display *dpy = i18n_core->address.dpy; Xi18nClient *client = _Xi18nFindClient (i18n_core, connect_id); XClient *x_client = (XClient *) client->trans_rec; XDestroyWindow (dpy, x_client->accept_win); _XUnregisterFilter (dpy, x_client->accept_win, WaitXIMProtocol, (XPointer)ims); XFree (x_client); _Xi18nDeleteClient (i18n_core, connect_id); return True; } Bool _Xi18nCheckXAddress (Xi18n i18n_core, TransportSW *transSW, char *address) { XSpecRec *spec; if (!(spec = (XSpecRec *) malloc (sizeof (XSpecRec)))) return False; /*endif*/ i18n_core->address.connect_addr = (XSpecRec *) spec; i18n_core->methods.begin = Xi18nXBegin; i18n_core->methods.end = Xi18nXEnd; i18n_core->methods.send = Xi18nXSend; i18n_core->methods.wait = Xi18nXWait; i18n_core->methods.disconnect = Xi18nXDisconnect; return True; } static Bool WaitXConnectMessage (Display *dpy, Window win, XEvent *ev, XPointer client_data) { XIMS ims = (XIMS)client_data; Xi18n i18n_core = ims->protocol; XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; if (((XClientMessageEvent *) ev)->message_type == spec->connect_request) { ReadXConnectMessage (ims, (XClientMessageEvent *) ev); return True; } /*endif*/ return False; } static Bool WaitXIMProtocol (Display *dpy, Window win, XEvent *ev, XPointer client_data) { extern void _Xi18nMessageHandler (XIMS, CARD16, unsigned char *, Bool *); XIMS ims = (XIMS) client_data; Xi18n i18n_core = ims->protocol; XSpecRec *spec = (XSpecRec *) i18n_core->address.connect_addr; Bool delete = True; unsigned char *packet; int connect_id = 0; if (((XClientMessageEvent *) ev)->message_type == spec->xim_request) { if ((packet = ReadXIMMessage (ims, (XClientMessageEvent *) ev, &connect_id)) == (unsigned char *) NULL) { return False; } /*endif*/ _Xi18nMessageHandler (ims, connect_id, packet, &delete); if (delete == True) XFree (packet); /*endif*/ return True; } /*endif*/ return False; } ibus-1.5.11/util/IMdkit/FrameMgr.h0000644000000000000000000001072712551654124013453 00000000000000/****************************************************************** Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital or MIT not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hiroyuki Miyamoto Digital Equipment Corporation miyamoto@jrd.dec.com This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef FRAMEMGR_H #define FRAMEMGR_H #include #include #include #if defined(VAXC) && !defined(__DECC) #define xim_externalref globalref #define xim_externaldef globaldef #else #define xim_externalref extern #define xim_externaldef #endif /* Definitions for FrameMgr */ #define COUNTER_MASK 0x10 typedef enum { BIT8 = 0x1, /* {CARD8* | INT8*} */ BIT16 = 0x2, /* {CARD16* | INT16*} */ BIT32 = 0x3, /* {CARD32* | INT32*} */ BIT64 = 0x4, /* {CARD64* | INT64*} */ BARRAY = 0x5, /* int*, void* */ ITER = 0x6, /* int* */ POINTER = 0x7, /* specifies next item is a PTR_ITEM */ PTR_ITEM = 0x8, /* specifies the item has a pointer */ /* BOGUS - POINTER and PTR_ITEM * In the current implementation, PTR_ITEM should be lead by * POINTER. But actually, it's just redundant logically. Someone * may remove this redundancy and POINTER from the enum member but he * should also modify the logic in FrameMgr program. */ PADDING = 0x9, /* specifies that a padding is needed. * This requires extra data in data field. */ EOL = 0xA, /* specifies the end of list */ COUNTER_BIT8 = COUNTER_MASK | 0x1, COUNTER_BIT16 = COUNTER_MASK | 0x2, COUNTER_BIT32 = COUNTER_MASK | 0x3, COUNTER_BIT64 = COUNTER_MASK | 0x4 } XimFrameType; /* Convenient macro */ #define _FRAME(a) {a, NULL} #define _PTR(p) {PTR_ITEM, (void *)p} /* PADDING's usage of data field * B15-B8 : Shows the number of effective items. * B7-B0 : Shows padding unit. ex) 04 shows 4 unit padding. */ #define _PAD2(n) {PADDING, (void*)((n)<<8|2)} #define _PAD4(n) {PADDING, (void*)((n)<<8|4)} #define FmCounterByte 0 #define FmCounterNumber 1 #define _BYTE_COUNTER(type, offset) \ {(COUNTER_MASK|type), (void*)((offset)<<8|FmCounterByte)} #define _NUMBER_COUNTER(type, offset) \ {(COUNTER_MASK|type), (void*)((offset)<<8|FmCounterNumber)} typedef struct _XimFrame { XimFrameType type; void* data; /* For PTR_ITEM and PADDING */ } XimFrameRec, *XimFrame; typedef enum { FmSuccess, FmEOD, FmInvalidCall, FmBufExist, FmCannotCalc, FmNoMoreData } FmStatus; typedef struct _FrameMgr *FrameMgr; FrameMgr FrameMgrInit(XimFrame frame, char* area, Bool byte_swap); void FrameMgrInitWithData(FrameMgr fm, XimFrame frame, void* area, Bool byte_swap); void FrameMgrFree(FrameMgr fm); FmStatus FrameMgrSetBuffer(FrameMgr, void*); FmStatus _FrameMgrPutToken(FrameMgr, void*, int); FmStatus _FrameMgrGetToken(FrameMgr, void*, int); FmStatus FrameMgrSetSize(FrameMgr, int); FmStatus FrameMgrSetIterCount(FrameMgr, int); FmStatus FrameMgrSetTotalSize(FrameMgr, int); int FrameMgrGetTotalSize(FrameMgr); int FrameMgrGetSize(FrameMgr); FmStatus FrameMgrSkipToken(FrameMgr, int); void FrameMgrReset(FrameMgr); Bool FrameMgrIsIterLoopEnd(FrameMgr, FmStatus*); #define FrameMgrPutToken(fm, obj) _FrameMgrPutToken((fm), &(obj), sizeof(obj)) #define FrameMgrGetToken(fm, obj) _FrameMgrGetToken((fm), &(obj), sizeof(obj)) #endif /* FRAMEMGR_H */ ibus-1.5.11/util/IMdkit/XimFunc.h0000644000000000000000000000651112551654124013320 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef _XimFunc_h #define _XimFunc_h /* i18nAttr.c */ void _Xi18nInitAttrList (Xi18n i18n_core); void _Xi18nInitExtension(Xi18n i18n_core); /* i18nClbk.c */ int _Xi18nGeometryCallback (XIMS ims, IMProtocol *call_data); int _Xi18nPreeditStartCallback (XIMS ims, IMProtocol *call_data); int _Xi18nPreeditDrawCallback (XIMS ims, IMProtocol *call_data); int _Xi18nPreeditCaretCallback (XIMS ims, IMProtocol *call_data); int _Xi18nPreeditDoneCallback (XIMS ims, IMProtocol *call_data); int _Xi18nStatusStartCallback (XIMS ims, IMProtocol *call_data); int _Xi18nStatusDrawCallback (XIMS ims, IMProtocol *call_data); int _Xi18nStatusDoneCallback (XIMS ims, IMProtocol *call_data); int _Xi18nStringConversionCallback (XIMS ims, IMProtocol *call_data); /* i18nIc.c */ void _Xi18nChangeIC (XIMS ims, IMProtocol *call_data, unsigned char *p, int create_flag); void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p); /* i18nUtil.c */ int _Xi18nNeedSwap (Xi18n i18n_core, CARD16 connect_id); Xi18nClient *_Xi18nNewClient(Xi18n i18n_core); Xi18nClient *_Xi18nFindClient (Xi18n i18n_core, CARD16 connect_id); void _Xi18nDeleteClient (Xi18n i18n_core, CARD16 connect_id); void _Xi18nSendMessage (XIMS ims, CARD16 connect_id, CARD8 major_opcode, CARD8 minor_opcode, unsigned char *data, long length); void _Xi18nSendTriggerKey (XIMS ims, CARD16 connect_id); void _Xi18nSetEventMask (XIMS ims, CARD16 connect_id, CARD16 im_id, CARD16 ic_id, CARD32 forward_mask, CARD32 sync_mask); /* Xlib internal */ void _XRegisterFilterByType(Display*, Window, int, int, Bool (*filter)(Display*, Window, XEvent*, XPointer), XPointer); void _XUnregisterFilter(Display*, Window, Bool (*filter)(Display*, Window, XEvent*, XPointer), XPointer); #endif ibus-1.5.11/util/IMdkit/i18nPtHdr.c0000644000000000000000000015113312551654124013464 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include #ifndef NEED_EVENTS #define NEED_EVENTS #endif #include #undef NEED_EVENTS #include "FrameMgr.h" #include "IMdkit.h" #include "Xi18n.h" #include "XimFunc.h" #ifdef XIM_DEBUG #include static void DebugLog(char * msg) { fprintf(stderr, msg); } #endif extern Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); static void GetProtocolVersion (CARD16 client_major, CARD16 client_minor, CARD16 *server_major, CARD16 *server_minor) { *server_major = client_major; *server_minor = client_minor; } static void ConnectMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec connect_fr[], connect_reply_fr[]; register int total_size; CARD16 server_major_version, server_minor_version; unsigned char *reply = NULL; IMConnectStruct *imconnect = (IMConnectStruct*) &call_data->imconnect; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (connect_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, imconnect->byte_order); FrameMgrGetToken (fm, imconnect->major_version); FrameMgrGetToken (fm, imconnect->minor_version); FrameMgrFree (fm); GetProtocolVersion (imconnect->major_version, imconnect->minor_version, &server_major_version, &server_minor_version); #ifdef PROTOCOL_RICH if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ #endif /* PROTOCOL_RICH */ fm = FrameMgrInit (connect_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, server_major_version); FrameMgrPutToken (fm, server_minor_version); _Xi18nSendMessage (ims, connect_id, XIM_CONNECT_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); } static void DisConnectMessageProc (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; unsigned char *reply = NULL; CARD16 connect_id = call_data->any.connect_id; #ifdef PROTOCOL_RICH if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ #endif /* PROTOCOL_RICH */ _Xi18nSendMessage (ims, connect_id, XIM_DISCONNECT_REPLY, 0, reply, 0); i18n_core->methods.disconnect (ims, connect_id); } static void OpenMessageProc(XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec open_fr[]; extern XimFrameRec open_reply_fr[]; unsigned char *reply = NULL; int str_size; register int i, total_size; CARD16 connect_id = call_data->any.connect_id; int str_length; char *name; IMOpenStruct *imopen = (IMOpenStruct *) &call_data->imopen; fm = FrameMgrInit (open_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, str_length); FrameMgrSetSize (fm, str_length); FrameMgrGetToken (fm, name); imopen->lang.length = str_length; imopen->lang.name = malloc (str_length + 1); strncpy (imopen->lang.name, name, str_length); imopen->lang.name[str_length] = (char) 0; FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ if ((i18n_core->address.imvalue_mask & I18N_ON_KEYS) || (i18n_core->address.imvalue_mask & I18N_OFF_KEYS)) { _Xi18nSendTriggerKey (ims, connect_id); } /*endif*/ XFree (imopen->lang.name); fm = FrameMgrInit (open_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set iteration count for list of imattr */ FrameMgrSetIterCount (fm, i18n_core->address.im_attr_num); /* set length of BARRAY item in ximattr_fr */ for (i = 0; i < i18n_core->address.im_attr_num; i++) { str_size = strlen (i18n_core->address.xim_attr[i].name); FrameMgrSetSize (fm, str_size); } /*endfor*/ /* set iteration count for list of icattr */ FrameMgrSetIterCount (fm, i18n_core->address.ic_attr_num); /* set length of BARRAY item in xicattr_fr */ for (i = 0; i < i18n_core->address.ic_attr_num; i++) { str_size = strlen (i18n_core->address.xic_attr[i].name); FrameMgrSetSize (fm, str_size); } /*endfor*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); /* input input-method ID */ FrameMgrPutToken (fm, connect_id); for (i = 0; i < i18n_core->address.im_attr_num; i++) { str_size = FrameMgrGetSize (fm); FrameMgrPutToken (fm, i18n_core->address.xim_attr[i].attribute_id); FrameMgrPutToken (fm, i18n_core->address.xim_attr[i].type); FrameMgrPutToken (fm, str_size); FrameMgrPutToken (fm, i18n_core->address.xim_attr[i].name); } /*endfor*/ for (i = 0; i < i18n_core->address.ic_attr_num; i++) { str_size = FrameMgrGetSize (fm); FrameMgrPutToken (fm, i18n_core->address.xic_attr[i].attribute_id); FrameMgrPutToken (fm, i18n_core->address.xic_attr[i].type); FrameMgrPutToken (fm, str_size); FrameMgrPutToken (fm, i18n_core->address.xic_attr[i].name); } /*endfor*/ _Xi18nSendMessage (ims, connect_id, XIM_OPEN_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); } static void CloseMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec close_fr[]; extern XimFrameRec close_reply_fr[]; unsigned char *reply = NULL; register int total_size; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (close_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); FrameMgrGetToken (fm, input_method_ID); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ fm = FrameMgrInit (close_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); _Xi18nSendMessage (ims, connect_id, XIM_CLOSE_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); } static XIMExt *MakeExtensionList (Xi18n i18n_core, XIMStr *lib_extension, int number, int *reply_number) { XIMExt *ext_list; XIMExt *im_ext = (XIMExt *) i18n_core->address.extension; int im_ext_len = i18n_core->address.ext_num; int i; int j; *reply_number = 0; if (number == 0) { /* query all extensions */ *reply_number = im_ext_len; } else { for (i = 0; i < im_ext_len; i++) { for (j = 0; j < (int) number; j++) { if (strcmp (lib_extension[j].name, im_ext[i].name) == 0) { (*reply_number)++; break; } /*endif*/ } /*endfor*/ } /*endfor*/ } /*endif*/ if (!(*reply_number)) return NULL; /*endif*/ ext_list = (XIMExt *) malloc (sizeof (XIMExt)*(*reply_number)); if (!ext_list) return NULL; /*endif*/ memset (ext_list, 0, sizeof (XIMExt)*(*reply_number)); if (number == 0) { /* query all extensions */ for (i = 0; i < im_ext_len; i++) { ext_list[i].major_opcode = im_ext[i].major_opcode; ext_list[i].minor_opcode = im_ext[i].minor_opcode; ext_list[i].length = im_ext[i].length; ext_list[i].name = malloc (im_ext[i].length + 1); strcpy (ext_list[i].name, im_ext[i].name); } /*endfor*/ } else { int n = 0; for (i = 0; i < im_ext_len; i++) { for (j = 0; j < (int)number; j++) { if (strcmp (lib_extension[j].name, im_ext[i].name) == 0) { ext_list[n].major_opcode = im_ext[i].major_opcode; ext_list[n].minor_opcode = im_ext[i].minor_opcode; ext_list[n].length = im_ext[i].length; ext_list[n].name = malloc (im_ext[i].length + 1); strcpy (ext_list[n].name, im_ext[i].name); n++; break; } /*endif*/ } /*endfor*/ } /*endfor*/ } /*endif*/ return ext_list; } static void QueryExtensionMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; FmStatus status; extern XimFrameRec query_extension_fr[]; extern XimFrameRec query_extension_reply_fr[]; unsigned char *reply = NULL; int str_size; register int i; register int number; register int total_size; int byte_length; int reply_number = 0; XIMExt *ext_list; IMQueryExtensionStruct *query_ext = (IMQueryExtensionStruct *) &call_data->queryext; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (query_extension_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, byte_length); query_ext->extension = (XIMStr *) malloc (sizeof (XIMStr)*10); memset (query_ext->extension, 0, sizeof (XIMStr)*10); number = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { char *name; int str_length; FrameMgrGetToken (fm, str_length); FrameMgrSetSize (fm, str_length); query_ext->extension[number].length = str_length; FrameMgrGetToken (fm, name); query_ext->extension[number].name = malloc (str_length + 1); strncpy (query_ext->extension[number].name, name, str_length); query_ext->extension[number].name[str_length] = (char) 0; number++; } /*endwhile*/ query_ext->number = number; #ifdef PROTOCOL_RICH if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ #endif /* PROTOCOL_RICH */ FrameMgrFree (fm); ext_list = MakeExtensionList (i18n_core, query_ext->extension, number, &reply_number); for (i = 0; i < number; i++) XFree (query_ext->extension[i].name); /*endfor*/ XFree (query_ext->extension); fm = FrameMgrInit (query_extension_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set iteration count for list of extensions */ FrameMgrSetIterCount (fm, reply_number); /* set length of BARRAY item in ext_fr */ for (i = 0; i < reply_number; i++) { str_size = strlen (ext_list[i].name); FrameMgrSetSize (fm, str_size); } /*endfor*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); for (i = 0; i < reply_number; i++) { str_size = FrameMgrGetSize (fm); FrameMgrPutToken (fm, ext_list[i].major_opcode); FrameMgrPutToken (fm, ext_list[i].minor_opcode); FrameMgrPutToken (fm, str_size); FrameMgrPutToken (fm, ext_list[i].name); } /*endfor*/ _Xi18nSendMessage (ims, connect_id, XIM_QUERY_EXTENSION_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); for (i = 0; i < reply_number; i++) XFree (ext_list[i].name); /*endfor*/ XFree ((char *) ext_list); } static void SyncReplyMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec sync_reply_fr[]; CARD16 connect_id = call_data->any.connect_id; Xi18nClient *client; CARD16 input_method_ID; CARD16 input_context_ID; client = (Xi18nClient *)_Xi18nFindClient (i18n_core, connect_id); fm = FrameMgrInit (sync_reply_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, input_context_ID); FrameMgrFree (fm); client->sync = False; if (ims->sync == True) { ims->sync = False; if (i18n_core->address.improto) { call_data->sync_xlib.major_code = XIM_SYNC_REPLY; call_data->sync_xlib.minor_code = 0; call_data->sync_xlib.connect_id = input_method_ID; call_data->sync_xlib.icid = input_context_ID; i18n_core->address.improto(ims, call_data); } } } static void GetIMValueFromName (Xi18n i18n_core, CARD16 connect_id, char *buf, char *name, int *length) { register int i; if (strcmp (name, XNQueryInputStyle) == 0) { XIMStyles *styles = (XIMStyles *) &i18n_core->address.input_styles; *length = sizeof (CARD16)*2; /* count_styles, unused */ *length += styles->count_styles*sizeof (CARD32); if (buf != NULL) { FrameMgr fm; extern XimFrameRec input_styles_fr[]; unsigned char *data = NULL; int total_size; fm = FrameMgrInit (input_styles_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set iteration count for list of input_style */ FrameMgrSetIterCount (fm, styles->count_styles); total_size = FrameMgrGetTotalSize (fm); data = (unsigned char *) malloc (total_size); if (!data) return; /*endif*/ memset (data, 0, total_size); FrameMgrSetBuffer (fm, data); FrameMgrPutToken (fm, styles->count_styles); for (i = 0; i < (int) styles->count_styles; i++) FrameMgrPutToken (fm, styles->supported_styles[i]); /*endfor*/ memmove (buf, data, total_size); FrameMgrFree (fm); /* ADDED BY SUZHE */ free (data); /* ADDED BY SUZHE */ } /*endif*/ } /*endif*/ else if (strcmp (name, XNQueryIMValuesList) == 0) { } } static XIMAttribute *MakeIMAttributeList (Xi18n i18n_core, CARD16 connect_id, CARD16 *list, int *number, int *length) { XIMAttribute *attrib_list; int list_num; XIMAttr *attr = i18n_core->address.xim_attr; int list_len = i18n_core->address.im_attr_num; register int i; register int j; int value_length = 0; int number_ret = 0; *length = 0; list_num = 0; for (i = 0; i < *number; i++) { for (j = 0; j < list_len; j++) { if (attr[j].attribute_id == list[i]) { list_num++; break; } /*endif*/ } /*endfor*/ } /*endfor*/ attrib_list = (XIMAttribute *) malloc (sizeof (XIMAttribute)*list_num); if (!attrib_list) return NULL; /*endif*/ memset (attrib_list, 0, sizeof (XIMAttribute)*list_num); number_ret = list_num; list_num = 0; for (i = 0; i < *number; i++) { for (j = 0; j < list_len; j++) { if (attr[j].attribute_id == list[i]) { attrib_list[list_num].attribute_id = attr[j].attribute_id; attrib_list[list_num].name_length = attr[j].length; attrib_list[list_num].name = attr[j].name; attrib_list[list_num].type = attr[j].type; GetIMValueFromName (i18n_core, connect_id, NULL, attr[j].name, &value_length); attrib_list[list_num].value_length = value_length; attrib_list[list_num].value = (void *) malloc (value_length); memset(attrib_list[list_num].value, 0, value_length); GetIMValueFromName (i18n_core, connect_id, attrib_list[list_num].value, attr[j].name, &value_length); *length += sizeof (CARD16)*2; *length += value_length; *length += IMPAD (value_length); list_num++; break; } /*endif*/ } /*endfor*/ } /*endfor*/ *number = number_ret; return attrib_list; } static void GetIMValuesMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; FmStatus status; extern XimFrameRec get_im_values_fr[]; extern XimFrameRec get_im_values_reply_fr[]; CARD16 byte_length; int list_len, total_size; unsigned char *reply = NULL; int iter_count; register int i; register int j; int number; CARD16 *im_attrID_list; char **name_list; CARD16 name_number; XIMAttribute *im_attribute_list; IMGetIMValuesStruct *getim = (IMGetIMValuesStruct *)&call_data->getim; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; /* create FrameMgr */ fm = FrameMgrInit (get_im_values_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, byte_length); im_attrID_list = (CARD16 *) malloc (sizeof (CARD16)*20); memset (im_attrID_list, 0, sizeof (CARD16)*20); name_list = (char **)malloc(sizeof(char *) * 20); memset(name_list, 0, sizeof(char *) * 20); number = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { FrameMgrGetToken (fm, im_attrID_list[number]); number++; } FrameMgrFree (fm); name_number = 0; for (i = 0; i < number; i++) { for (j = 0; j < i18n_core->address.im_attr_num; j++) { if (i18n_core->address.xim_attr[j].attribute_id == im_attrID_list[i]) { name_list[name_number++] = i18n_core->address.xim_attr[j].name; break; } } } getim->number = name_number; getim->im_attr_list = name_list; XFree (name_list); #ifdef PROTOCOL_RICH if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; } #endif /* PROTOCOL_RICH */ im_attribute_list = MakeIMAttributeList (i18n_core, connect_id, im_attrID_list, &number, &list_len); if (im_attrID_list) XFree (im_attrID_list); /*endif*/ fm = FrameMgrInit (get_im_values_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); iter_count = number; /* set iteration count for list of im_attribute */ FrameMgrSetIterCount (fm, iter_count); /* set length of BARRAY item in ximattribute_fr */ for (i = 0; i < iter_count; i++) FrameMgrSetSize (fm, im_attribute_list[i].value_length); /*endfor*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); for (i = 0; i < iter_count; i++) { FrameMgrPutToken (fm, im_attribute_list[i].attribute_id); FrameMgrPutToken (fm, im_attribute_list[i].value_length); FrameMgrPutToken (fm, im_attribute_list[i].value); } /*endfor*/ _Xi18nSendMessage (ims, connect_id, XIM_GET_IM_VALUES_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); for (i = 0; i < iter_count; i++) XFree(im_attribute_list[i].value); XFree (im_attribute_list); } static void CreateICMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { _Xi18nChangeIC (ims, call_data, p, True); } static void SetICValuesMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { _Xi18nChangeIC (ims, call_data, p, False); } static void GetICValuesMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { _Xi18nGetIC (ims, call_data, p); } static void SetICFocusMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec set_ic_focus_fr[]; IMChangeFocusStruct *setfocus; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; setfocus = (IMChangeFocusStruct *) &call_data->changefocus; fm = FrameMgrInit (set_ic_focus_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, setfocus->icid); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ } static void UnsetICFocusMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec unset_ic_focus_fr[]; IMChangeFocusStruct *unsetfocus; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; unsetfocus = (IMChangeFocusStruct *) &call_data->changefocus; fm = FrameMgrInit (unset_ic_focus_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, unsetfocus->icid); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ } static void DestroyICMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec destroy_ic_fr[]; extern XimFrameRec destroy_ic_reply_fr[]; register int total_size; unsigned char *reply = NULL; IMDestroyICStruct *destroy = (IMDestroyICStruct *) &call_data->destroyic; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (destroy_ic_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, destroy->icid); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ fm = FrameMgrInit (destroy_ic_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, destroy->icid); _Xi18nSendMessage (ims, connect_id, XIM_DESTROY_IC_REPLY, 0, reply, total_size); XFree(reply); FrameMgrFree (fm); } static void ResetICMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec reset_ic_fr[]; extern XimFrameRec reset_ic_reply_fr[]; register int total_size; unsigned char *reply = NULL; IMResetICStruct *resetic = (IMResetICStruct *) &call_data->resetic; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (reset_ic_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, resetic->icid); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ /* create FrameMgr */ fm = FrameMgrInit (reset_ic_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set length of STRING8 */ FrameMgrSetSize (fm, resetic->length); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, resetic->icid); FrameMgrPutToken(fm, resetic->length); FrameMgrPutToken (fm, resetic->commit_string); _Xi18nSendMessage (ims, connect_id, XIM_RESET_IC_REPLY, 0, reply, total_size); FrameMgrFree (fm); XFree(reply); } static int WireEventToEvent (Xi18n i18n_core, xEvent *event, CARD16 serial, XEvent *ev, Bool byte_swap) { FrameMgr fm; extern XimFrameRec wire_keyevent_fr[]; BYTE b; CARD16 c16; CARD32 c32; int ret = False; /* create FrameMgr */ fm = FrameMgrInit(wire_keyevent_fr, (char *)(&(event->u)), byte_swap); /* get & set type */ FrameMgrGetToken(fm, b); ev->type = (unsigned int)b; /* get detail */ FrameMgrGetToken(fm, b); /* get & set serial */ FrameMgrGetToken(fm, c16); ev->xany.serial = (unsigned long)c16; ev->xany.serial |= serial << 16; ev->xany.send_event = False; ev->xany.display = i18n_core->address.dpy; /* Remove SendEvent flag from event type to emulate KeyPress/Release */ ev->type &= 0x7F; switch (ev->type) { case KeyPress: case KeyRelease: { XKeyEvent *kev = (XKeyEvent*)ev; /* set keycode (detail) */ kev->keycode = (unsigned int)b; /* get & set values */ FrameMgrGetToken(fm, c32); kev->time = (Time)c32; FrameMgrGetToken(fm, c32); kev->root = (Window)c32; FrameMgrGetToken(fm, c32); kev->window = (Window)c32; FrameMgrGetToken(fm, c32); kev->subwindow = (Window)c32; FrameMgrGetToken(fm, c16); kev->x_root = (int)c16; FrameMgrGetToken(fm, c16); kev->y_root = (int)c16; FrameMgrGetToken(fm, c16); kev->x = (int)c16; FrameMgrGetToken(fm, c16); kev->y = (int)c16; FrameMgrGetToken(fm, c16); kev->state = (unsigned int)c16; FrameMgrGetToken(fm, b); kev->same_screen = (Bool)b; } ret = True; break; default: break; } /* free FrameMgr */ FrameMgrFree(fm); return ret; } static void ForwardEventMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec forward_event_fr[]; xEvent wire_event; IMForwardEventStruct *forward = (IMForwardEventStruct*) &call_data->forwardevent; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (forward_event_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, forward->icid); FrameMgrGetToken (fm, forward->sync_bit); FrameMgrGetToken (fm, forward->serial_number); p += sizeof (CARD16)*4; memmove (&wire_event, p, sizeof (xEvent)); FrameMgrFree (fm); if (WireEventToEvent (i18n_core, &wire_event, forward->serial_number, &forward->event, _Xi18nNeedSwap (i18n_core, connect_id)) == True) { if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ } /*endif*/ } static void ExtForwardKeyEventMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec ext_forward_keyevent_fr[]; CARD8 type, keycode; CARD16 state; CARD32 ev_time, window; IMForwardEventStruct *forward = (IMForwardEventStruct *) &call_data->forwardevent; XEvent *ev = (XEvent *) &forward->event; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (ext_forward_keyevent_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, forward->icid); FrameMgrGetToken (fm, forward->sync_bit); FrameMgrGetToken (fm, forward->serial_number); FrameMgrGetToken (fm, type); FrameMgrGetToken (fm, keycode); FrameMgrGetToken (fm, state); FrameMgrGetToken (fm, ev_time); FrameMgrGetToken (fm, window); FrameMgrFree (fm); if (type != KeyPress) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ /* make a faked keypress event */ ev->type = (int)type; ev->xany.send_event = True; ev->xany.display = i18n_core->address.dpy; ev->xany.serial = (unsigned long) forward->serial_number; ((XKeyEvent *) ev)->keycode = (unsigned int) keycode; ((XKeyEvent *) ev)->state = (unsigned int) state; ((XKeyEvent *) ev)->time = (Time) ev_time; ((XKeyEvent *) ev)->window = (Window) window; ((XKeyEvent *) ev)->root = DefaultRootWindow (ev->xany.display); ((XKeyEvent *) ev)->x = 0; ((XKeyEvent *) ev)->y = 0; ((XKeyEvent *) ev)->x_root = 0; ((XKeyEvent *) ev)->y_root = 0; if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ } static void ExtMoveMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec ext_move_fr[]; IMMoveStruct *extmove = (IMMoveStruct*) & call_data->extmove; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (ext_move_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, extmove->icid); FrameMgrGetToken (fm, extmove->x); FrameMgrGetToken (fm, extmove->y); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ } static void ExtensionMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { switch (call_data->any.minor_code) { case XIM_EXT_FORWARD_KEYEVENT: ExtForwardKeyEventMessageProc (ims, call_data, p); break; case XIM_EXT_MOVE: ExtMoveMessageProc (ims, call_data, p); break; } /*endswitch*/ } static void TriggerNotifyMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec trigger_notify_fr[], trigger_notify_reply_fr[]; register int total_size; unsigned char *reply = NULL; IMTriggerNotifyStruct *trigger = (IMTriggerNotifyStruct *) &call_data->triggernotify; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; CARD32 flag; fm = FrameMgrInit (trigger_notify_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, trigger->icid); FrameMgrGetToken (fm, trigger->flag); FrameMgrGetToken (fm, trigger->key_index); FrameMgrGetToken (fm, trigger->event_mask); /* In order to support Front End Method, this event_mask must be saved per clients so that it should be restored by an XIM_EXT_SET_EVENT_MASK call when preediting mode is reset to off. */ flag = trigger->flag; FrameMgrFree (fm); fm = FrameMgrInit (trigger_notify_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, trigger->icid); /* NOTE: XIM_TRIGGER_NOTIFY_REPLY should be sent before XIM_SET_EVENT_MASK in case of XIM_TRIGGER_NOTIFY(flag == ON), while it should be sent after XIM_SET_EVENT_MASK in case of XIM_TRIGGER_NOTIFY(flag == OFF). */ if (flag == 0) { /* on key */ _Xi18nSendMessage (ims, connect_id, XIM_TRIGGER_NOTIFY_REPLY, 0, reply, total_size); IMPreeditStart (ims, (XPointer)call_data); } /*endif*/ if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ if (flag == 1) { /* off key */ IMPreeditEnd (ims, (XPointer) call_data); _Xi18nSendMessage (ims, connect_id, XIM_TRIGGER_NOTIFY_REPLY, 0, reply, total_size); } /*endif*/ FrameMgrFree (fm); XFree (reply); } static INT16 ChooseEncoding (Xi18n i18n_core, IMEncodingNegotiationStruct *enc_nego) { Xi18nAddressRec *address = (Xi18nAddressRec *) & i18n_core->address; XIMEncodings *p; int i, j; int enc_index=0; p = (XIMEncodings *) &address->encoding_list; for (i = 0; i < (int) p->count_encodings; i++) { for (j = 0; j < (int) enc_nego->encoding_number; j++) { if (strcmp (p->supported_encodings[i], enc_nego->encoding[j].name) == 0) { enc_index = j; break; } /*endif*/ } /*endfor*/ } /*endfor*/ return (INT16) enc_index; #if 0 return (INT16) XIM_Default_Encoding_IDX; #endif } static void EncodingNegotiatonMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; FmStatus status; CARD16 byte_length; extern XimFrameRec encoding_negotiation_fr[]; extern XimFrameRec encoding_negotiation_reply_fr[]; register int i, total_size; unsigned char *reply = NULL; IMEncodingNegotiationStruct *enc_nego = (IMEncodingNegotiationStruct *) &call_data->encodingnego; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (encoding_negotiation_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); FrameMgrGetToken (fm, input_method_ID); /* get ENCODING STR field */ FrameMgrGetToken (fm, byte_length); if (byte_length > 0) { enc_nego->encoding = (XIMStr *) malloc (sizeof (XIMStr)*10); memset (enc_nego->encoding, 0, sizeof (XIMStr)*10); i = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { char *name; int str_length; FrameMgrGetToken (fm, str_length); FrameMgrSetSize (fm, str_length); enc_nego->encoding[i].length = str_length; FrameMgrGetToken (fm, name); enc_nego->encoding[i].name = malloc (str_length + 1); strncpy (enc_nego->encoding[i].name, name, str_length); enc_nego->encoding[i].name[str_length] = '\0'; i++; } /*endwhile*/ enc_nego->encoding_number = i; } /*endif*/ /* get ENCODING INFO field */ FrameMgrGetToken (fm, byte_length); if (byte_length > 0) { enc_nego->encodinginfo = (XIMStr *) malloc (sizeof (XIMStr)*10); memset (enc_nego->encoding, 0, sizeof (XIMStr)*10); i = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { char *name; int str_length; FrameMgrGetToken (fm, str_length); FrameMgrSetSize (fm, str_length); enc_nego->encodinginfo[i].length = str_length; FrameMgrGetToken (fm, name); enc_nego->encodinginfo[i].name = malloc (str_length + 1); strncpy (enc_nego->encodinginfo[i].name, name, str_length); enc_nego->encodinginfo[i].name[str_length] = '\0'; i++; } /*endwhile*/ enc_nego->encoding_info_number = i; } /*endif*/ enc_nego->enc_index = ChooseEncoding (i18n_core, enc_nego); enc_nego->category = 0; #ifdef PROTOCOL_RICH if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ #endif /* PROTOCOL_RICH */ FrameMgrFree (fm); fm = FrameMgrInit (encoding_negotiation_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, enc_nego->category); FrameMgrPutToken (fm, enc_nego->enc_index); _Xi18nSendMessage (ims, connect_id, XIM_ENCODING_NEGOTIATION_REPLY, 0, reply, total_size); XFree (reply); /* free data for encoding list */ if (enc_nego->encoding) { for (i = 0; i < (int) enc_nego->encoding_number; i++) XFree (enc_nego->encoding[i].name); /*endfor*/ XFree (enc_nego->encoding); } /*endif*/ if (enc_nego->encodinginfo) { for (i = 0; i < (int) enc_nego->encoding_info_number; i++) XFree (enc_nego->encodinginfo[i].name); /*endfor*/ XFree (enc_nego->encodinginfo); } /*endif*/ FrameMgrFree (fm); } void PreeditStartReplyMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_start_reply_fr[]; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct *) &call_data->preedit_callback; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (preedit_start_reply_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, preedit_CB->icid); FrameMgrGetToken (fm, preedit_CB->todo.return_value); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ } /*endif*/ } void PreeditCaretReplyMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_caret_reply_fr[]; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct *) &call_data->preedit_callback; XIMPreeditCaretCallbackStruct *caret = (XIMPreeditCaretCallbackStruct *) & preedit_CB->todo.caret; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; fm = FrameMgrInit (preedit_caret_reply_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, preedit_CB->icid); FrameMgrGetToken (fm, caret->position); FrameMgrFree (fm); if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) return; /*endif*/ } /*endif*/ } void StrConvReplyMessageProc (XIMS ims, IMProtocol *call_data, unsigned char *p) { return; } static void AddQueue (Xi18nClient *client, unsigned char *p) { XIMPending *new; XIMPending *last; if ((new = (XIMPending *) malloc (sizeof (XIMPending))) == NULL) return; /*endif*/ new->p = p; new->next = (XIMPending *) NULL; if (!client->pending) { client->pending = new; } else { for (last = client->pending; last->next; last = last->next) ; /*endfor*/ last->next = new; } /*endif*/ return; } static void ProcessQueue (XIMS ims, CARD16 connect_id) { Xi18n i18n_core = ims->protocol; Xi18nClient *client = (Xi18nClient *) _Xi18nFindClient (i18n_core, connect_id); while (client->sync == False && client->pending) { XimProtoHdr *hdr = (XimProtoHdr *) client->pending->p; unsigned char *p1 = (unsigned char *) (hdr + 1); IMProtocol call_data; call_data.major_code = hdr->major_opcode; call_data.any.minor_code = hdr->minor_opcode; call_data.any.connect_id = connect_id; switch (hdr->major_opcode) { case XIM_FORWARD_EVENT: ForwardEventMessageProc(ims, &call_data, p1); break; } /*endswitch*/ XFree (hdr); { XIMPending *old = client->pending; client->pending = old->next; XFree (old); } } /*endwhile*/ return; } void _Xi18nMessageHandler (XIMS ims, CARD16 connect_id, unsigned char *p, Bool *delete) { XimProtoHdr *hdr = (XimProtoHdr *)p; unsigned char *p1 = (unsigned char *)(hdr + 1); IMProtocol call_data; Xi18n i18n_core = ims->protocol; Xi18nClient *client; client = (Xi18nClient *) _Xi18nFindClient (i18n_core, connect_id); if (hdr == (XimProtoHdr *) NULL) return; /*endif*/ memset (&call_data, 0, sizeof(IMProtocol)); call_data.major_code = hdr->major_opcode; call_data.any.minor_code = hdr->minor_opcode; call_data.any.connect_id = connect_id; switch (call_data.major_code) { case XIM_CONNECT: #ifdef XIM_DEBUG DebugLog("-- XIM_CONNECT\n"); #endif ConnectMessageProc (ims, &call_data, p1); break; case XIM_DISCONNECT: #ifdef XIM_DEBUG DebugLog("-- XIM_DISCONNECT\n"); #endif DisConnectMessageProc (ims, &call_data); break; case XIM_OPEN: #ifdef XIM_DEBUG DebugLog("-- XIM_OPEN\n"); #endif OpenMessageProc (ims, &call_data, p1); break; case XIM_CLOSE: #ifdef XIM_DEBUG DebugLog("-- XIM_CLOSE\n"); #endif CloseMessageProc (ims, &call_data, p1); break; case XIM_QUERY_EXTENSION: #ifdef XIM_DEBUG DebugLog("-- XIM_QUERY_EXTENSION\n"); #endif QueryExtensionMessageProc (ims, &call_data, p1); break; case XIM_GET_IM_VALUES: #ifdef XIM_DEBUG DebugLog("-- XIM_GET_IM_VALUES\n"); #endif GetIMValuesMessageProc (ims, &call_data, p1); break; case XIM_CREATE_IC: #ifdef XIM_DEBUG DebugLog("-- XIM_CREATE_IC\n"); #endif CreateICMessageProc (ims, &call_data, p1); break; case XIM_SET_IC_VALUES: #ifdef XIM_DEBUG DebugLog("-- XIM_SET_IC_VALUES\n"); #endif SetICValuesMessageProc (ims, &call_data, p1); break; case XIM_GET_IC_VALUES: #ifdef XIM_DEBUG DebugLog("-- XIM_GET_IC_VALUES\n"); #endif GetICValuesMessageProc (ims, &call_data, p1); break; case XIM_SET_IC_FOCUS: #ifdef XIM_DEBUG DebugLog("-- XIM_SET_IC_FOCUS\n"); #endif SetICFocusMessageProc (ims, &call_data, p1); break; case XIM_UNSET_IC_FOCUS: #ifdef XIM_DEBUG DebugLog("-- XIM_UNSET_IC_FOCUS\n"); #endif UnsetICFocusMessageProc (ims, &call_data, p1); break; case XIM_DESTROY_IC: #ifdef XIM_DEBUG DebugLog("-- XIM_DESTROY_IC\n"); #endif DestroyICMessageProc (ims, &call_data, p1); break; case XIM_RESET_IC: #ifdef XIM_DEBUG DebugLog("-- XIM_RESET_IC\n"); #endif ResetICMessageProc (ims, &call_data, p1); break; case XIM_FORWARD_EVENT: #ifdef XIM_DEBUG DebugLog("-- XIM_FORWARD_EVENT\n"); #endif if (client->sync == True) { AddQueue (client, p); *delete = False; } else { ForwardEventMessageProc (ims, &call_data, p1); } break; case XIM_EXTENSION: #ifdef XIM_DEBUG DebugLog("-- XIM_EXTENSION\n"); #endif ExtensionMessageProc (ims, &call_data, p1); break; case XIM_SYNC: #ifdef XIM_DEBUG DebugLog("-- XIM_SYNC\n"); #endif break; case XIM_SYNC_REPLY: #ifdef XIM_DEBUG DebugLog("-- XIM_SYNC_REPLY\n"); #endif SyncReplyMessageProc (ims, &call_data, p1); ProcessQueue (ims, connect_id); break; case XIM_TRIGGER_NOTIFY: #ifdef XIM_DEBUG DebugLog("-- XIM_TRIGGER_NOTIFY\n"); #endif TriggerNotifyMessageProc (ims, &call_data, p1); break; case XIM_ENCODING_NEGOTIATION: #ifdef XIM_DEBUG DebugLog("-- XIM_ENCODING_NEGOTIATION\n"); #endif EncodingNegotiatonMessageProc (ims, &call_data, p1); break; case XIM_PREEDIT_START_REPLY: #ifdef XIM_DEBUG DebugLog("-- XIM_PREEDIT_START_REPLY\n"); #endif PreeditStartReplyMessageProc (ims, &call_data, p1); break; case XIM_PREEDIT_CARET_REPLY: #ifdef XIM_DEBUG DebugLog("-- XIM_PREEDIT_CARET_REPLY\n"); #endif PreeditCaretReplyMessageProc (ims, &call_data, p1); break; case XIM_STR_CONVERSION_REPLY: #ifdef XIM_DEBUG DebugLog("-- XIM_STR_CONVERSION_REPLY\n"); #endif StrConvReplyMessageProc (ims, &call_data, p1); break; } /*endswitch*/ } ibus-1.5.11/util/IMdkit/i18nUtil.c0000644000000000000000000002121212551654124013352 00000000000000/****************************************************************** Copyright (C) 1994-1995 Sun Microsystems, Inc. Copyright (C) 1993-1994 Hewlett-Packard Company Copyright (C) 2014 Peng Huang Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include "IMdkit.h" #include "Xi18n.h" #include "FrameMgr.h" #include "XimFunc.h" Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); void _Xi18nInitOffsetCache (Xi18nOffsetCache *); int _Xi18nNeedSwap (Xi18n i18n_core, CARD16 connect_id) { CARD8 im_byteOrder = i18n_core->address.im_byteOrder; Xi18nClient *client = _Xi18nFindClient (i18n_core, connect_id); return (client->byte_order != im_byteOrder); } Xi18nClient *_Xi18nNewClient(Xi18n i18n_core) { static CARD16 connect_id = 0; int new_connect_id; Xi18nClient *client; if (i18n_core->address.free_clients) { client = i18n_core->address.free_clients; i18n_core->address.free_clients = client->next; new_connect_id = client->connect_id; } else { client = (Xi18nClient *) malloc (sizeof (Xi18nClient)); new_connect_id = ++connect_id; } /*endif*/ memset (client, 0, sizeof (Xi18nClient)); client->connect_id = new_connect_id; client->pending = (XIMPending *) NULL; client->sync = False; client->byte_order = '?'; /* initial value */ memset (&client->pending, 0, sizeof (XIMPending *)); _Xi18nInitOffsetCache (&client->offset_cache); client->next = i18n_core->address.clients; i18n_core->address.clients = client; return (Xi18nClient *) client; } Xi18nClient *_Xi18nFindClient (Xi18n i18n_core, CARD16 connect_id) { Xi18nClient *client = i18n_core->address.clients; while (client) { if (client->connect_id == connect_id) return client; /*endif*/ client = client->next; } /*endwhile*/ return NULL; } void _Xi18nDeleteClient (Xi18n i18n_core, CARD16 connect_id) { Xi18nClient *target = _Xi18nFindClient (i18n_core, connect_id); Xi18nClient *ccp; Xi18nClient *ccp0; for (ccp = i18n_core->address.clients, ccp0 = NULL; ccp != NULL; ccp0 = ccp, ccp = ccp->next) { if (ccp == target) { if (ccp0 == NULL) i18n_core->address.clients = ccp->next; else ccp0->next = ccp->next; /*endif*/ /* put it back to free list */ target->next = i18n_core->address.free_clients; i18n_core->address.free_clients = target; return; } /*endif*/ } /*endfor*/ } void _Xi18nSendMessage (XIMS ims, CARD16 connect_id, CARD8 major_opcode, CARD8 minor_opcode, unsigned char *data, long length) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec packet_header_fr[]; unsigned char *reply_hdr = NULL; int header_size; unsigned char *reply = NULL; unsigned char *replyp; int reply_length; long p_len = length/4; fm = FrameMgrInit (packet_header_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); header_size = FrameMgrGetTotalSize (fm); reply_hdr = (unsigned char *) malloc (header_size); if (reply_hdr == NULL) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ FrameMgrSetBuffer (fm, reply_hdr); /* put data */ FrameMgrPutToken (fm, major_opcode); FrameMgrPutToken (fm, minor_opcode); FrameMgrPutToken (fm, p_len); reply_length = header_size + length; reply = (unsigned char *) malloc (reply_length); replyp = reply; memmove (reply, reply_hdr, header_size); replyp += header_size; memmove (replyp, data, length); i18n_core->methods.send (ims, connect_id, reply, reply_length); XFree (reply); XFree (reply_hdr); FrameMgrFree (fm); } void _Xi18nSendTriggerKey (XIMS ims, CARD16 connect_id) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec register_triggerkeys_fr[]; XIMTriggerKey *on_keys = i18n_core->address.on_keys.keylist; XIMTriggerKey *off_keys = i18n_core->address.off_keys.keylist; int on_key_num = i18n_core->address.on_keys.count_keys; int off_key_num = i18n_core->address.off_keys.count_keys; unsigned char *reply = NULL; register int i, total_size; CARD16 im_id; if (on_key_num == 0 && off_key_num == 0) return; /*endif*/ fm = FrameMgrInit (register_triggerkeys_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set iteration count for on-keys list */ FrameMgrSetIterCount (fm, on_key_num); /* set iteration count for off-keys list */ FrameMgrSetIterCount (fm, off_key_num); /* get total_size */ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) return; /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); /* Right now XIM_OPEN_REPLY hasn't been sent to this new client, so the input-method-id is still invalid, and should be set to zero... Reter to $(XC)/lib/X11/imDefLkup.c:_XimRegisterTriggerKeysCallback */ im_id = 0; FrameMgrPutToken (fm, im_id); /* input-method-id */ for (i = 0; i < on_key_num; i++) { FrameMgrPutToken (fm, on_keys[i].keysym); FrameMgrPutToken (fm, on_keys[i].modifier); FrameMgrPutToken (fm, on_keys[i].modifier_mask); } /*endfor*/ for (i = 0; i < off_key_num; i++) { FrameMgrPutToken (fm, off_keys[i].keysym); FrameMgrPutToken (fm, off_keys[i].modifier); FrameMgrPutToken (fm, off_keys[i].modifier_mask); } /*endfor*/ _Xi18nSendMessage (ims, connect_id, XIM_REGISTER_TRIGGERKEYS, 0, reply, total_size); FrameMgrFree (fm); XFree(reply); } void _Xi18nSetEventMask (XIMS ims, CARD16 connect_id, CARD16 im_id, CARD16 ic_id, CARD32 forward_mask, CARD32 sync_mask) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec set_event_mask_fr[]; unsigned char *reply = NULL; register int total_size; fm = FrameMgrInit (set_event_mask_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) return; /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, im_id); /* input-method-id */ FrameMgrPutToken (fm, ic_id); /* input-context-id */ FrameMgrPutToken (fm, forward_mask); FrameMgrPutToken (fm, sync_mask); _Xi18nSendMessage (ims, connect_id, XIM_SET_EVENT_MASK, 0, reply, total_size); FrameMgrFree (fm); XFree(reply); } ibus-1.5.11/util/IMdkit/IMMethod.c0000644000000000000000000000443012551654124013406 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include "IMdkit.h" /* Public Function */ void IMForwardEvent (XIMS ims, XPointer call_data) { (ims->methods->forwardEvent) (ims, call_data); } void IMCommitString (XIMS ims, XPointer call_data) { (ims->methods->commitString) (ims, call_data); } int IMCallCallback (XIMS ims, XPointer call_data) { return (ims->methods->callCallback) (ims, call_data); } int IMPreeditStart (XIMS ims, XPointer call_data) { return (ims->methods->preeditStart) (ims, call_data); } int IMPreeditEnd (XIMS ims, XPointer call_data) { return (ims->methods->preeditEnd) (ims, call_data); } int IMSyncXlib(XIMS ims, XPointer call_data) { ims->sync = True; return (ims->methods->syncXlib) (ims, call_data); } ibus-1.5.11/util/IMdkit/i18nIc.c0000644000000000000000000010153612551654124013000 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include "IMdkit.h" #include "Xi18n.h" #include "FrameMgr.h" #include "XimFunc.h" #define IC_SIZE 64 /* Set IC values */ static void SetCardAttribute (XICAttribute *value_ret, char *p, XICAttr *ic_attr, int value_length, int need_swap, void **value_buf) { FrameMgr fm; /*endif*/ if (value_length == sizeof (CARD8)) { memmove (*value_buf, p, value_length); } else if (value_length == sizeof (CARD16)) { INT16 value; extern XimFrameRec short_fr[]; fm = FrameMgrInit (short_fr, (char *) p, need_swap); /* get data */ FrameMgrGetToken (fm, value); FrameMgrFree (fm); memmove (*value_buf, &value, value_length); } else if (value_length == sizeof(CARD32)) { INT32 value; extern XimFrameRec long_fr[]; fm = FrameMgrInit (long_fr, (char *) p, need_swap); /* get data */ FrameMgrGetToken (fm, value); FrameMgrFree (fm); memmove (*value_buf, &value, value_length); } /*endif*/ value_ret->attribute_id = ic_attr->attribute_id; value_ret->name = ic_attr->name; value_ret->name_length = ic_attr->length; value_ret->type = ic_attr->type; value_ret->value_length = value_length; value_ret->value = *value_buf; *value_buf += value_length; } static void SetFontAttribute (XICAttribute *value_ret, char *p, XICAttr *ic_attr, int value_length, int need_swap, void **value_buf) { char *base_name; CARD16 base_length; FrameMgr fm; extern XimFrameRec fontset_fr[]; fm = FrameMgrInit (fontset_fr, (char *) p, need_swap); /* get data */ FrameMgrGetToken (fm, base_length); FrameMgrSetSize (fm, base_length); /*endif*/ FrameMgrGetToken (fm, base_name); FrameMgrFree(fm); strncpy ((char *) (*value_buf), base_name, base_length); ((char *) *value_buf)[base_length] = (char) 0; value_ret->attribute_id = ic_attr->attribute_id; value_ret->name = ic_attr->name; value_ret->name_length = ic_attr->length; value_ret->type = ic_attr->type; value_ret->value_length = value_length; value_ret->value = *value_buf; *value_buf += (base_length + 1); } static void SetPointAttribute (XICAttribute *value_ret, char *p, XICAttr *ic_attr, int value_length, int need_swap, void **value_buf) { XPoint *buf; FrameMgr fm; extern XimFrameRec xpoint_fr[]; buf = (XPoint *) (*value_buf); fm = FrameMgrInit (xpoint_fr, (char *) p, need_swap); /* get data */ FrameMgrGetToken (fm, buf->x); FrameMgrGetToken (fm, buf->y); FrameMgrFree (fm); value_ret->attribute_id = ic_attr->attribute_id; value_ret->name = ic_attr->name; value_ret->name_length = ic_attr->length; value_ret->type = ic_attr->type; value_ret->value_length = value_length; value_ret->value = (char *) buf; *value_buf += value_length; } static void SetRectAttribute (XICAttribute *value_ret, char *p, XICAttr *ic_attr, int value_length, int need_swap, void **value_buf) { XRectangle *buf; FrameMgr fm; extern XimFrameRec xrectangle_fr[]; buf = (XRectangle *) (*value_buf); fm = FrameMgrInit (xrectangle_fr, (char *) p, need_swap); /* get data */ FrameMgrGetToken (fm, buf->x); FrameMgrGetToken (fm, buf->y); FrameMgrGetToken (fm, buf->width); FrameMgrGetToken (fm, buf->height); FrameMgrFree (fm); value_ret->attribute_id = ic_attr->attribute_id; value_ret->name = ic_attr->name; value_ret->name_length = ic_attr->length; value_ret->type = ic_attr->type; value_ret->value_length = value_length; value_ret->value = (char *) buf; *value_buf += value_length; } #if 0 static void SetHotKeyAttribute (XICAttribute *value_ret, char *p, XICAttr *ic_attr, int value_length, int need_swap, void **value_buf) { INT32 list_number; XIMTriggerKey *hotkeys; memmove (&list_number, p, sizeof(INT32)); p += sizeof(INT32); hotkeys = (XIMTriggerKey *) (*value_buf); memmove (hotkeys, p, list_number*sizeof (XIMTriggerKey)); value_ret->attribute_id = ic_attr->attribute_id; value_ret->name = ic_attr->name; value_ret->name_length = ic_attr->length; value_ret->type = ic_attr->type; value_ret->value_length = value_length; value_ret->value = (char *) hotkeys; *value_buf += value_length; } #endif /* get IC values */ static void GetAttrHeader (unsigned char *rec, XICAttribute *list, int need_swap) { FrameMgr fm; extern XimFrameRec attr_head_fr[]; fm = FrameMgrInit (attr_head_fr, (char *) rec, need_swap); /* put data */ FrameMgrPutToken (fm, list->attribute_id); FrameMgrPutToken (fm, list->value_length); FrameMgrFree (fm); } static void GetCardAttribute (char *rec, XICAttribute *list, int need_swap) { FrameMgr fm; unsigned char *recp = (unsigned char *) rec; GetAttrHeader (recp, list, need_swap); recp += sizeof (CARD16)*2; if (list->value_length == sizeof (CARD8)) { memmove (recp, list->value, list->value_length); } else if (list->value_length == sizeof (CARD16)) { INT16 *value = (INT16 *) list->value; extern XimFrameRec short_fr[]; fm = FrameMgrInit (short_fr, (char *) recp, need_swap); /* put data */ FrameMgrPutToken (fm, *value); FrameMgrFree (fm); } else if (list->value_length == sizeof (CARD32)) { INT32 *value = (INT32 *) list->value; extern XimFrameRec long_fr[]; fm = FrameMgrInit (long_fr, (char *) recp, need_swap); /* put data */ FrameMgrPutToken (fm, *value); FrameMgrFree (fm); } /*endif*/ } static void GetFontAttribute(char *rec, XICAttribute *list, int need_swap) { FrameMgr fm; extern XimFrameRec fontset_fr[]; char *base_name = (char *) list->value; unsigned char *recp = (unsigned char *) rec; GetAttrHeader (recp, list, need_swap); recp += sizeof (CARD16)*2; fm = FrameMgrInit (fontset_fr, (char *)recp, need_swap); /* put data */ FrameMgrSetSize (fm, list->value_length); FrameMgrPutToken (fm, list->value_length); FrameMgrPutToken (fm, base_name); FrameMgrFree (fm); } static void GetRectAttribute (char *rec, XICAttribute *list, int need_swap) { FrameMgr fm; extern XimFrameRec xrectangle_fr[]; XRectangle *rect = (XRectangle *) list->value; unsigned char *recp = (unsigned char *) rec; GetAttrHeader (recp, list, need_swap); recp += sizeof(CARD16)*2; fm = FrameMgrInit (xrectangle_fr, (char *) recp, need_swap); /* put data */ FrameMgrPutToken (fm, rect->x); FrameMgrPutToken (fm, rect->y); FrameMgrPutToken (fm, rect->width); FrameMgrPutToken (fm, rect->height); FrameMgrFree (fm); } static void GetPointAttribute (char *rec, XICAttribute *list, int need_swap) { FrameMgr fm; extern XimFrameRec xpoint_fr[]; XPoint *rect = (XPoint *) list->value; unsigned char *recp = (unsigned char *) rec; GetAttrHeader (recp, list, need_swap); recp += sizeof(CARD16)*2; fm = FrameMgrInit (xpoint_fr, (char *) recp, need_swap); /* put data */ FrameMgrPutToken (fm, rect->x); FrameMgrPutToken (fm, rect->y); FrameMgrFree (fm); } static int ReadICValue (Xi18n i18n_core, CARD16 icvalue_id, int value_length, void *p, XICAttribute *value_ret, CARD16 *number_ret, int need_swap, void **value_buf) { XICAttr *ic_attr = i18n_core->address.xic_attr; int i; *number_ret = (CARD16) 0; for (i = 0; i < i18n_core->address.ic_attr_num; i++, ic_attr++) { if (ic_attr->attribute_id == icvalue_id) break; /*endif*/ } /*endfor*/ switch (ic_attr->type) { case XimType_NEST: { int total_length = 0; CARD16 attribute_ID; INT16 attribute_length; unsigned char *p1 = (unsigned char *) p; CARD16 ic_len = 0; CARD16 number; FrameMgr fm; extern XimFrameRec attr_head_fr[]; while (total_length < value_length) { fm = FrameMgrInit (attr_head_fr, (char *) p1, need_swap); /* get data */ FrameMgrGetToken (fm, attribute_ID); FrameMgrGetToken (fm, attribute_length); FrameMgrFree (fm); p1 += sizeof (CARD16)*2; ReadICValue (i18n_core, attribute_ID, attribute_length, p1, (value_ret + ic_len), &number, need_swap, value_buf); ic_len++; *number_ret += number; p1 += attribute_length; p1 += IMPAD (attribute_length); total_length += (CARD16) sizeof(CARD16)*2 + (INT16) attribute_length + IMPAD (attribute_length); } /*endwhile*/ return ic_len; } case XimType_CARD8: case XimType_CARD16: case XimType_CARD32: case XimType_Window: SetCardAttribute (value_ret, p, ic_attr, value_length, need_swap, value_buf); *number_ret = (CARD16) 1; return *number_ret; case XimType_XFontSet: SetFontAttribute (value_ret, p, ic_attr, value_length, need_swap, value_buf); *number_ret = (CARD16) 1; return *number_ret; case XimType_XRectangle: SetRectAttribute (value_ret, p, ic_attr, value_length, need_swap, value_buf); *number_ret = (CARD16) 1; return *number_ret; case XimType_XPoint: SetPointAttribute(value_ret, p, ic_attr, value_length, need_swap, value_buf); *number_ret = (CARD16) 1; return *number_ret; #if 0 case XimType_XIMHotKeyTriggers: SetHotKeyAttribute (value_ret, p, ic_attr, value_length, need_swap, value_buf); *number_ret = (CARD16) 1; return *number_ret; #endif } /*endswitch*/ return 0; } static XICAttribute *CreateNestedList (CARD16 attr_id, XICAttribute *list, int number, int need_swap) { XICAttribute *nest_list = NULL; register int i; char *values = NULL; char *valuesp; int value_length = 0; if (number == 0) return NULL; /*endif*/ for (i = 0; i < number; i++) { value_length += sizeof (CARD16)*2; value_length += list[i].value_length; value_length += IMPAD (list[i].value_length); } /*endfor*/ if ((values = (char *) malloc (value_length)) == NULL) return NULL; /*endif*/ memset (values, 0, value_length); valuesp = values; for (i = 0; i < number; i++) { switch (list[i].type) { case XimType_CARD8: case XimType_CARD16: case XimType_CARD32: case XimType_Window: GetCardAttribute (valuesp, &list[i], need_swap); break; case XimType_XFontSet: GetFontAttribute (valuesp, &list[i], need_swap); break; case XimType_XRectangle: GetRectAttribute (valuesp, &list[i], need_swap); break; case XimType_XPoint: GetPointAttribute (valuesp, &list[i], need_swap); break; #if 0 case XimType_XIMHotKeyTriggers: GetHotKeyAttribute (valuesp, &list[i], need_swap); break; #endif } /*endswitch*/ valuesp += sizeof (CARD16)*2; valuesp += list[i].value_length; valuesp += IMPAD(list[i].value_length); } /*endfor*/ nest_list = (XICAttribute *) malloc (sizeof (XICAttribute)); if (nest_list == NULL) return NULL; /*endif*/ memset (nest_list, 0, sizeof (XICAttribute)); nest_list->value = (void *) malloc (value_length); if (nest_list->value == NULL) return NULL; /*endif*/ memset (nest_list->value, 0, sizeof (value_length)); nest_list->attribute_id = attr_id; nest_list->value_length = value_length; memmove (nest_list->value, values, value_length); XFree (values); return nest_list; } static Bool IsNestedList (Xi18n i18n_core, CARD16 icvalue_id) { XICAttr *ic_attr = i18n_core->address.xic_attr; int i; for (i = 0; i < i18n_core->address.ic_attr_num; i++, ic_attr++) { if (ic_attr->attribute_id == icvalue_id) { if (ic_attr->type == XimType_NEST) return True; /*endif*/ return False; } /*endif*/ } /*endfor*/ return False; } static Bool IsSeparator (Xi18n i18n_core, CARD16 icvalue_id) { return (i18n_core->address.separatorAttr_id == icvalue_id); } static int GetICValue (Xi18n i18n_core, XICAttribute *attr_ret, CARD16 *id_list, int list_num) { XICAttr *xic_attr = i18n_core->address.xic_attr; register int i; register int j; register int n; i = n = 0; if (IsNestedList (i18n_core, id_list[i])) { i++; while (i < list_num && !IsSeparator (i18n_core, id_list[i])) { for (j = 0; j < i18n_core->address.ic_attr_num; j++) { if (xic_attr[j].attribute_id == id_list[i]) { attr_ret[n].attribute_id = xic_attr[j].attribute_id; attr_ret[n].name_length = xic_attr[j].length; attr_ret[n].name = malloc (xic_attr[j].length + 1); strcpy(attr_ret[n].name, xic_attr[j].name); attr_ret[n].type = xic_attr[j].type; n++; i++; break; } /*endif*/ } /*endfor*/ } /*endwhile*/ } else { for (j = 0; j < i18n_core->address.ic_attr_num; j++) { if (xic_attr[j].attribute_id == id_list[i]) { attr_ret[n].attribute_id = xic_attr[j].attribute_id; attr_ret[n].name_length = xic_attr[j].length; attr_ret[n].name = malloc (xic_attr[j].length + 1); strcpy(attr_ret[n].name, xic_attr[j].name); attr_ret[n].type = xic_attr[j].type; n++; break; } /*endif*/ } /*endfor*/ } /*endif*/ return n; } static void SwapAttributes (XICAttribute *list, int number){ FrameMgr fm; CARD16 c16; extern XimFrameRec short_fr[]; CARD32 c32; extern XimFrameRec long_fr[]; XPoint xpoint; extern XimFrameRec xpoint_fr[]; XRectangle xrect; extern XimFrameRec xrectangle_fr[]; int i; for (i = 0; i < number; ++i, ++list) { if (list->value == NULL) continue; switch (list->type) { case XimType_CARD16: fm = FrameMgrInit (short_fr, (char *)list->value, 1); FrameMgrGetToken (fm, c16); memmove(list->value, &c16, sizeof(CARD16)); FrameMgrFree (fm); break; case XimType_CARD32: case XimType_Window: fm = FrameMgrInit (long_fr, (char *)list->value, 1); FrameMgrGetToken (fm, c32); memmove(list->value, &c32, sizeof(CARD32)); FrameMgrFree (fm); break; case XimType_XRectangle: fm = FrameMgrInit (xrectangle_fr, (char *)list->value, 1); FrameMgrGetToken (fm, xrect); memmove(list->value, &xrect, sizeof(XRectangle)); FrameMgrFree (fm); break; case XimType_XPoint: fm = FrameMgrInit (xpoint_fr, (char *)list->value, 1); FrameMgrGetToken (fm, xpoint); memmove(list->value, &xpoint, sizeof(XPoint)); FrameMgrFree (fm); break; default: break; } } } /* called from CreateICMessageProc and SetICValueMessageProc */ void _Xi18nChangeIC (XIMS ims, IMProtocol *call_data, unsigned char *p, int create_flag) { Xi18n i18n_core = ims->protocol; FrameMgr fm; FmStatus status; CARD16 byte_length; register int total_size; unsigned char *reply = NULL; register int i; register int attrib_num; XICAttribute *attrib_list; XICAttribute pre_attr[IC_SIZE]; XICAttribute sts_attr[IC_SIZE]; XICAttribute ic_attr[IC_SIZE]; CARD16 preedit_ic_num = 0; CARD16 status_ic_num = 0; CARD16 ic_num = 0; CARD16 connect_id = call_data->any.connect_id; IMChangeICStruct *changeic = (IMChangeICStruct *) &call_data->changeic; extern XimFrameRec create_ic_fr[]; extern XimFrameRec create_ic_reply_fr[]; extern XimFrameRec set_ic_values_fr[]; extern XimFrameRec set_ic_values_reply_fr[]; CARD16 input_method_ID; void *value_buf = NULL; void *value_buf_ptr; register int total_value_length = 0; memset (pre_attr, 0, sizeof (XICAttribute)*IC_SIZE); memset (sts_attr, 0, sizeof (XICAttribute)*IC_SIZE); memset (ic_attr, 0, sizeof (XICAttribute)*IC_SIZE); if (create_flag == True) { fm = FrameMgrInit (create_ic_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, byte_length); } else { fm = FrameMgrInit (set_ic_values_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, changeic->icid); FrameMgrGetToken (fm, byte_length); } /*endif*/ attrib_list = (XICAttribute *) malloc (sizeof (XICAttribute)*IC_SIZE); if (!attrib_list) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (attrib_list, 0, sizeof(XICAttribute)*IC_SIZE); attrib_num = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { void *value; int value_length; FrameMgrGetToken (fm, attrib_list[attrib_num].attribute_id); FrameMgrGetToken (fm, value_length); FrameMgrSetSize (fm, value_length); attrib_list[attrib_num].value_length = value_length; FrameMgrGetToken (fm, value); attrib_list[attrib_num].value = (void *) malloc (value_length + 1); memmove (attrib_list[attrib_num].value, value, value_length); ((char *)attrib_list[attrib_num].value)[value_length] = '\0'; attrib_num++; total_value_length += (value_length + 1); } /*endwhile*/ value_buf = (void *) malloc (total_value_length); value_buf_ptr = value_buf; if (!value_buf) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); for (i = 0; i < attrib_num; i++) XFree (attrib_list[i].value); /*endfor*/ XFree (attrib_list); return; } /*endif*/ for (i = 0; i < attrib_num; i++) { CARD16 number; if (IsNestedList (i18n_core, attrib_list[i].attribute_id)) { if (attrib_list[i].attribute_id == i18n_core->address.preeditAttr_id) { ReadICValue (i18n_core, attrib_list[i].attribute_id, attrib_list[i].value_length, attrib_list[i].value, &pre_attr[preedit_ic_num], &number, _Xi18nNeedSwap(i18n_core, connect_id), &value_buf_ptr); preedit_ic_num += number; } else if (attrib_list[i].attribute_id == i18n_core->address.statusAttr_id) { ReadICValue (i18n_core, attrib_list[i].attribute_id, attrib_list[i].value_length, attrib_list[i].value, &sts_attr[status_ic_num], &number, _Xi18nNeedSwap (i18n_core, connect_id), &value_buf_ptr); status_ic_num += number; } else { /* another nested list.. possible? */ } /*endif*/ } else { ReadICValue (i18n_core, attrib_list[i].attribute_id, attrib_list[i].value_length, attrib_list[i].value, &ic_attr[ic_num], &number, _Xi18nNeedSwap (i18n_core, connect_id), &value_buf_ptr); ic_num += number; } /*endif*/ } /*endfor*/ for (i = 0; i < attrib_num; i++) XFree (attrib_list[i].value); /*endfor*/ XFree (attrib_list); FrameMgrFree (fm); changeic->preedit_attr_num = preedit_ic_num; changeic->status_attr_num = status_ic_num; changeic->ic_attr_num = ic_num; changeic->preedit_attr = pre_attr; changeic->status_attr = sts_attr; changeic->ic_attr = ic_attr; if (i18n_core->address.improto) { if (!(i18n_core->address.improto(ims, call_data))) { XFree (value_buf); return; } /*endif*/ } XFree (value_buf); /*endif*/ if (create_flag == True) { fm = FrameMgrInit (create_ic_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); } else { fm = FrameMgrInit (set_ic_values_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); } /*endif*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, changeic->icid); if (create_flag == True) { _Xi18nSendMessage (ims, connect_id, XIM_CREATE_IC_REPLY, 0, reply, total_size); } else { _Xi18nSendMessage (ims, connect_id, XIM_SET_IC_VALUES_REPLY, 0, reply, total_size); } /*endif*/ if (create_flag == True) { int on_key_num = i18n_core->address.on_keys.count_keys; int off_key_num = i18n_core->address.off_keys.count_keys; if (on_key_num == 0 && off_key_num == 0) { long mask; if (i18n_core->address.imvalue_mask & I18N_FILTERMASK) mask = i18n_core->address.filterevent_mask; else mask = DEFAULT_FILTER_MASK; /*endif*/ /* static event flow is default */ _Xi18nSetEventMask (ims, connect_id, input_method_ID, changeic->icid, mask, ~mask); } /*endif*/ } /*endif*/ FrameMgrFree (fm); XFree(reply); } /* called from GetICValueMessageProc */ void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p) { Xi18n i18n_core = ims->protocol; FrameMgr fm; FmStatus status; extern XimFrameRec get_ic_values_fr[]; extern XimFrameRec get_ic_values_reply_fr[]; CARD16 byte_length; register int total_size; unsigned char *reply = NULL; XICAttribute *preedit_ret = NULL; XICAttribute *status_ret = NULL; register int i; register int number; int iter_count; CARD16 *attrID_list; XICAttribute pre_attr[IC_SIZE]; XICAttribute sts_attr[IC_SIZE]; XICAttribute ic_attr[IC_SIZE]; CARD16 pre_count = 0; CARD16 sts_count = 0; CARD16 ic_count = 0; IMChangeICStruct *getic = (IMChangeICStruct *) &call_data->changeic; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; memset (pre_attr, 0, sizeof (XICAttribute)*IC_SIZE); memset (sts_attr, 0, sizeof (XICAttribute)*IC_SIZE); memset (ic_attr, 0, sizeof (XICAttribute)*IC_SIZE); fm = FrameMgrInit (get_ic_values_fr, (char *) p, _Xi18nNeedSwap (i18n_core, connect_id)); /* get data */ FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, getic->icid); FrameMgrGetToken (fm, byte_length); attrID_list = (CARD16 *) malloc (sizeof (CARD16)*IC_SIZE); /* bogus */ memset (attrID_list, 0, sizeof (CARD16)*IC_SIZE); number = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) FrameMgrGetToken (fm, attrID_list[number++]); /*endwhile*/ FrameMgrFree (fm); i = 0; while (i < number) { int read_number; if (IsNestedList (i18n_core, attrID_list[i])) { if (attrID_list[i] == i18n_core->address.preeditAttr_id) { read_number = GetICValue (i18n_core, &pre_attr[pre_count], &attrID_list[i], number); i += read_number + 1; pre_count += read_number; } else if (attrID_list[i] == i18n_core->address.statusAttr_id) { read_number = GetICValue (i18n_core, &sts_attr[sts_count], &attrID_list[i], number); i += read_number + 1; sts_count += read_number; } else { /* another nested list.. possible? */ } /*endif*/ } else { read_number = GetICValue (i18n_core, &ic_attr[ic_count], &attrID_list[i], number); i += read_number; ic_count += read_number; } /*endif*/ } /*endwhile*/ getic->preedit_attr_num = pre_count; getic->status_attr_num = sts_count; getic->ic_attr_num = ic_count; getic->preedit_attr = pre_attr; getic->status_attr = sts_attr; getic->ic_attr = ic_attr; if (i18n_core->address.improto) { if (!(i18n_core->address.improto (ims, call_data))) return; /*endif*/ if (_Xi18nNeedSwap (i18n_core, connect_id)) SwapAttributes(getic->ic_attr, getic->ic_attr_num); } /*endif*/ iter_count = getic->ic_attr_num; preedit_ret = CreateNestedList (i18n_core->address.preeditAttr_id, getic->preedit_attr, getic->preedit_attr_num, _Xi18nNeedSwap (i18n_core, connect_id)); if (preedit_ret) iter_count++; /*endif*/ status_ret = CreateNestedList (i18n_core->address.statusAttr_id, getic->status_attr, getic->status_attr_num, _Xi18nNeedSwap (i18n_core, connect_id)); if (status_ret) iter_count++; /*endif*/ fm = FrameMgrInit (get_ic_values_reply_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set iteration count for list of ic_attribute */ FrameMgrSetIterCount (fm, iter_count); /* set length of BARRAY item in xicattribute_fr */ for (i = 0; i < (int) getic->ic_attr_num; i++) FrameMgrSetSize (fm, ic_attr[i].value_length); /*endfor*/ if (preedit_ret) FrameMgrSetSize (fm, preedit_ret->value_length); /*endif*/ if (status_ret) FrameMgrSetSize (fm, status_ret->value_length); /*endif*/ total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (reply == NULL) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, input_method_ID); FrameMgrPutToken (fm, getic->icid); for (i = 0; i < (int) getic->ic_attr_num; i++) { FrameMgrPutToken (fm, ic_attr[i].attribute_id); FrameMgrPutToken (fm, ic_attr[i].value_length); FrameMgrPutToken (fm, ic_attr[i].value); } /*endfor*/ if (preedit_ret) { FrameMgrPutToken (fm, preedit_ret->attribute_id); FrameMgrPutToken (fm, preedit_ret->value_length); FrameMgrPutToken (fm, preedit_ret->value); } /*endif*/ if (status_ret) { FrameMgrPutToken (fm, status_ret->attribute_id); FrameMgrPutToken (fm, status_ret->value_length); FrameMgrPutToken (fm, status_ret->value); } /*endif*/ _Xi18nSendMessage (ims, connect_id, XIM_GET_IC_VALUES_REPLY, 0, reply, total_size); XFree (reply); XFree (attrID_list); for (i = 0; i < (int) getic->ic_attr_num; i++) { if (getic->ic_attr[i].name) XFree (getic->ic_attr[i].name); /*endif*/ if (getic->ic_attr[i].value) XFree (getic->ic_attr[i].value); /*endif*/ } /*endfor*/ for (i = 0; i < (int) getic->preedit_attr_num; i++) { if (getic->preedit_attr[i].name) XFree (getic->preedit_attr[i].name); /*endif*/ if (getic->preedit_attr[i].value) XFree (getic->preedit_attr[i].value); /*endif*/ } /*endfor*/ for (i = 0; i < (int) getic->status_attr_num; i++) { if (getic->status_attr[i].name) XFree (getic->status_attr[i].name); /*endif*/ if (getic->status_attr[i].value) XFree (getic->status_attr[i].value); /*endif*/ } /*endfor*/ if (preedit_ret) { XFree (preedit_ret->value); XFree (preedit_ret); } /*endif*/ if (status_ret) { XFree (status_ret->value); XFree (status_ret); } /*endif*/ FrameMgrFree (fm); } ibus-1.5.11/util/IMdkit/IMConn.c0000644000000000000000000001020212551654124013055 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include #include "IMdkit.h" #include #define Va_start(a,b) va_start(a,b) static void _IMCountVaList(va_list var, int *total_count) { char *attr; *total_count = 0; for (attr = va_arg (var, char*); attr; attr = va_arg (var, char*)) { (void)va_arg (var, XIMArg *); ++(*total_count); } /*endfor*/ } static void _IMVaToNestedList(va_list var, int max_count, XIMArg **args_return) { XIMArg *args; char *attr; if (max_count <= 0) { *args_return = (XIMArg *) NULL; return; } /*endif*/ args = (XIMArg *) malloc ((unsigned) (max_count + 1)*sizeof (XIMArg)); *args_return = args; if (!args) return; /*endif*/ for (attr = va_arg (var, char*); attr; attr = va_arg (var, char *)) { args->name = attr; args->value = va_arg (var, XPointer); args++; } /*endfor*/ args->name = (char*)NULL; } static char *_FindModifiers (XIMArg *args) { char *modifiers; while (args->name) { if (strcmp (args->name, IMModifiers) == 0) { modifiers = args->value; return modifiers; } else { args++; } /*endif*/ } /*endwhile*/ return NULL; } XIMS _GetIMS (char *modifiers) { XIMS ims; extern IMMethodsRec Xi18n_im_methods; if ((ims = (XIMS) malloc (sizeof (XIMProtocolRec))) == (XIMS) NULL) return ((XIMS) NULL); /*endif*/ memset ((void *) ims, 0, sizeof (XIMProtocolRec)); if (modifiers == NULL || modifiers[0] == '\0' || strcmp (modifiers, "Xi18n") == 0) { ims->methods = &Xi18n_im_methods; return ims; } /*endif*/ XFree (ims); return (XIMS) NULL; } XIMS IMOpenIM (Display *display, ...) { va_list var; int total_count; XIMArg *args; XIMS ims; char *modifiers; Status ret; Va_start (var, display); _IMCountVaList (var, &total_count); va_end (var); Va_start (var, display); _IMVaToNestedList (var, total_count, &args); va_end (var); modifiers = _FindModifiers (args); ims = _GetIMS (modifiers); if (ims == (XIMS) NULL) return (XIMS) NULL; /*endif*/ ims->core.display = display; ims->protocol = (*ims->methods->setup) (display, args); XFree (args); if (ims->protocol == (void *) NULL) { XFree (ims); return (XIMS) NULL; } /*endif*/ ret = (ims->methods->openIM) (ims); if (ret == False) { XFree (ims); return (XIMS) NULL; } /*endif*/ return (XIMS) ims; } Status IMCloseIM (XIMS ims) { (ims->methods->closeIM) (ims); XFree (ims); return True; } ibus-1.5.11/util/IMdkit/IMValues.c0000644000000000000000000000644512551654124013435 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include "IMdkit.h" #include #define Va_start(a,b) va_start(a,b) static void _IMCountVaList (va_list var, int *total_count) { char *attr; *total_count = 0; for (attr = va_arg (var, char *); attr; attr = va_arg (var, char *)) { (void)va_arg (var, XIMArg *); ++(*total_count); } /*endfor*/ } static void _IMVaToNestedList (va_list var, int max_count, XIMArg **args_return) { XIMArg *args; char *attr; if (max_count <= 0) { *args_return = (XIMArg *) NULL; return; } /*endif*/ args = (XIMArg *) malloc ((unsigned) (max_count + 1)*sizeof (XIMArg)); *args_return = args; if (!args) return; /*endif*/ for (attr = va_arg (var, char *); attr; attr = va_arg (var, char *)) { args->name = attr; args->value = va_arg (var, XPointer); args++; } /*endfor*/ args->name = (char *) NULL; } char *IMGetIMValues (XIMS ims, ...) { va_list var; int total_count; XIMArg *args; char *ret; Va_start (var, ims); _IMCountVaList (var, &total_count); va_end (var); Va_start (var, ims); _IMVaToNestedList (var, total_count, &args); va_end (var); ret = (*ims->methods->getIMValues) (ims, args); if (args) XFree ((char *) args); /*endif*/ return ret; } char *IMSetIMValues (XIMS ims, ...) { va_list var; int total_count; XIMArg *args; char *ret; Va_start (var, ims); _IMCountVaList (var, &total_count); va_end (var); Va_start (var, ims); _IMVaToNestedList (var, total_count, &args); va_end (var); ret = (*ims->methods->setIMValues) (ims, args); if (args) XFree ((char *) args); /*endif*/ return ret; } ibus-1.5.11/util/IMdkit/IMdkit.h0000644000000000000000000001037412551654124013132 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef _IMdkit_h #define _IMdkit_h #include #ifdef __cplusplus extern "C" { #endif /* IM Attributes Name */ #define IMModifiers "modifiers" #define IMServerWindow "serverWindow" #define IMServerName "serverName" #define IMServerTransport "serverTransport" #define IMLocale "locale" #define IMInputStyles "inputStyles" #define IMProtocolHandler "protocolHandler" #define IMOnKeysList "onKeysList" #define IMOffKeysList "offKeysList" #define IMEncodingList "encodingList" #define IMFilterEventMask "filterEventMask" #define IMProtocolDepend "protocolDepend" /* Masks for IM Attributes Name */ #define I18N_IMSERVER_WIN 0x0001 /* IMServerWindow */ #define I18N_IM_NAME 0x0002 /* IMServerName */ #define I18N_IM_LOCALE 0x0004 /* IMLocale */ #define I18N_IM_ADDRESS 0x0008 /* IMServerTransport */ #define I18N_INPUT_STYLES 0x0010 /* IMInputStyles */ #define I18N_ON_KEYS 0x0020 /* IMOnKeysList */ #define I18N_OFF_KEYS 0x0040 /* IMOffKeysList */ #define I18N_IM_HANDLER 0x0080 /* IMProtocolHandler */ #define I18N_ENCODINGS 0x0100 /* IMEncodingList */ #define I18N_FILTERMASK 0x0200 /* IMFilterEventMask */ #define I18N_PROTO_DEPEND 0x0400 /* IMProtoDepend */ typedef struct { char *name; XPointer value; } XIMArg; typedef struct { CARD32 keysym; CARD32 modifier; CARD32 modifier_mask; } XIMTriggerKey; typedef struct { unsigned short count_keys; XIMTriggerKey *keylist; } XIMTriggerKeys; typedef char *XIMEncoding; typedef struct { unsigned short count_encodings; XIMEncoding *supported_encodings; } XIMEncodings; typedef struct _XIMS *XIMS; typedef struct { void* (*setup) (Display *, XIMArg *); Status (*openIM) (XIMS); Status (*closeIM) (XIMS); char* (*setIMValues) (XIMS, XIMArg *); char* (*getIMValues) (XIMS, XIMArg *); Status (*forwardEvent) (XIMS, XPointer); Status (*commitString) (XIMS, XPointer); int (*callCallback) (XIMS, XPointer); int (*preeditStart) (XIMS, XPointer); int (*preeditEnd) (XIMS, XPointer); int (*syncXlib) (XIMS, XPointer); } IMMethodsRec, *IMMethods; typedef struct { Display *display; int screen; } IMCoreRec, *IMCore; typedef struct _XIMS { IMMethods methods; IMCoreRec core; Bool sync; void *protocol; } XIMProtocolRec; /* * X function declarations. */ extern XIMS IMOpenIM (Display *, ...); extern Status IMCloseIM (XIMS); extern char *IMSetIMValues (XIMS, ...); extern char *IMGetIMValues (XIMS, ...); void IMForwardEvent (XIMS, XPointer); void IMCommitString (XIMS, XPointer); int IMCallCallback (XIMS, XPointer); int IMPreeditStart (XIMS, XPointer); int IMPreeditEnd (XIMS, XPointer); int IMSyncXlib (XIMS, XPointer); #ifdef __cplusplus } #endif #endif /* IMdkit_h */ ibus-1.5.11/util/IMdkit/XimProto.h0000644000000000000000000001416112551654124013530 00000000000000/* $XConsortium: XimProto.h,v 1.2 94/01/20 18:02:24 rws Exp $ */ /****************************************************************** Copyright 1992, 1993, 1994 by FUJITSU LIMITED Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FUJITSU LIMITED not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FUJITSU LIMITED makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Takashi Fujiwara FUJITSU LIMITED fujiwara@a80.tech.yk.fujitsu.co.jp This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef _XIMPROTO_H #define _XIMPROTO_H /* * Default Preconnection selection target */ #define XIM_SERVERS "XIM_SERVERS" #define XIM_LOCALES "LOCALES" #define XIM_TRANSPORT "TRANSPORT" /* * categories in XIM_SERVERS */ #define XIM_SERVER_CATEGORY "@server=" #define XIM_LOCAL_CATEGORY "@locale=" #define XIM_TRANSPORT_CATEGORY "@transport=" /* * Xim implementation revision */ #define PROTOCOLMAJORVERSION 0 #define PROTOCOLMINORVERSION 0 /* * Major Protocol number */ #define XIM_CONNECT 1 #define XIM_CONNECT_REPLY 2 #define XIM_DISCONNECT 3 #define XIM_DISCONNECT_REPLY 4 #define XIM_AUTH_REQUIRED 10 #define XIM_AUTH_REPLY 11 #define XIM_AUTH_NEXT 12 #define XIM_AUTH_SETUP 13 #define XIM_AUTH_NG 14 #define XIM_ERROR 20 #define XIM_OPEN 30 #define XIM_OPEN_REPLY 31 #define XIM_CLOSE 32 #define XIM_CLOSE_REPLY 33 #define XIM_REGISTER_TRIGGERKEYS 34 #define XIM_TRIGGER_NOTIFY 35 #define XIM_TRIGGER_NOTIFY_REPLY 36 #define XIM_SET_EVENT_MASK 37 #define XIM_ENCODING_NEGOTIATION 38 #define XIM_ENCODING_NEGOTIATION_REPLY 39 #define XIM_QUERY_EXTENSION 40 #define XIM_QUERY_EXTENSION_REPLY 41 #define XIM_SET_IM_VALUES 42 #define XIM_SET_IM_VALUES_REPLY 43 #define XIM_GET_IM_VALUES 44 #define XIM_GET_IM_VALUES_REPLY 45 #define XIM_CREATE_IC 50 #define XIM_CREATE_IC_REPLY 51 #define XIM_DESTROY_IC 52 #define XIM_DESTROY_IC_REPLY 53 #define XIM_SET_IC_VALUES 54 #define XIM_SET_IC_VALUES_REPLY 55 #define XIM_GET_IC_VALUES 56 #define XIM_GET_IC_VALUES_REPLY 57 #define XIM_SET_IC_FOCUS 58 #define XIM_UNSET_IC_FOCUS 59 #define XIM_FORWARD_EVENT 60 #define XIM_SYNC 61 #define XIM_SYNC_REPLY 62 #define XIM_COMMIT 63 #define XIM_RESET_IC 64 #define XIM_RESET_IC_REPLY 65 #define XIM_GEOMETRY 70 #define XIM_STR_CONVERSION 71 #define XIM_STR_CONVERSION_REPLY 72 #define XIM_PREEDIT_START 73 #define XIM_PREEDIT_START_REPLY 74 #define XIM_PREEDIT_DRAW 75 #define XIM_PREEDIT_CARET 76 #define XIM_PREEDIT_CARET_REPLY 77 #define XIM_PREEDIT_DONE 78 #define XIM_STATUS_START 79 #define XIM_STATUS_DRAW 80 #define XIM_STATUS_DONE 81 /* * values for the flag of XIM_ERROR */ #define XIM_IMID_VALID 0x0001 #define XIM_ICID_VALID 0x0002 /* * XIM Error Code */ #define XIM_BadAlloc 1 #define XIM_BadStyle 2 #define XIM_BadClientWindow 3 #define XIM_BadFocusWindow 4 #define XIM_BadArea 5 #define XIM_BadSpotLocation 6 #define XIM_BadColormap 7 #define XIM_BadAtom 8 #define XIM_BadPixel 9 #define XIM_BadPixmap 10 #define XIM_BadName 11 #define XIM_BadCursor 12 #define XIM_BadProtocol 13 #define XIM_BadForeground 14 #define XIM_BadBackground 15 #define XIM_LocaleNotSupported 16 #define XIM_BadSomething 999 /* * byte order */ #define BIGENDIAN (CARD8) 0x42 /* MSB first */ #define LITTLEENDIAN (CARD8) 0x6c /* LSB first */ /* * values for the type of XIMATTR & XICATTR */ #define XimType_SeparatorOfNestedList 0 #define XimType_CARD8 1 #define XimType_CARD16 2 #define XimType_CARD32 3 #define XimType_STRING8 4 #define XimType_Window 5 #define XimType_XIMStyles 10 #define XimType_XRectangle 11 #define XimType_XPoint 12 #define XimType_XFontSet 13 #define XimType_XIMOptions 14 #define XimType_XIMHotKeyTriggers 15 #define XimType_XIMHotKeyState 16 #define XimType_XIMStringConversion 17 #define XimType_XIMValuesList 18 #define XimType_NEST 0x7FFF /* * values for the category of XIM_ENCODING_NEGOTIATON_REPLY */ #define XIM_Encoding_NameCategory 0 #define XIM_Encoding_DetailCategory 1 /* * value for the index of XIM_ENCODING_NEGOTIATON_REPLY */ #define XIM_Default_Encoding_IDX -1 /* * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT */ #define XimSYNCHRONUS 0x0001 #define XimLookupChars 0x0002 #define XimLookupKeySym 0x0004 #define XimLookupBoth 0x0006 /* * request packet header size */ #define XIM_HEADER_SIZE \ sizeof(CARD8) /* sizeof mejor-opcode */ \ + sizeof(CARD8) /* sizeof minor-opcode */ \ + sizeof(INT16) /* sizeof length */ /* * Client Message data size */ #define XIM_CM_DATA_SIZE 20 /* * XIM data structure */ typedef CARD16 BITMASK16; typedef CARD32 BITMASK32; typedef CARD32 EVENTMASK; typedef CARD16 XIMID; /* Input Method ID */ typedef CARD16 XICID; /* Input Context ID */ /* * Padding macro */ #define XIM_PAD(length) ((4 - ((length) % 4)) % 4) #define XIM_SET_PAD(ptr, length) \ { \ register int Counter = XIM_PAD((int)length); \ if (Counter) { \ register char *Ptr = (char *)(ptr) + (length); \ length += Counter; \ for (; Counter; --Counter, ++Ptr) \ *Ptr = '\0'; \ } \ } #endif ibus-1.5.11/util/IMdkit/Xi18nX.h0000644000000000000000000000365412551654124013013 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #ifndef _Xi18nTrX_h #define _Xi18nTrX_h #define _XIM_PROTOCOL "_XIM_PROTOCOL" #define _XIM_XCONNECT "_XIM_XCONNECT" #define XCM_DATA_LIMIT 20 typedef struct _XClient { Window client_win; /* client window */ Window accept_win; /* accept window */ } XClient; typedef struct { Atom xim_request; Atom connect_request; } XSpecRec; #endif ibus-1.5.11/util/IMdkit/Xtrans.h0000644000000000000000000002336612551654124013235 00000000000000/* $XConsortium: Xtrans.h,v 1.24 94/05/02 10:45:32 mor Exp $ */ /* Copyright (c) 1993, 1994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. */ /* Copyright (c) 1993, 1994 NCR Corporation - Dayton, Ohio, USA * * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name NCR not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. NCR makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN * NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _XTRANS_H_ #define _XTRANS_H_ #include #include /* * Set the functions names according to where this code is being compiled. */ #ifdef X11_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _X11Trans##func #else #define TRANS(func) _X11Trans/**/func #endif #endif /* X11_t */ #ifdef XSERV_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _XSERVTrans##func #else #define TRANS(func) _XSERVTrans/**/func #endif #define X11_t #endif /* X11_t */ #ifdef XIM_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _XimdXTrans##func #else #define TRANS(func) _XimdXTrans/**/func #endif #endif /* XIM_t */ #ifdef FS_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _FSTrans##func #else #define TRANS(func) _FSTrans/**/func #endif #endif /* FS_t */ #ifdef FONT_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _FontTrans##func #else #define TRANS(func) _FontTrans/**/func #endif #endif /* FONT_t */ #ifdef ICE_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _IceTrans##func #else #define TRANS(func) _IceTrans/**/func #endif #endif /* ICE_t */ #ifdef TEST_t #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _TESTTrans##func #else #define TRANS(func) _TESTTrans/**/func #endif #endif /* TEST_t */ #if !defined(TRANS) #if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) #define TRANS(func) _XTrans##func #else #define TRANS(func) _XTrans/**/func #endif #endif /* !TRANS */ /* * Create a single address structure that can be used wherever * an address structure is needed. struct sockaddr is not big enough * to hold a sockadd_un, so we create this definition to have a single * structure that is big enough for all the structures we might need. * * This structure needs to be independent of the socket/TLI interface used. */ #define XTRANS_MAX_ADDR_LEN 128 /* large enough to hold sun_path */ typedef struct { unsigned char addr[XTRANS_MAX_ADDR_LEN]; } Xtransaddr; #ifdef LONG64 typedef int BytesReadable_t; #else typedef long BytesReadable_t; #endif #if defined(WIN32) || (defined(USG) && !defined(CRAY) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)) /* * TRANS(Readv) and TRANS(Writev) use struct iovec, normally found * in Berkeley systems in . See the readv(2) and writev(2) * manual pages for details. */ struct iovec { caddr_t iov_base; int iov_len; }; #else #include #endif typedef struct _XtransConnInfo *XtransConnInfo; /* * Transport Option definitions */ #define TRANS_NONBLOCKING 1 #define TRANS_CLOSEONEXEC 2 /* * Return values of Connect (0 is success) */ #define TRANS_CONNECT_FAILED -1 #define TRANS_TRY_CONNECT_AGAIN -2 /* * Return values of Accept (0 is success) */ #define TRANS_ACCEPT_BAD_MALLOC -1 #define TRANS_ACCEPT_FAILED -2 #define TRANS_ACCEPT_MISC_ERROR -3 /* * ResetListener return values */ #define TRANS_RESET_NOOP 1 #define TRANS_RESET_NEW_FD 2 #define TRANS_RESET_FAILURE 3 /* * Function prototypes for the exposed interface */ #ifdef TRANS_CLIENT XtransConnInfo TRANS(OpenCOTSClient)( #if NeedFunctionPrototypes char * /* address */ #endif ); #endif /* TRANS_CLIENT */ #ifdef TRANS_SERVER XtransConnInfo TRANS(OpenCOTSServer)( #if NeedFunctionPrototypes char * /* address */ #endif ); #endif /* TRANS_SERVER */ #ifdef TRANS_CLIENT XtransConnInfo TRANS(OpenCLTSClient)( #if NeedFunctionPrototypes char * /* address */ #endif ); #endif /* TRANS_CLIENT */ #ifdef TRANS_SERVER XtransConnInfo TRANS(OpenCLTSServer)( #if NeedFunctionPrototypes char * /* address */ #endif ); #endif /* TRANS_SERVER */ #ifdef TRANS_REOPEN XtransConnInfo TRANS(ReopenCOTSServer)( #if NeedFunctionPrototypes int, /* trans_id */ int, /* fd */ char * /* port */ #endif ); XtransConnInfo TRANS(ReopenCLTSServer)( #if NeedFunctionPrototypes int, /* trans_id */ int, /* fd */ char * /* port */ #endif ); int TRANS(GetReopenInfo)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ int *, /* trans_id */ int *, /* fd */ char ** /* port */ #endif ); #endif /* TRANS_REOPEN */ int TRANS(SetOption)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ int, /* option */ int /* arg */ #endif ); #ifdef TRANS_SERVER int TRANS(CreateListener)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ char * /* port */ #endif ); int TRANS(ResetListener)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); XtransConnInfo TRANS(Accept)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ int * /* status */ #endif ); #endif /* TRANS_SERVER */ #ifdef TRANS_CLIENT int TRANS(Connect)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ char * /* address */ #endif ); #endif /* TRANS_CLIENT */ int TRANS(BytesReadable)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ BytesReadable_t * /* pend */ #endif ); int TRANS(Read)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ char *, /* buf */ int /* size */ #endif ); int TRANS(Write)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ char *, /* buf */ int /* size */ #endif ); int TRANS(Readv)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ struct iovec *, /* buf */ int /* size */ #endif ); int TRANS(Writev)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ struct iovec *, /* buf */ int /* size */ #endif ); int TRANS(Disconnect)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); int TRANS(Close)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); int TRANS(CloseForCloning)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); int TRANS(IsLocal)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); int TRANS(GetMyAddr)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ int *, /* familyp */ int *, /* addrlenp */ Xtransaddr ** /* addrp */ #endif ); int TRANS(GetPeerAddr)( #if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ int *, /* familyp */ int *, /* addrlenp */ Xtransaddr ** /* addrp */ #endif ); int TRANS(GetConnectionNumber)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); #ifdef TRANS_SERVER int TRANS(MakeAllCOTSServerListeners)( #if NeedFunctionPrototypes char *, /* port */ int *, /* partial */ int *, /* count_ret */ XtransConnInfo ** /* ciptrs_ret */ #endif ); int TRANS(MakeAllCLTSServerListeners)( #if NeedFunctionPrototypes char *, /* port */ int *, /* partial */ int *, /* count_ret */ XtransConnInfo ** /* ciptrs_ret */ #endif ); #endif /* TRANS_SERVER */ /* * Function Prototypes for Utility Functions. */ #ifdef X11_t int TRANS(ConvertAddress)( #if NeedFunctionPrototypes int *, /* familyp */ int *, /* addrlenp */ Xtransaddr * /* addrp */ #endif ); #endif /* X11_t */ #ifdef ICE_t char * TRANS(GetMyNetworkId)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); char * TRANS(GetPeerNetworkId)( #if NeedFunctionPrototypes XtransConnInfo /* ciptr */ #endif ); #endif /* ICE_t */ #endif /* _XTRANS_H_ */ ibus-1.5.11/util/IMdkit/i18nOffsetCache.c0000644000000000000000000000571512551654124014621 00000000000000/* * Copyright (C) 2014 Peng Huang * Copyright (C) 2014 Red Hat, Inc. * * Permission to use, copy, modify, distribute, and sell this * software and its documentation for any purpose is hereby granted * without fee, provided that the above copyright notice appear in * all copies and that both that copyright notice and this permission * notice appear in supporting documentation, and that the name of * the copyright holders not be used in advertising or publicity * pertaining to distribution of the software without specific, * written prior permission. The copyright holders make no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF * THIS SOFTWARE. * * Author: Klemens Baum */ #include #include #include "IMdkit.h" #include "Xi18n.h" /* * The XIM specification does not limit the number of window properties * that can be used to transfer data, but Xlib uses the atom strings * _client0 through _client20. * * So use that as a sensible initial size for the offset cache. */ #define INITIAL_OFFSET_CACHE_CAPACITY 21 #define OFFSET_CACHE_GROWTH_FACTOR 2 void _Xi18nInitOffsetCache (Xi18nOffsetCache *offset_cache) { offset_cache->size = 0; offset_cache->capacity = INITIAL_OFFSET_CACHE_CAPACITY; offset_cache->data = (Xi18nAtomOffsetPair *) malloc ( INITIAL_OFFSET_CACHE_CAPACITY * sizeof (Xi18nAtomOffsetPair)); } unsigned long _Xi18nLookupPropertyOffset (Xi18nOffsetCache *offset_cache, Atom key) { Xi18nAtomOffsetPair *data = offset_cache->data; size_t i; for (i = 0; i < offset_cache->size; ++i) { if (data[i].key == key) { return data[i].offset; } } return 0; } void _Xi18nSetPropertyOffset (Xi18nOffsetCache *offset_cache, Atom key, unsigned long offset) { Xi18nAtomOffsetPair *data = offset_cache->data; size_t i; for (i = 0; i < offset_cache->size; ++i) { if (data[i].key == key) { data[i].offset = offset; return; } } if (++offset_cache->size > offset_cache->capacity) { offset_cache->capacity *= OFFSET_CACHE_GROWTH_FACTOR; offset_cache->data = data = (Xi18nAtomOffsetPair *) realloc (data, offset_cache->capacity * sizeof (Xi18nAtomOffsetPair)); } data[i].key = key; data[i].offset = offset; } ibus-1.5.11/util/IMdkit/Makefile.in0000644000000000000000000011365312551654262013654 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = util/IMdkit ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libIMdkit_la_LIBADD = am_libIMdkit_la_OBJECTS = libIMdkit_la-FrameMgr.lo \ libIMdkit_la-i18nAttr.lo libIMdkit_la-i18nClbk.lo \ libIMdkit_la-i18nIc.lo libIMdkit_la-i18nIMProto.lo \ libIMdkit_la-i18nMethod.lo libIMdkit_la-i18nOffsetCache.lo \ libIMdkit_la-i18nPtHdr.lo libIMdkit_la-i18nUtil.lo \ libIMdkit_la-i18nX.lo libIMdkit_la-IMConn.lo \ libIMdkit_la-IMMethod.lo libIMdkit_la-IMValues.lo libIMdkit_la_OBJECTS = $(am_libIMdkit_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libIMdkit_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libIMdkit_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libIMdkit_la_SOURCES) DIST_SOURCES = $(libIMdkit_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libIMdkit.la libIMdkit_la_SOURCES = \ FrameMgr.c \ i18nAttr.c \ i18nClbk.c \ i18nIc.c \ i18nIMProto.c \ i18nMethod.c \ i18nOffsetCache.c \ i18nPtHdr.c \ i18nUtil.c \ i18nX.c \ IMConn.c \ IMMethod.c \ IMValues.c \ $(NULL) noinst_HEADERS = \ FrameMgr.h \ IMdkit.h \ Xi18n.h \ Xi18nX.h \ XimFunc.h \ XimProto.h \ Xtrans.h \ $(NULL) libIMdkit_la_CFLAGS = \ @X11_CFLAGS@ \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/IMdkit/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/IMdkit/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libIMdkit.la: $(libIMdkit_la_OBJECTS) $(libIMdkit_la_DEPENDENCIES) $(EXTRA_libIMdkit_la_DEPENDENCIES) $(AM_V_CCLD)$(libIMdkit_la_LINK) $(libIMdkit_la_OBJECTS) $(libIMdkit_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-FrameMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMConn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMMethod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMValues.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nAttr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nClbk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nIMProto.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nIc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nMethod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nUtil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nX.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libIMdkit_la-FrameMgr.lo: FrameMgr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-FrameMgr.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-FrameMgr.Tpo -c -o libIMdkit_la-FrameMgr.lo `test -f 'FrameMgr.c' || echo '$(srcdir)/'`FrameMgr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-FrameMgr.Tpo $(DEPDIR)/libIMdkit_la-FrameMgr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='FrameMgr.c' object='libIMdkit_la-FrameMgr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-FrameMgr.lo `test -f 'FrameMgr.c' || echo '$(srcdir)/'`FrameMgr.c libIMdkit_la-i18nAttr.lo: i18nAttr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nAttr.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nAttr.Tpo -c -o libIMdkit_la-i18nAttr.lo `test -f 'i18nAttr.c' || echo '$(srcdir)/'`i18nAttr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nAttr.Tpo $(DEPDIR)/libIMdkit_la-i18nAttr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nAttr.c' object='libIMdkit_la-i18nAttr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nAttr.lo `test -f 'i18nAttr.c' || echo '$(srcdir)/'`i18nAttr.c libIMdkit_la-i18nClbk.lo: i18nClbk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nClbk.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nClbk.Tpo -c -o libIMdkit_la-i18nClbk.lo `test -f 'i18nClbk.c' || echo '$(srcdir)/'`i18nClbk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nClbk.Tpo $(DEPDIR)/libIMdkit_la-i18nClbk.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nClbk.c' object='libIMdkit_la-i18nClbk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nClbk.lo `test -f 'i18nClbk.c' || echo '$(srcdir)/'`i18nClbk.c libIMdkit_la-i18nIc.lo: i18nIc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nIc.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nIc.Tpo -c -o libIMdkit_la-i18nIc.lo `test -f 'i18nIc.c' || echo '$(srcdir)/'`i18nIc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nIc.Tpo $(DEPDIR)/libIMdkit_la-i18nIc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nIc.c' object='libIMdkit_la-i18nIc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nIc.lo `test -f 'i18nIc.c' || echo '$(srcdir)/'`i18nIc.c libIMdkit_la-i18nIMProto.lo: i18nIMProto.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nIMProto.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nIMProto.Tpo -c -o libIMdkit_la-i18nIMProto.lo `test -f 'i18nIMProto.c' || echo '$(srcdir)/'`i18nIMProto.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nIMProto.Tpo $(DEPDIR)/libIMdkit_la-i18nIMProto.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nIMProto.c' object='libIMdkit_la-i18nIMProto.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nIMProto.lo `test -f 'i18nIMProto.c' || echo '$(srcdir)/'`i18nIMProto.c libIMdkit_la-i18nMethod.lo: i18nMethod.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nMethod.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nMethod.Tpo -c -o libIMdkit_la-i18nMethod.lo `test -f 'i18nMethod.c' || echo '$(srcdir)/'`i18nMethod.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nMethod.Tpo $(DEPDIR)/libIMdkit_la-i18nMethod.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nMethod.c' object='libIMdkit_la-i18nMethod.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nMethod.lo `test -f 'i18nMethod.c' || echo '$(srcdir)/'`i18nMethod.c libIMdkit_la-i18nOffsetCache.lo: i18nOffsetCache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nOffsetCache.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nOffsetCache.Tpo -c -o libIMdkit_la-i18nOffsetCache.lo `test -f 'i18nOffsetCache.c' || echo '$(srcdir)/'`i18nOffsetCache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nOffsetCache.Tpo $(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nOffsetCache.c' object='libIMdkit_la-i18nOffsetCache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nOffsetCache.lo `test -f 'i18nOffsetCache.c' || echo '$(srcdir)/'`i18nOffsetCache.c libIMdkit_la-i18nPtHdr.lo: i18nPtHdr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nPtHdr.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nPtHdr.Tpo -c -o libIMdkit_la-i18nPtHdr.lo `test -f 'i18nPtHdr.c' || echo '$(srcdir)/'`i18nPtHdr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nPtHdr.Tpo $(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nPtHdr.c' object='libIMdkit_la-i18nPtHdr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nPtHdr.lo `test -f 'i18nPtHdr.c' || echo '$(srcdir)/'`i18nPtHdr.c libIMdkit_la-i18nUtil.lo: i18nUtil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nUtil.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nUtil.Tpo -c -o libIMdkit_la-i18nUtil.lo `test -f 'i18nUtil.c' || echo '$(srcdir)/'`i18nUtil.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nUtil.Tpo $(DEPDIR)/libIMdkit_la-i18nUtil.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nUtil.c' object='libIMdkit_la-i18nUtil.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nUtil.lo `test -f 'i18nUtil.c' || echo '$(srcdir)/'`i18nUtil.c libIMdkit_la-i18nX.lo: i18nX.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-i18nX.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-i18nX.Tpo -c -o libIMdkit_la-i18nX.lo `test -f 'i18nX.c' || echo '$(srcdir)/'`i18nX.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-i18nX.Tpo $(DEPDIR)/libIMdkit_la-i18nX.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18nX.c' object='libIMdkit_la-i18nX.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-i18nX.lo `test -f 'i18nX.c' || echo '$(srcdir)/'`i18nX.c libIMdkit_la-IMConn.lo: IMConn.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-IMConn.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-IMConn.Tpo -c -o libIMdkit_la-IMConn.lo `test -f 'IMConn.c' || echo '$(srcdir)/'`IMConn.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-IMConn.Tpo $(DEPDIR)/libIMdkit_la-IMConn.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='IMConn.c' object='libIMdkit_la-IMConn.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-IMConn.lo `test -f 'IMConn.c' || echo '$(srcdir)/'`IMConn.c libIMdkit_la-IMMethod.lo: IMMethod.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-IMMethod.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-IMMethod.Tpo -c -o libIMdkit_la-IMMethod.lo `test -f 'IMMethod.c' || echo '$(srcdir)/'`IMMethod.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-IMMethod.Tpo $(DEPDIR)/libIMdkit_la-IMMethod.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='IMMethod.c' object='libIMdkit_la-IMMethod.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-IMMethod.lo `test -f 'IMMethod.c' || echo '$(srcdir)/'`IMMethod.c libIMdkit_la-IMValues.lo: IMValues.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -MT libIMdkit_la-IMValues.lo -MD -MP -MF $(DEPDIR)/libIMdkit_la-IMValues.Tpo -c -o libIMdkit_la-IMValues.lo `test -f 'IMValues.c' || echo '$(srcdir)/'`IMValues.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libIMdkit_la-IMValues.Tpo $(DEPDIR)/libIMdkit_la-IMValues.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='IMValues.c' object='libIMdkit_la-IMValues.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIMdkit_la_CFLAGS) $(CFLAGS) -c -o libIMdkit_la-IMValues.lo `test -f 'IMValues.c' || echo '$(srcdir)/'`IMValues.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/util/IMdkit/Makefile.am0000644000000000000000000000247212551654124013634 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA noinst_LTLIBRARIES = libIMdkit.la libIMdkit_la_SOURCES = \ FrameMgr.c \ i18nAttr.c \ i18nClbk.c \ i18nIc.c \ i18nIMProto.c \ i18nMethod.c \ i18nOffsetCache.c \ i18nPtHdr.c \ i18nUtil.c \ i18nX.c \ IMConn.c \ IMMethod.c \ IMValues.c \ $(NULL) noinst_HEADERS = \ FrameMgr.h \ IMdkit.h \ Xi18n.h \ Xi18nX.h \ XimFunc.h \ XimProto.h \ Xtrans.h \ $(NULL) libIMdkit_la_CFLAGS = \ @X11_CFLAGS@ \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/util/IMdkit/FrameMgr.c0000644000000000000000000016711712551654124013454 00000000000000/****************************************************************** Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts, All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Digital or MIT not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hiroyuki Miyamoto Digital Equipment Corporation miyamoto@jrd.dec.com This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include #include "FrameMgr.h" /* Convenient macro */ #define _UNIT(n) ((int)(n) & 0xFF) #define _NUMBER(n) (((int)(n) >> 8) & 0xFF) /* For byte swapping */ #define Swap16(p, n) ((p)->byte_swap ? \ (((n) << 8 & 0xFF00) | \ ((n) >> 8 & 0xFF) \ ) : n) #define Swap32(p, n) ((p)->byte_swap ? \ (((n) << 24 & 0xFF000000) | \ ((n) << 8 & 0xFF0000) | \ ((n) >> 8 & 0xFF00) | \ ((n) >> 24 & 0xFF) \ ) : n) #define Swap64(p, n) ((p)->byte_swap ? \ (((n) << 56 & 0xFF00000000000000) | \ ((n) << 40 & 0xFF000000000000) | \ ((n) << 24 & 0xFF0000000000) | \ ((n) << 8 & 0xFF00000000) | \ ((n) >> 8 & 0xFF000000) | \ ((n) >> 24 & 0xFF0000) | \ ((n) >> 40 & 0xFF00) | \ ((n) >> 56 & 0xFF) \ ) : n) /* Type definition */ typedef struct _Iter *Iter; typedef struct _FrameInst *FrameInst; typedef union { int num; /* For BARRAY */ FrameInst fi; /* For POINTER */ Iter iter; /* For ITER */ } ExtraDataRec, *ExtraData; typedef struct _Chain { ExtraDataRec d; int frame_no; struct _Chain *next; } ChainRec, *Chain; typedef struct _ChainMgr { Chain top; Chain tail; } ChainMgrRec, *ChainMgr; typedef struct _ChainIter { Chain cur; } ChainIterRec, *ChainIter; typedef struct _FrameIter { Iter iter; Bool counting; unsigned int counter; int end; struct _FrameIter* next; } FrameIterRec, *FrameIter; typedef struct _FrameInst { XimFrame template; ChainMgrRec cm; int cur_no; } FrameInstRec; typedef void (*IterStartWatchProc) (Iter it, void *client_data); typedef struct _Iter { XimFrame template; int max_count; Bool allow_expansion; ChainMgrRec cm; int cur_no; IterStartWatchProc start_watch_proc; void *client_data; Bool start_counter; } IterRec; typedef struct _FrameMgr { XimFrame frame; FrameInst fi; char *area; int idx; Bool byte_swap; int total_size; FrameIter iters; } FrameMgrRec; typedef union { int num; /* For BARRAY and PAD */ struct { /* For COUNTER_* */ Iter iter; Bool is_byte_len; } counter; } XimFrameTypeInfoRec, *XimFrameTypeInfo; /* Special values */ #define NO_VALUE -1 #define NO_VALID_FIELD -2 static FrameInst FrameInstInit(XimFrame frame); static void FrameInstFree(FrameInst fi); static XimFrameType FrameInstGetNextType(FrameInst fi, XimFrameTypeInfo info); static XimFrameType FrameInstPeekNextType(FrameInst fi, XimFrameTypeInfo info); static FmStatus FrameInstSetSize(FrameInst fi, int num); static FmStatus FrameInstSetIterCount(FrameInst fi, int num); static int FrameInstGetTotalSize(FrameInst fi); static void FrameInstReset(FrameInst fi); static Iter IterInit(XimFrame frame, int count); static void IterFree(Iter it); static int FrameInstGetSize(FrameInst fi); static int IterGetSize(Iter it); static XimFrameType IterGetNextType(Iter it, XimFrameTypeInfo info); static XimFrameType IterPeekNextType(Iter it, XimFrameTypeInfo info); static FmStatus IterSetSize(Iter it, int num); static FmStatus IterSetIterCount(Iter it, int num); static int IterGetTotalSize(Iter it); static void IterReset(Iter it); static Bool IterIsLoopEnd(Iter it, Bool* myself); static void IterSetStartWatch(Iter it, IterStartWatchProc proc, void* client_data); static void _IterStartWatch(Iter it, void* client_data); static ExtraData ChainMgrGetExtraData(ChainMgr cm, int frame_no); static ExtraData ChainMgrSetData(ChainMgr cm, int frame_no, ExtraDataRec data); static Bool ChainIterGetNext(ChainIter ci, int* frame_no, ExtraData d); static int _FrameInstIncrement(XimFrame frame, int count); static int _FrameInstDecrement(XimFrame frame, int count); static int _FrameInstGetItemSize(FrameInst fi, int cur_no); static Bool FrameInstIsIterLoopEnd(FrameInst fi); static FrameIter _FrameMgrAppendIter(FrameMgr fm, Iter it, int end); static FrameIter _FrameIterCounterIncr(FrameIter fitr, int i); static void _FrameMgrRemoveIter(FrameMgr fm, FrameIter it); static Bool _FrameMgrIsIterLoopEnd(FrameMgr fm); static Bool _FrameMgrProcessPadding(FrameMgr fm, FmStatus* status); #define IterGetIterCount(it) ((it)->allow_expansion ? \ NO_VALUE : (it)->max_count) #define IterFixIteration(it) ((it)->allow_expansion = False) #define IterSetStarter(it) ((it)->start_counter = True) #define ChainMgrInit(cm) (cm)->top = (cm)->tail = NULL #define ChainMgrFree(cm) \ { \ Chain tmp; \ Chain cur = (cm)->top; \ \ while (cur) \ { \ tmp = cur->next; \ Xfree (cur); \ cur = tmp; \ } \ } #define ChainIterInit(ci, cm) \ { \ (ci)->cur = (cm)->top; \ } /* ChainIterFree has nothing to do. */ #define ChainIterFree(ci) #define FrameInstIsEnd(fi) ((fi)->template[(fi)->cur_no].type == EOL) FrameMgr FrameMgrInit (XimFrame frame, char* area, Bool byte_swap) { FrameMgr fm; fm = (FrameMgr) Xmalloc (sizeof (FrameMgrRec)); fm->frame = frame; fm->fi = FrameInstInit (frame); fm->area = (char *) area; fm->idx = 0; fm->byte_swap = byte_swap; fm->total_size = NO_VALUE; fm->iters = NULL; return fm; } void FrameMgrInitWithData (FrameMgr fm, XimFrame frame, void * area, Bool byte_swap) { fm->frame = frame; fm->fi = FrameInstInit (frame); fm->area = (char *) area; fm->idx = 0; fm->byte_swap = byte_swap; fm->total_size = NO_VALUE; } void FrameMgrFree (FrameMgr fm) { FrameIter p, cur; p = fm->iters; cur = p; while (p) { p = p->next; Xfree (cur); cur = p; } /*endwhile*/ FrameInstFree (fm->fi); Xfree (fm); } FmStatus FrameMgrSetBuffer (FrameMgr fm, void* area) { if (fm->area) return FmBufExist; fm->area = (char *) area; return FmSuccess; } FmStatus _FrameMgrPutToken (FrameMgr fm, void *data, int data_size) { XimFrameType type; XimFrameTypeInfoRec info; if (fm->total_size != NO_VALUE && fm->idx >= fm->total_size) return FmNoMoreData; /*endif*/ type = FrameInstGetNextType(fm->fi, &info); if (type & COUNTER_MASK) { unsigned long input_length; if (info.counter.is_byte_len) { if ((input_length = IterGetTotalSize (info.counter.iter)) == NO_VALUE) { return FmCannotCalc; } /*endif*/ } else { if ((input_length = IterGetIterCount (info.counter.iter)) == NO_VALUE) { return FmCannotCalc; } /*endif*/ } /*endif*/ switch (type) { case COUNTER_BIT8: *(CARD8 *) (fm->area + fm->idx) = input_length; fm->idx++; break; case COUNTER_BIT16: *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, input_length); fm->idx += 2; break; case COUNTER_BIT32: *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, input_length); fm->idx += 4; break; #if defined(_NEED64BIT) case COUNTER_BIT64: *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, input_length); fm->idx += 8; break; #endif default: break; } /*endswitch*/ _FrameMgrPutToken(fm, data, data_size); return FmSuccess; } /*endif*/ switch (type) { case BIT8: if (data_size == sizeof (unsigned char)) { unsigned long num = *(unsigned char *) data; *(CARD8 *) (fm->area + fm->idx) = num; } else if (data_size == sizeof (unsigned short)) { unsigned long num = *(unsigned short *) data; *(CARD8 *) (fm->area + fm->idx) = num; } else if (data_size == sizeof (unsigned int)) { unsigned long num = *(unsigned int *) data; *(CARD8 *) (fm->area + fm->idx) = num; } else if (data_size == sizeof (unsigned long)) { unsigned long num = *(unsigned long *) data; *(CARD8 *) (fm->area + fm->idx) = num; } else { ; /* Should never be reached */ } /*endif*/ fm->idx++; return FmSuccess; case BIT16: if (data_size == sizeof (unsigned char)) { unsigned long num = *(unsigned char *) data; *(CARD16*)(fm->area + fm->idx) = Swap16 (fm, num); } else if (data_size == sizeof (unsigned short)) { unsigned long num = *(unsigned short *) data; *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num); } else if (data_size == sizeof (unsigned int)) { unsigned long num = *(unsigned int *) data; *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num); } else if (data_size == sizeof (unsigned long)) { unsigned long num = *(unsigned long *) data; *(CARD16 *) (fm->area + fm->idx) = Swap16 (fm, num); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 2; return FmSuccess; case BIT32: if (data_size == sizeof (unsigned char)) { unsigned long num = *(unsigned char *) data; *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num); } else if (data_size == sizeof (unsigned short)) { unsigned long num = *(unsigned short *) data; *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num); } else if (data_size == sizeof (unsigned int)) { unsigned long num = *(unsigned int *) data; *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num); } else if (data_size == sizeof (unsigned long)) { unsigned long num = *(unsigned long *) data; *(CARD32 *) (fm->area + fm->idx) = Swap32 (fm, num); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 4; return FmSuccess; #if defined(_NEED64BIT) case BIT64: if (data_size == sizeof (unsigned char)) { unsigned long num = *(unsigned char *) data; *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num); } else if (data_size == sizeof (unsigned short)) { unsigned long num = *(unsigned short *) data; *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num); } else if (data_size == sizeof (unsigned int)) { unsigned long num = *(unsigned int *) data; *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num); } else if (data_size == sizeof (unsigned long)) { unsigned long num = *(unsigned long *) data; *(CARD64 *) (fm->area + fm->idx) = Swap64 (fm, num); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 4; return FmSuccess; #endif case BARRAY: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ if (info.num > 0) { bcopy (*(char **) data, fm->area + fm->idx, info.num); fm->idx += info.num; } /*endif*/ return FmSuccess; case PADDING: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ fm->idx += info.num; return _FrameMgrPutToken(fm, data, data_size); case ITER: return FmInvalidCall; case EOL: return FmEOD; default: break; } /*endswitch*/ return (FmStatus) NULL; /* Should never be reached */ } FmStatus _FrameMgrGetToken (FrameMgr fm , void* data, int data_size) { XimFrameType type; static XimFrameTypeInfoRec info; /* memory */ FrameIter fitr; if (fm->total_size != NO_VALUE && fm->idx >= fm->total_size) return FmNoMoreData; /*endif*/ type = FrameInstGetNextType(fm->fi, &info); if (type & COUNTER_MASK) { int end=0; FrameIter client_data; type &= ~COUNTER_MASK; switch (type) { case BIT8: end = *(CARD8 *) (fm->area + fm->idx); break; case BIT16: end = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx)); break; case BIT32: end = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx)); break; #if defined(_NEED64BIT) case BIT64: end = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx)); break; #endif default: break; } /*endswitch*/ if ((client_data = _FrameMgrAppendIter (fm, info.counter.iter, end))) { IterSetStarter (info.counter.iter); IterSetStartWatch (info.counter.iter, _IterStartWatch, (void *) client_data); } /*endif*/ } /*endif*/ type &= ~COUNTER_MASK; switch (type) { case BIT8: if (data_size == sizeof (unsigned char)) { *(unsigned char*) data = *(CARD8 *) (fm->area + fm->idx); } else if (data_size == sizeof (unsigned short)) { *(unsigned short *) data = *(CARD8 *) (fm->area + fm->idx); } else if (data_size == sizeof (unsigned int)) { *(unsigned int *) data = *(CARD8 *) (fm->area + fm->idx); } else if (data_size == sizeof (unsigned long)) { *(unsigned long *) data = *(CARD8 *) (fm->area + fm->idx); } else { ; /* Should never reached */ } /*endif*/ fm->idx++; if ((fitr = _FrameIterCounterIncr (fm->iters, 1/*BIT8*/))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ return FmSuccess; case BIT16: if (data_size == sizeof (unsigned char)) { *(unsigned char *) data = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned short)) { *(unsigned short *) data = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned int)) { *(unsigned int *) data = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned long)) { *(unsigned long *) data = Swap16 (fm, *(CARD16 *) (fm->area + fm->idx)); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 2; if ((fitr = _FrameIterCounterIncr (fm->iters, 2/*BIT16*/))) _FrameMgrRemoveIter(fm, fitr); /*endif*/ return FmSuccess; case BIT32: if (data_size == sizeof (unsigned char)) { *(unsigned char *) data = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned short)) { *(unsigned short *) data = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned int)) { *(unsigned int *) data = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned long)) { *(unsigned long *) data = Swap32 (fm, *(CARD32 *) (fm->area + fm->idx)); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 4; if ((fitr = _FrameIterCounterIncr (fm->iters, 4/*BIT32*/))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ return FmSuccess; #if defined(_NEED64BIT) case BIT64: if (data_size == sizeof (unsigned char)) { *(unsigned char *) data = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned short)) { *(unsigned short *) data = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned int)) { *(unsigned int *) data = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx)); } else if (data_size == sizeof (unsigned long)) { *(unsigned long *) data = Swap64 (fm, *(CARD64 *) (fm->area + fm->idx)); } else { ; /* Should never reached */ } /*endif*/ fm->idx += 8; if ((fitr = _FrameIterCounterIncr (fm->iters, 8/*BIT64*/))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ return FmSuccess; #endif case BARRAY: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ if (info.num > 0) { *(char **) data = fm->area + fm->idx; fm->idx += info.num; if ((fitr = _FrameIterCounterIncr (fm->iters, info.num))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ } else { *(char **) data = NULL; } /*endif*/ return FmSuccess; case PADDING: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ fm->idx += info.num; if ((fitr = _FrameIterCounterIncr (fm->iters, info.num))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ return _FrameMgrGetToken (fm, data, data_size); case ITER: return FmInvalidCall; /* if comes here, it's a bug! */ case EOL: return FmEOD; default: break; } /*endswitch*/ return (FmStatus) NULL; /* Should never be reached */ } FmStatus FrameMgrSetSize (FrameMgr fm, int barray_size) { if (FrameInstSetSize (fm->fi, barray_size) == FmSuccess) return FmSuccess; /*endif*/ return FmNoMoreData; } FmStatus FrameMgrSetIterCount (FrameMgr fm, int count) { if (FrameInstSetIterCount (fm->fi, count) == FmSuccess) return FmSuccess; /*endif*/ return FmNoMoreData; } FmStatus FrameMgrSetTotalSize (FrameMgr fm, int total_size) { fm->total_size = total_size; return FmSuccess; } int FrameMgrGetTotalSize (FrameMgr fm) { return FrameInstGetTotalSize (fm->fi); } int FrameMgrGetSize (FrameMgr fm) { register int ret_size; ret_size = FrameInstGetSize (fm->fi); if (ret_size == NO_VALID_FIELD) return NO_VALUE; /*endif*/ return ret_size; } FmStatus FrameMgrSkipToken (FrameMgr fm, int skip_count) { XimFrameType type; XimFrameTypeInfoRec info; register int i; if (fm->total_size != NO_VALUE && fm->idx >= fm->total_size) return FmNoMoreData; /*endif*/ for (i = 0; i < skip_count; i++) { type = FrameInstGetNextType (fm->fi, &info); type &= ~COUNTER_MASK; switch (type) { case BIT8: fm->idx++; break; case BIT16: fm->idx += 2; break; case BIT32: fm->idx += 4; break; case BIT64: fm->idx += 8; break; case BARRAY: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ fm->idx += info.num; break; case PADDING: if (info.num == NO_VALUE) return FmInvalidCall; /*endif*/ fm->idx += info.num; return FrameMgrSkipToken (fm, skip_count); case ITER: return FmInvalidCall; case EOL: return FmEOD; default: break; } /*endswitch*/ } /*endfor*/ return FmSuccess; } void FrameMgrReset (FrameMgr fm) { fm->idx = 0; FrameInstReset (fm->fi); } Bool FrameMgrIsIterLoopEnd (FrameMgr fm, FmStatus* status) { do { if (_FrameMgrIsIterLoopEnd (fm)) return True; /*endif*/ } while (_FrameMgrProcessPadding (fm, status)); return False; } /* Internal routines */ static Bool _FrameMgrIsIterLoopEnd (FrameMgr fm) { return FrameInstIsIterLoopEnd (fm->fi); } static Bool _FrameMgrProcessPadding (FrameMgr fm, FmStatus* status) { XimFrameTypeInfoRec info; XimFrameType next_type = FrameInstPeekNextType (fm->fi, &info); FrameIter fitr; if (next_type == PADDING) { if (info.num == NO_VALUE) { *status = FmInvalidCall; return True; } /*endif*/ next_type = FrameInstGetNextType (fm->fi, &info); fm->idx += info.num; if ((fitr = _FrameIterCounterIncr (fm->iters, info.num))) _FrameMgrRemoveIter (fm, fitr); /*endif*/ *status = FmSuccess; return True; } /*endif*/ *status = FmSuccess; return False; } static FrameInst FrameInstInit (XimFrame frame) { FrameInst fi; fi = (FrameInst) Xmalloc (sizeof (FrameInstRec)); fi->template = frame; fi->cur_no = 0; ChainMgrInit (&fi->cm); return fi; } static void FrameInstFree (FrameInst fi) { ChainIterRec ci; int frame_no; ExtraDataRec d; ChainIterInit (&ci, &fi->cm); while (ChainIterGetNext (&ci, &frame_no, &d)) { register XimFrameType type; type = fi->template[frame_no].type; if (type == ITER) { if (d.iter) IterFree (d.iter); /*endif*/ } else if (type == POINTER) { if (d.fi) FrameInstFree (d.fi); /*endif*/ } /*endif*/ } /*endwhile*/ ChainIterFree (&ci); ChainMgrFree (&fi->cm); Xfree (fi); } static XimFrameType FrameInstGetNextType(FrameInst fi, XimFrameTypeInfo info) { XimFrameType ret_type; ret_type = fi->template[fi->cur_no].type; switch (ret_type) { case BIT8: case BIT16: case BIT32: case BIT64: case EOL: fi->cur_no = _FrameInstIncrement(fi->template, fi->cur_no); break; case COUNTER_BIT8: case COUNTER_BIT16: case COUNTER_BIT32: case COUNTER_BIT64: if (info) { register int offset, iter_idx; info->counter.is_byte_len = (((long) fi->template[fi->cur_no].data & 0xFF)) == FmCounterByte; offset = ((long) fi->template[fi->cur_no].data) >> 8; iter_idx = fi->cur_no + offset; if (fi->template[iter_idx].type == ITER) { ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&fi->cm, iter_idx)) == NULL) { dr.iter = IterInit (&fi->template[iter_idx + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, iter_idx, dr); } /*endif*/ info->counter.iter = d->iter; } else { /* Should never reach here */ } /*endif*/ } /*endif*/ fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); break; case BARRAY: if (info) { ExtraData d; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) info->num = NO_VALUE; else info->num = d->num; /*endif*/ } /*endif*/ fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); break; case PADDING: if (info) { register int unit; register int number; register int size; register int i; unit = _UNIT ((long) fi->template[fi->cur_no].data); number = _NUMBER ((long) fi->template[fi->cur_no].data); i = fi->cur_no; size = 0; while (number > 0) { i = _FrameInstDecrement (fi->template, i); size += _FrameInstGetItemSize (fi, i); number--; } /*endwhile*/ info->num = (unit - (size%unit))%unit; } /*endif*/ fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); break; case ITER: { ExtraData d; ExtraDataRec dr; XimFrameType sub_type; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) { dr.iter = IterInit (&fi->template[fi->cur_no + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, fi->cur_no, dr); } /*endif*/ sub_type = IterGetNextType (d->iter, info); if (sub_type == EOL) { fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); ret_type = FrameInstGetNextType (fi, info); } else { ret_type = sub_type; } /*endif*/ } break; case POINTER: { ExtraData d; ExtraDataRec dr; XimFrameType sub_type; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) { dr.fi = FrameInstInit (fi->template[fi->cur_no + 1].data); d = ChainMgrSetData (&fi->cm, fi->cur_no, dr); } /*endif*/ sub_type = FrameInstGetNextType (d->fi, info); if (sub_type == EOL) { fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); ret_type = FrameInstGetNextType (fi, info); } else { ret_type = sub_type; } /*endif*/ } break; default: break; } /*endswitch*/ return ret_type; } static XimFrameType FrameInstPeekNextType (FrameInst fi, XimFrameTypeInfo info) { XimFrameType ret_type; ret_type = fi->template[fi->cur_no].type; switch (ret_type) { case BIT8: case BIT16: case BIT32: case BIT64: case EOL: break; case COUNTER_BIT8: case COUNTER_BIT16: case COUNTER_BIT32: case COUNTER_BIT64: if (info) { register int offset; register int iter_idx; info->counter.is_byte_len = (((long) fi->template[fi->cur_no].data) & 0xFF) == FmCounterByte; offset = ((long)fi->template[fi->cur_no].data) >> 8; iter_idx = fi->cur_no + offset; if (fi->template[iter_idx].type == ITER) { ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&fi->cm, iter_idx)) == NULL) { dr.iter = IterInit (&fi->template[iter_idx + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, iter_idx, dr); } /*endif*/ info->counter.iter = d->iter; } else { /* Should not be reached here */ } /*endif*/ } /*endif*/ break; case BARRAY: if (info) { ExtraData d; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) info->num = NO_VALUE; else info->num = d->num; /*endif*/ } /*endif*/ break; case PADDING: if (info) { register int unit; register int number; register int size; register int i; unit = _UNIT ((long) fi->template[fi->cur_no].data); number = _NUMBER ((long) fi->template[fi->cur_no].data); i = fi->cur_no; size = 0; while (number > 0) { i = _FrameInstDecrement (fi->template, i); size += _FrameInstGetItemSize (fi, i); number--; } /*endwhile*/ info->num = (unit - (size%unit))%unit; } /*endif*/ break; case ITER: { ExtraData d; ExtraDataRec dr; XimFrameType sub_type; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) { dr.iter = IterInit (&fi->template[fi->cur_no + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, fi->cur_no, dr); } /*endif*/ sub_type = IterPeekNextType (d->iter, info); if (sub_type == EOL) ret_type = FrameInstPeekNextType (fi, info); else ret_type = sub_type; /*endif*/ } break; case POINTER: { ExtraData d; ExtraDataRec dr; XimFrameType sub_type; if ((d = ChainMgrGetExtraData (&fi->cm, fi->cur_no)) == NULL) { dr.fi = FrameInstInit (fi->template[fi->cur_no + 1].data); d = ChainMgrSetData (&fi->cm, fi->cur_no, dr); } /*endif*/ sub_type = FrameInstPeekNextType (d->fi, info); if (sub_type == EOL) ret_type = FrameInstPeekNextType (fi, info); else ret_type = sub_type; /*endif*/ default: break; } break; } /*endswitch*/ return ret_type; } static Bool FrameInstIsIterLoopEnd (FrameInst fi) { Bool ret = False; if (fi->template[fi->cur_no].type == ITER) { ExtraData d = ChainMgrGetExtraData (&fi->cm, fi->cur_no); Bool yourself; if (d) { ret = IterIsLoopEnd (d->iter, &yourself); if (ret && yourself) fi->cur_no = _FrameInstIncrement (fi->template, fi->cur_no); /*endif*/ } /*endif*/ } /*endif*/ return (ret); } static FrameIter _FrameMgrAppendIter (FrameMgr fm, Iter it, int end) { FrameIter p = fm->iters; while (p && p->next) p = p->next; /*endwhile*/ if (!p) { fm->iters = p = (FrameIter) Xmalloc (sizeof (FrameIterRec)); } else { p->next = (FrameIter) Xmalloc (sizeof (FrameIterRec)); p = p->next; } /*endif*/ if (p) { p->iter = it; p->counting = False; p->counter = 0; p->end = end; p->next = NULL; } /*endif*/ return (p); } static void _FrameMgrRemoveIter (FrameMgr fm, FrameIter it) { FrameIter prev; FrameIter p; prev = NULL; p = fm->iters; while (p) { if (p == it) { if (prev) prev->next = p->next; else fm->iters = p->next; /*endif*/ Xfree (p); break; } /*endif*/ prev = p; p = p->next; } /*endwhile*/ } static FrameIter _FrameIterCounterIncr (FrameIter fitr, int i) { FrameIter p = fitr; while (p) { if (p->counting) { p->counter += i; if (p->counter >= p->end) { IterFixIteration (p->iter); return (p); } /*endif*/ } /*endif*/ p = p->next; } /*endwhile*/ return (NULL); } static void _IterStartWatch (Iter it, void *client_data) { FrameIter p = (FrameIter) client_data; p->counting = True; } static FmStatus FrameInstSetSize (FrameInst fi, int num) { ExtraData d; ExtraDataRec dr; XimFrameType type; register int i; i = 0; while ((type = fi->template[i].type) != EOL) { switch (type) { case BARRAY: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.num = -1; d = ChainMgrSetData (&fi->cm, i, dr); } /*endif*/ if (d->num == NO_VALUE) { d->num = num; return FmSuccess; } /*endif*/ break; case ITER: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.iter = IterInit (&fi->template[i + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, i, dr); } /*endif*/ if (IterSetSize (d->iter, num) == FmSuccess) return FmSuccess; /*endif*/ break; case POINTER: if ((d = ChainMgrGetExtraData(&fi->cm, i)) == NULL) { dr.fi = FrameInstInit(fi->template[i + 1].data); d = ChainMgrSetData(&fi->cm, i, dr); } /*endif*/ if (FrameInstSetSize(d->fi, num) == FmSuccess) return FmSuccess; /*endif*/ break; default: break; } /*endswitch*/ i = _FrameInstIncrement(fi->template, i); } /*endwhile*/ return FmNoMoreData; } static int FrameInstGetSize (FrameInst fi) { XimFrameType type; register int i; ExtraData d; ExtraDataRec dr; int ret_size; i = fi->cur_no; while ((type = fi->template[i].type) != EOL) { switch (type) { case BARRAY: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) return NO_VALUE; /*endif*/ return d->num; case ITER: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.iter = IterInit (&fi->template[i + 1], NO_VALUE); d = ChainMgrSetData (&fi->cm, i, dr); } /*endif*/ ret_size = IterGetSize(d->iter); if (ret_size != NO_VALID_FIELD) return ret_size; /*endif*/ break; case POINTER: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.fi = FrameInstInit (fi->template[i + 1].data); d = ChainMgrSetData (&fi->cm, i, dr); } /*endif*/ ret_size = FrameInstGetSize (d->fi); if (ret_size != NO_VALID_FIELD) return ret_size; /*endif*/ break; default: break; } /*endswitch*/ i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ return NO_VALID_FIELD; } static FmStatus FrameInstSetIterCount (FrameInst fi, int num) { ExtraData d; ExtraDataRec dr; register int i; XimFrameType type; i = 0; while ((type = fi->template[i].type) != EOL) { switch (type) { case ITER: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.iter = IterInit (&fi->template[i + 1], num); (void)ChainMgrSetData (&fi->cm, i, dr); return FmSuccess; } /*endif*/ if (IterSetIterCount (d->iter, num) == FmSuccess) return FmSuccess; /*endif*/ break; case POINTER: if ((d = ChainMgrGetExtraData (&fi->cm, i)) == NULL) { dr.fi = FrameInstInit (fi->template[i + 1].data); d = ChainMgrSetData (&fi->cm, i, dr); } /*endif*/ if (FrameInstSetIterCount (d->fi, num) == FmSuccess) return FmSuccess; /*endif*/ break; default: break; } /*endswitch*/ i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ return FmNoMoreData; } static int FrameInstGetTotalSize (FrameInst fi) { register int size; register int i; size = 0; i = 0; while (fi->template[i].type != EOL) { size += _FrameInstGetItemSize (fi, i); i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ return size; } static void FrameInstReset (FrameInst fi) { ChainIterRec ci; int frame_no; ExtraDataRec d; ChainIterInit (&ci, &fi->cm); while (ChainIterGetNext (&ci, &frame_no, &d)) { register XimFrameType type; type = fi->template[frame_no].type; if (type == ITER) { if (d.iter) IterReset (d.iter); /*endif*/ } else if (type == POINTER) { if (d.fi) FrameInstReset (d.fi); /*endif*/ } /*endif*/ } /*endwhile*/ ChainIterFree (&ci); fi->cur_no = 0; } static Iter IterInit (XimFrame frame, int count) { Iter it; register XimFrameType type; it = (Iter) Xmalloc (sizeof (IterRec)); it->template = frame; it->max_count = (count == NO_VALUE) ? 0 : count; it->allow_expansion = (count == NO_VALUE); it->cur_no = 0; it->start_watch_proc = NULL; it->client_data = NULL; it->start_counter = False; type = frame->type; if (type & COUNTER_MASK) { /* COUNTER_XXX cannot be an item of a ITER */ Xfree (it); return NULL; } /*endif*/ switch (type) { case BIT8: case BIT16: case BIT32: case BIT64: /* Do nothing */ break; case BARRAY: case ITER: case POINTER: ChainMgrInit (&it->cm); break; default: Xfree (it); return NULL; /* This should never occur */ } /*endswitch*/ return it; } static void IterFree (Iter it) { switch (it->template->type) { case BARRAY: ChainMgrFree (&it->cm); break; case ITER: { ChainIterRec ci; int count; ExtraDataRec d; ChainIterInit (&ci, &it->cm); while (ChainIterGetNext (&ci, &count, &d)) IterFree (d.iter); /*endwhile*/ ChainIterFree (&ci); ChainMgrFree (&it->cm); } break; case POINTER: { ChainIterRec ci; int count; ExtraDataRec dr; ChainIterInit (&ci, &it->cm); while (ChainIterGetNext (&ci, &count, &dr)) FrameInstFree (dr.fi); /*endwhile*/ ChainIterFree (&ci); ChainMgrFree (&it->cm); } break; default: break; } /*endswitch*/ Xfree (it); } static Bool IterIsLoopEnd (Iter it, Bool *myself) { Bool ret = False; *myself = False; if (!it->allow_expansion && (it->cur_no == it->max_count)) { *myself = True; return True; } /*endif*/ if (it->template->type == POINTER) { ExtraData d = ChainMgrGetExtraData (&it->cm, it->cur_no); if (d) { if (FrameInstIsIterLoopEnd (d->fi)) { ret = True; } else { if (FrameInstIsEnd (d->fi)) { it->cur_no++; if (!it->allow_expansion && it->cur_no == it->max_count) { *myself = True; ret = True; } /*endif*/ } /*endif*/ } /*endif*/ } /*endif*/ } else if (it->template->type == ITER) { ExtraData d = ChainMgrGetExtraData (&it->cm, it->cur_no); if (d) { Bool yourself; if (IterIsLoopEnd (d->iter, &yourself)) ret = True; /*endif*/ } /*endif*/ } /*endif*/ return ret; } static XimFrameType IterGetNextType (Iter it, XimFrameTypeInfo info) { XimFrameType type = it->template->type; if (it->start_counter) { (*it->start_watch_proc) (it, it->client_data); it->start_counter = False; } /*endif*/ if (it->cur_no >= it->max_count) { if (it->allow_expansion) it->max_count = it->cur_no + 1; else return EOL; /*endif*/ } /*endif*/ switch (type) { case BIT8: case BIT16: case BIT32: case BIT64: it->cur_no++; return type; case BARRAY: if (info) { ExtraData d; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) info->num = NO_VALUE; else info->num = d->num; /*endif*/ } /*endif*/ it->cur_no++; return BARRAY; case ITER: { XimFrameType ret_type; ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) { dr.iter = IterInit (it->template + 1, NO_VALUE); d = ChainMgrSetData (&it->cm, it->cur_no, dr); } /*endif*/ ret_type = IterGetNextType (d->iter, info); if (ret_type == EOL) { it->cur_no++; ret_type = IterGetNextType (it, info); } /*endif*/ return ret_type; } case POINTER: { XimFrameType ret_type; ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, it->cur_no, dr); } /*endif*/ ret_type = FrameInstGetNextType (d->fi, info); if (ret_type == EOL) { it->cur_no++; ret_type = IterGetNextType (it, info); } /*endif*/ return ret_type; } default: return (XimFrameType) NULL; } /*endswitch*/ return (XimFrameType) NULL; /* This should never occur */ } static XimFrameType IterPeekNextType (Iter it, XimFrameTypeInfo info) { XimFrameType type = it->template->type; if (!it->allow_expansion && it->cur_no >= it->max_count) return (EOL); /*endif*/ switch (type) { case BIT8: case BIT16: case BIT32: case BIT64: return type; case BARRAY: if (info) { ExtraData d; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) info->num = NO_VALUE; else info->num = d->num; /*endif*/ } /*endif*/ return BARRAY; case ITER: { XimFrameType ret_type; ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) { dr.iter = IterInit (it->template + 1, NO_VALUE); d = ChainMgrSetData (&it->cm, it->cur_no, dr); } /*endif*/ ret_type = IterPeekNextType (d->iter, info); if (ret_type == EOL) ret_type = IterPeekNextType (it, info); /*endif*/ return ret_type; } case POINTER: { XimFrameType ret_type; ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, it->cur_no, dr); } /*endif*/ ret_type = FrameInstPeekNextType (d->fi, info); if (ret_type == EOL) ret_type = IterPeekNextType (it, info); /*endif*/ return (ret_type); } default: break; } /*endswitch*/ /* Reaching here is a bug! */ return (XimFrameType) NULL; } static FmStatus IterSetSize (Iter it, int num) { XimFrameType type; register int i; if (!it->allow_expansion && it->max_count == 0) return FmNoMoreData; /*endif*/ type = it->template->type; switch (type) { case BARRAY: { ExtraData d; ExtraDataRec dr; for (i = 0; i < it->max_count; i++) { if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.num = NO_VALUE; d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ if (d->num == NO_VALUE) { d->num = num; return FmSuccess; } /*endif*/ } /*endfor*/ if (it->allow_expansion) { ExtraDataRec dr; dr.num = num; ChainMgrSetData (&it->cm, it->max_count, dr); it->max_count++; return FmSuccess; } /*endif*/ } return FmNoMoreData; case ITER: { ExtraData d; ExtraDataRec dr; for (i = 0; i < it->max_count; i++) { if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.iter = IterInit (it->template + 1, NO_VALUE); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ if (IterSetSize (d->iter, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endfor*/ if (it->allow_expansion) { ExtraDataRec dr; dr.iter = IterInit (it->template + 1, NO_VALUE); ChainMgrSetData (&it->cm, it->max_count, dr); it->max_count++; if (IterSetSize(dr.iter, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endif*/ } return FmNoMoreData; case POINTER: { ExtraData d; ExtraDataRec dr; for (i = 0; i < it->max_count; i++) { if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ if (FrameInstSetSize (d->fi, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endfor*/ if (it->allow_expansion) { ExtraDataRec dr; dr.fi = FrameInstInit (it->template[1].data); ChainMgrSetData (&it->cm, it->max_count, dr); it->max_count++; if (FrameInstSetSize (dr.fi, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endif*/ } return FmNoMoreData; default: break; } /*endswitch*/ return FmNoMoreData; } static int IterGetSize (Iter it) { register int i; ExtraData d; ExtraDataRec dr; if (it->cur_no >= it->max_count) return NO_VALID_FIELD; /*endif*/ switch (it->template->type) { case BARRAY: if ((d = ChainMgrGetExtraData (&it->cm, it->cur_no)) == NULL) return NO_VALUE; /*endif*/ return d->num; case ITER: for (i = it->cur_no; i < it->max_count; i++) { int ret_size; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.iter = IterInit (it->template + 1, NO_VALUE); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ ret_size = IterGetSize (d->iter); if (ret_size != NO_VALID_FIELD) return ret_size; /*endif*/ } /*endfor*/ return NO_VALID_FIELD; case POINTER: for (i = it->cur_no; i < it->max_count; i++) { int ret_size; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ ret_size = FrameInstGetSize (d->fi); if (ret_size != NO_VALID_FIELD) return ret_size; /*endif*/ } /*endfor*/ return NO_VALID_FIELD; default: break; } /*endswitch*/ return NO_VALID_FIELD; } static FmStatus IterSetIterCount (Iter it, int num) { register int i; if (it->allow_expansion) { it->max_count = num; it->allow_expansion = False; return FmSuccess; } /*endif*/ if (it->max_count == 0) return FmNoMoreData; /*endif*/ switch (it->template->type) { case ITER: for (i = 0; i < it->max_count; i++) { ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData(&it->cm, i)) == NULL) { dr.iter = IterInit(it->template + 1, num); (void)ChainMgrSetData(&it->cm, i, dr); return FmSuccess; } /*endif*/ if (IterSetIterCount(d->iter, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endfor*/ if (it->allow_expansion) { ExtraDataRec dr; dr.iter = IterInit (it->template + 1, num); ChainMgrSetData (&it->cm, it->max_count, dr); it->max_count++; return FmSuccess; } /*endif*/ break; case POINTER: for (i = 0; i < it->max_count; i++) { ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ if (FrameInstSetIterCount (d->fi, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endfor*/ if (it->allow_expansion) { ExtraDataRec dr; dr.fi = FrameInstInit (it->template[1].data); ChainMgrSetData (&it->cm, it->max_count, dr); it->max_count++; if (FrameInstSetIterCount (dr.fi, num) == FmSuccess) return FmSuccess; /*endif*/ } /*endif*/ break; default: break; } /*endswitch*/ return FmNoMoreData; } static int IterGetTotalSize (Iter it) { register int size, i; XimFrameType type; if (it->allow_expansion) return NO_VALUE; /*endif*/ if (it->max_count == 0) return 0; /*endif*/ size = 0; type = it->template->type; switch (type) { case BIT8: size = it->max_count; break; case BIT16: size = it->max_count*2; break; case BIT32: size = it->max_count*4; break; case BIT64: size = it->max_count*8; break; case BARRAY: for (i = 0; i < it->max_count; i++) { register int num; ExtraData d; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) return NO_VALUE; /*endif*/ if ((num = d->num) == NO_VALUE) return NO_VALUE; /*endif*/ size += num; } /*endfor*/ break; case ITER: for (i = 0; i < it->max_count; i++) { register int num; ExtraData d; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) return NO_VALUE; /*endif*/ if ((num = IterGetTotalSize (d->iter)) == NO_VALUE) return NO_VALUE; /*endif*/ size += num; } /*endfor*/ break; case POINTER: for (i = 0; i < it->max_count; i++) { register int num; ExtraData d; ExtraDataRec dr; if ((d = ChainMgrGetExtraData (&it->cm, i)) == NULL) { dr.fi = FrameInstInit (it->template[1].data); d = ChainMgrSetData (&it->cm, i, dr); } /*endif*/ if ((num = FrameInstGetTotalSize (d->fi)) == NO_VALUE) return NO_VALUE; /*endif*/ size += num; } /*endfor*/ break; default: break; } /*endswitch*/ return size; } static void IterReset (Iter it) { ChainIterRec ci; int count; ExtraDataRec d; switch (it->template->type) { case ITER: ChainIterInit (&ci, &it->cm); while (ChainIterGetNext (&ci, &count, &d)) IterReset (d.iter); /*endwhile*/ ChainIterFree (&ci); break; case POINTER: ChainIterInit (&ci, &it->cm); while (ChainIterGetNext (&ci, &count, &d)) FrameInstReset (d.fi); /*endwhile*/ ChainIterFree (&ci); break; default: break; } /*endswitch*/ it->cur_no = 0; } static void IterSetStartWatch (Iter it, IterStartWatchProc proc, void *client_data) { it->start_watch_proc = proc; it->client_data = client_data; } static ExtraData ChainMgrSetData (ChainMgr cm, int frame_no, ExtraDataRec data) { Chain cur = (Chain) Xmalloc (sizeof (ChainRec)); cur->frame_no = frame_no; cur->d = data; cur->next = NULL; if (cm->top == NULL) { cm->top = cm->tail = cur; } else { cm->tail->next = cur; cm->tail = cur; } /*endif*/ return &cur->d; } static ExtraData ChainMgrGetExtraData (ChainMgr cm, int frame_no) { Chain cur; cur = cm->top; while (cur) { if (cur->frame_no == frame_no) return &cur->d; /*endif*/ cur = cur->next; } /*endwhile*/ return NULL; } static Bool ChainIterGetNext (ChainIter ci, int *frame_no, ExtraData d) { if (ci->cur == NULL) return False; /*endif*/ *frame_no = ci->cur->frame_no; *d = ci->cur->d; ci->cur = ci->cur->next; return True; } static int _FrameInstIncrement (XimFrame frame, int count) { XimFrameType type; type = frame[count].type; type &= ~COUNTER_MASK; switch (type) { case BIT8: case BIT16: case BIT32: case BIT64: case BARRAY: case PADDING: return count + 1; case POINTER: return count + 2; case ITER: return _FrameInstIncrement (frame, count + 1); default: break; } /*endswitch*/ return - 1; /* Error */ } static int _FrameInstDecrement (XimFrame frame, int count) { register int i; XimFrameType type; if (count == 0) return - 1; /* cannot decrement */ /*endif*/ if (count == 1) return 0; /* BOGUS - It should check the contents of data */ /*endif*/ type = frame[count - 2].type; type &= ~COUNTER_MASK; switch (type) { case BIT8: case BIT16: case BIT32: case BIT64: case BARRAY: case PADDING: case PTR_ITEM: return count - 1; case POINTER: case ITER: i = count - 3; while (i >= 0) { if (frame[i].type != ITER) return i + 1; /*endif*/ i--; } /*endwhile*/ return 0; default: break; } /*enswitch*/ return - 1; /* Error */ } static int _FrameInstGetItemSize (FrameInst fi, int cur_no) { XimFrameType type; type = fi->template[cur_no].type; type &= ~COUNTER_MASK; switch (type) { case BIT8: return 1; case BIT16: return 2; case BIT32: return 4; case BIT64: return 8; case BARRAY: { ExtraData d; if ((d = ChainMgrGetExtraData (&fi->cm, cur_no)) == NULL) return NO_VALUE; /*endif*/ if (d->num == NO_VALUE) return NO_VALUE; /*endif*/ return d->num; } case PADDING: { register int unit; register int number; register int size; register int i; unit = _UNIT ((long) fi->template[cur_no].data); number = _NUMBER ((long) fi->template[cur_no].data); i = cur_no; size = 0; while (number > 0) { i = _FrameInstDecrement (fi->template, i); size += _FrameInstGetItemSize (fi, i); number--; } /*endwhile*/ size = (unit - (size%unit))%unit; return size; } case ITER: { ExtraData d; int sub_size; if ((d = ChainMgrGetExtraData (&fi->cm, cur_no)) == NULL) return NO_VALUE; /*endif*/ sub_size = IterGetTotalSize (d->iter); if (sub_size == NO_VALUE) return NO_VALUE; /*endif*/ return sub_size; } case POINTER: { ExtraData d; int sub_size; if ((d = ChainMgrGetExtraData (&fi->cm, cur_no)) == NULL) return NO_VALUE; /*endif*/ sub_size = FrameInstGetTotalSize (d->fi); if (sub_size == NO_VALUE) return NO_VALUE; /*endif*/ return sub_size; } default: break; } /*endswitch*/ return NO_VALUE; } ibus-1.5.11/util/IMdkit/i18nClbk.c0000644000000000000000000003746412551654124013330 00000000000000/****************************************************************** Copyright 1994, 1995 by Sun Microsystems, Inc. Copyright 1993, 1994 by Hewlett-Packard Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sun Microsystems, Inc. and Hewlett-Packard not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sun Microsystems, Inc. and Hewlett-Packard make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. This version tidied and debugged by Steve Underwood May 1999 ******************************************************************/ #include #include "IMdkit.h" #include "Xi18n.h" #include "FrameMgr.h" #include "XimFunc.h" int _Xi18nGeometryCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec geometry_fr[]; register int total_size; unsigned char *reply = NULL; IMGeometryCBStruct *geometry_CB = (IMGeometryCBStruct *) &call_data->geometry_callback; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (geometry_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, geometry_CB->icid); _Xi18nSendMessage (ims, connect_id, XIM_GEOMETRY, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_GEOMETRY is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nPreeditStartCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_start_fr[]; register int total_size; unsigned char *reply = NULL; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct*) &call_data->preedit_callback; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (preedit_start_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage(ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, preedit_CB->icid); _Xi18nSendMessage (ims, connect_id, XIM_PREEDIT_START, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); return True; } int _Xi18nPreeditDrawCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_draw_fr[]; register int total_size; unsigned char *reply = NULL; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct *) &call_data->preedit_callback; XIMPreeditDrawCallbackStruct *draw = (XIMPreeditDrawCallbackStruct *) &preedit_CB->todo.draw; CARD16 connect_id = call_data->any.connect_id; register int feedback_count; register int i; BITMASK32 status = 0x0; if (draw->text->length == 0) status = 0x00000001; else if (draw->text->feedback[0] == 0) status = 0x00000002; /*endif*/ fm = FrameMgrInit (preedit_draw_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); /* set length of preedit string */ FrameMgrSetSize (fm, draw->text->length); /* set iteration count for list of feedback */ for (i = 0; draw->text->feedback[i] != 0; i++) ; /*endfor*/ feedback_count = i; FrameMgrSetIterCount (fm, feedback_count); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, preedit_CB->icid); FrameMgrPutToken (fm, draw->caret); FrameMgrPutToken (fm, draw->chg_first); FrameMgrPutToken (fm, draw->chg_length); FrameMgrPutToken (fm, status); FrameMgrPutToken (fm, draw->text->length); FrameMgrPutToken (fm, draw->text->string); for (i = 0; i < feedback_count; i++) FrameMgrPutToken (fm, draw->text->feedback[i]); /*endfor*/ _Xi18nSendMessage (ims, connect_id, XIM_PREEDIT_DRAW, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_PREEDIT_DRAW is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nPreeditCaretCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_caret_fr[]; register int total_size; unsigned char *reply = NULL; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct*) &call_data->preedit_callback; XIMPreeditCaretCallbackStruct *caret = (XIMPreeditCaretCallbackStruct *) &preedit_CB->todo.caret; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (preedit_caret_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, preedit_CB->icid); FrameMgrPutToken (fm, caret->position); FrameMgrPutToken (fm, caret->direction); FrameMgrPutToken (fm, caret->style); _Xi18nSendMessage (ims, connect_id, XIM_PREEDIT_CARET, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); return True; } int _Xi18nPreeditDoneCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec preedit_done_fr[]; register int total_size; unsigned char *reply = NULL; IMPreeditCBStruct *preedit_CB = (IMPreeditCBStruct *) &call_data->preedit_callback; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (preedit_done_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, preedit_CB->icid); _Xi18nSendMessage (ims, connect_id, XIM_PREEDIT_DONE, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_PREEDIT_DONE is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nStatusStartCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec status_start_fr[]; register int total_size; unsigned char *reply = NULL; IMStatusCBStruct *status_CB = (IMStatusCBStruct*) &call_data->status_callback; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (status_start_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, status_CB->icid); _Xi18nSendMessage (ims, connect_id, XIM_STATUS_START, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_STATUS_START is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nStatusDrawCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm = (FrameMgr)0; extern XimFrameRec status_draw_text_fr[]; extern XimFrameRec status_draw_bitmap_fr[]; register int total_size = 0; unsigned char *reply = NULL; IMStatusCBStruct *status_CB = (IMStatusCBStruct *) &call_data->status_callback; XIMStatusDrawCallbackStruct *draw = (XIMStatusDrawCallbackStruct *) &status_CB->todo.draw; CARD16 connect_id = call_data->any.connect_id; register int feedback_count; register int i; BITMASK32 status = 0x0; switch (draw->type) { case XIMTextType: fm = FrameMgrInit (status_draw_text_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); if (draw->data.text->length == 0) status = 0x00000001; else if (draw->data.text->feedback[0] == 0) status = 0x00000002; /*endif*/ /* set length of status string */ FrameMgrSetSize(fm, draw->data.text->length); /* set iteration count for list of feedback */ for (i = 0; draw->data.text->feedback[i] != 0; i++) ; /*endfor*/ feedback_count = i; FrameMgrSetIterCount (fm, feedback_count); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, status_CB->icid); FrameMgrPutToken (fm, draw->type); FrameMgrPutToken (fm, status); FrameMgrPutToken (fm, draw->data.text->length); FrameMgrPutToken (fm, draw->data.text->string); for (i = 0; i < feedback_count; i++) FrameMgrPutToken (fm, draw->data.text->feedback[i]); /*endfor*/ break; case XIMBitmapType: fm = FrameMgrInit (status_draw_bitmap_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, status_CB->icid); FrameMgrPutToken (fm, draw->data.bitmap); break; } /*endswitch*/ _Xi18nSendMessage (ims, connect_id, XIM_STATUS_DRAW, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_STATUS_DRAW is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nStatusDoneCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec status_done_fr[]; register int total_size; unsigned char *reply = NULL; IMStatusCBStruct *status_CB = (IMStatusCBStruct *) &call_data->status_callback; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (status_done_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, status_CB->icid); _Xi18nSendMessage (ims, connect_id, XIM_STATUS_DONE, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_STATUS_DONE is an asyncronous protocol, so return immediately. */ return True; } int _Xi18nStringConversionCallback (XIMS ims, IMProtocol *call_data) { Xi18n i18n_core = ims->protocol; FrameMgr fm; extern XimFrameRec str_conversion_fr[]; register int total_size; unsigned char *reply = NULL; IMStrConvCBStruct *call_back = (IMStrConvCBStruct *) &call_data->strconv_callback; XIMStringConversionCallbackStruct *strconv = (XIMStringConversionCallbackStruct *) &call_back->strconv; CARD16 connect_id = call_data->any.connect_id; fm = FrameMgrInit (str_conversion_fr, NULL, _Xi18nNeedSwap (i18n_core, connect_id)); total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); return False; } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); FrameMgrPutToken (fm, connect_id); FrameMgrPutToken (fm, call_back->icid); FrameMgrPutToken (fm, strconv->position); FrameMgrPutToken (fm, strconv->direction); FrameMgrPutToken (fm, strconv->operation); _Xi18nSendMessage (ims, connect_id, XIM_STR_CONVERSION, 0, reply, total_size); FrameMgrFree (fm); XFree (reply); /* XIM_STR_CONVERSION is a syncronous protocol, so should wait here for XIM_STR_CONVERSION_REPLY. */ if (i18n_core->methods.wait (ims, connect_id, XIM_STR_CONVERSION_REPLY, 0) == False) { return False; } /*endif*/ return True; } ibus-1.5.11/util/Makefile.in0000644000000000000000000005644212551654262012475 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = IMdkit am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ENABLE_XIM_TRUE@SUBDIRS = \ @ENABLE_XIM_TRUE@ IMdkit \ @ENABLE_XIM_TRUE@ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/util/Makefile.am0000644000000000000000000000170512551654124012451 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ENABLE_XIM SUBDIRS = \ IMdkit \ $(NULL) endif -include $(top_srcdir)/git.mk ibus-1.5.11/tools/0000755000000000000000000000000012551654534010662 500000000000000ibus-1.5.11/tools/ibus_vala.stamp0000644000000000000000000000000612551654532013607 00000000000000stamp ibus-1.5.11/tools/main.vala0000644000000000000000000002570112551654123012372 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ private const string[] IBUS_SCHEMAS = { "org.freedesktop.ibus.general", "org.freedesktop.ibus.general.hotkey", "org.freedesktop.ibus.panel", }; bool name_only = false; /* system() exists as a public API. */ bool is_system = false; string cache_file = null; class EngineList { public IBus.EngineDesc[] data = {}; } IBus.Bus? get_bus() { var bus = new IBus.Bus(); if (!bus.is_connected ()) return null; return bus; } int list_engine(string[] argv) { const OptionEntry[] options = { { "name-only", 0, 0, OptionArg.NONE, out name_only, N_("List engine name only"), null }, { null } }; var option = new OptionContext(); option.add_main_entries(options, Config.GETTEXT_PACKAGE); try { option.parse(ref argv); } catch (OptionError e) { stderr.printf("%s\n", e.message); return Posix.EXIT_FAILURE; } var bus = get_bus(); if (bus == null) { stderr.printf(_("Can't connect to IBus.\n")); return Posix.EXIT_FAILURE; } var engines = bus.list_engines(); if (name_only) { foreach (var engine in engines) { print("%s\n", engine.get_name()); } return Posix.EXIT_SUCCESS; } var map = new HashTable(GLib.str_hash, GLib.str_equal); foreach (var engine in engines) { var list = map.get(engine.get_language()); if (list == null) { list = new EngineList(); map.insert(engine.get_language(), list); } list.data += engine; } foreach (var language in map.get_keys()) { var list = map.get(language); print(_("language: %s\n"), IBus.get_language_name(language)); foreach (var engine in list.data) { print(" %s - %s\n", engine.get_name(), engine.get_longname()); } } return Posix.EXIT_SUCCESS; } private int exec_setxkbmap(IBus.EngineDesc engine) { string layout = engine.get_layout(); string variant = engine.get_layout_variant(); string option = engine.get_layout_option(); string standard_error = null; int exit_status = 0; string[] args = { "setxkbmap" }; if (layout != null && layout != "" && layout != "default") { args += "-layout"; args += layout; } if (variant != null && variant != "" && variant != "default") { args += "-variant"; args += variant; } if (option != null && option != "" && option != "default") { /*TODO: Need to get the session XKB options */ args += "-option"; args += "-option"; args += option; } if (args.length == 1) { return Posix.EXIT_FAILURE; } try { if (!GLib.Process.spawn_sync(null, args, null, GLib.SpawnFlags.SEARCH_PATH, null, null, out standard_error, out exit_status)) { warning("Switch xkb layout to %s failed.", engine.get_layout()); return Posix.EXIT_FAILURE; } } catch (GLib.SpawnError e) { warning("Execute setxkbmap failed: %s", e.message); return Posix.EXIT_FAILURE; } if (exit_status != 0) { warning("Execute setxkbmap failed: %s", standard_error ?? "(null)"); return Posix.EXIT_FAILURE; } return Posix.EXIT_SUCCESS; } int get_set_engine(string[] argv) { var bus = get_bus(); string engine = null; if (argv.length > 1) engine = argv[1]; if (engine == null) { var desc = bus.get_global_engine(); if (desc == null) { stderr.printf(_("No engine is set.\n")); return Posix.EXIT_FAILURE; } print("%s\n", desc.get_name()); return Posix.EXIT_SUCCESS; } if(!bus.set_global_engine(engine)) { stderr.printf(_("Set global engine failed.\n")); return Posix.EXIT_FAILURE; } var desc = bus.get_global_engine(); if (desc == null) { stderr.printf(_("Get global engine failed.\n")); return Posix.EXIT_FAILURE; } return exec_setxkbmap(desc); } int message_watch(string[] argv) { return Posix.EXIT_SUCCESS; } int restart_daemon(string[] argv) { var bus = get_bus(); if (bus == null) { stderr.printf(_("Can't connect to IBus.\n")); return Posix.EXIT_FAILURE; } bus.exit(true); return Posix.EXIT_SUCCESS; } int exit_daemon(string[] argv) { var bus = get_bus(); if (bus == null) { stderr.printf(_("Can't connect to IBus.\n")); return Posix.EXIT_FAILURE; } bus.exit(false); return Posix.EXIT_SUCCESS; } int print_version(string[] argv) { print("IBus %s\n", Config.PACKAGE_VERSION); return Posix.EXIT_SUCCESS; } int read_cache (string[] argv) { const OptionEntry[] options = { { "system", 0, 0, OptionArg.NONE, out is_system, N_("Read the system registry cache."), null }, { "file", 0, 0, OptionArg.STRING, out cache_file, N_("Read the registry cache FILE."), "FILE" }, { null } }; var option = new OptionContext(); option.add_main_entries(options, Config.GETTEXT_PACKAGE); try { option.parse(ref argv); } catch (OptionError e) { stderr.printf("%s\n", e.message); return Posix.EXIT_FAILURE; } var registry = new IBus.Registry(); if (cache_file != null) { if (!registry.load_cache_file(cache_file)) { stderr.printf(_("The registry cache is invalid.\n")); return Posix.EXIT_FAILURE; } } else { if (!registry.load_cache(!is_system)) { stderr.printf(_("The registry cache is invalid.\n")); return Posix.EXIT_FAILURE; } } var output = new GLib.StringBuilder(); registry.output(output, 1); print ("%s\n", output.str); return Posix.EXIT_SUCCESS; } int write_cache (string[] argv) { const OptionEntry[] options = { { "system", 0, 0, OptionArg.NONE, out is_system, N_("Write the system registry cache."), null }, { "file", 0, 0, OptionArg.STRING, out cache_file, N_("Write the registry cache FILE."), "FILE" }, { null } }; var option = new OptionContext(); option.add_main_entries(options, Config.GETTEXT_PACKAGE); try { option.parse(ref argv); } catch (OptionError e) { stderr.printf("%s\n", e.message); return Posix.EXIT_FAILURE; } var registry = new IBus.Registry(); registry.load(); if (cache_file != null) { return registry.save_cache_file(cache_file) ? Posix.EXIT_SUCCESS : Posix.EXIT_FAILURE; } return registry.save_cache(!is_system) ? Posix.EXIT_SUCCESS : Posix.EXIT_FAILURE; } int print_address(string[] argv) { string address = IBus.get_address(); print("%s\n", address != null ? address : "(null)"); return Posix.EXIT_SUCCESS; } int read_config(string[] argv) { var output = new GLib.StringBuilder(); foreach (string schema in IBUS_SCHEMAS) { GLib.Settings settings = new GLib.Settings(schema); output.append_printf("SCHEMA: %s\n", schema); foreach (string key in settings.list_keys()) { GLib.Variant variant = settings.get_value(key); output.append_printf(" %s: %s\n", key, variant.print(true)); } } print("%s", output.str); return Posix.EXIT_SUCCESS; } int reset_config(string[] argv) { print("%s\n", _("Resetting…")); foreach (string schema in IBUS_SCHEMAS) { GLib.Settings settings = new GLib.Settings(schema); print("SCHEMA: %s\n", schema); foreach (string key in settings.list_keys()) { print(" %s\n", key); settings.reset(key); } } GLib.Settings.sync(); print("%s\n", _("Done")); return Posix.EXIT_SUCCESS; } int print_help(string[] argv) { print_usage(stdout); return Posix.EXIT_SUCCESS; } delegate int EntryFunc(string[] argv); struct CommandEntry { unowned string name; unowned string description; unowned EntryFunc entry; } static const CommandEntry commands[] = { { "engine", N_("Set or get engine"), get_set_engine }, { "exit", N_("Exit ibus-daemon"), exit_daemon }, { "list-engine", N_("Show available engines"), list_engine }, { "watch", N_("(Not implemented)"), message_watch }, { "restart", N_("Restart ibus-daemon"), restart_daemon }, { "version", N_("Show version"), print_version }, { "read-cache", N_("Show the content of registry cache"), read_cache }, { "write-cache", N_("Create registry cache"), write_cache }, { "address", N_("Print the D-Bus address of ibus-daemon"), print_address }, { "read-config", N_("Show the configuration values"), read_config }, { "reset-config", N_("Reset the configuration values"), reset_config }, { "help", N_("Show this information"), print_help } }; static string program_name; void print_usage(FileStream stream) { stream.printf(_("Usage: %s COMMAND [OPTION...]\n\n"), program_name); stream.printf(_("Commands:\n")); for (int i = 0; i < commands.length; i++) { stream.printf(" %-12s %s\n", commands[i].name, GLib.dgettext(null, commands[i].description)); } } public int main(string[] argv) { GLib.Intl.setlocale(GLib.LocaleCategory.ALL, ""); GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.GLIB_LOCALE_DIR); GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); GLib.Intl.textdomain(Config.GETTEXT_PACKAGE); IBus.init(); program_name = Path.get_basename(argv[0]); if (argv.length < 2) { print_usage(stderr); return Posix.EXIT_FAILURE; } string[] new_argv = argv[1:argv.length]; new_argv[0] = "%s %s".printf(program_name, new_argv[0]); for (int i = 0; i < commands.length; i++) { if (commands[i].name == argv[1]) return commands[i].entry(new_argv); } stderr.printf(_("%s is unknown command!\n"), argv[1]); print_usage(stderr); return Posix.EXIT_FAILURE; } ibus-1.5.11/tools/ibus.bash0000644000000000000000000000652112551654123012401 00000000000000# vim:set et ts=4 sts=4: # bash completion for ibus # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA if ! type _get_comp_words_by_ref >/dev/null 2>&1; then if [[ -z ${ZSH_VERSION:+set} ]]; then _get_comp_words_by_ref () { local exclude cur_ words_ cword_ if [ "$1" = "-n" ]; then exclude=$2 shift 2 fi __git_reassemble_comp_words_by_ref "$exclude" cur_=${words_[cword_]} while [ $# -gt 0 ]; do case "$1" in cur) cur=$cur_ ;; prev) prev=${words_[$cword_-1]} ;; words) words=("${words_[@]}") ;; cword) cword=$cword_ ;; esac shift done } else _get_comp_words_by_ref () { while [ $# -gt 0 ]; do case "$1" in cur) cur=${COMP_WORDS[COMP_CWORD]} ;; prev) prev=${COMP_WORDS[COMP_CWORD-1]} ;; words) words=("${COMP_WORDS[@]}") ;; cword) cword=$COMP_CWORD ;; -n) # assume COMP_WORDBREAKS is already set sanely shift ;; esac shift done } fi fi __ibus_engine() { if [[ "$cmd" == "$prev" ]]; then local imes=$( ibus list-engine --name-only 2>/dev/null ) COMPREPLY=( $( compgen -W "$imes" -- "$cur" | sed "s/^$cur/$cur_/" )) fi } __ibus_list_engine() { if [[ "$cur" == -* ]]; then local options=( --name-only ) COMPREPLY=( $( compgen -W '${options[@]}' -- "$cur" )) fi } __ibus() { COMPREPLY=() local cur_=$2 prev_=$3 cur words cword prev _get_comp_words_by_ref -n =: cur words cword prev # echo # echo "cur='$cur'" # echo "prev='$prev'" # echo "words='${words[@]}'" # echo "cwords='${cwords[@]}'" # Commands local cmds=( engine list-engine watch restart exit ) local i c cmd subcmd for (( i=1; i < ${#words[@]}-1; i++)) ; do [[ -n $cmd ]] && subcmd=${words[i]} && break for c in ${cmds[@]}; do [[ ${words[i]} == $c ]] && cmd=$c && break done done case $cmd in engine) __ibus_engine; return 0 ;; list-engine) __ibus_list_engine; return 0 ;; watch) return 0 ;; *) COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" )) return 0 ;; esac } && complete -o bashdefault -o default -o nospace -F __ibus ibus ibus-1.5.11/tools/main.c0000644000000000000000000016003212551654534011674 00000000000000/* main.c generated by valac 0.28.0, the Vala compiler * generated from main.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #define TYPE_ENGINE_LIST (engine_list_get_type ()) #define ENGINE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ENGINE_LIST, EngineList)) #define ENGINE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ENGINE_LIST, EngineListClass)) #define IS_ENGINE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ENGINE_LIST)) #define IS_ENGINE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ENGINE_LIST)) #define ENGINE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ENGINE_LIST, EngineListClass)) typedef struct _EngineList EngineList; typedef struct _EngineListClass EngineListClass; typedef struct _EngineListPrivate EngineListPrivate; typedef struct _ParamSpecEngineList ParamSpecEngineList; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_option_context_free0(var) ((var == NULL) ? NULL : (var = (g_option_context_free (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) #define _engine_list_unref0(var) ((var == NULL) ? NULL : (var = (engine_list_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define TYPE_COMMAND_ENTRY (command_entry_get_type ()) typedef struct _CommandEntry CommandEntry; struct _EngineList { GTypeInstance parent_instance; volatile int ref_count; EngineListPrivate * priv; IBusEngineDesc** data; gint data_length1; gint _data_size_; }; struct _EngineListClass { GTypeClass parent_class; void (*finalize) (EngineList *self); }; struct _ParamSpecEngineList { GParamSpec parent_instance; }; typedef gint (*EntryFunc) (gchar** argv, int argv_length1, void* user_data); struct _CommandEntry { const gchar* name; const gchar* description; EntryFunc entry; gpointer entry_target; }; extern gboolean name_only; gboolean name_only = FALSE; extern gboolean is_system; gboolean is_system = FALSE; extern gchar* cache_file; gchar* cache_file = NULL; static gpointer engine_list_parent_class = NULL; extern gchar* program_name; gchar* program_name = NULL; gpointer engine_list_ref (gpointer instance); void engine_list_unref (gpointer instance); GParamSpec* param_spec_engine_list (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_engine_list (GValue* value, gpointer v_object); void value_take_engine_list (GValue* value, gpointer v_object); gpointer value_get_engine_list (const GValue* value); GType engine_list_get_type (void) G_GNUC_CONST; enum { ENGINE_LIST_DUMMY_PROPERTY }; EngineList* engine_list_new (void); EngineList* engine_list_construct (GType object_type); static void engine_list_finalize (EngineList* obj); IBusBus* get_bus (void); gint list_engine (gchar** argv, int argv_length1); static void _g_free0_ (gpointer var); static void _engine_list_unref0_ (gpointer var); static void _vala_array_add1 (IBusEngineDesc*** array, int* length, int* size, IBusEngineDesc* value); gint exec_setxkbmap (IBusEngineDesc* engine); static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add5 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value); gint get_set_engine (gchar** argv, int argv_length1); gint message_watch (gchar** argv, int argv_length1); gint restart_daemon (gchar** argv, int argv_length1); gint exit_daemon (gchar** argv, int argv_length1); gint print_version (gchar** argv, int argv_length1); gint read_cache (gchar** argv, int argv_length1); gint write_cache (gchar** argv, int argv_length1); gint print_address (gchar** argv, int argv_length1); gint read_config (gchar** argv, int argv_length1); gint reset_config (gchar** argv, int argv_length1); gint print_help (gchar** argv, int argv_length1); void print_usage (FILE* stream); GType command_entry_get_type (void) G_GNUC_CONST; CommandEntry* command_entry_dup (const CommandEntry* self); void command_entry_free (CommandEntry* self); static gint _get_set_engine_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _exit_daemon_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _list_engine_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _message_watch_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _restart_daemon_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _print_version_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _read_cache_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _write_cache_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _print_address_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _read_config_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _reset_config_entry_func (gchar** argv, int argv_length1, gpointer self); static gint _print_help_entry_func (gchar** argv, int argv_length1, gpointer self); gint _vala_main (gchar** argv, int argv_length1); static gchar** _vala_array_dup1 (gchar** self, int length); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); const gchar* IBUS_SCHEMAS[3] = {"org.freedesktop.ibus.general", "org.freedesktop.ibus.general.hotkey", "org.freedesktop.ibus.panel"}; const CommandEntry commands[12] = {{"engine", "Set or get engine", _get_set_engine_entry_func}, {"exit", "Exit ibus-daemon", _exit_daemon_entry_func}, {"list-engine", "Show available engines", _list_engine_entry_func}, {"watch", "(Not implemented)", _message_watch_entry_func}, {"restart", "Restart ibus-daemon", _restart_daemon_entry_func}, {"version", "Show version", _print_version_entry_func}, {"read-cache", "Show the content of registry cache", _read_cache_entry_func}, {"write-cache", "Create registry cache", _write_cache_entry_func}, {"address", "Print the D-Bus address of ibus-daemon", _print_address_entry_func}, {"read-config", "Show the configuration values", _read_config_entry_func}, {"reset-config", "Reset the configuration values", _reset_config_entry_func}, {"help", "Show this information", _print_help_entry_func}}; EngineList* engine_list_construct (GType object_type) { EngineList* self = NULL; self = (EngineList*) g_type_create_instance (object_type); return self; } EngineList* engine_list_new (void) { return engine_list_construct (TYPE_ENGINE_LIST); } static void value_engine_list_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_engine_list_free_value (GValue* value) { if (value->data[0].v_pointer) { engine_list_unref (value->data[0].v_pointer); } } static void value_engine_list_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = engine_list_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_engine_list_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_engine_list_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { EngineList* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = engine_list_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_engine_list_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { EngineList** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = engine_list_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_engine_list (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecEngineList* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_ENGINE_LIST), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer value_get_engine_list (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ENGINE_LIST), NULL); return value->data[0].v_pointer; } void value_set_engine_list (GValue* value, gpointer v_object) { EngineList* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ENGINE_LIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_ENGINE_LIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; engine_list_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { engine_list_unref (old); } } void value_take_engine_list (GValue* value, gpointer v_object) { EngineList* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ENGINE_LIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_ENGINE_LIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { engine_list_unref (old); } } static void engine_list_class_init (EngineListClass * klass) { engine_list_parent_class = g_type_class_peek_parent (klass); ((EngineListClass *) klass)->finalize = engine_list_finalize; } static void engine_list_instance_init (EngineList * self) { IBusEngineDesc** _tmp0_ = NULL; _tmp0_ = g_new0 (IBusEngineDesc*, 0 + 1); self->data = _tmp0_; self->data_length1 = 0; self->_data_size_ = self->data_length1; self->ref_count = 1; } static void engine_list_finalize (EngineList* obj) { EngineList * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ENGINE_LIST, EngineList); g_signal_handlers_destroy (self); self->data = (_vala_array_free (self->data, self->data_length1, (GDestroyNotify) g_object_unref), NULL); } GType engine_list_get_type (void) { static volatile gsize engine_list_type_id__volatile = 0; if (g_once_init_enter (&engine_list_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { value_engine_list_init, value_engine_list_free_value, value_engine_list_copy_value, value_engine_list_peek_pointer, "p", value_engine_list_collect_value, "p", value_engine_list_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (EngineListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) engine_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EngineList), 0, (GInstanceInitFunc) engine_list_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType engine_list_type_id; engine_list_type_id = g_type_register_fundamental (g_type_fundamental_next (), "EngineList", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&engine_list_type_id__volatile, engine_list_type_id); } return engine_list_type_id__volatile; } gpointer engine_list_ref (gpointer instance) { EngineList* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void engine_list_unref (gpointer instance) { EngineList* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { ENGINE_LIST_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } IBusBus* get_bus (void) { IBusBus* result = NULL; IBusBus* bus = NULL; IBusBus* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; gboolean _tmp2_ = FALSE; _tmp0_ = ibus_bus_new (); g_object_ref_sink (_tmp0_); bus = _tmp0_; _tmp1_ = bus; _tmp2_ = ibus_bus_is_connected (_tmp1_); if (!_tmp2_) { result = NULL; _g_object_unref0 (bus); return result; } result = bus; return result; } static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static void _engine_list_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (engine_list_unref (var), NULL)); } static gpointer _engine_list_ref0 (gpointer self) { return self ? engine_list_ref (self) : NULL; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void _vala_array_add1 (IBusEngineDesc*** array, int* length, int* size, IBusEngineDesc* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusEngineDesc*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } gint list_engine (gchar** argv, int argv_length1) { gint result = 0; static const GOptionEntry options[] = {{"name-only", (gchar) 0, 0, G_OPTION_ARG_NONE, &name_only, "List engine name only", NULL}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_ = NULL; GOptionContext* _tmp1_ = NULL; IBusBus* bus = NULL; IBusBus* _tmp6_ = NULL; IBusBus* _tmp7_ = NULL; GList* engines = NULL; IBusBus* _tmp10_ = NULL; GList* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; GHashTable* map = NULL; GHashFunc _tmp16_ = NULL; GEqualFunc _tmp17_ = NULL; GHashTable* _tmp18_ = NULL; GList* _tmp19_ = NULL; GHashTable* _tmp38_ = NULL; GList* _tmp39_ = NULL; GError * _inner_error_ = NULL; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_ = NULL; _tmp2_ = option; g_option_context_parse (_tmp2_, &argv_length1, &argv, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_OPTION_ERROR) { goto __catch0_g_option_error; } _g_option_context_free0 (option); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp3_ = NULL; GError* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp3_ = stderr; _tmp4_ = e; _tmp5_ = _tmp4_->message; fprintf (_tmp3_, "%s\n", _tmp5_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } _tmp6_ = get_bus (); bus = _tmp6_; _tmp7_ = bus; if (_tmp7_ == NULL) { FILE* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; _tmp8_ = stderr; _tmp9_ = _ ("Can't connect to IBus.\n"); fprintf (_tmp8_, "%s", _tmp9_); result = EXIT_FAILURE; _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } _tmp10_ = bus; _tmp11_ = ibus_bus_list_engines (_tmp10_); engines = _tmp11_; _tmp12_ = name_only; if (_tmp12_) { GList* _tmp13_ = NULL; _tmp13_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp13_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { IBusEngineDesc* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; _tmp14_ = engine; _tmp15_ = ibus_engine_desc_get_name (_tmp14_); g_print ("%s\n", _tmp15_); } } } result = EXIT_SUCCESS; _g_list_free0 (engines); _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } _tmp16_ = g_str_hash; _tmp17_ = g_str_equal; _tmp18_ = g_hash_table_new_full (_tmp16_, _tmp17_, _g_free0_, _engine_list_unref0_); map = _tmp18_; _tmp19_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp19_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { EngineList* list = NULL; GHashTable* _tmp20_ = NULL; IBusEngineDesc* _tmp21_ = NULL; const gchar* _tmp22_ = NULL; gconstpointer _tmp23_ = NULL; EngineList* _tmp24_ = NULL; EngineList* _tmp25_ = NULL; EngineList* _tmp33_ = NULL; EngineList* _tmp34_ = NULL; IBusEngineDesc** _tmp35_ = NULL; gint _tmp35__length1 = 0; IBusEngineDesc* _tmp36_ = NULL; IBusEngineDesc* _tmp37_ = NULL; _tmp20_ = map; _tmp21_ = engine; _tmp22_ = ibus_engine_desc_get_language (_tmp21_); _tmp23_ = g_hash_table_lookup (_tmp20_, _tmp22_); _tmp24_ = _engine_list_ref0 ((EngineList*) _tmp23_); list = _tmp24_; _tmp25_ = list; if (_tmp25_ == NULL) { EngineList* _tmp26_ = NULL; GHashTable* _tmp27_ = NULL; IBusEngineDesc* _tmp28_ = NULL; const gchar* _tmp29_ = NULL; gchar* _tmp30_ = NULL; EngineList* _tmp31_ = NULL; EngineList* _tmp32_ = NULL; _tmp26_ = engine_list_new (); _engine_list_unref0 (list); list = _tmp26_; _tmp27_ = map; _tmp28_ = engine; _tmp29_ = ibus_engine_desc_get_language (_tmp28_); _tmp30_ = g_strdup (_tmp29_); _tmp31_ = list; _tmp32_ = _engine_list_ref0 (_tmp31_); g_hash_table_insert (_tmp27_, _tmp30_, _tmp32_); } _tmp33_ = list; _tmp34_ = list; _tmp35_ = _tmp34_->data; _tmp35__length1 = _tmp34_->data_length1; _tmp36_ = engine; _tmp37_ = _g_object_ref0 (_tmp36_); _vala_array_add1 (&_tmp33_->data, &_tmp33_->data_length1, &_tmp33_->_data_size_, _tmp37_); _engine_list_unref0 (list); } } } _tmp38_ = map; _tmp39_ = g_hash_table_get_keys (_tmp38_); { GList* language_collection = NULL; GList* language_it = NULL; language_collection = _tmp39_; for (language_it = language_collection; language_it != NULL; language_it = language_it->next) { const gchar* language = NULL; language = (const gchar*) language_it->data; { EngineList* list = NULL; GHashTable* _tmp40_ = NULL; const gchar* _tmp41_ = NULL; gconstpointer _tmp42_ = NULL; EngineList* _tmp43_ = NULL; const gchar* _tmp44_ = NULL; const gchar* _tmp45_ = NULL; const gchar* _tmp46_ = NULL; EngineList* _tmp47_ = NULL; IBusEngineDesc** _tmp48_ = NULL; gint _tmp48__length1 = 0; _tmp40_ = map; _tmp41_ = language; _tmp42_ = g_hash_table_lookup (_tmp40_, _tmp41_); _tmp43_ = _engine_list_ref0 ((EngineList*) _tmp42_); list = _tmp43_; _tmp44_ = _ ("language: %s\n"); _tmp45_ = language; _tmp46_ = ibus_get_language_name (_tmp45_); g_print (_tmp44_, _tmp46_); _tmp47_ = list; _tmp48_ = _tmp47_->data; _tmp48__length1 = _tmp47_->data_length1; { IBusEngineDesc** engine_collection = NULL; gint engine_collection_length1 = 0; gint _engine_collection_size_ = 0; gint engine_it = 0; engine_collection = _tmp48_; engine_collection_length1 = _tmp48__length1; for (engine_it = 0; engine_it < _tmp48__length1; engine_it = engine_it + 1) { IBusEngineDesc* _tmp49_ = NULL; IBusEngineDesc* engine = NULL; _tmp49_ = _g_object_ref0 (engine_collection[engine_it]); engine = _tmp49_; { IBusEngineDesc* _tmp50_ = NULL; const gchar* _tmp51_ = NULL; IBusEngineDesc* _tmp52_ = NULL; const gchar* _tmp53_ = NULL; _tmp50_ = engine; _tmp51_ = ibus_engine_desc_get_name (_tmp50_); _tmp52_ = engine; _tmp53_ = ibus_engine_desc_get_longname (_tmp52_); g_print (" %s - %s\n", _tmp51_, _tmp53_); _g_object_unref0 (engine); } } } _engine_list_unref0 (list); } } _g_list_free0 (language_collection); } result = EXIT_SUCCESS; _g_hash_table_unref0 (map); _g_list_free0 (engines); _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add5 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } gint exec_setxkbmap (IBusEngineDesc* engine) { gint result = 0; gchar* layout = NULL; IBusEngineDesc* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; gchar* variant = NULL; IBusEngineDesc* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; gchar* _tmp5_ = NULL; gchar* option = NULL; IBusEngineDesc* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; gchar* _tmp8_ = NULL; gchar* standard_error = NULL; gint exit_status = 0; gchar** args = NULL; gchar* _tmp9_ = NULL; gchar** _tmp10_ = NULL; gint args_length1 = 0; gint _args_size_ = 0; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; const gchar* _tmp13_ = NULL; gboolean _tmp21_ = FALSE; gboolean _tmp22_ = FALSE; const gchar* _tmp23_ = NULL; gboolean _tmp31_ = FALSE; gboolean _tmp32_ = FALSE; const gchar* _tmp33_ = NULL; gchar** _tmp43_ = NULL; gint _tmp43__length1 = 0; gint _tmp53_ = 0; GError * _inner_error_ = NULL; g_return_val_if_fail (engine != NULL, 0); _tmp0_ = engine; _tmp1_ = ibus_engine_desc_get_layout (_tmp0_); _tmp2_ = g_strdup (_tmp1_); layout = _tmp2_; _tmp3_ = engine; _tmp4_ = ibus_engine_desc_get_layout_variant (_tmp3_); _tmp5_ = g_strdup (_tmp4_); variant = _tmp5_; _tmp6_ = engine; _tmp7_ = ibus_engine_desc_get_layout_option (_tmp6_); _tmp8_ = g_strdup (_tmp7_); option = _tmp8_; standard_error = NULL; exit_status = 0; _tmp9_ = g_strdup ("setxkbmap"); _tmp10_ = g_new0 (gchar*, 1 + 1); _tmp10_[0] = _tmp9_; args = _tmp10_; args_length1 = 1; _args_size_ = args_length1; _tmp13_ = layout; if (_tmp13_ != NULL) { const gchar* _tmp14_ = NULL; _tmp14_ = layout; _tmp12_ = g_strcmp0 (_tmp14_, "") != 0; } else { _tmp12_ = FALSE; } if (_tmp12_) { const gchar* _tmp15_ = NULL; _tmp15_ = layout; _tmp11_ = g_strcmp0 (_tmp15_, "default") != 0; } else { _tmp11_ = FALSE; } if (_tmp11_) { gchar** _tmp16_ = NULL; gint _tmp16__length1 = 0; gchar* _tmp17_ = NULL; gchar** _tmp18_ = NULL; gint _tmp18__length1 = 0; const gchar* _tmp19_ = NULL; gchar* _tmp20_ = NULL; _tmp16_ = args; _tmp16__length1 = args_length1; _tmp17_ = g_strdup ("-layout"); _vala_array_add2 (&args, &args_length1, &_args_size_, _tmp17_); _tmp18_ = args; _tmp18__length1 = args_length1; _tmp19_ = layout; _tmp20_ = g_strdup (_tmp19_); _vala_array_add3 (&args, &args_length1, &_args_size_, _tmp20_); } _tmp23_ = variant; if (_tmp23_ != NULL) { const gchar* _tmp24_ = NULL; _tmp24_ = variant; _tmp22_ = g_strcmp0 (_tmp24_, "") != 0; } else { _tmp22_ = FALSE; } if (_tmp22_) { const gchar* _tmp25_ = NULL; _tmp25_ = variant; _tmp21_ = g_strcmp0 (_tmp25_, "default") != 0; } else { _tmp21_ = FALSE; } if (_tmp21_) { gchar** _tmp26_ = NULL; gint _tmp26__length1 = 0; gchar* _tmp27_ = NULL; gchar** _tmp28_ = NULL; gint _tmp28__length1 = 0; const gchar* _tmp29_ = NULL; gchar* _tmp30_ = NULL; _tmp26_ = args; _tmp26__length1 = args_length1; _tmp27_ = g_strdup ("-variant"); _vala_array_add4 (&args, &args_length1, &_args_size_, _tmp27_); _tmp28_ = args; _tmp28__length1 = args_length1; _tmp29_ = variant; _tmp30_ = g_strdup (_tmp29_); _vala_array_add5 (&args, &args_length1, &_args_size_, _tmp30_); } _tmp33_ = option; if (_tmp33_ != NULL) { const gchar* _tmp34_ = NULL; _tmp34_ = option; _tmp32_ = g_strcmp0 (_tmp34_, "") != 0; } else { _tmp32_ = FALSE; } if (_tmp32_) { const gchar* _tmp35_ = NULL; _tmp35_ = option; _tmp31_ = g_strcmp0 (_tmp35_, "default") != 0; } else { _tmp31_ = FALSE; } if (_tmp31_) { gchar** _tmp36_ = NULL; gint _tmp36__length1 = 0; gchar* _tmp37_ = NULL; gchar** _tmp38_ = NULL; gint _tmp38__length1 = 0; gchar* _tmp39_ = NULL; gchar** _tmp40_ = NULL; gint _tmp40__length1 = 0; const gchar* _tmp41_ = NULL; gchar* _tmp42_ = NULL; _tmp36_ = args; _tmp36__length1 = args_length1; _tmp37_ = g_strdup ("-option"); _vala_array_add6 (&args, &args_length1, &_args_size_, _tmp37_); _tmp38_ = args; _tmp38__length1 = args_length1; _tmp39_ = g_strdup ("-option"); _vala_array_add7 (&args, &args_length1, &_args_size_, _tmp39_); _tmp40_ = args; _tmp40__length1 = args_length1; _tmp41_ = option; _tmp42_ = g_strdup (_tmp41_); _vala_array_add8 (&args, &args_length1, &_args_size_, _tmp42_); } _tmp43_ = args; _tmp43__length1 = args_length1; if (_tmp43__length1 == 1) { result = EXIT_FAILURE; args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return result; } { gboolean _tmp44_ = FALSE; gchar** _tmp45_ = NULL; gint _tmp45__length1 = 0; gchar* _tmp46_ = NULL; gint _tmp47_ = 0; gboolean _tmp48_ = FALSE; _tmp45_ = args; _tmp45__length1 = args_length1; _tmp48_ = g_spawn_sync (NULL, _tmp45_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_tmp46_, &_tmp47_, &_inner_error_); _g_free0 (standard_error); standard_error = _tmp46_; exit_status = _tmp47_; _tmp44_ = _tmp48_; if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_SPAWN_ERROR) { goto __catch1_g_spawn_error; } args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } if (!_tmp44_) { IBusEngineDesc* _tmp49_ = NULL; const gchar* _tmp50_ = NULL; _tmp49_ = engine; _tmp50_ = ibus_engine_desc_get_layout (_tmp49_); g_warning ("main.vala:132: Switch xkb layout to %s failed.", _tmp50_); result = EXIT_FAILURE; args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return result; } } goto __finally1; __catch1_g_spawn_error: { GError* e = NULL; GError* _tmp51_ = NULL; const gchar* _tmp52_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp51_ = e; _tmp52_ = _tmp51_->message; g_warning ("main.vala:137: Execute setxkbmap failed: %s", _tmp52_); result = EXIT_FAILURE; _g_error_free0 (e); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return result; } __finally1: if (G_UNLIKELY (_inner_error_ != NULL)) { args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } _tmp53_ = exit_status; if (_tmp53_ != 0) { const gchar* _tmp54_ = NULL; const gchar* _tmp55_ = NULL; _tmp55_ = standard_error; _tmp54_ = _tmp55_; if (_tmp54_ == NULL) { _tmp54_ = "(null)"; } g_warning ("main.vala:142: Execute setxkbmap failed: %s", _tmp54_); result = EXIT_FAILURE; args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return result; } result = EXIT_SUCCESS; args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_free0 (standard_error); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return result; } gint get_set_engine (gchar** argv, int argv_length1) { gint result = 0; IBusBus* bus = NULL; IBusBus* _tmp0_ = NULL; gchar* engine = NULL; gchar** _tmp1_ = NULL; gint _tmp1__length1 = 0; const gchar* _tmp5_ = NULL; IBusBus* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; gboolean _tmp16_ = FALSE; IBusEngineDesc* desc = NULL; IBusBus* _tmp19_ = NULL; IBusEngineDesc* _tmp20_ = NULL; IBusEngineDesc* _tmp21_ = NULL; IBusEngineDesc* _tmp22_ = NULL; IBusEngineDesc* _tmp25_ = NULL; gint _tmp26_ = 0; _tmp0_ = get_bus (); bus = _tmp0_; engine = NULL; _tmp1_ = argv; _tmp1__length1 = argv_length1; if (_tmp1__length1 > 1) { gchar** _tmp2_ = NULL; gint _tmp2__length1 = 0; const gchar* _tmp3_ = NULL; gchar* _tmp4_ = NULL; _tmp2_ = argv; _tmp2__length1 = argv_length1; _tmp3_ = _tmp2_[1]; _tmp4_ = g_strdup (_tmp3_); _g_free0 (engine); engine = _tmp4_; } _tmp5_ = engine; if (_tmp5_ == NULL) { IBusEngineDesc* desc = NULL; IBusBus* _tmp6_ = NULL; IBusEngineDesc* _tmp7_ = NULL; IBusEngineDesc* _tmp8_ = NULL; IBusEngineDesc* _tmp9_ = NULL; IBusEngineDesc* _tmp12_ = NULL; const gchar* _tmp13_ = NULL; _tmp6_ = bus; _tmp7_ = ibus_bus_get_global_engine (_tmp6_); _tmp8_ = _g_object_ref0 (_tmp7_); desc = _tmp8_; _tmp9_ = desc; if (_tmp9_ == NULL) { FILE* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; _tmp10_ = stderr; _tmp11_ = _ ("No engine is set.\n"); fprintf (_tmp10_, "%s", _tmp11_); result = EXIT_FAILURE; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp12_ = desc; _tmp13_ = ibus_engine_desc_get_name (_tmp12_); g_print ("%s\n", _tmp13_); result = EXIT_SUCCESS; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp14_ = bus; _tmp15_ = engine; _tmp16_ = ibus_bus_set_global_engine (_tmp14_, _tmp15_); if (!_tmp16_) { FILE* _tmp17_ = NULL; const gchar* _tmp18_ = NULL; _tmp17_ = stderr; _tmp18_ = _ ("Set global engine failed.\n"); fprintf (_tmp17_, "%s", _tmp18_); result = EXIT_FAILURE; _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp19_ = bus; _tmp20_ = ibus_bus_get_global_engine (_tmp19_); _tmp21_ = _g_object_ref0 (_tmp20_); desc = _tmp21_; _tmp22_ = desc; if (_tmp22_ == NULL) { FILE* _tmp23_ = NULL; const gchar* _tmp24_ = NULL; _tmp23_ = stderr; _tmp24_ = _ ("Get global engine failed.\n"); fprintf (_tmp23_, "%s", _tmp24_); result = EXIT_FAILURE; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp25_ = desc; _tmp26_ = exec_setxkbmap (_tmp25_); result = _tmp26_; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } gint message_watch (gchar** argv, int argv_length1) { gint result = 0; result = EXIT_SUCCESS; return result; } gint restart_daemon (gchar** argv, int argv_length1) { gint result = 0; IBusBus* bus = NULL; IBusBus* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; IBusBus* _tmp4_ = NULL; _tmp0_ = get_bus (); bus = _tmp0_; _tmp1_ = bus; if (_tmp1_ == NULL) { FILE* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; _tmp2_ = stderr; _tmp3_ = _ ("Can't connect to IBus.\n"); fprintf (_tmp2_, "%s", _tmp3_); result = EXIT_FAILURE; _g_object_unref0 (bus); return result; } _tmp4_ = bus; ibus_bus_exit (_tmp4_, TRUE); result = EXIT_SUCCESS; _g_object_unref0 (bus); return result; } gint exit_daemon (gchar** argv, int argv_length1) { gint result = 0; IBusBus* bus = NULL; IBusBus* _tmp0_ = NULL; IBusBus* _tmp1_ = NULL; IBusBus* _tmp4_ = NULL; _tmp0_ = get_bus (); bus = _tmp0_; _tmp1_ = bus; if (_tmp1_ == NULL) { FILE* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; _tmp2_ = stderr; _tmp3_ = _ ("Can't connect to IBus.\n"); fprintf (_tmp2_, "%s", _tmp3_); result = EXIT_FAILURE; _g_object_unref0 (bus); return result; } _tmp4_ = bus; ibus_bus_exit (_tmp4_, FALSE); result = EXIT_SUCCESS; _g_object_unref0 (bus); return result; } gint print_version (gchar** argv, int argv_length1) { gint result = 0; g_print ("IBus %s\n", PACKAGE_VERSION); result = EXIT_SUCCESS; return result; } gint read_cache (gchar** argv, int argv_length1) { gint result = 0; static const GOptionEntry options[] = {{"system", (gchar) 0, 0, G_OPTION_ARG_NONE, &is_system, "Read the system registry cache.", NULL}, {"file", (gchar) 0, 0, G_OPTION_ARG_STRING, &cache_file, "Read the registry cache FILE.", "FILE"}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_ = NULL; GOptionContext* _tmp1_ = NULL; IBusRegistry* registry = NULL; IBusRegistry* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; GString* output = NULL; GString* _tmp18_ = NULL; IBusRegistry* _tmp19_ = NULL; GString* _tmp20_ = NULL; GString* _tmp21_ = NULL; const gchar* _tmp22_ = NULL; GError * _inner_error_ = NULL; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_ = NULL; _tmp2_ = option; g_option_context_parse (_tmp2_, &argv_length1, &argv, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_OPTION_ERROR) { goto __catch2_g_option_error; } _g_option_context_free0 (option); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } } goto __finally2; __catch2_g_option_error: { GError* e = NULL; FILE* _tmp3_ = NULL; GError* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp3_ = stderr; _tmp4_ = e; _tmp5_ = _tmp4_->message; fprintf (_tmp3_, "%s\n", _tmp5_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally2: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } _tmp6_ = ibus_registry_new (); g_object_ref_sink (_tmp6_); registry = _tmp6_; _tmp7_ = cache_file; if (_tmp7_ != NULL) { IBusRegistry* _tmp8_ = NULL; const gchar* _tmp9_ = NULL; gboolean _tmp10_ = FALSE; _tmp8_ = registry; _tmp9_ = cache_file; _tmp10_ = ibus_registry_load_cache_file (_tmp8_, _tmp9_); if (!_tmp10_) { FILE* _tmp11_ = NULL; const gchar* _tmp12_ = NULL; _tmp11_ = stderr; _tmp12_ = _ ("The registry cache is invalid.\n"); fprintf (_tmp11_, "%s", _tmp12_); result = EXIT_FAILURE; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } } else { IBusRegistry* _tmp13_ = NULL; gboolean _tmp14_ = FALSE; gboolean _tmp15_ = FALSE; _tmp13_ = registry; _tmp14_ = is_system; _tmp15_ = ibus_registry_load_cache (_tmp13_, !_tmp14_); if (!_tmp15_) { FILE* _tmp16_ = NULL; const gchar* _tmp17_ = NULL; _tmp16_ = stderr; _tmp17_ = _ ("The registry cache is invalid.\n"); fprintf (_tmp16_, "%s", _tmp17_); result = EXIT_FAILURE; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } } _tmp18_ = g_string_new (""); output = _tmp18_; _tmp19_ = registry; _tmp20_ = output; ibus_registry_output (_tmp19_, _tmp20_, 1); _tmp21_ = output; _tmp22_ = _tmp21_->str; g_print ("%s\n", _tmp22_); result = EXIT_SUCCESS; _g_string_free0 (output); _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } gint write_cache (gchar** argv, int argv_length1) { gint result = 0; static const GOptionEntry options[] = {{"system", (gchar) 0, 0, G_OPTION_ARG_NONE, &is_system, "Write the system registry cache.", NULL}, {"file", (gchar) 0, 0, G_OPTION_ARG_STRING, &cache_file, "Write the registry cache FILE.", "FILE"}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_ = NULL; GOptionContext* _tmp1_ = NULL; IBusRegistry* registry = NULL; IBusRegistry* _tmp6_ = NULL; IBusRegistry* _tmp7_ = NULL; const gchar* _tmp8_ = NULL; gint _tmp13_ = 0; IBusRegistry* _tmp14_ = NULL; gboolean _tmp15_ = FALSE; gboolean _tmp16_ = FALSE; GError * _inner_error_ = NULL; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_ = NULL; _tmp2_ = option; g_option_context_parse (_tmp2_, &argv_length1, &argv, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { if (_inner_error_->domain == G_OPTION_ERROR) { goto __catch3_g_option_error; } _g_option_context_free0 (option); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } } goto __finally3; __catch3_g_option_error: { GError* e = NULL; FILE* _tmp3_ = NULL; GError* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; e = _inner_error_; _inner_error_ = NULL; _tmp3_ = stderr; _tmp4_ = e; _tmp5_ = _tmp4_->message; fprintf (_tmp3_, "%s\n", _tmp5_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally3: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return 0; } _tmp6_ = ibus_registry_new (); g_object_ref_sink (_tmp6_); registry = _tmp6_; _tmp7_ = registry; ibus_registry_load (_tmp7_); _tmp8_ = cache_file; if (_tmp8_ != NULL) { gint _tmp9_ = 0; IBusRegistry* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; gboolean _tmp12_ = FALSE; _tmp10_ = registry; _tmp11_ = cache_file; _tmp12_ = ibus_registry_save_cache_file (_tmp10_, _tmp11_); if (_tmp12_) { _tmp9_ = EXIT_SUCCESS; } else { _tmp9_ = EXIT_FAILURE; } result = _tmp9_; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } _tmp14_ = registry; _tmp15_ = is_system; _tmp16_ = ibus_registry_save_cache (_tmp14_, !_tmp15_); if (_tmp16_) { _tmp13_ = EXIT_SUCCESS; } else { _tmp13_ = EXIT_FAILURE; } result = _tmp13_; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } gint print_address (gchar** argv, int argv_length1) { gint result = 0; gchar* address = NULL; const gchar* _tmp0_ = NULL; gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; const gchar* _tmp3_ = NULL; _tmp0_ = ibus_get_address (); _tmp1_ = g_strdup (_tmp0_); address = _tmp1_; _tmp3_ = address; if (_tmp3_ != NULL) { const gchar* _tmp4_ = NULL; _tmp4_ = address; _tmp2_ = _tmp4_; } else { _tmp2_ = "(null)"; } g_print ("%s\n", _tmp2_); result = EXIT_SUCCESS; _g_free0 (address); return result; } gint read_config (gchar** argv, int argv_length1) { gint result = 0; GString* output = NULL; GString* _tmp0_ = NULL; GString* _tmp18_ = NULL; const gchar* _tmp19_ = NULL; _tmp0_ = g_string_new (""); output = _tmp0_; { const gchar** schema_collection = NULL; gint schema_collection_length1 = 0; gint _schema_collection_size_ = 0; gint schema_it = 0; schema_collection = IBUS_SCHEMAS; schema_collection_length1 = G_N_ELEMENTS (IBUS_SCHEMAS); for (schema_it = 0; schema_it < G_N_ELEMENTS (IBUS_SCHEMAS); schema_it = schema_it + 1) { gchar* _tmp1_ = NULL; gchar* schema = NULL; _tmp1_ = g_strdup (schema_collection[schema_it]); schema = _tmp1_; { GSettings* settings = NULL; const gchar* _tmp2_ = NULL; GSettings* _tmp3_ = NULL; GString* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; GSettings* _tmp6_ = NULL; gchar** _tmp7_ = NULL; gchar** _tmp8_ = NULL; _tmp2_ = schema; _tmp3_ = g_settings_new (_tmp2_); settings = _tmp3_; _tmp4_ = output; _tmp5_ = schema; g_string_append_printf (_tmp4_, "SCHEMA: %s\n", _tmp5_); _tmp6_ = settings; _tmp8_ = _tmp7_ = g_settings_list_keys (_tmp6_); { gchar** key_collection = NULL; gint key_collection_length1 = 0; gint _key_collection_size_ = 0; gint key_it = 0; key_collection = _tmp8_; key_collection_length1 = _vala_array_length (_tmp7_); for (key_it = 0; key_it < _vala_array_length (_tmp7_); key_it = key_it + 1) { gchar* _tmp9_ = NULL; gchar* key = NULL; _tmp9_ = g_strdup (key_collection[key_it]); key = _tmp9_; { GVariant* variant = NULL; GSettings* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; GVariant* _tmp12_ = NULL; GString* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; GVariant* _tmp15_ = NULL; gchar* _tmp16_ = NULL; gchar* _tmp17_ = NULL; _tmp10_ = settings; _tmp11_ = key; _tmp12_ = g_settings_get_value (_tmp10_, _tmp11_); variant = _tmp12_; _tmp13_ = output; _tmp14_ = key; _tmp15_ = variant; _tmp16_ = g_variant_print (_tmp15_, TRUE); _tmp17_ = _tmp16_; g_string_append_printf (_tmp13_, " %s: %s\n", _tmp14_, _tmp17_); _g_free0 (_tmp17_); _g_variant_unref0 (variant); _g_free0 (key); } } key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL); } _g_object_unref0 (settings); _g_free0 (schema); } } } _tmp18_ = output; _tmp19_ = _tmp18_->str; g_print ("%s", _tmp19_); result = EXIT_SUCCESS; _g_string_free0 (output); return result; } gint reset_config (gchar** argv, int argv_length1) { gint result = 0; const gchar* _tmp0_ = NULL; const gchar* _tmp12_ = NULL; _tmp0_ = _ ("Resetting…"); g_print ("%s\n", _tmp0_); { const gchar** schema_collection = NULL; gint schema_collection_length1 = 0; gint _schema_collection_size_ = 0; gint schema_it = 0; schema_collection = IBUS_SCHEMAS; schema_collection_length1 = G_N_ELEMENTS (IBUS_SCHEMAS); for (schema_it = 0; schema_it < G_N_ELEMENTS (IBUS_SCHEMAS); schema_it = schema_it + 1) { gchar* _tmp1_ = NULL; gchar* schema = NULL; _tmp1_ = g_strdup (schema_collection[schema_it]); schema = _tmp1_; { GSettings* settings = NULL; const gchar* _tmp2_ = NULL; GSettings* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; GSettings* _tmp5_ = NULL; gchar** _tmp6_ = NULL; gchar** _tmp7_ = NULL; _tmp2_ = schema; _tmp3_ = g_settings_new (_tmp2_); settings = _tmp3_; _tmp4_ = schema; g_print ("SCHEMA: %s\n", _tmp4_); _tmp5_ = settings; _tmp7_ = _tmp6_ = g_settings_list_keys (_tmp5_); { gchar** key_collection = NULL; gint key_collection_length1 = 0; gint _key_collection_size_ = 0; gint key_it = 0; key_collection = _tmp7_; key_collection_length1 = _vala_array_length (_tmp6_); for (key_it = 0; key_it < _vala_array_length (_tmp6_); key_it = key_it + 1) { gchar* _tmp8_ = NULL; gchar* key = NULL; _tmp8_ = g_strdup (key_collection[key_it]); key = _tmp8_; { const gchar* _tmp9_ = NULL; GSettings* _tmp10_ = NULL; const gchar* _tmp11_ = NULL; _tmp9_ = key; g_print (" %s\n", _tmp9_); _tmp10_ = settings; _tmp11_ = key; g_settings_reset (_tmp10_, _tmp11_); _g_free0 (key); } } key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL); } _g_object_unref0 (settings); _g_free0 (schema); } } } g_settings_sync (); _tmp12_ = _ ("Done"); g_print ("%s\n", _tmp12_); result = EXIT_SUCCESS; return result; } gint print_help (gchar** argv, int argv_length1) { gint result = 0; FILE* _tmp0_ = NULL; _tmp0_ = stdout; print_usage (_tmp0_); result = EXIT_SUCCESS; return result; } CommandEntry* command_entry_dup (const CommandEntry* self) { CommandEntry* dup; dup = g_new0 (CommandEntry, 1); memcpy (dup, self, sizeof (CommandEntry)); return dup; } void command_entry_free (CommandEntry* self) { g_free (self); } GType command_entry_get_type (void) { static volatile gsize command_entry_type_id__volatile = 0; if (g_once_init_enter (&command_entry_type_id__volatile)) { GType command_entry_type_id; command_entry_type_id = g_boxed_type_register_static ("CommandEntry", (GBoxedCopyFunc) command_entry_dup, (GBoxedFreeFunc) command_entry_free); g_once_init_leave (&command_entry_type_id__volatile, command_entry_type_id); } return command_entry_type_id__volatile; } static gint _get_set_engine_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = get_set_engine (argv, argv_length1); return result; } static gint _exit_daemon_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = exit_daemon (argv, argv_length1); return result; } static gint _list_engine_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = list_engine (argv, argv_length1); return result; } static gint _message_watch_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = message_watch (argv, argv_length1); return result; } static gint _restart_daemon_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = restart_daemon (argv, argv_length1); return result; } static gint _print_version_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = print_version (argv, argv_length1); return result; } static gint _read_cache_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = read_cache (argv, argv_length1); return result; } static gint _write_cache_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = write_cache (argv, argv_length1); return result; } static gint _print_address_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = print_address (argv, argv_length1); return result; } static gint _read_config_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = read_config (argv, argv_length1); return result; } static gint _reset_config_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = reset_config (argv, argv_length1); return result; } static gint _print_help_entry_func (gchar** argv, int argv_length1, gpointer self) { gint result; result = print_help (argv, argv_length1); return result; } void print_usage (FILE* stream) { FILE* _tmp0_ = NULL; const gchar* _tmp1_ = NULL; const gchar* _tmp2_ = NULL; FILE* _tmp3_ = NULL; const gchar* _tmp4_ = NULL; g_return_if_fail (stream != NULL); _tmp0_ = stream; _tmp1_ = _ ("Usage: %s COMMAND [OPTION...]\n\n"); _tmp2_ = program_name; fprintf (_tmp0_, _tmp1_, _tmp2_); _tmp3_ = stream; _tmp4_ = _ ("Commands:\n"); fprintf (_tmp3_, "%s", _tmp4_); { gint i = 0; i = 0; { gboolean _tmp5_ = FALSE; _tmp5_ = TRUE; while (TRUE) { gint _tmp7_ = 0; FILE* _tmp8_ = NULL; gint _tmp9_ = 0; CommandEntry _tmp10_ = {0}; const gchar* _tmp11_ = NULL; gint _tmp12_ = 0; CommandEntry _tmp13_ = {0}; const gchar* _tmp14_ = NULL; const gchar* _tmp15_ = NULL; if (!_tmp5_) { gint _tmp6_ = 0; _tmp6_ = i; i = _tmp6_ + 1; } _tmp5_ = FALSE; _tmp7_ = i; if (!(_tmp7_ < G_N_ELEMENTS (commands))) { break; } _tmp8_ = stream; _tmp9_ = i; _tmp10_ = commands[_tmp9_]; _tmp11_ = _tmp10_.name; _tmp12_ = i; _tmp13_ = commands[_tmp12_]; _tmp14_ = _tmp13_.description; _tmp15_ = g_dgettext (NULL, _tmp14_); fprintf (_tmp8_, " %-12s %s\n", _tmp11_, _tmp15_); } } } } static gchar** _vala_array_dup1 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_ = NULL; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } gint _vala_main (gchar** argv, int argv_length1) { gint result = 0; gchar** _tmp0_ = NULL; gint _tmp0__length1 = 0; const gchar* _tmp1_ = NULL; gchar* _tmp2_ = NULL; gchar** _tmp3_ = NULL; gint _tmp3__length1 = 0; gchar** new_argv = NULL; gchar** _tmp5_ = NULL; gint _tmp5__length1 = 0; gchar** _tmp6_ = NULL; gint _tmp6__length1 = 0; gchar** _tmp7_ = NULL; gint _tmp7__length1 = 0; gint new_argv_length1 = 0; gint _new_argv_size_ = 0; gchar** _tmp8_ = NULL; gint _tmp8__length1 = 0; const gchar* _tmp9_ = NULL; gchar** _tmp10_ = NULL; gint _tmp10__length1 = 0; const gchar* _tmp11_ = NULL; gchar* _tmp12_ = NULL; gchar* _tmp13_ = NULL; FILE* _tmp27_ = NULL; const gchar* _tmp28_ = NULL; gchar** _tmp29_ = NULL; gint _tmp29__length1 = 0; const gchar* _tmp30_ = NULL; FILE* _tmp31_ = NULL; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, GLIB_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); ibus_init (); _tmp0_ = argv; _tmp0__length1 = argv_length1; _tmp1_ = _tmp0_[0]; _tmp2_ = g_path_get_basename (_tmp1_); _g_free0 (program_name); program_name = _tmp2_; _tmp3_ = argv; _tmp3__length1 = argv_length1; if (_tmp3__length1 < 2) { FILE* _tmp4_ = NULL; _tmp4_ = stderr; print_usage (_tmp4_); result = EXIT_FAILURE; return result; } _tmp5_ = argv; _tmp5__length1 = argv_length1; _tmp6_ = argv; _tmp6__length1 = argv_length1; _tmp7_ = ((_tmp5_ + 1) != NULL) ? _vala_array_dup1 (_tmp5_ + 1, _tmp6__length1 - 1) : ((gpointer) (_tmp5_ + 1)); _tmp7__length1 = _tmp6__length1 - 1; new_argv = _tmp7_; new_argv_length1 = _tmp7__length1; _new_argv_size_ = new_argv_length1; _tmp8_ = new_argv; _tmp8__length1 = new_argv_length1; _tmp9_ = program_name; _tmp10_ = new_argv; _tmp10__length1 = new_argv_length1; _tmp11_ = _tmp10_[0]; _tmp12_ = g_strdup_printf ("%s %s", _tmp9_, _tmp11_); _g_free0 (_tmp8_[0]); _tmp8_[0] = _tmp12_; _tmp13_ = _tmp8_[0]; { gint i = 0; i = 0; { gboolean _tmp14_ = FALSE; _tmp14_ = TRUE; while (TRUE) { gint _tmp16_ = 0; gint _tmp17_ = 0; CommandEntry _tmp18_ = {0}; const gchar* _tmp19_ = NULL; gchar** _tmp20_ = NULL; gint _tmp20__length1 = 0; const gchar* _tmp21_ = NULL; if (!_tmp14_) { gint _tmp15_ = 0; _tmp15_ = i; i = _tmp15_ + 1; } _tmp14_ = FALSE; _tmp16_ = i; if (!(_tmp16_ < G_N_ELEMENTS (commands))) { break; } _tmp17_ = i; _tmp18_ = commands[_tmp17_]; _tmp19_ = _tmp18_.name; _tmp20_ = argv; _tmp20__length1 = argv_length1; _tmp21_ = _tmp20_[1]; if (g_strcmp0 (_tmp19_, _tmp21_) == 0) { gint _tmp22_ = 0; CommandEntry _tmp23_ = {0}; EntryFunc _tmp24_ = NULL; void* _tmp24__target = NULL; gchar** _tmp25_ = NULL; gint _tmp25__length1 = 0; gint _tmp26_ = 0; _tmp22_ = i; _tmp23_ = commands[_tmp22_]; _tmp24_ = _tmp23_.entry; _tmp24__target = _tmp23_.entry_target; _tmp25_ = new_argv; _tmp25__length1 = new_argv_length1; _tmp26_ = _tmp24_ (_tmp25_, _tmp25__length1, _tmp24__target); result = _tmp26_; new_argv = (_vala_array_free (new_argv, new_argv_length1, (GDestroyNotify) g_free), NULL); return result; } } } } _tmp27_ = stderr; _tmp28_ = _ ("%s is unknown command!\n"); _tmp29_ = argv; _tmp29__length1 = argv_length1; _tmp30_ = _tmp29_[1]; fprintf (_tmp27_, _tmp28_, _tmp30_); _tmp31_ = stderr; print_usage (_tmp31_); result = EXIT_FAILURE; new_argv = (_vala_array_free (new_argv, new_argv_length1, (GDestroyNotify) g_free), NULL); return result; } int main (int argc, char ** argv) { #if !GLIB_CHECK_VERSION (2,35,0) g_type_init (); #endif return _vala_main (argv, argc); } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.11/tools/ibus.1.in0000644000000000000000000000436012551654123012230 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2013. .\" Copyright (c) Peng Huang , 2013. .\" .TH "IBUS" 1 "May 2013" "@VERSION@" "User Commands" .SH NAME .B ibus \- command line utility for ibus .SH "SYNOPSIS" .B ibus \fICOMMAND\fR [\fIOPTION\fR]... .SH "DESCRIPTION" .PP IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. It also may help developers to develop input method easily. .PP .B ibus is a command line utility which can restart or exit ibus-daemon, get or set the current ibus engine or list the ibus engines. .PP Homepage: https://github.com/ibus/ibus/wiki .SH "COMMAND" .TP \fBhelp\fR Show the commands list. .TP \fBengine\fR [\fBENGINE_NAME\fR] Show the curent ibus engine when .B ENGINE_NAME is not given. Set .B ENGINE_NAME to the current ibus engine. .TP \fBexit\fR Exit ibus-daemon. .TP \fBlist-engine\fR Show ibus engines list. .TP \fBrestart\fR Restart ibus-daemon. .TP \fBversion\fR Show the ibus version. .TP \fBread\-cache\fR [\fB\-\-system|\-\-file=FILE\fR] Show the content of the user registry cache if .B \-\-system is not given. Show the content of the system registry cache if .B \-\-system is given. Show the content of the custom registry cache .B FILE if .B \-\-file=FILE is given. .TP \fBwrite\-cache\fR [\fB\-\-system|\-\-file=FILE\fR] Save the user registry cache if .B \-\-system is not given. Save the system registry cache if .B \-\-system is given. Save the custom registry cache .B FILE if .B \-\-file=FILE is given. By default, it reads the component XML files from the standard component directory (\fI/usr/share/ibus/component\fP), you can set \fIIBUS_COMPONENT_PATH\fP environment variable for custom component directories, separated by ':'. .TP \fBaddress\fR Show the D-Bus address of ibus-daemon. .TP \fBread\-config\fR Print the setting values in a gsettings configuration file. .TP \fBreset\-config\fR Reset the user setting values to the default ones in a gsettings configuration file. .TP \fBwatch\fR Under construction. .TP .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues ibus-1.5.11/tools/Makefile.in0000644000000000000000000007303112551654261012650 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = ibus$(EXEEXT) subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(bash_completiondir)" "$(DESTDIR)$(man_onedir)" PROGRAMS = $(bin_PROGRAMS) am__objects_1 = am_ibus_OBJECTS = main.$(OBJEXT) $(am__objects_1) ibus_OBJECTS = $(am_ibus_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(libibus) $(am__DEPENDENCIES_1) ibus_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = VALACOMPILE = $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) LTVALACOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) AM_V_VALAC = $(am__v_VALAC_@AM_V@) am__v_VALAC_ = $(am__v_VALAC_@AM_DEFAULT_V@) am__v_VALAC_0 = @echo " VALAC " $@; am__v_VALAC_1 = SOURCES = $(ibus_SOURCES) DIST_SOURCES = $(ibus_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(bash_completion_DATA) $(man_one_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ibus_vala.stamp \ $(top_srcdir)/depcomp main.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la # force include config.h before gi18n.h. AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --vapidir=$(top_srcdir)/bindings/vala \ --pkg=ibus-1.0 \ --pkg=posix \ --pkg=config \ --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) ibus_SOURCES = \ main.vala \ $(NULL) ibus_LDADD = \ $(AM_LDADD) \ $(NULL) bash_completion_DATA = \ ibus.bash \ $(NULL) bash_completiondir = @datadir@/bash-completion/completions man_one_in_files = ibus.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA = $(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 EXTRA_DIST = \ $(man_one_in_files) \ ibus.bash \ $(NULL) CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ $(NULL) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus$(EXEEXT): $(ibus_OBJECTS) $(ibus_DEPENDENCIES) $(EXTRA_ibus_DEPENDENCIES) @rm -f ibus$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_OBJECTS) $(ibus_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< $(srcdir)/main.c: $(srcdir)/ibus_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/ibus_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/ibus_vala.stamp; \ fi $(srcdir)/ibus_vala.stamp: main.vala $(AM_V_at)rm -f $@ && echo stamp > $@-t $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) -C main.vala $(AM_V_at)mv -f $@-t $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-bash_completionDATA: $(bash_completion_DATA) @$(NORMAL_INSTALL) @list='$(bash_completion_DATA)'; test -n "$(bash_completiondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bash_completiondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bash_completiondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bash_completiondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(bash_completiondir)" || exit $$?; \ done uninstall-bash_completionDATA: @$(NORMAL_UNINSTALL) @list='$(bash_completion_DATA)'; test -n "$(bash_completiondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(bash_completiondir)'; $(am__uninstall_files_from_dir) install-man_oneDATA: $(man_one_DATA) @$(NORMAL_INSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(man_onedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man_onedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man_onedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man_onedir)" || exit $$?; \ done uninstall-man_oneDATA: @$(NORMAL_UNINSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(man_onedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bash_completiondir)" "$(DESTDIR)$(man_onedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f $(srcdir)/ibus_vala.stamp -rm -f $(srcdir)/main.c -rm -f main.c clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-bash_completionDATA install-man_oneDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-bash_completionDATA uninstall-binPROGRAMS \ uninstall-man_oneDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am \ install-bash_completionDATA install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man_oneDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-bash_completionDATA uninstall-binPROGRAMS \ uninstall-man_oneDATA .PRECIOUS: Makefile %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/tools/Makefile.am0000644000000000000000000000435712551654123012641 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la # force include config.h before gi18n.h. AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --vapidir=$(top_srcdir)/bindings/vala \ --pkg=ibus-1.0 \ --pkg=posix \ --pkg=config \ --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) bin_PROGRAMS = ibus ibus_SOURCES = \ main.vala \ $(NULL) ibus_LDADD = \ $(AM_LDADD) \ $(NULL) bash_completion_DATA= \ ibus.bash \ $(NULL) bash_completiondir=@datadir@/bash-completion/completions man_one_in_files = ibus.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA =$(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ EXTRA_DIST = \ $(man_one_in_files) \ ibus.bash \ $(NULL) CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/config.h.in0000644000000000000000000000664012551654246011473 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* dconf is 0.13.4 or later */ #undef DCONF_0_13_4 /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Enable key snooper */ #undef ENABLE_SNOOPER /* Enable surrounding-text support */ #undef ENABLE_SURROUNDING /* The prefix for out gettext translation domains. */ #undef GETTEXT_PACKAGE /* Define the location where the catalogs will be installed */ #undef GLIB_LOCALE_DIR /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `daemon' function. */ #undef HAVE_DAEMON /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_X11_XKBLIB_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Does not enbale keyboard snooper in those applications */ #undef NO_SNOOPER_APPS /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE ibus-1.5.11/xinput-ibus0000644000000000000000000000126512551654124011653 00000000000000prefix=/usr exec_prefix=${prefix} XIM=ibus XIM_PROGRAM="${exec_prefix}/bin/ibus-daemon" ICON="ibus" XIM_ARGS="--xim" PREFERENCE_PROGRAM="${exec_prefix}/bin/ibus-setup" SHORT_DESC="IBus" GTK_IM_MODULE=ibus NOT_RUN=gnome3 if test -f /usr/lib64/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \ test -f /usr/lib/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \ test -f /usr/lib64/qt4/plugins/inputmethods/libqtim-ibus.so || \ test -f /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so; then QT_IM_MODULE=ibus else QT_IM_MODULE=xim fi # if [ -z "$IBUS_SESSION_ID" ]; then # export IBUS_SESSION_ID=`mktemp -u XXXXXXXX` # fi ibus-1.5.11/config.guess0000755000000000000000000012367212551654253011773 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ibus-1.5.11/configure0000755000000000000000000240342512551654244011361 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for ibus 1.5.11. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/ibus/ibus/issues about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" as_awk_strverscmp=' # Use only awk features that work with 7th edition Unix awk (1978). # My, what an old awk you have, Mr. Solaris! END { while (length(v1) && length(v2)) { # Set d1 to be the next thing to compare from v1, and likewise for d2. # Normally this is a single character, but if v1 and v2 contain digits, # compare them as integers and fractions as strverscmp does. if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { # Split v1 and v2 into their leading digit string components d1 and d2, # and advance v1 and v2 past the leading digit strings. for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) if (d1 ~ /^0/) { if (d2 ~ /^0/) { # Compare two fractions. while (d1 ~ /^0/ && d2 ~ /^0/) { d1 = substr(d1, 2); len1-- d2 = substr(d2, 2); len2-- } if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { # The two components differ in length, and the common prefix # contains only leading zeros. Consider the longer to be less. d1 = -len1 d2 = -len2 } else { # Otherwise, compare as strings. d1 = "x" d1 d2 = "x" d2 } } else { # A fraction is less than an integer. exit 1 } } else { if (d2 ~ /^0/) { # An integer is greater than a fraction. exit 2 } else { # Compare two integers. d1 += 0 d2 += 0 } } } else { # The normal case, without worrying about digits. d1 = substr(v1, 1, 1); v1 = substr(v1, 2) d2 = substr(v2, 1, 1); v2 = substr(v2, 2) } if (d1 < d2) exit 1 if (d1 > d2) exit 2 } # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), # which mishandles some comparisons of empty strings to integers. if (length(v2)) exit 1 if (length(v1)) exit 2 } ' SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ibus' PACKAGE_TARNAME='ibus' PACKAGE_VERSION='1.5.11' PACKAGE_STRING='ibus 1.5.11' PACKAGE_BUGREPORT='https://github.com/ibus/ibus/issues' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS ISOCODES_PREFIX ISOCODES_LIBS ISOCODES_CFLAGS LIBNOTIFY_LIBS LIBNOTIFY_CFLAGS ENABLE_LIBNOTIFY_FALSE ENABLE_LIBNOTIFY_TRUE ENABLE_ENGINE_FALSE ENABLE_ENGINE_TRUE ENABLE_UI_FALSE ENABLE_UI_TRUE IBUS_ICON_KEYBOARD DBUS_PYTHON_LIBS DBUS_PYTHON_CFLAGS GTK3_IM_MODULEDIR GTK2_IM_MODULEDIR pkgpython2dir PYTHON_INCLUDES PYTHON_CONFIG ENABLE_PYGOBJECT_FALSE ENABLE_PYGOBJECT_TRUE py2overridesdir pyoverridesdir PYTHON_LIBS PYTHON_CFLAGS PYTHON2 pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON ENABLE_DAEMON_FALSE ENABLE_DAEMON_TRUE ENABLE_SETUP_FALSE ENABLE_SETUP_TRUE ENABLE_PYTHON_LIBRARY_FALSE ENABLE_PYTHON_LIBRARY_TRUE ENV_IBUS_TEST GSETTINGS_RULES GLIB_COMPILE_SCHEMAS gsettingsschemadir GSETTINGS_DISABLE_SCHEMAS_COMPILE DCONF_LIBS DCONF_CFLAGS ENABLE_DCONF_FALSE ENABLE_DCONF_TRUE ENABLE_MEMCONF_FALSE ENABLE_MEMCONF_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMA_CONFIG_SOURCE GCONFTOOL GCONF_LIBS GCONF_CFLAGS ENABLE_GCONF_FALSE ENABLE_GCONF_TRUE DBUS_LIBS DBUS_CFLAGS GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HAVE_GTK_DOC_FALSE HAVE_GTK_DOC_TRUE GTKDOC_DEPS_LIBS GTKDOC_DEPS_CFLAGS HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK_PATH GTKDOC_CHECK ENABLE_VAPIGEN_FALSE ENABLE_VAPIGEN_TRUE VAPIGEN_MAKEFILE VAPIGEN_VAPIDIR VAPIGEN IBUS_GIR_SCANNERFLAGS HAVE_INTROSPECTION_FALSE HAVE_INTROSPECTION_TRUE INTROSPECTION_MAKEFILE INTROSPECTION_LIBS INTROSPECTION_CFLAGS INTROSPECTION_TYPELIBDIR INTROSPECTION_GIRDIR INTROSPECTION_GENERATE INTROSPECTION_COMPILER INTROSPECTION_SCANNER ENABLE_APPINDICATOR_ENGINE_ICON_FALSE ENABLE_APPINDICATOR_ENGINE_ICON_TRUE WAYLAND_LIBS WAYLAND_CFLAGS X11_LIBS X11_CFLAGS GTK3_LIBS GTK3_CFLAGS GTK2_LIBS GTK2_CFLAGS ENABLE_APPINDICATOR_FALSE ENABLE_APPINDICATOR_TRUE ENABLE_WAYLAND_FALSE ENABLE_WAYLAND_TRUE ENABLE_XIM_FALSE ENABLE_XIM_TRUE ENABLE_GTK3_FALSE ENABLE_GTK3_TRUE ENABLE_GTK2_FALSE ENABLE_GTK2_TRUE ENABLE_TESTS_FALSE ENABLE_TESTS_TRUE GTHREAD2_LIBS GTHREAD2_CFLAGS GIO2_LIBS GIO2_CFLAGS GOBJECT2_LIBS GOBJECT2_CFLAGS GLIB2_LIBS GLIB2_CFLAGS GLIB_COMPILE_RESOURCES GLIB_MKENUMS GOBJECT_QUERY GLIB_GENMARSHAL GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG ALL_LINGUAS INTLTOOL_PERL MSGMERGE INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL VALAC DATE_DISPLAY GLIB_LOCALE_DIR MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS XGETTEXT GMSGFMT MSGFMT_OPTS MSGFMT USE_NLS GETTEXT_PACKAGE LT_CURRENT_MINUS_AGE LT_VERSION_INFO IBUS_BINARY_VERSION IBUS_VERSION IBUS_API_VERSION IBUS_ABI_AGE IBUS_ABI_REVISION IBUS_ABI_CURRENT IBUS_MICRO_VERSION IBUS_MINOR_VERSION IBUS_MAJOR_VERSION EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM VALA_TARGET_GLIB_VERSION target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_static enable_shared with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_nls enable_glibtest enable_tests enable_gtk2 enable_gtk3 enable_xim enable_wayland enable_appindicator enable_introspection enable_vala with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_gconf with_gconf_source with_gconf_schema_file_dir enable_schemas_install enable_memconf enable_dconf enable_schemas_compile enable_python_library enable_setup with_python with_gtk2_im_module_dir with_gtk3_im_module_dir enable_dbus_python_check enable_key_snooper with_no_snooper_apps with_panel_icon_keyboard enable_surrounding_text enable_ui enable_engine enable_libnotify ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB2_CFLAGS GLIB2_LIBS GOBJECT2_CFLAGS GOBJECT2_LIBS GIO2_CFLAGS GIO2_LIBS GTHREAD2_CFLAGS GTHREAD2_LIBS GTK2_CFLAGS GTK2_LIBS GTK3_CFLAGS GTK3_LIBS X11_CFLAGS X11_LIBS WAYLAND_CFLAGS WAYLAND_LIBS GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS DBUS_CFLAGS DBUS_LIBS GCONF_CFLAGS GCONF_LIBS DCONF_CFLAGS DCONF_LIBS PYTHON PYTHON_CFLAGS PYTHON_LIBS DBUS_PYTHON_CFLAGS DBUS_PYTHON_LIBS LIBNOTIFY_CFLAGS LIBNOTIFY_LIBS ISOCODES_CFLAGS ISOCODES_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures ibus 1.5.11 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/ibus] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ibus 1.5.11:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-maintainer-mode disable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-glibtest do not try to compile and run a test GLIB program --disable-tests Do not run tests --disable-gtk2 Do not build gtk2 im module --disable-gtk3 Do not build gtk3 im module --disable-xim Do not build xim server --enable-wayland Build wayland support --enable-appindicator Build appindicator support --enable-introspection=[no/auto/yes] Enable introspection for this build --enable-vala=[no/auto/yes] build Vala bindings [default=auto] --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-gconf Use GConf code --disable-schemas-install Disable the schemas installation --enable-memconf Enable configure base on memory --disable-dconf Disable configure base on dconf --disable-schemas-compile Disable regeneration of gschemas.compiled on install --enable-python-library Use ibus python library --disable-setup Do not use setup ui. --disable-dbus-python-check Do not check dbus-python --disable-key-snooper Always disable key snooper in gtk im module --disable-surrounding-text Enable surrounding-text support --disable-ui Disable ibus default user interface --disable-engine Disable ibus simple engine --disable-libnotify Disable to link libnotify Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs --with-gconf-source=sourceaddress Config database for installing schema files. --with-gconf-schema-file-dir=dir Directory for installing schema files. --with-python=PATH Select python2 or python3 --with-gtk2-im-module-dir=DIR Select gtk2 immodule dir --with-gtk3-im-module-dir=DIR Select gtk3 immodule dir --with-no-snooper-apps=regex1,regex2 Does not enable keyboard snooper in those applications (like: .*chrome.*,firefox.*) --with-panel-icon-keyboard=icon_name Set the default panel icon (default: "ibus-keyboard") Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLIB2_CFLAGS C compiler flags for GLIB2, overriding pkg-config GLIB2_LIBS linker flags for GLIB2, overriding pkg-config GOBJECT2_CFLAGS C compiler flags for GOBJECT2, overriding pkg-config GOBJECT2_LIBS linker flags for GOBJECT2, overriding pkg-config GIO2_CFLAGS C compiler flags for GIO2, overriding pkg-config GIO2_LIBS linker flags for GIO2, overriding pkg-config GTHREAD2_CFLAGS C compiler flags for GTHREAD2, overriding pkg-config GTHREAD2_LIBS linker flags for GTHREAD2, overriding pkg-config GTK2_CFLAGS C compiler flags for GTK2, overriding pkg-config GTK2_LIBS linker flags for GTK2, overriding pkg-config GTK3_CFLAGS C compiler flags for GTK3, overriding pkg-config GTK3_LIBS linker flags for GTK3, overriding pkg-config X11_CFLAGS C compiler flags for X11, overriding pkg-config X11_LIBS linker flags for X11, overriding pkg-config WAYLAND_CFLAGS C compiler flags for WAYLAND, overriding pkg-config WAYLAND_LIBS linker flags for WAYLAND, overriding pkg-config GTKDOC_DEPS_CFLAGS C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config DBUS_LIBS linker flags for DBUS, overriding pkg-config GCONF_CFLAGS C compiler flags for GCONF, overriding pkg-config GCONF_LIBS linker flags for GCONF, overriding pkg-config DCONF_CFLAGS C compiler flags for DCONF, overriding pkg-config DCONF_LIBS linker flags for DCONF, overriding pkg-config PYTHON the Python interpreter PYTHON_CFLAGS C compiler flags for PYTHON, overriding pkg-config PYTHON_LIBS linker flags for PYTHON, overriding pkg-config DBUS_PYTHON_CFLAGS C compiler flags for DBUS_PYTHON, overriding pkg-config DBUS_PYTHON_LIBS linker flags for DBUS_PYTHON, overriding pkg-config LIBNOTIFY_CFLAGS C compiler flags for LIBNOTIFY, overriding pkg-config LIBNOTIFY_LIBS linker flags for LIBNOTIFY, overriding pkg-config ISOCODES_CFLAGS C compiler flags for ISOCODES, overriding pkg-config ISOCODES_LIBS linker flags for ISOCODES, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF ibus configure 1.5.11 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------------------- ## ## Report this to https://github.com/ibus/ibus/issues ## ## -------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by ibus $as_me 1.5.11, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Required versions of other packages. # VALA_TARGET_GLIB_VERSION is used by valac --ccode --target-glib . # VALA_TARGET_GLIB_VERSION and glib_required_version will be different # in the future. VALA_TARGET_GLIB_VERSION=2.32 # Init automake. am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='ibus' VERSION='1.5.11' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h # Support silent build rules. Disable # by either passing --disable-silent-rules to configure or passing V=1 # to make # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # Define sustituted variables: IBUS_MAJOR_VERSION=1 IBUS_MINOR_VERSION=5 IBUS_MICRO_VERSION=11 IBUS_ABI_CURRENT=5 IBUS_ABI_REVISION=511 IBUS_ABI_AGE=0 IBUS_VERSION=1.5.11 IBUS_API_VERSION=1.0 IBUS_BINARY_VERSION=1.5.0.511 # libtool versioning # # If LT_VERSION_INFO="lt_current:lt_revision:lt_age", libibus is # libibus-ibus_api_version.so.(lt_current - lt_age).lt_age.lt_revision # If the abi is changed, but it is compatible with last version, # ibus_abi_current++, ibus_abi_age++; # If the abi is not compatible with last version, # ibus_abi_current++, ibus_abi_age = 0; LT_VERSION_INFO="5:511:0" LT_CURRENT_MINUS_AGE=5 # Define GETTEXT_* variables. GETTEXT_PACKAGE=ibus10 cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" cat >>confdefs.h <<_ACEOF #define GLIB_LOCALE_DIR "$localedir" _ACEOF GLIB_LOCALE_DIR=$localedir # For dislpay date. DATE_DISPLAY="Thu Jul 16 2015" # Check for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi case $ac_cv_prog_cc_stdc in #( no) : ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } if ${ac_cv_prog_cc_stdc+:} false; then : $as_echo_n "(cached) " >&6 fi case $ac_cv_prog_cc_stdc in #( no) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; #( '') : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac # Extract the first word of "valac", so it can be a program name with args. set dummy valac; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_VALAC+:} false; then : $as_echo_n "(cached) " >&6 else case $VALAC in [\\/]* | ?:[\\/]*) ac_cv_path_VALAC="$VALAC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_VALAC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_VALAC" && ac_cv_path_VALAC="valac" ;; esac fi VALAC=$ac_cv_path_VALAC if test -n "$VALAC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALAC" >&5 $as_echo "$VALAC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$VALAC" != valac && test -n "0.20"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $VALAC is at least version 0.20" >&5 $as_echo_n "checking whether $VALAC is at least version 0.20... " >&6; } am__vala_version=`$VALAC --version | sed 's/Vala *//'` as_arg_v1=0.20 as_arg_v2="$am__vala_version" awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null case $? in #( 1) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; #( 0) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; #( 2) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } VALAC=valac ;; #( *) : ;; esac fi if test "$VALAC" = valac; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no proper vala compiler found" >&5 $as_echo "$as_me: WARNING: no proper vala compiler found" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: you will not be able to compile vala source files" >&5 $as_echo "$as_me: WARNING: you will not be able to compile vala source files" >&2;} else : fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # i18n stuff for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-2" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES # Define PACKAGE_VERSION_* variables. # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if ${ac_cv_search_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strerror+:} false; then : break fi done if ${ac_cv_search_strerror+:} false; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n "0.35.0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5 $as_echo_n "checking for intltool >= 0.35.0... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Check functions. for ac_func in daemon do : ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon" if test "x$ac_cv_func_daemon" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DAEMON 1 _ACEOF fi done # Check packages. # Check glib2. # Check whether --enable-glibtest was given. if test "${enable_glibtest+set}" = set; then : enableval=$enable_glibtest; else enable_glibtest=yes fi pkg_config_args=glib-2.0 for module in . do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=2.0.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 $as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" rm -f conf.glibtest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_glib=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 $as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" : fi rm -f conf.glibtest pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB2" >&5 $as_echo_n "checking for GLIB2... " >&6; } if test -n "$GLIB2_CFLAGS"; then pkg_cv_GLIB2_CFLAGS="$GLIB2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" glib-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " glib-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB2_CFLAGS=`$PKG_CONFIG --cflags " glib-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB2_LIBS"; then pkg_cv_GLIB2_LIBS="$GLIB2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" glib-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " glib-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB2_LIBS=`$PKG_CONFIG --libs " glib-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " glib-2.0 >= 2.32.0 " 2>&1` else GLIB2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " glib-2.0 >= 2.32.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( glib-2.0 >= 2.32.0 ) were not met: $GLIB2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB2_CFLAGS and GLIB2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLIB2_CFLAGS and GLIB2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GLIB2_CFLAGS=$pkg_cv_GLIB2_CFLAGS GLIB2_LIBS=$pkg_cv_GLIB2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GOBJECT2" >&5 $as_echo_n "checking for GOBJECT2... " >&6; } if test -n "$GOBJECT2_CFLAGS"; then pkg_cv_GOBJECT2_CFLAGS="$GOBJECT2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gobject-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gobject-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT2_CFLAGS=`$PKG_CONFIG --cflags " gobject-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GOBJECT2_LIBS"; then pkg_cv_GOBJECT2_LIBS="$GOBJECT2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gobject-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gobject-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT2_LIBS=`$PKG_CONFIG --libs " gobject-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GOBJECT2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gobject-2.0 >= 2.32.0 " 2>&1` else GOBJECT2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gobject-2.0 >= 2.32.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GOBJECT2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gobject-2.0 >= 2.32.0 ) were not met: $GOBJECT2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GOBJECT2_CFLAGS and GOBJECT2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GOBJECT2_CFLAGS and GOBJECT2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GOBJECT2_CFLAGS=$pkg_cv_GOBJECT2_CFLAGS GOBJECT2_LIBS=$pkg_cv_GOBJECT2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO2" >&5 $as_echo_n "checking for GIO2... " >&6; } if test -n "$GIO2_CFLAGS"; then pkg_cv_GIO2_CFLAGS="$GIO2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gio-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gio-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIO2_CFLAGS=`$PKG_CONFIG --cflags " gio-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GIO2_LIBS"; then pkg_cv_GIO2_LIBS="$GIO2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gio-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gio-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIO2_LIBS=`$PKG_CONFIG --libs " gio-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GIO2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gio-2.0 >= 2.32.0 " 2>&1` else GIO2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gio-2.0 >= 2.32.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GIO2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gio-2.0 >= 2.32.0 ) were not met: $GIO2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GIO2_CFLAGS and GIO2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GIO2_CFLAGS and GIO2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GIO2_CFLAGS=$pkg_cv_GIO2_CFLAGS GIO2_LIBS=$pkg_cv_GIO2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD2" >&5 $as_echo_n "checking for GTHREAD2... " >&6; } if test -n "$GTHREAD2_CFLAGS"; then pkg_cv_GTHREAD2_CFLAGS="$GTHREAD2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gthread-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gthread-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD2_CFLAGS=`$PKG_CONFIG --cflags " gthread-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD2_LIBS"; then pkg_cv_GTHREAD2_LIBS="$GTHREAD2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gthread-2.0 >= 2.32.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gthread-2.0 >= 2.32.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD2_LIBS=`$PKG_CONFIG --libs " gthread-2.0 >= 2.32.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gthread-2.0 >= 2.32.0 " 2>&1` else GTHREAD2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gthread-2.0 >= 2.32.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gthread-2.0 >= 2.32.0 ) were not met: $GTHREAD2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD2_CFLAGS and GTHREAD2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD2_CFLAGS and GTHREAD2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD2_CFLAGS=$pkg_cv_GTHREAD2_CFLAGS GTHREAD2_LIBS=$pkg_cv_GTHREAD2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # --disable-tests option. # Check whether --enable-tests was given. if test "${enable_tests+set}" = set; then : enableval=$enable_tests; enable_tests=$enableval else enable_tests=yes fi if test x"$enable_tests" = x"yes"; then ENABLE_TESTS_TRUE= ENABLE_TESTS_FALSE='#' else ENABLE_TESTS_TRUE='#' ENABLE_TESTS_FALSE= fi if test x"$enable_tests" != x"yes"; then enable_tests="no (disabled, use --enable-tests to enable)" fi # --disable-gtk2 option. # Check whether --enable-gtk2 was given. if test "${enable_gtk2+set}" = set; then : enableval=$enable_gtk2; enable_gtk2=$enableval else enable_gtk2=yes fi if test x"$enable_gtk2" = x"yes"; then ENABLE_GTK2_TRUE= ENABLE_GTK2_FALSE='#' else ENABLE_GTK2_TRUE='#' ENABLE_GTK2_FALSE= fi # --disable-gtk3 option. # Check whether --enable-gtk3 was given. if test "${enable_gtk3+set}" = set; then : enableval=$enable_gtk3; enable_gtk3=$enableval else enable_gtk3=yes fi if test x"$enable_gtk3" = x"yes"; then ENABLE_GTK3_TRUE= ENABLE_GTK3_FALSE='#' else ENABLE_GTK3_TRUE='#' ENABLE_GTK3_FALSE= fi # --disable-xim option. # Check whether --enable-xim was given. if test "${enable_xim+set}" = set; then : enableval=$enable_xim; enable_xim=$enableval else enable_xim=yes fi if test x"$enable_xim" = x"yes"; then ENABLE_XIM_TRUE= ENABLE_XIM_FALSE='#' else ENABLE_XIM_TRUE='#' ENABLE_XIM_FALSE= fi # --enable-wayland option. # Check whether --enable-wayland was given. if test "${enable_wayland+set}" = set; then : enableval=$enable_wayland; enable_wayland=$enableval else enable_wayland=no fi if test x"$enable_wayland" = x"yes"; then ENABLE_WAYLAND_TRUE= ENABLE_WAYLAND_FALSE='#' else ENABLE_WAYLAND_TRUE='#' ENABLE_WAYLAND_FALSE= fi # --enable-appindicator option. # Check whether --enable-appindicator was given. if test "${enable_appindicator+set}" = set; then : enableval=$enable_appindicator; enable_appindicator=$enableval else enable_appindicator=yes fi if test x"$enable_appindicator" = x"yes"; then ENABLE_APPINDICATOR_TRUE= ENABLE_APPINDICATOR_FALSE='#' else ENABLE_APPINDICATOR_TRUE='#' ENABLE_APPINDICATOR_FALSE= fi if test x"$enable_gtk2" = x"yes"; then # check for gtk2 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5 $as_echo_n "checking for GTK2... " >&6; } if test -n "$GTK2_CFLAGS"; then pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags " gtk+-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK2_LIBS"; then pkg_cv_GTK2_LIBS="$GTK2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs " gtk+-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gtk+-2.0 " 2>&1` else GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtk+-2.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gtk+-2.0 ) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS GTK2_LIBS=$pkg_cv_GTK2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi gtk2_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GTK2_IM_MODULEDIR="$libdir"/gtk-2.0/$gtk2_binary_version/immodules else enable_gtk2="no (disabled, use --enable-gtk2 to enable)" fi if test x"$enable_gtk3" = x"yes"; then # check for gtk3 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK3" >&5 $as_echo_n "checking for GTK3... " >&6; } if test -n "$GTK3_CFLAGS"; then pkg_cv_GTK3_CFLAGS="$GTK3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-3.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_CFLAGS=`$PKG_CONFIG --cflags " gtk+-3.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK3_LIBS"; then pkg_cv_GTK3_LIBS="$GTK3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-3.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_LIBS=`$PKG_CONFIG --libs " gtk+-3.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gtk+-3.0 " 2>&1` else GTK3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtk+-3.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK3_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gtk+-3.0 ) were not met: $GTK3_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK3_CFLAGS and GTK3_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK3_CFLAGS and GTK3_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK3_CFLAGS=$pkg_cv_GTK3_CFLAGS GTK3_LIBS=$pkg_cv_GTK3_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi gtk3_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0` GTK3_IM_MODULEDIR="$libdir"/gtk-3.0/$gtk3_binary_version/immodules else enable_gtk3="no (disabled, use --enable-gtk3 to enable)" fi if test x"$enable_xim" = x"yes"; then # Check for x11 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11" >&5 $as_echo_n "checking for X11... " >&6; } if test -n "$X11_CFLAGS"; then pkg_cv_X11_CFLAGS="$X11_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" x11 \""; } >&5 ($PKG_CONFIG --exists --print-errors " x11 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags " x11 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$X11_LIBS"; then pkg_cv_X11_LIBS="$X11_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" x11 \""; } >&5 ($PKG_CONFIG --exists --print-errors " x11 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_LIBS=`$PKG_CONFIG --libs " x11 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " x11 " 2>&1` else X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " x11 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$X11_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( x11 ) were not met: $X11_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables X11_CFLAGS and X11_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables X11_CFLAGS and X11_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else X11_CFLAGS=$pkg_cv_X11_CFLAGS X11_LIBS=$pkg_cv_X11_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi for ac_header in X11/XKBlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/XKBlib.h" "ac_cv_header_X11_XKBlib_h" "$ac_includes_default" if test "x$ac_cv_header_X11_XKBlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XKBLIB_H 1 _ACEOF fi done # if we don't have gtk3 yet, check for gtk2 if test x"$enable_gtk3" != x"yes"; then # check for gtk2 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5 $as_echo_n "checking for GTK2... " >&6; } if test -n "$GTK2_CFLAGS"; then pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags " gtk+-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK2_LIBS"; then pkg_cv_GTK2_LIBS="$GTK2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs " gtk+-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gtk+-2.0 " 2>&1` else GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtk+-2.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gtk+-2.0 ) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS GTK2_LIBS=$pkg_cv_GTK2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi else enable_xim="no (disabled, use --enable-xim to enable)" fi if test x"$enable_wayland" = x"yes"; then # Check for wayland pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND" >&5 $as_echo_n "checking for WAYLAND... " >&6; } if test -n "$WAYLAND_CFLAGS"; then pkg_cv_WAYLAND_CFLAGS="$WAYLAND_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" wayland-client >= 1.2.0 xkbcommon \""; } >&5 ($PKG_CONFIG --exists --print-errors " wayland-client >= 1.2.0 xkbcommon ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags " wayland-client >= 1.2.0 xkbcommon " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$WAYLAND_LIBS"; then pkg_cv_WAYLAND_LIBS="$WAYLAND_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" wayland-client >= 1.2.0 xkbcommon \""; } >&5 ($PKG_CONFIG --exists --print-errors " wayland-client >= 1.2.0 xkbcommon ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs " wayland-client >= 1.2.0 xkbcommon " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " wayland-client >= 1.2.0 xkbcommon " 2>&1` else WAYLAND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " wayland-client >= 1.2.0 xkbcommon " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$WAYLAND_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( wayland-client >= 1.2.0 xkbcommon ) were not met: $WAYLAND_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables WAYLAND_CFLAGS and WAYLAND_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables WAYLAND_CFLAGS and WAYLAND_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else WAYLAND_CFLAGS=$pkg_cv_WAYLAND_CFLAGS WAYLAND_LIBS=$pkg_cv_WAYLAND_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi else enable_wayland="no (disabled, use --enable-wayland to enable)" fi enable_appindicator_engine_icon="no" if test x"$enable_appindicator" = x"yes"; then enable_appindicator="yes (enabled, use --disable-appindicator to disable)" # Need qt5-qtbase-devel package # There is no way to check the version of KStatusNotifierItem and # check the version of qtbase here. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for KDE5 appindicator engine icon" >&5 $as_echo_n "checking for KDE5 appindicator engine icon... " >&6; } if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Gui >= 5.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "Qt5Gui >= 5.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then enable_appindicator_engine_icon="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_appindicator_engine_icon" >&5 $as_echo "$enable_appindicator_engine_icon" >&6; } fi if test x"$enable_appindicator_engine_icon" != x"yes" ; then enable_appindicator_engine_icon="no (disabled, need qtbase-devel 5.4 or later)" fi if test x"$enable_appindicator_engine_icon" = x"yes"; then ENABLE_APPINDICATOR_ENGINE_ICON_TRUE= ENABLE_APPINDICATOR_ENGINE_ICON_FALSE='#' else ENABLE_APPINDICATOR_ENGINE_ICON_TRUE='#' ENABLE_APPINDICATOR_ENGINE_ICON_FALSE= fi # GObject introspection # Check whether --enable-introspection was given. if test "${enable_introspection+set}" = set; then : enableval=$enable_introspection; else enable_introspection=auto fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 $as_echo_n "checking for gobject-introspection... " >&6; } case $enable_introspection in #( no) : found_introspection="no (disabled, use --enable-introspection to enable)" ;; #( yes) : if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5 fi if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else as_fn_error $? "You need to have gobject-introspection >= 0.6.8 installed to build ibus" "$LINENO" 5 fi ;; #( auto) : if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else found_introspection=no fi ;; #( *) : as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 $as_echo "$found_introspection" >&6; } INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi if test "x$found_introspection" = "xyes"; then HAVE_INTROSPECTION_TRUE= HAVE_INTROSPECTION_FALSE='#' else HAVE_INTROSPECTION_TRUE='#' HAVE_INTROSPECTION_FALSE= fi IBUS_GIR_SCANNERFLAGS= if test x"$found_introspection" = x"yes" ; then IBUS_GIR_SCANNERFLAGS="--warn-all --identifier-prefix=IBus --symbol-prefix=ibus" if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.9.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.9.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then gir_symbol_prefix=yes else gir_symbol_prefix=no fi if test x"$gir_symbol_prefix" = x"no" ; then IBUS_GIR_SCANNERFLAGS="--strip-prefix=IBus" fi fi # Check vapigen. # Check whether --enable-vala was given. if test "${enable_vala+set}" = set; then : enableval=$enable_vala; else if test "x" = "x"; then : enable_vala=auto else enable_vala= fi fi case $enable_vala in #( no) : enable_vala=no ;; #( yes) : if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then : as_fn_error $? "Vala bindings require GObject Introspection" "$LINENO" 5 fi ;; #( auto) : if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then : enable_vala=no fi ;; #( *) : as_fn_error $? "Invalid argument passed to --enable-vala, should be one of [no/auto/yes]" "$LINENO" 5 ;; esac if test "x" = "x"; then : vapigen_pkg_name=vapigen else vapigen_pkg_name=vapigen- fi if test "x0.16" = "x"; then : vapigen_pkg="$vapigen_pkg_name" else vapigen_pkg="$vapigen_pkg_name >= 0.16" fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$vapigen_pkg\""; } >&5 ($PKG_CONFIG --exists --print-errors "$vapigen_pkg") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$enable_vala" = "auto"; then : enable_vala=yes fi else case $enable_vala in #( yes) : as_fn_error $? "$vapigen_pkg not found" "$LINENO" 5 ;; #( auto) : enable_vala=no ;; #( *) : ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vapigen" >&5 $as_echo_n "checking for vapigen... " >&6; } case $enable_vala in #( yes) : VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name` VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen if test "x" = "x"; then : VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name` else VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name` fi ;; #( *) : ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_vala" >&5 $as_echo "$enable_vala" >&6; } if test "x$enable_vala" = "xyes"; then ENABLE_VAPIGEN_TRUE= ENABLE_VAPIGEN_FALSE='#' else ENABLE_VAPIGEN_TRUE='#' ENABLE_VAPIGEN_FALSE= fi # Check for gtk-doc. gtk_doc_requires="gtk-doc >= 1.9" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 $as_echo_n "checking for gtk-doc... " >&6; } if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_gtk_doc=yes else have_gtk_doc=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 $as_echo "$have_gtk_doc" >&6; } if test "$have_gtk_doc" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&5 $as_echo "$as_me: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&2;} fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_GTKDOC_CHECK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$GTKDOC_CHECK"; then ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_CHECK_PATH+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_CHECK_PATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH if test -n "$GTKDOC_CHECK_PATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 $as_echo "$GTKDOC_CHECK_PATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_REBASE+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_MKPDF+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then as_fn_error $? " You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '$0'." "$LINENO" 5 fi if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 $as_echo_n "checking for GTKDOC_DEPS... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKDOC_DEPS_LIBS"; then pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` else GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi if test x$have_gtk_doc = xyes; then HAVE_GTK_DOC_TRUE= HAVE_GTK_DOC_FALSE='#' else HAVE_GTK_DOC_TRUE='#' HAVE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi if test x"$enable_gtk_doc" = x"no"; then enable_gtk_doc="no (disabled, use --enable-gtk-doc to enable)" fi # Check for dbus. pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5 $as_echo_n "checking for DBUS... " >&6; } if test -n "$DBUS_CFLAGS"; then pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" dbus-1 \""; } >&5 ($PKG_CONFIG --exists --print-errors " dbus-1 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags " dbus-1 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DBUS_LIBS"; then pkg_cv_DBUS_LIBS="$DBUS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" dbus-1 \""; } >&5 ($PKG_CONFIG --exists --print-errors " dbus-1 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs " dbus-1 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " dbus-1 " 2>&1` else DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " dbus-1 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( dbus-1 ) were not met: $DBUS_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DBUS_CFLAGS and DBUS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DBUS_CFLAGS and DBUS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS DBUS_LIBS=$pkg_cv_DBUS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # --enable-gconf option. # Check whether --enable-gconf was given. if test "${enable_gconf+set}" = set; then : enableval=$enable_gconf; enable_gconf=$enableval else enable_gconf=no fi if test x"$enable_gconf" = x"yes"; then ENABLE_GCONF_TRUE= ENABLE_GCONF_FALSE='#' else ENABLE_GCONF_TRUE='#' ENABLE_GCONF_FALSE= fi if test x"$enable_gconf" = x"yes"; then # check gconf pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONF" >&5 $as_echo_n "checking for GCONF... " >&6; } if test -n "$GCONF_CFLAGS"; then pkg_cv_GCONF_CFLAGS="$GCONF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0 >= 2.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "gconf-2.0 >= 2.12") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= 2.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GCONF_LIBS"; then pkg_cv_GCONF_LIBS="$GCONF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0 >= 2.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "gconf-2.0 >= 2.12") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0 >= 2.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GCONF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gconf-2.0 >= 2.12" 2>&1` else GCONF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gconf-2.0 >= 2.12" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GCONF_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gconf-2.0 >= 2.12) were not met: $GCONF_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GCONF_CFLAGS and GCONF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GCONF_CFLAGS and GCONF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GCONF_CFLAGS=$pkg_cv_GCONF_CFLAGS GCONF_LIBS=$pkg_cv_GCONF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # Extract the first word of "gconftool-2", so it can be a program name with args. set dummy gconftool-2; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GCONFTOOL+:} false; then : $as_echo_n "(cached) " >&6 else case $GCONFTOOL in [\\/]* | ?:[\\/]*) ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GCONFTOOL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no" ;; esac fi GCONFTOOL=$ac_cv_path_GCONFTOOL if test -n "$GCONFTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5 $as_echo "$GCONFTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$GCONFTOOL" = xno; then as_fn_error $? "gconftool-2 executable not found in your path - should be installed with GConf" "$LINENO" 5 fi if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source` else GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE fi # Check whether --with-gconf-source was given. if test "${with_gconf_source+set}" = set; then : withval=$with_gconf_source; GCONF_SCHEMA_CONFIG_SOURCE="$withval" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5 $as_echo "Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6; } if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas' fi # Check whether --with-gconf-schema-file-dir was given. if test "${with_gconf_schema_file_dir+set}" = set; then : withval=$with_gconf_schema_file_dir; GCONF_SCHEMA_FILE_DIR="$withval" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5 $as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6; } # Check whether --enable-schemas-install was given. if test "${enable_schemas_install+set}" = set; then : enableval=$enable_schemas_install; case ${enableval} in yes|no) ;; *) as_fn_error $? "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5 ;; esac fi if test "$enable_schemas_install" != no; then GCONF_SCHEMAS_INSTALL_TRUE= GCONF_SCHEMAS_INSTALL_FALSE='#' else GCONF_SCHEMAS_INSTALL_TRUE='#' GCONF_SCHEMAS_INSTALL_FALSE= fi # GCONF_SCHEMAS_INSTALL should be set in macro AM_GCONF_SOURCE_2 else if false; then GCONF_SCHEMAS_INSTALL_TRUE= GCONF_SCHEMAS_INSTALL_FALSE='#' else GCONF_SCHEMAS_INSTALL_TRUE='#' GCONF_SCHEMAS_INSTALL_FALSE= fi enable_gconf="no (disabled, use --enable-gconf to enable)" fi # --enable-memconf option. # Check whether --enable-memconf was given. if test "${enable_memconf+set}" = set; then : enableval=$enable_memconf; enable_memconf=$enableval else enable_memconf=no fi if test "x$enable_memconf" = "xyes"; then ENABLE_MEMCONF_TRUE= ENABLE_MEMCONF_FALSE='#' else ENABLE_MEMCONF_TRUE='#' ENABLE_MEMCONF_FALSE= fi # Check whether --enable-dconf was given. if test "${enable_dconf+set}" = set; then : enableval=$enable_dconf; enable_dconf=$enableval else enable_dconf=yes fi if test x"$enable_dconf" = x"yes"; then ENABLE_DCONF_TRUE= ENABLE_DCONF_FALSE='#' else ENABLE_DCONF_TRUE='#' ENABLE_DCONF_FALSE= fi if test x"$enable_dconf" = x"yes"; then # check dconf pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DCONF" >&5 $as_echo_n "checking for DCONF... " >&6; } if test -n "$DCONF_CFLAGS"; then pkg_cv_DCONF_CFLAGS="$DCONF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dconf >= 0.7.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "dconf >= 0.7.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DCONF_CFLAGS=`$PKG_CONFIG --cflags "dconf >= 0.7.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DCONF_LIBS"; then pkg_cv_DCONF_LIBS="$DCONF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dconf >= 0.7.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "dconf >= 0.7.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DCONF_LIBS=`$PKG_CONFIG --libs "dconf >= 0.7.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DCONF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dconf >= 0.7.5" 2>&1` else DCONF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dconf >= 0.7.5" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DCONF_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (dconf >= 0.7.5) were not met: $DCONF_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DCONF_CFLAGS and DCONF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DCONF_CFLAGS and DCONF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else DCONF_CFLAGS=$pkg_cv_DCONF_CFLAGS DCONF_LIBS=$pkg_cv_DCONF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dconf >= 0.13.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "dconf >= 0.13.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then $as_echo "#define DCONF_0_13_4 TRUE" >>confdefs.h fi # check glib-compile-schemas # Check whether --enable-schemas-compile was given. if test "${enable_schemas_compile+set}" = set; then : enableval=$enable_schemas_compile; case ${enableval} in yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE="" ;; no) GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;; *) as_fn_error $? "bad value ${enableval} for --enable-schemas-compile" "$LINENO" 5 ;; esac fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi gsettingsschemadir=${datadir}/glib-2.0/schemas if test x$cross_compiling != xyes; then GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0` else # Extract the first word of "glib-compile-schemas", so it can be a program name with args. set dummy glib-compile-schemas; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GLIB_COMPILE_SCHEMAS+:} false; then : $as_echo_n "(cached) " >&6 else case $GLIB_COMPILE_SCHEMAS in [\\/]* | ?:[\\/]*) ac_cv_path_GLIB_COMPILE_SCHEMAS="$GLIB_COMPILE_SCHEMAS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GLIB_COMPILE_SCHEMAS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GLIB_COMPILE_SCHEMAS=$ac_cv_path_GLIB_COMPILE_SCHEMAS if test -n "$GLIB_COMPILE_SCHEMAS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_SCHEMAS" >&5 $as_echo "$GLIB_COMPILE_SCHEMAS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then as_fn_error $? "glib-compile-schemas not found." "$LINENO" 5 else : fi GSETTINGS_RULES=' .PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas mostlyclean-am: clean-gsettings-schemas gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE)) %.gschema.valid: %.gschema.xml $(gsettings__enum_file) $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$< && mkdir -p $(@D) && touch $@ all-am: $(gsettings_SCHEMAS:.xml=.valid) uninstall-am: uninstall-gsettings-schemas install-data-am: install-gsettings-schemas .SECONDARY: $(gsettings_SCHEMAS) install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file) @$(NORMAL_INSTALL) if test -n "$^"; then \ test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \ $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \ test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \ fi uninstall-gsettings-schemas: @$(NORMAL_UNINSTALL) @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \ test -n "$$files" || exit 0; \ echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir) clean-gsettings-schemas: rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file) ifdef gsettings_ENUM_NAMESPACE $(gsettings__enum_file): $(gsettings_ENUM_FILES) $(AM_V_GEN) glib-mkenums --comments '\'''\'' --fhead "" --vhead " <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod " " --vtail " " --ftail "" $^ > $@.tmp && mv $@.tmp $@ endif ' enable_dconf="yes (enabled, use --disable-dconf to disable)" fi # Check env. # Extract the first word of "env", so it can be a program name with args. set dummy env; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ENV_IBUS_TEST+:} false; then : $as_echo_n "(cached) " >&6 else case $ENV_IBUS_TEST in [\\/]* | ?:[\\/]*) ac_cv_path_ENV_IBUS_TEST="$ENV_IBUS_TEST" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ENV_IBUS_TEST="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ENV_IBUS_TEST=$ac_cv_path_ENV_IBUS_TEST if test -n "$ENV_IBUS_TEST"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENV_IBUS_TEST" >&5 $as_echo "$ENV_IBUS_TEST" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --enable-python-library was given. if test "${enable_python_library+set}" = set; then : enableval=$enable_python_library; enable_python_library=$enableval else enable_python_library=no fi # Check whether --enable-setup was given. if test "${enable_setup+set}" = set; then : enableval=$enable_setup; enable_setup=$enableval else enable_setup=yes fi if test x"$enable_python_library" = x"yes"; then ENABLE_PYTHON_LIBRARY_TRUE= ENABLE_PYTHON_LIBRARY_FALSE='#' else ENABLE_PYTHON_LIBRARY_TRUE='#' ENABLE_PYTHON_LIBRARY_FALSE= fi if test x"$enable_setup" = x"yes"; then ENABLE_SETUP_TRUE= ENABLE_SETUP_FALSE='#' else ENABLE_SETUP_TRUE='#' ENABLE_SETUP_FALSE= fi if true; then ENABLE_DAEMON_TRUE= ENABLE_DAEMON_FALSE='#' else ENABLE_DAEMON_TRUE='#' ENABLE_DAEMON_FALSE= fi # Define python version # Check whether --with-python was given. if test "${with_python+set}" = set; then : withval=$with_python; PYTHON=$with_python fi if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5 $as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Python interpreter is too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; } if ${am_cv_pathless_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if ${am_cv_python_version+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if ${am_cv_python_platform+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[:3] == '2.7': can_use_sysconfig = 0 except ImportError: pass" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi # Extract the first word of "python2", so it can be a program name with args. set dummy python2; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON2+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON2 in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON2="$PYTHON2" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON2="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON2=$ac_cv_path_PYTHON2 if test -n "$PYTHON2"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON2" >&5 $as_echo "$PYTHON2" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$PYTHON2" = x""; then PYTHON2=$PYTHON fi PYGOBJECT_REQUIRED=3.0.0 if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= \$PYGOBJECT_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= $PYGOBJECT_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then enable_pygobject=yes else enable_pygobject=no fi if test "x$enable_pygobject" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYTHON" >&5 $as_echo_n "checking for PYTHON... " >&6; } if test -n "$PYTHON_CFLAGS"; then pkg_cv_PYTHON_CFLAGS="$PYTHON_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= \$PYGOBJECT_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= $PYGOBJECT_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYTHON_CFLAGS=`$PKG_CONFIG --cflags "pygobject-3.0 >= $PYGOBJECT_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PYTHON_LIBS"; then pkg_cv_PYTHON_LIBS="$PYTHON_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= \$PYGOBJECT_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= $PYGOBJECT_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYTHON_LIBS=`$PKG_CONFIG --libs "pygobject-3.0 >= $PYGOBJECT_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PYTHON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pygobject-3.0 >= $PYGOBJECT_REQUIRED" 2>&1` else PYTHON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pygobject-3.0 >= $PYGOBJECT_REQUIRED" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PYTHON_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (pygobject-3.0 >= $PYGOBJECT_REQUIRED) were not met: $PYTHON_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PYTHON_CFLAGS and PYTHON_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PYTHON_CFLAGS and PYTHON_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else PYTHON_CFLAGS=$pkg_cv_PYTHON_CFLAGS PYTHON_LIBS=$pkg_cv_PYTHON_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pyoverridesdir=`$PYTHON -c "import gi; print(gi._overridesdir)"` py2overridesdir=`$PYTHON2 -c "import gi; print(gi._overridesdir)"` fi if test x"$enable_pygobject" = "xyes"; then ENABLE_PYGOBJECT_TRUE= ENABLE_PYGOBJECT_FALSE='#' else ENABLE_PYGOBJECT_TRUE='#' ENABLE_PYGOBJECT_FALSE= fi if test x"$enable_python_library" = x"yes"; then # Check python. # Extract the first word of "python$PYTHON_VERSION-config", so it can be a program name with args. set dummy python$PYTHON_VERSION-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 $as_echo "$PYTHON_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$PYTHON_CONFIG" = x""; then # Extract the first word of "python-config", so it can be a program name with args. set dummy python-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 $as_echo "$PYTHON_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test x"$PYTHON_CONFIG" != x""; then PYTHON_CFLAGS=`$PYTHON_CONFIG --includes` PYTHON_LIBS=`$PYTHON_CONFIG --libs` else PYTHON_CFLAGS=`$PYTHON $srcdir/python-config.py --includes` PYTHON_LIBS=`$PYTHON $srcdir/python-config.py --libs` fi PYTHON_INCLUDES="$PYTHON_CFLAGS" PYTHON2_PREFIX=`$PYTHON2 -c "import sys; sys.stdout.write(sys.prefix)"` PYTHON2_VERSION=`$PYTHON2 -c "import sys; sys.stdout.write(sys.version[:3])"` PYTHON2_LIBDIR="$PYTHON2_PREFIX/lib/python$PYTHON2_VERSION" python2dir="$PYTHON2_LIBDIR/site-packages" pkgpython2dir="$python2dir/ibus" else enable_python_library="no (disabled, use --enable-python-library to enable)" fi # Define gtk2 immodule dir. # Check whether --with-gtk2-im-module-dir was given. if test "${with_gtk2_im_module_dir+set}" = set; then : withval=$with_gtk2_im_module_dir; GTK2_IM_MODULEDIR=$with_gtk2_im_module_dir fi # Define gtk3 immodule dir. # Check whether --with-gtk3-im-module-dir was given. if test "${with_gtk3_im_module_dir+set}" = set; then : withval=$with_gtk3_im_module_dir; GTK3_IM_MODULEDIR=$with_gtk3_im_module_dir fi if test x"$enable_python" = x"yes"; then # Check for dbus-python. # Check whether --enable-dbus-python-check was given. if test "${enable_dbus_python_check+set}" = set; then : enableval=$enable_dbus_python_check; enable_dbus_python_check=$enableval else enable_dbus_python_check=yes fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS_PYTHON" >&5 $as_echo_n "checking for DBUS_PYTHON... " >&6; } if test -n "$DBUS_PYTHON_CFLAGS"; then pkg_cv_DBUS_PYTHON_CFLAGS="$DBUS_PYTHON_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-python >= 0.83.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-python >= 0.83.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_PYTHON_CFLAGS=`$PKG_CONFIG --cflags "dbus-python >= 0.83.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DBUS_PYTHON_LIBS"; then pkg_cv_DBUS_PYTHON_LIBS="$DBUS_PYTHON_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-python >= 0.83.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-python >= 0.83.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_PYTHON_LIBS=`$PKG_CONFIG --libs "dbus-python >= 0.83.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DBUS_PYTHON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-python >= 0.83.0" 2>&1` else DBUS_PYTHON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-python >= 0.83.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_PYTHON_PKG_ERRORS" >&5 IBUS_HAS_DBUS_PYTHON=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } IBUS_HAS_DBUS_PYTHON=no else DBUS_PYTHON_CFLAGS=$pkg_cv_DBUS_PYTHON_CFLAGS DBUS_PYTHON_LIBS=$pkg_cv_DBUS_PYTHON_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } IBUS_HAS_DBUS_PYTHON=yes fi if test x"$IBUS_HAS_DBUS_PYTHON" != x"yes"; then if test x"$enable_dbus_python_check" != x"no"; then as_fn_error $? "can not find dbus-python >= 0.83.0. Please install or update dbus-python." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can not find dbus-python >= 0.83.0. It is required." >&5 $as_echo "$as_me: WARNING: can not find dbus-python >= 0.83.0. It is required." >&2;} fi fi fi # Option for always disable snooper applications. # Check whether --enable-key-snooper was given. if test "${enable_key_snooper+set}" = set; then : enableval=$enable_key_snooper; enable_key_snooper=$enableval else enable_key_snooper=yes fi if test x"$enable_key_snooper" = x"yes"; then $as_echo "#define ENABLE_SNOOPER TRUE" >>confdefs.h else $as_echo "#define ENABLE_SNOOPER FALSE" >>confdefs.h enable_key_snooper="no (disabled, use --enable-key-snooper to enable)" fi # Option for no snooper applications. # Check whether --with-no-snooper-apps was given. if test "${with_no_snooper_apps+set}" = set; then : withval=$with_no_snooper_apps; NO_SNOOPER_APPS=$with_no_snooper_apps else NO_SNOOPER_APPS=firefox.*,.*chrome.*,.*chromium.* fi cat >>confdefs.h <<_ACEOF #define NO_SNOOPER_APPS "$NO_SNOOPER_APPS" _ACEOF # GNOME 3 uses the theme's icon. # Check whether --with-panel-icon-keyboard was given. if test "${with_panel_icon_keyboard+set}" = set; then : withval=$with_panel_icon_keyboard; if test x"$with_panel_icon_keyboard" = x"yes" -o \ x"$with_panel_icon_keyboard" = x; then with_panel_icon_keyboard="input-keyboard-symbolic" fi if test x"$with_panel_icon_keyboard" = x"legacy"; then with_panel_icon_keyboard="ibus-keyboard" fi IBUS_ICON_KEYBOARD=$with_panel_icon_keyboard else IBUS_ICON_KEYBOARD="ibus-keyboard" fi # --disable-surrounding-text option. # Check whether --enable-surrounding-text was given. if test "${enable_surrounding_text+set}" = set; then : enableval=$enable_surrounding_text; enable_surrounding_text=$enableval else enable_surrounding_text=yes fi if test x"$enable_surrounding_text" = x"yes"; then $as_echo "#define ENABLE_SURROUNDING TRUE" >>confdefs.h else enable_surrounding_text="no (disabled, use --enable-surrounding-text to enable)" fi # --disable-ui # Check whether --enable-ui was given. if test "${enable_ui+set}" = set; then : enableval=$enable_ui; enable_ui=$enableval else enable_ui=yes fi if test x"$enable_ui" = x"yes"; then ENABLE_UI_TRUE= ENABLE_UI_FALSE='#' else ENABLE_UI_TRUE='#' ENABLE_UI_FALSE= fi if test x"$enable_ui" = x"yes"; then enable_ui="yes (enabled, use --disable-ui to disable)" fi # --disable-engine # Check whether --enable-engine was given. if test "${enable_engine+set}" = set; then : enableval=$enable_engine; enable_engine=$enableval else enable_engine=yes fi if test x"$enable_engine" = x"yes"; then ENABLE_ENGINE_TRUE= ENABLE_ENGINE_FALSE='#' else ENABLE_ENGINE_TRUE='#' ENABLE_ENGINE_FALSE= fi if test x"$enable_engine" = x"yes"; then enable_engine="yes (enabled, use --disable-engine to disable)" fi # --disable-libnotify # Check whether --enable-libnotify was given. if test "${enable_libnotify+set}" = set; then : enableval=$enable_libnotify; enable_libnotify=$enableval else enable_libnotify=yes fi if test x"$enable_libnotify" = x"yes"; then ENABLE_LIBNOTIFY_TRUE= ENABLE_LIBNOTIFY_FALSE='#' else ENABLE_LIBNOTIFY_TRUE='#' ENABLE_LIBNOTIFY_FALSE= fi if test x"$enable_libnotify" = x"yes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNOTIFY" >&5 $as_echo_n "checking for LIBNOTIFY... " >&6; } if test -n "$LIBNOTIFY_CFLAGS"; then pkg_cv_LIBNOTIFY_CFLAGS="$LIBNOTIFY_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" libnotify >= 0.7 \""; } >&5 ($PKG_CONFIG --exists --print-errors " libnotify >= 0.7 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_CFLAGS=`$PKG_CONFIG --cflags " libnotify >= 0.7 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBNOTIFY_LIBS"; then pkg_cv_LIBNOTIFY_LIBS="$LIBNOTIFY_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" libnotify >= 0.7 \""; } >&5 ($PKG_CONFIG --exists --print-errors " libnotify >= 0.7 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_LIBS=`$PKG_CONFIG --libs " libnotify >= 0.7 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " libnotify >= 0.7 " 2>&1` else LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " libnotify >= 0.7 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBNOTIFY_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( libnotify >= 0.7 ) were not met: $LIBNOTIFY_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBNOTIFY_CFLAGS and LIBNOTIFY_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBNOTIFY_CFLAGS and LIBNOTIFY_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else LIBNOTIFY_CFLAGS=$pkg_cv_LIBNOTIFY_CFLAGS LIBNOTIFY_LIBS=$pkg_cv_LIBNOTIFY_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi enable_libnotify="yes (enabled, use --disable-libnotify to disable)" fi # Check iso-codes. pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISOCODES" >&5 $as_echo_n "checking for ISOCODES... " >&6; } if test -n "$ISOCODES_CFLAGS"; then pkg_cv_ISOCODES_CFLAGS="$ISOCODES_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" iso-codes \""; } >&5 ($PKG_CONFIG --exists --print-errors " iso-codes ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ISOCODES_CFLAGS=`$PKG_CONFIG --cflags " iso-codes " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ISOCODES_LIBS"; then pkg_cv_ISOCODES_LIBS="$ISOCODES_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" iso-codes \""; } >&5 ($PKG_CONFIG --exists --print-errors " iso-codes ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ISOCODES_LIBS=`$PKG_CONFIG --libs " iso-codes " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ISOCODES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " iso-codes " 2>&1` else ISOCODES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " iso-codes " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ISOCODES_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( iso-codes ) were not met: $ISOCODES_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ISOCODES_CFLAGS and ISOCODES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables ISOCODES_CFLAGS and ISOCODES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else ISOCODES_CFLAGS=$pkg_cv_ISOCODES_CFLAGS ISOCODES_LIBS=$pkg_cv_ISOCODES_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi ISOCODES_PREFIX=`pkg-config iso-codes --variable=prefix` # OUTPUT files ac_config_files="$ac_config_files po/Makefile.in Makefile ibus-1.0.pc ibus.spec client/Makefile client/gtk2/Makefile client/gtk3/Makefile client/x11/Makefile client/wayland/Makefile src/Makefile src/ibusversion.h src/tests/Makefile bus/Makefile engine/Makefile util/Makefile util/IMdkit/Makefile data/Makefile data/icons/Makefile data/keymaps/Makefile data/dconf/Makefile docs/Makefile docs/reference/Makefile docs/reference/ibus/ibus-docs.sgml docs/reference/ibus/Makefile m4/Makefile ibus/_config.py ibus/Makefile ibus/interface/Makefile ui/Makefile ui/gtk3/Makefile setup/Makefile setup/ibus-setup bindings/Makefile bindings/pygobject/Makefile bindings/vala/Makefile conf/Makefile conf/gconf/Makefile conf/dconf/Makefile conf/memconf/Makefile tools/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${ENABLE_TESTS_TRUE}" && test -z "${ENABLE_TESTS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK2_TRUE}" && test -z "${ENABLE_GTK2_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK3_TRUE}" && test -z "${ENABLE_GTK3_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK3\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_XIM_TRUE}" && test -z "${ENABLE_XIM_FALSE}"; then as_fn_error $? "conditional \"ENABLE_XIM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_WAYLAND_TRUE}" && test -z "${ENABLE_WAYLAND_FALSE}"; then as_fn_error $? "conditional \"ENABLE_WAYLAND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_APPINDICATOR_TRUE}" && test -z "${ENABLE_APPINDICATOR_FALSE}"; then as_fn_error $? "conditional \"ENABLE_APPINDICATOR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_APPINDICATOR_ENGINE_ICON_TRUE}" && test -z "${ENABLE_APPINDICATOR_ENGINE_ICON_FALSE}"; then as_fn_error $? "conditional \"ENABLE_APPINDICATOR_ENGINE_ICON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_VAPIGEN_TRUE}" && test -z "${ENABLE_VAPIGEN_FALSE}"; then as_fn_error $? "conditional \"ENABLE_VAPIGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GCONF_TRUE}" && test -z "${ENABLE_GCONF_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GCONF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then as_fn_error $? "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then as_fn_error $? "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_MEMCONF_TRUE}" && test -z "${ENABLE_MEMCONF_FALSE}"; then as_fn_error $? "conditional \"ENABLE_MEMCONF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DCONF_TRUE}" && test -z "${ENABLE_DCONF_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DCONF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PYTHON_LIBRARY_TRUE}" && test -z "${ENABLE_PYTHON_LIBRARY_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PYTHON_LIBRARY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SETUP_TRUE}" && test -z "${ENABLE_SETUP_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SETUP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DAEMON_TRUE}" && test -z "${ENABLE_DAEMON_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DAEMON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PYGOBJECT_TRUE}" && test -z "${ENABLE_PYGOBJECT_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PYGOBJECT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_UI_TRUE}" && test -z "${ENABLE_UI_FALSE}"; then as_fn_error $? "conditional \"ENABLE_UI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_ENGINE_TRUE}" && test -z "${ENABLE_ENGINE_FALSE}"; then as_fn_error $? "conditional \"ENABLE_ENGINE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_LIBNOTIFY_TRUE}" && test -z "${ENABLE_LIBNOTIFY_FALSE}"; then as_fn_error $? "conditional \"ENABLE_LIBNOTIFY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by ibus $as_me 1.5.11, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ ibus config.status 1.5.11 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "ibus-1.0.pc") CONFIG_FILES="$CONFIG_FILES ibus-1.0.pc" ;; "ibus.spec") CONFIG_FILES="$CONFIG_FILES ibus.spec" ;; "client/Makefile") CONFIG_FILES="$CONFIG_FILES client/Makefile" ;; "client/gtk2/Makefile") CONFIG_FILES="$CONFIG_FILES client/gtk2/Makefile" ;; "client/gtk3/Makefile") CONFIG_FILES="$CONFIG_FILES client/gtk3/Makefile" ;; "client/x11/Makefile") CONFIG_FILES="$CONFIG_FILES client/x11/Makefile" ;; "client/wayland/Makefile") CONFIG_FILES="$CONFIG_FILES client/wayland/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/ibusversion.h") CONFIG_FILES="$CONFIG_FILES src/ibusversion.h" ;; "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;; "bus/Makefile") CONFIG_FILES="$CONFIG_FILES bus/Makefile" ;; "engine/Makefile") CONFIG_FILES="$CONFIG_FILES engine/Makefile" ;; "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; "util/IMdkit/Makefile") CONFIG_FILES="$CONFIG_FILES util/IMdkit/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "data/icons/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/Makefile" ;; "data/keymaps/Makefile") CONFIG_FILES="$CONFIG_FILES data/keymaps/Makefile" ;; "data/dconf/Makefile") CONFIG_FILES="$CONFIG_FILES data/dconf/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; "docs/reference/ibus/ibus-docs.sgml") CONFIG_FILES="$CONFIG_FILES docs/reference/ibus/ibus-docs.sgml" ;; "docs/reference/ibus/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/ibus/Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "ibus/_config.py") CONFIG_FILES="$CONFIG_FILES ibus/_config.py" ;; "ibus/Makefile") CONFIG_FILES="$CONFIG_FILES ibus/Makefile" ;; "ibus/interface/Makefile") CONFIG_FILES="$CONFIG_FILES ibus/interface/Makefile" ;; "ui/Makefile") CONFIG_FILES="$CONFIG_FILES ui/Makefile" ;; "ui/gtk3/Makefile") CONFIG_FILES="$CONFIG_FILES ui/gtk3/Makefile" ;; "setup/Makefile") CONFIG_FILES="$CONFIG_FILES setup/Makefile" ;; "setup/ibus-setup") CONFIG_FILES="$CONFIG_FILES setup/ibus-setup" ;; "bindings/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/Makefile" ;; "bindings/pygobject/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/pygobject/Makefile" ;; "bindings/vala/Makefile") CONFIG_FILES="$CONFIG_FILES bindings/vala/Makefile" ;; "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;; "conf/gconf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/gconf/Makefile" ;; "conf/dconf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/dconf/Makefile" ;; "conf/memconf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/memconf/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "default-2":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: Build options: Version $IBUS_VERSION Install prefix $prefix Build shared libs $enable_shared Build static libs $enable_static CFLAGS $CFLAGS PYTHON $PYTHON PYTHON2 $PYTHON2 Gtk2 immodule dir $GTK2_IM_MODULEDIR Gtk3 immodule dir $GTK3_IM_MODULEDIR Build gtk2 immodule $enable_gtk2 Build gtk3 immodule $enable_gtk3 Build XIM agent server $enable_xim Build wayland support $enable_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library Build gconf modules $enable_gconf Build memconf modules $enable_memconf Build dconf modules $enable_dconf Build introspection $found_introspection IBus-1.0.gir scannerflags \"$IBUS_GIR_SCANNERFLAGS\" Build vala binding $enable_vala Build document $enable_gtk_doc Build UI $enable_ui Build engine $enable_engine Enable key snooper $enable_key_snooper No snooper regexes \"$NO_SNOOPER_APPS\" Panel icon \"$IBUS_ICON_KEYBOARD\" Enable surrounding-text $enable_surrounding_text Enable libnotify $enable_libnotify Run test cases $enable_tests " >&5 $as_echo " Build options: Version $IBUS_VERSION Install prefix $prefix Build shared libs $enable_shared Build static libs $enable_static CFLAGS $CFLAGS PYTHON $PYTHON PYTHON2 $PYTHON2 Gtk2 immodule dir $GTK2_IM_MODULEDIR Gtk3 immodule dir $GTK3_IM_MODULEDIR Build gtk2 immodule $enable_gtk2 Build gtk3 immodule $enable_gtk3 Build XIM agent server $enable_xim Build wayland support $enable_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library Build gconf modules $enable_gconf Build memconf modules $enable_memconf Build dconf modules $enable_dconf Build introspection $found_introspection IBus-1.0.gir scannerflags \"$IBUS_GIR_SCANNERFLAGS\" Build vala binding $enable_vala Build document $enable_gtk_doc Build UI $enable_ui Build engine $enable_engine Enable key snooper $enable_key_snooper No snooper regexes \"$NO_SNOOPER_APPS\" Panel icon \"$IBUS_ICON_KEYBOARD\" Enable surrounding-text $enable_surrounding_text Enable libnotify $enable_libnotify Run test cases $enable_tests " >&6; } ibus-1.5.11/bus/0000755000000000000000000000000012551655054010311 500000000000000ibus-1.5.11/bus/types.h0000644000000000000000000000205012551654123011537 00000000000000/* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * Copyright (c) 2010 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_TYPES_H_ #define __BUS_TYPES_H_ #include #define I_(string) g_intern_static_string (string) #endif ibus-1.5.11/bus/test-matchrule.c0000644000000000000000000000435612551654123013342 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "matchrule.h" struct _BusMatchRule { IBusObject parent; /* instance members */ gint flags; gint message_type; gchar *interface; gchar *member; gchar *sender; gchar *destination; gchar *path; GArray *args; GList *recipients; }; int main(gint argc, gchar **argv) { BusMatchRule *rule, *rule1; #if !GLIB_CHECK_VERSION(2,35,0) g_type_init (); #endif rule = bus_match_rule_new (" type='signal' , interface = 'org.freedesktop.IBus' "); g_assert (rule->message_type == G_DBUS_MESSAGE_TYPE_SIGNAL); g_assert (g_strcmp0 (rule->interface, "org.freedesktop.IBus") == 0 ); g_object_unref (rule); rule = bus_match_rule_new ("type='method_call' ,\n" " interface='org.freedesktop.IBus' "); g_assert (rule->message_type == G_DBUS_MESSAGE_TYPE_METHOD_CALL); g_assert (g_strcmp0 (rule->interface, "org.freedesktop.IBus") == 0 ); g_object_unref (rule); rule = bus_match_rule_new ("type='signal'," "interface='org.freedesktop.DBus'," "member='NameOwnerChanged'," "arg0='ibus.freedesktop.IBus.config'," "arg0='ibus.freedesktop.IBus.config'," "arg2='ibus.freedesktop.IBus.config'"); g_assert (rule->message_type == G_DBUS_MESSAGE_TYPE_SIGNAL); g_assert (g_strcmp0 (rule->interface, "org.freedesktop.DBus") == 0 ); rule1 = bus_match_rule_new ("type='signal'," "interface='org.freedesktop.DBus'," "member='NameOwnerChanged'," "arg0='ibus.freedesktop.IBus.config'," "arg0='ibus.freedesktop.IBus.config'," "arg2='ibus.freedesktop.IBus.config'"); g_assert (bus_match_rule_is_equal (rule, rule1)); g_object_unref (rule); g_object_unref (rule1); rule = bus_match_rule_new ("type='method_call',interface='org.freedesktop.IBus "); g_assert (rule == NULL); rule = bus_match_rule_new ("eavesdrop=true"); g_assert (rule != NULL); g_object_unref (rule); return 0; } ibus-1.5.11/bus/global.c0000644000000000000000000000225712551654123011637 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * Copyright (c) 2012 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "global.h" gchar **g_argv = NULL; gchar *g_address = "unix:tmpdir=/tmp"; gchar *g_cache = "auto"; gboolean g_mempro = FALSE; gboolean g_verbose = FALSE; gint g_gdbus_timeout = 15000; ibus-1.5.11/bus/engineproxy.c0000644000000000000000000012763612551654123012757 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "engineproxy.h" #include "global.h" #include "ibusimpl.h" #include "marshalers.h" #include "types.h" struct _BusEngineProxy { IBusProxy parent; /* instance members */ /* TRUE if the engine has a focus (local copy of the engine's status.) */ gboolean has_focus; /* TRUE if the engine is enabled (local copy of the engine's status.) */ gboolean enabled; /* A set of capabilities the current client supports (local copy of the engine's flag.) */ guint capabilities; /* The current cursor location that are sent to the engine. */ gint x; gint y; gint w; gint h; /* an engine desc used to create the proxy. */ IBusEngineDesc *desc; /* a key mapping for the engine that converts keycode into keysym. the mapping is used only when use_sys_layout is FALSE. */ IBusKeymap *keymap; /* private member */ /* cached surrounding text (see also IBusEnginePrivate and IBusInputContextPrivate) */ IBusText *surrounding_text; guint surrounding_cursor_pos; guint selection_anchor_pos; /* cached properties */ IBusPropList *prop_list; }; struct _BusEngineProxyClass { IBusProxyClass parent; /* class members */ void (* register_properties) (BusEngineProxy *engine, IBusPropList *prop_list); void (* update_property) (BusEngineProxy *engine, IBusProperty *prop); }; enum { COMMIT_TEXT, FORWARD_KEY_EVENT, DELETE_SURROUNDING_TEXT, REQUIRE_SURROUNDING_TEXT, UPDATE_PREEDIT_TEXT, SHOW_PREEDIT_TEXT, HIDE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, SHOW_AUXILIARY_TEXT, HIDE_AUXILIARY_TEXT, UPDATE_LOOKUP_TABLE, SHOW_LOOKUP_TABLE, HIDE_LOOKUP_TABLE, PAGE_UP_LOOKUP_TABLE, PAGE_DOWN_LOOKUP_TABLE, CURSOR_UP_LOOKUP_TABLE, CURSOR_DOWN_LOOKUP_TABLE, REGISTER_PROPERTIES, UPDATE_PROPERTY, LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_ENGINE_DESC, }; static guint engine_signals[LAST_SIGNAL] = { 0 }; static IBusText *text_empty = NULL; static IBusPropList *prop_list_empty = NULL; /* functions prototype */ static void bus_engine_proxy_set_property (BusEngineProxy *engine, guint prop_id, const GValue *value, GParamSpec *pspec); static void bus_engine_proxy_get_property (BusEngineProxy *engine, guint prop_id, GValue *value, GParamSpec *pspec); static void bus_engine_proxy_real_register_properties (BusEngineProxy *engine, IBusPropList *prop_list); static void bus_engine_proxy_real_update_property (BusEngineProxy *engine, IBusProperty *prop); static void bus_engine_proxy_real_destroy (IBusProxy *proxy); static void bus_engine_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters); static void bus_engine_proxy_initable_iface_init (GInitableIface *initable_iface); G_DEFINE_TYPE_WITH_CODE (BusEngineProxy, bus_engine_proxy, IBUS_TYPE_PROXY, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, bus_engine_proxy_initable_iface_init) ); static GInitableIface *parent_initable_iface = NULL; static void bus_engine_proxy_class_init (BusEngineProxyClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); gobject_class->set_property = (GObjectSetPropertyFunc)bus_engine_proxy_set_property; gobject_class->get_property = (GObjectGetPropertyFunc)bus_engine_proxy_get_property; class->register_properties = bus_engine_proxy_real_register_properties; class->update_property = bus_engine_proxy_real_update_property; IBUS_PROXY_CLASS (class)->destroy = bus_engine_proxy_real_destroy; G_DBUS_PROXY_CLASS (class)->g_signal = bus_engine_proxy_g_signal; parent_initable_iface = (GInitableIface *)g_type_interface_peek (bus_engine_proxy_parent_class, G_TYPE_INITABLE); /* install properties */ g_object_class_install_property (gobject_class, PROP_ENGINE_DESC, g_param_spec_object ("desc", "desc", "desc", IBUS_TYPE_ENGINE_DESC, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK )); /* install glib signals that will be sent when corresponding D-Bus signals are sent from an engine process. */ engine_signals[COMMIT_TEXT] = g_signal_new (I_("commit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_TEXT); engine_signals[FORWARD_KEY_EVENT] = g_signal_new (I_("forward-key-event"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); engine_signals[DELETE_SURROUNDING_TEXT] = g_signal_new (I_("delete-surrounding-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__INT_UINT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_UINT); engine_signals[REQUIRE_SURROUNDING_TEXT] = g_signal_new (I_("require-surrounding-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT, G_TYPE_NONE, 4, IBUS_TYPE_TEXT, G_TYPE_UINT, G_TYPE_BOOLEAN, G_TYPE_UINT); engine_signals[SHOW_PREEDIT_TEXT] = g_signal_new (I_("show-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[HIDE_PREEDIT_TEXT] = g_signal_new (I_("hide-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_TEXT, G_TYPE_BOOLEAN); engine_signals[SHOW_AUXILIARY_TEXT] = g_signal_new (I_("show-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[HIDE_AUXILIARY_TEXT] = g_signal_new (I_("hide-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_LOOKUP_TABLE, G_TYPE_BOOLEAN); engine_signals[SHOW_LOOKUP_TABLE] = g_signal_new (I_("show-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[HIDE_LOOKUP_TABLE] = g_signal_new (I_("hide-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[PAGE_UP_LOOKUP_TABLE] = g_signal_new (I_("page-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[PAGE_DOWN_LOOKUP_TABLE] = g_signal_new (I_("page-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[CURSOR_UP_LOOKUP_TABLE] = g_signal_new (I_("cursor-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[CURSOR_DOWN_LOOKUP_TABLE] = g_signal_new (I_("cursor-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); engine_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (BusEngineProxyClass, register_properties), NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROP_LIST); engine_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (BusEngineProxyClass, update_property), NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROPERTY); text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); prop_list_empty = ibus_prop_list_new (); g_object_ref_sink (prop_list_empty); } static void bus_engine_proxy_init (BusEngineProxy *engine) { engine->surrounding_text = g_object_ref_sink (text_empty); engine->prop_list = g_object_ref_sink (prop_list_empty); } static void bus_engine_proxy_set_property (BusEngineProxy *engine, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_ENGINE_DESC: g_assert (engine->desc == NULL); engine->desc = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec); } } static void bus_engine_proxy_get_property (BusEngineProxy *engine, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_ENGINE_DESC: g_value_set_object (value, bus_engine_proxy_get_desc (engine)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec); } } static void bus_engine_proxy_real_register_properties (BusEngineProxy *engine, IBusPropList *prop_list) { g_assert (IBUS_IS_PROP_LIST (prop_list)); if (engine->prop_list != prop_list_empty) g_object_unref (engine->prop_list); engine->prop_list = (IBusPropList *) g_object_ref_sink (prop_list); } static void bus_engine_proxy_real_update_property (BusEngineProxy *engine, IBusProperty *prop) { g_return_if_fail (prop); if (engine->prop_list) ibus_prop_list_update_property (engine->prop_list, prop); } static void bus_engine_proxy_real_destroy (IBusProxy *proxy) { BusEngineProxy *engine = (BusEngineProxy *)proxy; if (engine->desc) { g_object_unref (engine->desc); engine->desc = NULL; } if (engine->keymap) { g_object_unref (engine->keymap); engine->keymap = NULL; } if (engine->surrounding_text) { g_object_unref (engine->surrounding_text); engine->surrounding_text = NULL; } if (engine->prop_list) { g_object_unref (engine->prop_list); engine->prop_list = NULL; } IBUS_PROXY_CLASS (bus_engine_proxy_parent_class)->destroy ((IBusProxy *)engine); } static void _g_object_unref_if_floating (gpointer instance) { if (g_object_is_floating (instance)) g_object_unref (instance); } /** * bus_engine_proxy_g_signal: * * Handle all D-Bus signals from the engine process. This function emits corresponding glib signal for the D-Bus signal. */ static void bus_engine_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters) { BusEngineProxy *engine = (BusEngineProxy *)proxy; /* The list of nullary D-Bus signals. */ static const struct { const gchar *signal_name; const guint signal_id; } signals [] = { { "ShowPreeditText", SHOW_PREEDIT_TEXT }, { "HidePreeditText", HIDE_PREEDIT_TEXT }, { "ShowAuxiliaryText", SHOW_AUXILIARY_TEXT }, { "HideAuxiliaryText", HIDE_AUXILIARY_TEXT }, { "ShowLookupTable", SHOW_LOOKUP_TABLE }, { "HideLookupTable", HIDE_LOOKUP_TABLE }, { "PageUpLookupTable", PAGE_UP_LOOKUP_TABLE }, { "PageDownLookupTable", PAGE_DOWN_LOOKUP_TABLE }, { "CursorUpLookupTable", CURSOR_UP_LOOKUP_TABLE }, { "CursorDownLookupTable", CURSOR_DOWN_LOOKUP_TABLE }, { "RequireSurroundingText", REQUIRE_SURROUNDING_TEXT }, }; gint i; for (i = 0; i < G_N_ELEMENTS (signals); i++) { if (g_strcmp0 (signal_name, signals[i].signal_name) == 0) { g_signal_emit (engine, engine_signals[signals[i].signal_id], 0); return; } } /* Handle D-Bus signals with parameters. Deserialize them and emit a glib signal. */ if (g_strcmp0 (signal_name, "CommitText") == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0 != NULL); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (text != NULL); g_signal_emit (engine, engine_signals[COMMIT_TEXT], 0, text); _g_object_unref_if_floating (text); return; } if (g_strcmp0 (signal_name, "ForwardKeyEvent") == 0) { guint32 keyval = 0; guint32 keycode = 0; guint32 states = 0; g_variant_get (parameters, "(uuu)", &keyval, &keycode, &states); g_signal_emit (engine, engine_signals[FORWARD_KEY_EVENT], 0, keyval, keycode, states); return; } if (g_strcmp0 (signal_name, "DeleteSurroundingText") == 0) { gint offset_from_cursor = 0; guint nchars = 0; g_variant_get (parameters, "(iu)", &offset_from_cursor, &nchars); g_signal_emit (engine, engine_signals[DELETE_SURROUNDING_TEXT], 0, offset_from_cursor, nchars); return; } if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { GVariant *arg0 = NULL; guint cursor_pos = 0; gboolean visible = FALSE; guint mode = 0; g_variant_get (parameters, "(vubu)", &arg0, &cursor_pos, &visible, &mode); g_return_if_fail (arg0 != NULL); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (text != NULL); g_signal_emit (engine, engine_signals[UPDATE_PREEDIT_TEXT], 0, text, cursor_pos, visible, mode); _g_object_unref_if_floating (text); return; } if (g_strcmp0 (signal_name, "UpdateAuxiliaryText") == 0) { GVariant *arg0 = NULL; gboolean visible = FALSE; g_variant_get (parameters, "(vb)", &arg0, &visible); g_return_if_fail (arg0 != NULL); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (text != NULL); g_signal_emit (engine, engine_signals[UPDATE_AUXILIARY_TEXT], 0, text, visible); _g_object_unref_if_floating (text); return; } if (g_strcmp0 (signal_name, "UpdateLookupTable") == 0) { GVariant *arg0 = NULL; gboolean visible = FALSE; g_variant_get (parameters, "(vb)", &arg0, &visible); g_return_if_fail (arg0 != NULL); IBusLookupTable *table = IBUS_LOOKUP_TABLE (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (table != NULL); g_signal_emit (engine, engine_signals[UPDATE_LOOKUP_TABLE], 0, table, visible); _g_object_unref_if_floating (table); return; } if (g_strcmp0 (signal_name, "RegisterProperties") == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0 != NULL); IBusPropList *prop_list = IBUS_PROP_LIST (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (prop_list != NULL); g_signal_emit (engine, engine_signals[REGISTER_PROPERTIES], 0, prop_list); _g_object_unref_if_floating (prop_list); return; } if (g_strcmp0 (signal_name, "UpdateProperty") == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0 != NULL); IBusProperty *prop = IBUS_PROPERTY (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (prop != NULL); g_signal_emit (engine, engine_signals[UPDATE_PROPERTY], 0, prop); _g_object_unref_if_floating (prop); return; } g_return_if_reached (); } static BusEngineProxy * bus_engine_proxy_new_internal (const gchar *path, IBusEngineDesc *desc, GDBusConnection *connection) { g_assert (path); g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (G_IS_DBUS_CONNECTION (connection)); GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; BusEngineProxy *engine = (BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY, NULL, NULL, "desc", desc, "g-connection", connection, "g-interface-name", IBUS_INTERFACE_ENGINE, "g-object-path", path, "g-default-timeout", g_gdbus_timeout, "g-flags", flags, NULL); const gchar *layout = ibus_engine_desc_get_layout (desc); if (layout != NULL && layout[0] != '\0') { engine->keymap = ibus_keymap_get (layout); } return engine; } typedef struct { GSimpleAsyncResult *simple; IBusEngineDesc *desc; BusComponent *component; BusFactoryProxy *factory; GCancellable *cancellable; gulong cancelled_handler_id; guint handler_id; guint timeout_id; gint timeout; } EngineProxyNewData; static void engine_proxy_new_data_free (EngineProxyNewData *data) { if (data->simple != NULL) { g_object_unref (data->simple); } if (data->desc != NULL) { g_object_unref (data->desc); } if (data->component != NULL) { if (data->handler_id != 0) { g_signal_handler_disconnect (data->component, data->handler_id); } g_object_unref (data->component); } if (data->factory != NULL) { g_object_unref (data->factory); } if (data->timeout_id != 0) { g_source_remove (data->timeout_id); } if (data->cancellable != NULL) { if (data->cancelled_handler_id != 0) { g_cancellable_disconnect (data->cancellable, data->cancelled_handler_id); } g_object_unref (data->cancellable); } g_slice_free (EngineProxyNewData, data); } /** * create_engine_ready_cb: * * A callback function to be called when bus_factory_proxy_create_engine finishes. * Create an BusEngineProxy object and call the GAsyncReadyCallback. */ static void create_engine_ready_cb (BusFactoryProxy *factory, GAsyncResult *res, EngineProxyNewData *data) { g_return_if_fail (data->simple != NULL); GError *error = NULL; gchar *path = bus_factory_proxy_create_engine_finish (factory, res, &error); if (path == NULL) { g_simple_async_result_set_from_error (data->simple, error); g_simple_async_result_complete_in_idle (data->simple); engine_proxy_new_data_free (data); return; } BusEngineProxy *engine = bus_engine_proxy_new_internal (path, data->desc, g_dbus_proxy_get_connection ((GDBusProxy *)data->factory)); g_free (path); /* FIXME: set destroy callback ? */ g_simple_async_result_set_op_res_gpointer (data->simple, engine, NULL); g_simple_async_result_complete_in_idle (data->simple); engine_proxy_new_data_free (data); } /** * notify_factory_cb: * * A callback function to be called when bus_component_start() emits "notify::factory" signal within 5 seconds. * Call bus_factory_proxy_create_engine to create the engine proxy asynchronously. */ static void notify_factory_cb (BusComponent *component, GParamSpec *spec, EngineProxyNewData *data) { data->factory = bus_component_get_factory (data->component); if (data->factory != NULL) { g_object_ref (data->factory); /* Timeout should be removed */ if (data->timeout_id != 0) { g_source_remove (data->timeout_id); data->timeout_id = 0; } /* Handler of notify::factory should be removed. */ if (data->handler_id != 0) { g_signal_handler_disconnect (data->component, data->handler_id); data->handler_id = 0; } /* We *have to* disconnect the cancelled_cb here, since g_dbus_proxy_call * calls create_engine_ready_cb even if the proxy call is cancelled, and * in this case, create_engine_ready_cb itself will return error using * g_simple_async_result_set_from_error and g_simple_async_result_complete. * Otherwise, g_simple_async_result_complete might be called twice for a * single data->simple twice (first in cancelled_cb and later in * create_engine_ready_cb). */ if (data->cancellable && data->cancelled_handler_id != 0) { g_cancellable_disconnect (data->cancellable, data->cancelled_handler_id); data->cancelled_handler_id = 0; } /* Create engine from factory. */ bus_factory_proxy_create_engine (data->factory, data->desc, data->timeout, data->cancellable, (GAsyncReadyCallback) create_engine_ready_cb, data); } /* If factory is NULL, we will continue wait for * factory notify signal or timeout */ } /** * timeout_cb: * * A callback function to be called when bus_component_start() does not emit "notify::factory" signal within 5 seconds. * Call the GAsyncReadyCallback and stop the 5 sec timer. */ static gboolean timeout_cb (EngineProxyNewData *data) { g_simple_async_result_set_error (data->simple, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Timeout was reached"); g_simple_async_result_complete_in_idle (data->simple); engine_proxy_new_data_free (data); return FALSE; } /** * cancelled_cb: * * A callback function to be called when someone calls g_cancellable_cancel() * for the cancellable object for bus_engine_proxy_new. * Call the GAsyncReadyCallback. */ static gboolean cancelled_idle_cb (EngineProxyNewData *data) { g_simple_async_result_set_error (data->simple, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Operation was cancelled"); g_simple_async_result_complete_in_idle (data->simple); engine_proxy_new_data_free (data); return FALSE; } static void cancelled_cb (GCancellable *cancellable, EngineProxyNewData *data) { /* Cancel the bus_engine_proxy_new() in idle to avoid deadlock. * And use HIGH priority to avoid timeout event happening before * idle callback. */ g_idle_add_full (G_PRIORITY_HIGH, (GSourceFunc) cancelled_idle_cb, data, NULL); } void bus_engine_proxy_new (IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); g_assert (callback); GSimpleAsyncResult *simple = g_simple_async_result_new (NULL, callback, user_data, bus_engine_proxy_new); if (g_cancellable_is_cancelled (cancellable)) { g_simple_async_result_set_error (simple, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Operation was cancelled"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); return; } EngineProxyNewData *data = g_slice_new0 (EngineProxyNewData); data->desc = g_object_ref (desc); data->component = bus_component_from_engine_desc (desc); g_object_ref (data->component); data->simple = simple; data->timeout = timeout; data->factory = bus_component_get_factory (data->component); if (data->factory == NULL) { /* The factory is not ready yet. Create the factory first, and wait for * the "notify::factory" signal. In the handler of "notify::factory", * we'll create the engine proxy. */ data->handler_id = g_signal_connect (data->component, "notify::factory", G_CALLBACK (notify_factory_cb), data); data->timeout_id = g_timeout_add (timeout, (GSourceFunc) timeout_cb, data); if (cancellable) { data->cancellable = (GCancellable *) g_object_ref (cancellable); data->cancelled_handler_id = g_cancellable_connect (cancellable, (GCallback) cancelled_cb, data, NULL); } bus_component_start (data->component, g_verbose); } else { /* The factory is ready. We'll create the engine proxy directly. */ g_object_ref (data->factory); /* We don't have to connect to cancelled_cb here, since g_dbus_proxy_call * calls create_engine_ready_cb even if the proxy call is cancelled, and * in this case, create_engine_ready_cb itself can return error using * g_simple_async_result_set_from_error and g_simple_async_result_complete. */ bus_factory_proxy_create_engine (data->factory, data->desc, timeout, cancellable, (GAsyncReadyCallback) create_engine_ready_cb, data); } } BusEngineProxy * bus_engine_proxy_new_finish (GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); g_assert (error == NULL || *error == NULL); g_assert (g_simple_async_result_get_source_tag (simple) == bus_engine_proxy_new); if (g_simple_async_result_propagate_error (simple, error)) return NULL; return (BusEngineProxy *) g_simple_async_result_get_op_res_gpointer(simple); } void bus_engine_proxy_process_key_event (BusEngineProxy *engine, guint keyval, guint keycode, guint state, GAsyncReadyCallback callback, gpointer user_data) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (keycode != 0 && bus_ibus_impl_is_use_sys_layout (BUS_DEFAULT_IBUS) == FALSE) { /* Since use_sys_layout is false, we don't rely on XKB. Try to convert keyval from keycode by using our own mapping. */ IBusKeymap *keymap = engine->keymap; if (keymap == NULL) keymap = BUS_DEFAULT_KEYMAP; if (keymap != NULL) { guint t = ibus_keymap_lookup_keysym (keymap, keycode, state); if (t != IBUS_KEY_VoidSymbol) { keyval = t; } } } g_dbus_proxy_call ((GDBusProxy *)engine, "ProcessKeyEvent", g_variant_new ("(uuu)", keyval, keycode, state), G_DBUS_CALL_FLAGS_NONE, -1, NULL, callback, user_data); } void bus_engine_proxy_set_cursor_location (BusEngineProxy *engine, gint x, gint y, gint w, gint h) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (engine->x != x || engine->y != y || engine->w != w || engine->h != h) { engine->x = x; engine->y = y; engine->w = w; engine->h = h; g_dbus_proxy_call ((GDBusProxy *)engine, "SetCursorLocation", g_variant_new ("(iiii)", x, y, w, h), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_process_hand_writing_event (BusEngineProxy *engine, GVariant *coordinates) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_dbus_proxy_call ((GDBusProxy *)engine, "ProcessHandWritingEvent", coordinates, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_cancel_hand_writing (BusEngineProxy *engine, guint n_strokes) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_dbus_proxy_call ((GDBusProxy *)engine, "CancelHandWriting", g_variant_new ("(u)", n_strokes), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_set_capabilities (BusEngineProxy *engine, guint caps) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (engine->capabilities != caps) { engine->capabilities = caps; g_dbus_proxy_call ((GDBusProxy *)engine, "SetCapabilities", g_variant_new ("(u)", caps), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_property_activate (BusEngineProxy *engine, const gchar *prop_name, guint prop_state) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (prop_name != NULL); g_dbus_proxy_call ((GDBusProxy *)engine, "PropertyActivate", g_variant_new ("(su)", prop_name, prop_state), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_property_show (BusEngineProxy *engine, const gchar *prop_name) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (prop_name != NULL); g_dbus_proxy_call ((GDBusProxy *)engine, "PropertyShow", g_variant_new ("(s)", prop_name), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_property_hide (BusEngineProxy *engine, const gchar *prop_name) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (prop_name != NULL); g_dbus_proxy_call ((GDBusProxy *)engine, "PropertyHide", g_variant_new ("(s)", prop_name), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_set_surrounding_text (BusEngineProxy *engine, IBusText *text, guint cursor_pos, guint anchor_pos) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (text != NULL); if (!engine->surrounding_text || g_strcmp0 (text->text, engine->surrounding_text->text) != 0 || cursor_pos != engine->surrounding_cursor_pos || anchor_pos != engine->selection_anchor_pos) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); if (engine->surrounding_text) g_object_unref (engine->surrounding_text); engine->surrounding_text = (IBusText *) g_object_ref_sink (text); engine->surrounding_cursor_pos = cursor_pos; engine->selection_anchor_pos = anchor_pos; g_dbus_proxy_call ((GDBusProxy *)engine, "SetSurroundingText", g_variant_new ("(vuu)", variant, cursor_pos, anchor_pos), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_set_content_type (BusEngineProxy *engine, guint purpose, guint hints) { g_assert (BUS_IS_ENGINE_PROXY (engine)); GVariant *cached_content_type = g_dbus_proxy_get_cached_property ((GDBusProxy *) engine, "ContentType"); GVariant *content_type = g_variant_new ("(uu)", purpose, hints); g_variant_ref_sink (content_type); if (cached_content_type == NULL || !g_variant_equal (content_type, cached_content_type)) { g_dbus_proxy_call ((GDBusProxy *) engine, "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", IBUS_INTERFACE_ENGINE, "ContentType", content_type), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); /* Need to update the cache by manual since there is a timing issue. */ g_dbus_proxy_set_cached_property ((GDBusProxy *) engine, "ContentType", content_type); } if (cached_content_type != NULL) g_variant_unref (cached_content_type); g_variant_unref (content_type); } /* a macro to generate a function to call a nullary D-Bus method. */ #define DEFINE_FUNCTION(Name, name) \ void \ bus_engine_proxy_##name (BusEngineProxy *engine) \ { \ g_assert (BUS_IS_ENGINE_PROXY (engine)); \ g_dbus_proxy_call ((GDBusProxy *)engine, \ #Name, \ NULL, \ G_DBUS_CALL_FLAGS_NONE, \ -1, NULL, NULL, NULL); \ } DEFINE_FUNCTION (Reset, reset) DEFINE_FUNCTION (PageUp, page_up) DEFINE_FUNCTION (PageDown, page_down) DEFINE_FUNCTION (CursorUp, cursor_up) DEFINE_FUNCTION (CursorDown, cursor_down) #undef DEFINE_FUNCTION void bus_engine_proxy_focus_in (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (!engine->has_focus) { engine->has_focus = TRUE; g_dbus_proxy_call ((GDBusProxy *)engine, "FocusIn", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_focus_out (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (engine->has_focus) { engine->has_focus = FALSE; g_dbus_proxy_call ((GDBusProxy *)engine, "FocusOut", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_enable (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (!engine->enabled) { engine->enabled = TRUE; g_dbus_proxy_call ((GDBusProxy *)engine, "Enable", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_disable (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); if (engine->enabled) { engine->enabled = FALSE; g_dbus_proxy_call ((GDBusProxy *)engine, "Disable", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } void bus_engine_proxy_candidate_clicked (BusEngineProxy *engine, guint index, guint button, guint state) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_dbus_proxy_call ((GDBusProxy *)engine, "CandidateClicked", g_variant_new ("(uuu)", index, button, state), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } IBusEngineDesc * bus_engine_proxy_get_desc (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); return engine->desc; } IBusPropList * bus_engine_proxy_get_properties (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); return engine->prop_list; } gboolean bus_engine_proxy_is_enabled (BusEngineProxy *engine) { g_assert (BUS_IS_ENGINE_PROXY (engine)); return engine->enabled; } static gboolean initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { BusEngineProxy *engine = BUS_ENGINE_PROXY (initable); if (engine->desc == NULL) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Desc is NULL"); return FALSE; } return parent_initable_iface->init (initable, cancellable, error); } static void bus_engine_proxy_initable_iface_init (GInitableIface *initable_iface) { initable_iface->init = initable_init; } ibus-1.5.11/bus/component.h0000644000000000000000000000764712551654123012416 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2010 Peng Huang * Copyright (C) 2010 Google Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_COMPONENT_H_ #define __BUS_COMPONENT_H_ #include #include "factoryproxy.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_COMPONENT \ (bus_component_get_type ()) #define BUS_COMPONENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_COMPONENT, BusComponent)) #define BUS_COMPONENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_COMPONENT, BusComponentClass)) #define BUS_IS_COMPONENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_COMPONENT)) #define BUS_IS_COMPONENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_COMPONENT)) #define BUS_COMPONENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_COMPONENT, BusComponentClass)) G_BEGIN_DECLS typedef struct _BusComponent BusComponent; typedef struct _BusComponentClass BusComponentClass; GType bus_component_get_type (void); BusComponent *bus_component_new (IBusComponent *component, BusFactoryProxy *factory); IBusComponent *bus_component_get_component (BusComponent *component); void bus_component_set_factory (BusComponent *compinent, BusFactoryProxy *factory); BusFactoryProxy *bus_component_get_factory (BusComponent *factory); void bus_component_set_destroy_with_factory (BusComponent *component, gboolean with_factory); /** * bus_component_get_name: * * Return a component name such as "org.freedesktop.IBus.Panel" and "com.google.IBus.Mozc" */ const gchar *bus_component_get_name (BusComponent *component); /** * bus_component_get_engines: * * Return a list of IBusEngineDesc objects the component has. */ GList *bus_component_get_engines (BusComponent *component); /** * bus_component_start: * @verbose: if TRUE, the stdout and stderr of the child process is not redirected to /dev/null. * @returns: TRUE if the component is successfully started. * * Start the component by forking and executing an executable file for the component. */ gboolean bus_component_start (BusComponent *component, gboolean verbose); /** * bus_component_stop: * @returns: TRUE * * Kill a process for the component. */ gboolean bus_component_stop (BusComponent *component); /** * bus_component_stop: * @returns: TRUE if a process for the component exists. */ gboolean bus_component_is_running (BusComponent *component); void bus_component_set_restart (BusComponent *component, gboolean restart); BusComponent *bus_component_from_engine_desc (IBusEngineDesc *engine); G_END_DECLS #endif ibus-1.5.11/bus/test-stress.c0000644000000000000000000000616212551654123012676 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2010 Google Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include "test-client.h" #define MAX_SEND_KEY_NUM 100 #define MAX_RANDOM_SPACE 5 static gboolean _sleep_cb (gpointer user_data) { ibus_quit (); return FALSE; } static void _sleep (guint millisecond) { g_timeout_add (millisecond, (GSourceFunc) _sleep_cb, NULL); ibus_main (); } /* ibus stress test Send random key press and release event message to ibus-daemon. Key kind are a-z and space. Check ibus-daemon and ibus engine crash. */ gint main (gint argc, gchar **argv) { GTimer *timer; GRand *rnd; BusTestClient *client; /* num of send space key */ guint32 seed = (guint32) time (NULL); int count = 0; int send_key_num = 0; setlocale (LC_ALL, ""); ibus_init (); /* need to set active engine */ client = bus_test_client_new (); if (client == NULL) { g_printerr ("don't create test-client instance."); exit(1); } timer = g_timer_new (); rnd = g_rand_new (); g_rand_set_seed (rnd, seed); g_print("random seed:%u\n",seed); g_timer_start (timer); while (1) { guint keysym; if (send_key_num > MAX_SEND_KEY_NUM) { break; } if (!bus_test_client_is_connected (client)) { g_printerr ("ibus-daemon is disconnected\n"); break; } if (!bus_test_client_is_enabled (client)) { g_printerr ("ibus engine is enabled\n"); break; } if(count>0 || g_rand_int_range (rnd, 0, 5) == 0) { /* send space key 20% */ if (count == 0) { count = g_rand_int_range (rnd, 0, MAX_RANDOM_SPACE) + 1; } if (count-- == 1) { keysym = IBUS_KEY_Return; } else { keysym = IBUS_KEY_space; } } else { /* send random a-z key */ keysym = g_rand_int_range (rnd, 0, 'z'-'a'+1) + 'a'; } bus_test_client_send_key (client, keysym); send_key_num += 1; /* limit the typing rate to 800 hits/minutes */ _sleep (1000 * 60 / 800); } g_print ("%f sec\n", g_timer_elapsed (timer, NULL)); return 0; } ibus-1.5.11/bus/factoryproxy.c0000644000000000000000000000757612551654123013161 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "factoryproxy.h" #include "dbusimpl.h" #include "global.h" #include "marshalers.h" #include "types.h" struct _BusFactoryProxy { IBusProxy parent; /* instance members */ }; struct _BusFactoryProxyClass { IBusProxyClass parent; /* class members */ }; /* functions prototype */ static void bus_factory_proxy_destroy (IBusProxy *proxy); G_DEFINE_TYPE (BusFactoryProxy, bus_factory_proxy, IBUS_TYPE_PROXY) static void bus_factory_proxy_class_init (BusFactoryProxyClass *class) { IBUS_PROXY_CLASS (class)->destroy = bus_factory_proxy_destroy; } static void bus_factory_proxy_init (BusFactoryProxy *factory) { } static void bus_factory_proxy_destroy (IBusProxy *proxy) { IBUS_PROXY_CLASS (bus_factory_proxy_parent_class)->destroy (IBUS_PROXY (proxy)); } BusFactoryProxy * bus_factory_proxy_new (BusConnection *connection) { g_assert (BUS_IS_CONNECTION (connection)); BusFactoryProxy *factory; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; factory = (BusFactoryProxy *) g_initable_new ( BUS_TYPE_FACTORY_PROXY, NULL, NULL, "g-object-path", IBUS_PATH_FACTORY, "g-interface-name", IBUS_INTERFACE_FACTORY, "g-connection", bus_connection_get_dbus_connection (connection), "g-default-timeout", g_gdbus_timeout, "g-flags", flags, NULL); return factory; } void bus_factory_proxy_create_engine (BusFactoryProxy *factory, IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (BUS_IS_FACTORY_PROXY (factory)); g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); g_dbus_proxy_call ((GDBusProxy *) factory, "CreateEngine", g_variant_new ("(s)", ibus_engine_desc_get_name (desc)), G_DBUS_CALL_FLAGS_NONE, timeout, cancellable, callback, user_data); } gchar * bus_factory_proxy_create_engine_finish (BusFactoryProxy *factory, GAsyncResult *res, GError **error) { GVariant *retval = g_dbus_proxy_call_finish ((GDBusProxy *) factory, res, error); if (retval == NULL) return NULL; gchar *object_path = NULL; g_variant_get (retval, "(o)", &object_path); g_variant_unref (retval); return object_path; } ibus-1.5.11/bus/inputcontext.c0000644000000000000000000025440212551654123013144 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2014 Peng Huang * Copyright (C) 2008-2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "inputcontext.h" #include #include "engineproxy.h" #include "factoryproxy.h" #include "global.h" #include "ibusimpl.h" #include "marshalers.h" #include "types.h" struct _SetEngineByDescData { /* context related to the data */ BusInputContext *context; /* set engine by desc result, cancellable */ GSimpleAsyncResult *simple; /* a object to cancel bus_engine_proxy_new call */ GCancellable *cancellable; /* a object being passed to the bus_input_context_set_engine_by_desc function. if origin_cancellable is cancelled by someone, * we cancel the cancellable above as well. */ GCancellable *origin_cancellable; gulong cancelled_handler_id; }; typedef struct _SetEngineByDescData SetEngineByDescData; struct _BusInputContext { IBusService parent; /* instance members */ BusConnection *connection; BusEngineProxy *engine; gchar *client; gboolean has_focus; /* client capabilities */ guint capabilities; /* cursor location */ gint x; gint y; gint w; gint h; /* prev key event that are used for handling hot-keys */ guint prev_keyval; guint prev_modifiers; /* preedit text */ IBusText *preedit_text; guint preedit_cursor_pos; gboolean preedit_visible; guint preedit_mode; /* auxiliary text */ IBusText *auxiliary_text; gboolean auxiliary_visible; /* lookup table */ IBusLookupTable *lookup_table; gboolean lookup_table_visible; /* filter release */ gboolean filter_release; /* is fake context */ gboolean fake; /* incompleted set engine by desc request */ SetEngineByDescData *data; /* content-type (primary purpose and hints) */ guint purpose; guint hints; }; struct _BusInputContextClass { IBusServiceClass parent; /* class members */ IBusEngineDesc *default_engine_desc; }; enum { PROCESS_KEY_EVENT, SET_CURSOR_LOCATION, FOCUS_IN, FOCUS_OUT, UPDATE_PREEDIT_TEXT, SHOW_PREEDIT_TEXT, HIDE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, SHOW_AUXILIARY_TEXT, HIDE_AUXILIARY_TEXT, UPDATE_LOOKUP_TABLE, SHOW_LOOKUP_TABLE, HIDE_LOOKUP_TABLE, PAGE_UP_LOOKUP_TABLE, PAGE_DOWN_LOOKUP_TABLE, CURSOR_UP_LOOKUP_TABLE, CURSOR_DOWN_LOOKUP_TABLE, REGISTER_PROPERTIES, UPDATE_PROPERTY, ENGINE_CHANGED, REQUEST_ENGINE, SET_CONTENT_TYPE, LAST_SIGNAL, }; enum { PROP_0, }; typedef struct _BusInputContextPrivate BusInputContextPrivate; static guint context_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void bus_input_context_destroy (BusInputContext *context); static void bus_input_context_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static gboolean bus_input_context_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void bus_input_context_unset_engine (BusInputContext *context); static void bus_input_context_commit_text (BusInputContext *context, IBusText *text); static void bus_input_context_update_preedit_text (BusInputContext *context, IBusText *text, guint cursor_pos, gboolean visible, guint mode); static void bus_input_context_show_preedit_text (BusInputContext *context); static void bus_input_context_hide_preedit_text (BusInputContext *context); static void bus_input_context_update_auxiliary_text (BusInputContext *context, IBusText *text, gboolean visible); static void bus_input_context_show_auxiliary_text (BusInputContext *context); static void bus_input_context_hide_auxiliary_text (BusInputContext *context); static void bus_input_context_update_lookup_table (BusInputContext *context, IBusLookupTable *table, gboolean visible); static void bus_input_context_show_lookup_table (BusInputContext *context); static void bus_input_context_hide_lookup_table (BusInputContext *context); static void bus_input_context_page_up_lookup_table (BusInputContext *context); static void bus_input_context_page_down_lookup_table (BusInputContext *context); static void bus_input_context_cursor_up_lookup_table (BusInputContext *context); static void bus_input_context_cursor_down_lookup_table (BusInputContext *context); static void bus_input_context_register_properties (BusInputContext *context, IBusPropList *props); static void bus_input_context_update_property (BusInputContext *context, IBusProperty *prop); static void _engine_destroy_cb (BusEngineProxy *factory, BusInputContext *context); static IBusText *text_empty = NULL; static IBusLookupTable *lookup_table_empty = NULL; static IBusPropList *props_empty = NULL; /* The interfaces available in this class, which consists of a list of * methods this class implements and a list of signals this class may * emit. Method calls to the interface that are not defined in this * XML will be automatically rejected by the GDBus library (see * src/ibusservice.c for details.) */ static const gchar introspection_xml[] = "" " " /* methods */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* signals */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* properties */ " " " " ""; G_DEFINE_TYPE (BusInputContext, bus_input_context, IBUS_TYPE_SERVICE) /* TRUE if we can send preedit text to client. FALSE if the panel has to handle it. Note that we check IBUS_CAP_FOCUS here since * when the capability is not set, the client has to handle a preedit text regardless of the embed_preedit_text config. */ #define PREEDIT_CONDITION \ ((context->capabilities & IBUS_CAP_PREEDIT_TEXT) && \ (bus_ibus_impl_is_embed_preedit_text (BUS_DEFAULT_IBUS) || (context->capabilities & IBUS_CAP_FOCUS) == 0)) static void _connection_destroy_cb (BusConnection *connection, BusInputContext *context) { g_assert (BUS_IS_CONNECTION (connection)); g_assert (BUS_IS_INPUT_CONTEXT (context)); ibus_object_destroy (IBUS_OBJECT (context)); } static void bus_input_context_class_init (BusInputContextClass *class) { IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); class->default_engine_desc = ibus_engine_desc_new ("dummy", "", "", "", "", "", "ibus-engine", ""); g_object_ref_sink (class->default_engine_desc); ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_input_context_destroy; /* override the parent class's implementation. */ IBUS_SERVICE_CLASS (class)->service_method_call = bus_input_context_service_method_call; IBUS_SERVICE_CLASS (class)->service_set_property = bus_input_context_service_set_property; /* register the xml so that bus_ibus_impl_service_method_call will be called on a method call defined in the xml (e.g. 'FocusIn'.) */ ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); /* install glib signals that would be handled by other classes like ibusimpl.c and panelproxy.c. */ context_signals[PROCESS_KEY_EVENT] = g_signal_new (I_("process-key-event"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_BOOL__UINT_UINT_UINT, G_TYPE_BOOLEAN, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); context_signals[SET_CURSOR_LOCATION] = g_signal_new (I_("set-cursor-location"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__INT_INT_INT_INT, G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); context_signals[FOCUS_IN] = g_signal_new (I_("focus-in"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[FOCUS_OUT] = g_signal_new (I_("focus-out"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_UINT_BOOLEAN, G_TYPE_NONE, 3, IBUS_TYPE_TEXT, G_TYPE_UINT, G_TYPE_BOOLEAN); context_signals[SHOW_PREEDIT_TEXT] = g_signal_new (I_("show-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[HIDE_PREEDIT_TEXT] = g_signal_new (I_("hide-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_TEXT, G_TYPE_BOOLEAN); context_signals[SHOW_AUXILIARY_TEXT] = g_signal_new (I_("show-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[HIDE_AUXILIARY_TEXT] = g_signal_new (I_("hide-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_LOOKUP_TABLE, G_TYPE_BOOLEAN); context_signals[SHOW_LOOKUP_TABLE] = g_signal_new (I_("show-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[HIDE_LOOKUP_TABLE] = g_signal_new (I_("hide-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[PAGE_UP_LOOKUP_TABLE] = g_signal_new (I_("page-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[PAGE_DOWN_LOOKUP_TABLE] = g_signal_new (I_("page-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[CURSOR_UP_LOOKUP_TABLE] = g_signal_new (I_("cursor-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[CURSOR_DOWN_LOOKUP_TABLE] = g_signal_new (I_("cursor-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); context_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROP_LIST); context_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROPERTY); context_signals[ENGINE_CHANGED] = g_signal_new (I_("engine-changed"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); /* This signal is not for notifying an event on this object, but is for requesting an engine as the name shows. * On the signal emission, ibusimpl.c will immediately update the context->engine variable. */ context_signals[REQUEST_ENGINE] = g_signal_new (I_("request-engine"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_OBJECT__STRING, IBUS_TYPE_ENGINE_DESC, 1, G_TYPE_STRING); context_signals[SET_CONTENT_TYPE] = g_signal_new (I_("set-content-type"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); text_empty = ibus_text_new_from_string (""); g_object_ref_sink (text_empty); lookup_table_empty = ibus_lookup_table_new (9 /* page size */, 0, FALSE, FALSE); g_object_ref_sink (lookup_table_empty); props_empty = ibus_prop_list_new (); g_object_ref_sink (props_empty); } static void bus_input_context_init (BusInputContext *context) { context->prev_keyval = IBUS_KEY_VoidSymbol; g_object_ref_sink (text_empty); context->preedit_text = text_empty; context->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; g_object_ref_sink (text_empty); context->auxiliary_text = text_empty; g_object_ref_sink (lookup_table_empty); context->lookup_table = lookup_table_empty; /* other member variables will automatically be zero-cleared. */ } static void bus_input_context_destroy (BusInputContext *context) { if (context->has_focus) { bus_input_context_focus_out (context); context->has_focus = FALSE; } if (context->engine) { bus_input_context_unset_engine (context); } if (context->preedit_text) { g_object_unref (context->preedit_text); context->preedit_text = NULL; } if (context->auxiliary_text) { g_object_unref (context->auxiliary_text); context->auxiliary_text = NULL; } if (context->lookup_table) { g_object_unref (context->lookup_table); context->lookup_table = NULL; } if (context->connection) { g_signal_handlers_disconnect_by_func (context->connection, (GCallback) _connection_destroy_cb, context); g_object_unref (context->connection); context->connection = NULL; } if (context->client) { g_free (context->client); context->client = NULL; } IBUS_OBJECT_CLASS (bus_input_context_parent_class)->destroy (IBUS_OBJECT (context)); } static gboolean bus_input_context_send_signal (BusInputContext *context, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, GError **error) { if (context->connection == NULL) return TRUE; GDBusMessage *message = g_dbus_message_new_signal (ibus_service_get_object_path ((IBusService *)context), interface_name, signal_name); g_dbus_message_set_sender (message, "org.freedesktop.IBus"); g_dbus_message_set_destination (message, bus_connection_get_unique_name (context->connection)); if (parameters != NULL) g_dbus_message_set_body (message, parameters); gboolean retval = g_dbus_connection_send_message (bus_connection_get_dbus_connection (context->connection), message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, error); g_object_unref (message); return retval; } /** * bus_input_context_emit_signal: * @signal_name: The D-Bus signal name to emit which is in the introspection_xml. * * Emit the D-Bus signal. */ static gboolean bus_input_context_emit_signal (BusInputContext *context, const gchar *signal_name, GVariant *parameters, GError **error) { if (context->connection == NULL) return TRUE; return bus_input_context_send_signal (context, "org.freedesktop.IBus.InputContext", signal_name, parameters, error); } /** * bus_input_context_property_changed: * @context: a #BusInputContext * @property_name: The D-Bus property name which has changed * @value: The new value of the property * * Emit the D-Bus "PropertiesChanged" signal for a property. * Returns: %TRUE on success, %FALSE on failure */ static gboolean bus_input_context_property_changed (BusInputContext *context, const gchar *property_name, GVariant *value, GError **error) { if (context->connection == NULL) return TRUE; GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); g_variant_builder_add (&builder, "{sv}", property_name, value); return bus_input_context_send_signal (context, "org.freedesktop.DBus.Properties", "PropertiesChanged", g_variant_new ("(sa{sv}as)", "org.freedesktop.IBus", &builder, NULL), error); } /** * _ic_process_key_event_reply_cb: * * A GAsyncReadyCallback function to be called when bus_engine_proxy_process_key_event() is finished. */ static void _ic_process_key_event_reply_cb (GObject *source, GAsyncResult *res, GDBusMethodInvocation *invocation) { GError *error = NULL; GVariant *value = g_dbus_proxy_call_finish ((GDBusProxy *)source, res, &error); if (value != NULL) { g_dbus_method_invocation_return_value (invocation, value); g_variant_unref (value); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } } /** * _ic_process_key_event: * * Implement the "ProcessKeyEvent" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_process_key_event (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { guint keyval = IBUS_KEY_VoidSymbol; guint keycode = 0; guint modifiers = 0; g_variant_get (parameters, "(uuu)", &keyval, &keycode, &modifiers); if (G_UNLIKELY (!context->has_focus)) { /* workaround: set focus if context does not have focus */ BusInputContext *focused_context = bus_ibus_impl_get_focused_input_context (BUS_DEFAULT_IBUS); if (focused_context == NULL || focused_context->fake == TRUE || context->fake == FALSE) { /* grab focus, if context is a real IC or current focused IC is fake */ bus_input_context_focus_in (context); } } /* If I move the focus from the URL entry box of google-chrome * to the text buffer of gnome-terminal, * focus-in/focus-out of google-chrome is caused after * focus-in of gonme-terminal and gnome-terminal loses the focus. * The following focus events are received in ibusimcontext: * 1) (gnome-terminal:445): IBUS-WARNING **: 15:32:36:717 focus_in * 2) (google-chrome:495): IBUS-WARNING **: 15:32:36:866 focus_out * 3) (google-chrome:495): IBUS-WARNING **: 15:32:36:875 focus_in * 4) (google-chrome:495): IBUS-WARNING **: 15:32:36:890 focus_out * In 2), Just return because focused_context is not google-chrome. * In 3), focused_context is changed from gnome-terminal to google-chrome * In 4), focused_context is changed from google-chrome to faked_context. * * It seems google-chrome has a popup window of the prediction of URL * and async focus-in/focus-out. */ if (context->has_focus && context->engine == NULL && context->fake == FALSE) { BusInputContext *focused_context = bus_ibus_impl_get_focused_input_context (BUS_DEFAULT_IBUS); if (focused_context != NULL && context != focused_context && (context->capabilities & IBUS_CAP_FOCUS) != 0) { context->has_focus = FALSE; bus_input_context_focus_in (context); } } /* ignore key events, if it is a fake input context */ if (context->has_focus && context->engine && context->fake == FALSE) { bus_engine_proxy_process_key_event (context->engine, keyval, keycode, modifiers, (GAsyncReadyCallback) _ic_process_key_event_reply_cb, invocation); } else { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", FALSE)); } } /** * _ic_set_cursor_location: * * Implement the "SetCursorLocation" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_set_cursor_location (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, NULL); g_variant_get (parameters, "(iiii)", &context->x, &context->y, &context->w, &context->h); if (context->has_focus && context->engine) { bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); } if (context->capabilities & IBUS_CAP_FOCUS) { g_signal_emit (context, context_signals[SET_CURSOR_LOCATION], 0, context->x, context->y, context->w, context->h); } } static void _ic_process_hand_writing_event (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { /* do nothing if it is a fake input context */ if (context->has_focus && context->engine && context->fake == FALSE) { bus_engine_proxy_process_hand_writing_event (context->engine, parameters); } g_dbus_method_invocation_return_value (invocation, NULL); } static void _ic_cancel_hand_writing (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { guint n_strokes = 0; g_variant_get (parameters, "(u)", &n_strokes); /* do nothing if it is a fake input context */ if (context->has_focus && context->engine && context->fake == FALSE) { bus_engine_proxy_cancel_hand_writing (context->engine, n_strokes); } g_dbus_method_invocation_return_value (invocation, NULL); } /** * _ic_focus_in: * * Implement the "FocusIn" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_focus_in (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { if (context->capabilities & IBUS_CAP_FOCUS) { bus_input_context_focus_in (context); g_dbus_method_invocation_return_value (invocation, NULL); } else { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "The input context does not support focus."); } } /** * _ic_focus_out: * * Implement the "FocusOut" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_focus_out (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { if (context->capabilities & IBUS_CAP_FOCUS) { bus_input_context_focus_out (context); g_dbus_method_invocation_return_value (invocation, NULL); } else { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "The input context does not support focus."); } } /** * _ic_reset: * * Implement the "Reset" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_reset (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { if (context->engine) { bus_engine_proxy_reset (context->engine); } g_dbus_method_invocation_return_value (invocation, NULL); } /** * _ic_set_capabilities: * * Implement the "SetCapabilities" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_set_capabilities (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { guint caps = 0; g_variant_get (parameters, "(u)", &caps); bus_input_context_set_capabilities (context, caps); g_dbus_method_invocation_return_value (invocation, NULL); } /** * _ic_property_activate: * * Implement the "PropertyActivate" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_property_activate (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { gchar *prop_name = NULL; guint prop_state = 0; g_variant_get (parameters, "(&su)", &prop_name, &prop_state); if (context->engine) { bus_engine_proxy_property_activate (context->engine, prop_name, prop_state); } #ifdef OS_CHROMEOS /* Global engine is always enabled in chromeos, * so pass PropertyActivate signal to the focused context. */ else if (context->fake) { BusInputContext *focused_context = bus_ibus_impl_get_focused_input_context (BUS_DEFAULT_IBUS); if (focused_context && focused_context->engine) bus_engine_proxy_property_activate (focused_context->engine, prop_name, prop_state); } #endif g_dbus_method_invocation_return_value (invocation, NULL); } static void _ic_set_engine_done (BusInputContext *context, GAsyncResult *res, GDBusMethodInvocation *invocation) { gboolean retval = FALSE; GError *error = NULL; retval = bus_input_context_set_engine_by_desc_finish (context, res, &error); if (!retval) { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } else { g_dbus_method_invocation_return_value (invocation, NULL); } } /** * _ic_set_engine: * * Implement the "SetEngine" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_set_engine (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { gchar *engine_name = NULL; g_variant_get (parameters, "(&s)", &engine_name); if (!bus_input_context_has_focus (context)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Context which does not has focus can not change engine to %s.", engine_name); return; } IBusEngineDesc *desc = NULL; g_signal_emit (context, context_signals[REQUEST_ENGINE], 0, engine_name, &desc); if (desc == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Can not find engine %s.", engine_name); return; } bus_input_context_set_engine_by_desc (context, desc, g_gdbus_timeout, NULL, (GAsyncReadyCallback)_ic_set_engine_done, invocation); } /** * _ic_get_engine: * * Implement the "GetEngine" method call of the org.freedesktop.IBus.InputContext interface. */ static void _ic_get_engine (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusEngineDesc *desc = context->engine ? bus_engine_proxy_get_desc (context->engine) : BUS_INPUT_CONTEXT_GET_CLASS (context)->default_engine_desc; g_dbus_method_invocation_return_value (invocation, g_variant_new ("(v)", ibus_serializable_serialize ((IBusSerializable *)desc))); } static void _ic_set_surrounding_text (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { GVariant *variant = NULL; IBusText *text; guint cursor_pos = 0; guint anchor_pos = 0; g_variant_get (parameters, "(vuu)", &variant, &cursor_pos, &anchor_pos); text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); if ((context->capabilities & IBUS_CAP_SURROUNDING_TEXT) && context->has_focus && context->engine) { bus_engine_proxy_set_surrounding_text (context->engine, text, cursor_pos, anchor_pos); } if (g_object_is_floating (text)) g_object_unref (text); g_dbus_method_invocation_return_value (invocation, NULL); } /** * bus_input_context_service_method_call: * * Handle a D-Bus method call whose destination and interface name are both "org.freedesktop.IBus.InputContext" */ static void bus_input_context_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { if (g_strcmp0 (interface_name, IBUS_INTERFACE_INPUT_CONTEXT) != 0) { IBUS_SERVICE_CLASS (bus_input_context_parent_class)->service_method_call ( service, connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } static const struct { const gchar *method_name; void (* method_callback) (BusInputContext *, GVariant *, GDBusMethodInvocation *); } methods [] = { { "ProcessKeyEvent", _ic_process_key_event }, { "SetCursorLocation", _ic_set_cursor_location }, { "ProcessHandWritingEvent", _ic_process_hand_writing_event }, { "CancelHandWriting", _ic_cancel_hand_writing }, { "FocusIn", _ic_focus_in }, { "FocusOut", _ic_focus_out }, { "Reset", _ic_reset }, { "SetCapabilities", _ic_set_capabilities }, { "PropertyActivate", _ic_property_activate }, { "SetEngine", _ic_set_engine }, { "GetEngine", _ic_get_engine }, { "SetSurroundingText", _ic_set_surrounding_text } }; gint i; for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (method_name, methods[i].method_name) == 0) { methods[i].method_callback ((BusInputContext *)service, parameters, invocation); return; } } g_return_if_reached (); } static void _ic_set_content_type (BusInputContext *context, GVariant *value) { guint purpose = 0; guint hints = 0; g_variant_get (value, "(uu)", &purpose, &hints); if (purpose != context->purpose || hints != context->hints) { GError *error; gboolean retval; context->purpose = purpose; context->hints = hints; if (context->has_focus && context->engine) bus_engine_proxy_set_content_type (context->engine, purpose, hints); if (context->has_focus) { g_signal_emit (context, context_signals[SET_CONTENT_TYPE], 0, context->purpose, context->hints); } error = NULL; retval = bus_input_context_property_changed (context, "ContentType", value, &error); if (!retval) { g_warning ("Failed to emit PropertiesChanged signal: %s", error->message); g_error_free (error); } } } static gboolean bus_input_context_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { if (g_strcmp0 (interface_name, IBUS_INTERFACE_INPUT_CONTEXT) != 0) { return IBUS_SERVICE_CLASS (bus_input_context_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } if (g_strcmp0 (property_name, "ContentType") == 0) { BusInputContext *context = (BusInputContext *) service; _ic_set_content_type (context, value); return TRUE; } g_return_val_if_reached (FALSE); } gboolean bus_input_context_has_focus (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); return context->has_focus; } void bus_input_context_focus_in (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->has_focus) return; context->has_focus = TRUE; /* To make sure that we won't use an old value left before we losing focus * last time. */ context->prev_keyval = IBUS_KEY_VoidSymbol; context->prev_modifiers = 0; if (context->engine) { bus_engine_proxy_focus_in (context->engine); bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } if (context->capabilities & IBUS_CAP_FOCUS) { g_signal_emit (context, context_signals[FOCUS_IN], 0); if (context->engine) { /* if necessary, emit glib signals to the context object to update panel status. see the comment for PREEDIT_CONDITION * for details. */ if (context->preedit_visible && !PREEDIT_CONDITION) { g_signal_emit (context, context_signals[UPDATE_PREEDIT_TEXT], 0, context->preedit_text, context->preedit_cursor_pos, context->preedit_visible); } if (context->auxiliary_visible && (context->capabilities & IBUS_CAP_AUXILIARY_TEXT) == 0) { g_signal_emit (context, context_signals[UPDATE_AUXILIARY_TEXT], 0, context->auxiliary_text, context->auxiliary_visible); } if (context->lookup_table_visible && (context->capabilities & IBUS_CAP_LOOKUP_TABLE) == 0) { g_signal_emit (context, context_signals[UPDATE_LOOKUP_TABLE], 0, context->lookup_table, context->lookup_table_visible); } } } } /** * bus_input_context_clear_preedit_text: * * Clear context->preedit_text. If the preedit mode is IBUS_ENGINE_PREEDIT_COMMIT, commit it before clearing. */ static void bus_input_context_clear_preedit_text (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->preedit_visible && context->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { bus_input_context_commit_text (context, context->preedit_text); } /* always clear preedit text */ bus_input_context_update_preedit_text (context, text_empty, 0, FALSE, IBUS_ENGINE_PREEDIT_CLEAR); } void bus_input_context_focus_out (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->has_focus) return; bus_input_context_clear_preedit_text (context); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { bus_engine_proxy_focus_out (context->engine); } context->has_focus = FALSE; if (context->capabilities & IBUS_CAP_FOCUS) { g_signal_emit (context, context_signals[FOCUS_OUT], 0); } } #define DEFINE_FUNC(name) \ void \ bus_input_context_##name (BusInputContext *context) \ { \ g_assert (BUS_IS_INPUT_CONTEXT (context)); \ \ if (context->has_focus && context->engine) { \ bus_engine_proxy_##name (context->engine); \ } \ } DEFINE_FUNC (page_up) DEFINE_FUNC (page_down) DEFINE_FUNC (cursor_up) DEFINE_FUNC (cursor_down) #undef DEFINE_FUNC void bus_input_context_candidate_clicked (BusInputContext *context, guint index, guint button, guint state) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->engine) { bus_engine_proxy_candidate_clicked (context->engine, index, button, state); } } void bus_input_context_property_activate (BusInputContext *context, const gchar *prop_name, gint prop_state) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->engine) { bus_engine_proxy_property_activate (context->engine, prop_name, prop_state); } } static void bus_input_context_commit_text (BusInputContext *context, IBusText *text) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (text == text_empty || text == NULL) return; GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); bus_input_context_emit_signal (context, "CommitText", g_variant_new ("(v)", variant), NULL); } /** * bus_input_context_update_preedit_text: * * Update a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_update_preedit_text (BusInputContext *context, IBusText *text, guint cursor_pos, gboolean visible, guint mode) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->preedit_text) { g_object_unref (context->preedit_text); } context->preedit_text = (IBusText *) g_object_ref_sink (text ? text : text_empty); context->preedit_cursor_pos = cursor_pos; context->preedit_visible = visible; context->preedit_mode = mode; if (PREEDIT_CONDITION) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)context->preedit_text); bus_input_context_emit_signal (context, "UpdatePreeditText", g_variant_new ("(vub)", variant, context->preedit_cursor_pos, context->preedit_visible), NULL); } else { g_signal_emit (context, context_signals[UPDATE_PREEDIT_TEXT], 0, context->preedit_text, context->preedit_cursor_pos, context->preedit_visible); } } /** * bus_input_context_show_preedit_text: * * Show a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_show_preedit_text (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->preedit_visible) { return; } context->preedit_visible = TRUE; if (PREEDIT_CONDITION) { bus_input_context_emit_signal (context, "ShowPreeditText", NULL, NULL); } else { g_signal_emit (context, context_signals[SHOW_PREEDIT_TEXT], 0); } } /** * bus_input_context_hide_preedit_text: * * Hide a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_hide_preedit_text (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->preedit_visible) { return; } context->preedit_visible = FALSE; if (PREEDIT_CONDITION) { bus_input_context_emit_signal (context, "HidePreeditText", NULL, NULL); } else { g_signal_emit (context, context_signals[HIDE_PREEDIT_TEXT], 0); } } /** * bus_input_context_update_auxiliary_text: * * Update an aux text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_update_auxiliary_text (BusInputContext *context, IBusText *text, gboolean visible) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->auxiliary_text) { g_object_unref (context->auxiliary_text); } context->auxiliary_text = (IBusText *) g_object_ref_sink (text ? text : text_empty); context->auxiliary_visible = visible; if (context->capabilities & IBUS_CAP_AUXILIARY_TEXT) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); bus_input_context_emit_signal (context, "UpdateAuxiliaryText", g_variant_new ("(vb)", variant, visible), NULL); } else { g_signal_emit (context, context_signals[UPDATE_AUXILIARY_TEXT], 0, context->auxiliary_text, context->auxiliary_visible); } } /** * bus_input_context_show_auxiliary_text: * * Show an aux text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_show_auxiliary_text (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->auxiliary_visible) { return; } context->auxiliary_visible = TRUE; if ((context->capabilities & IBUS_CAP_AUXILIARY_TEXT) == IBUS_CAP_AUXILIARY_TEXT) { bus_input_context_emit_signal (context, "ShowAuxiliaryText", NULL, NULL); } else { g_signal_emit (context, context_signals[SHOW_AUXILIARY_TEXT], 0); } } /** * bus_input_context_hide_auxiliary_text: * * Hide an aux text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_hide_auxiliary_text (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->auxiliary_visible) { return; } context->auxiliary_visible = FALSE; if ((context->capabilities & IBUS_CAP_AUXILIARY_TEXT) == IBUS_CAP_AUXILIARY_TEXT) { bus_input_context_emit_signal (context, "HideAuxiliaryText", NULL, NULL); } else { g_signal_emit (context, context_signals[HIDE_AUXILIARY_TEXT], 0); } } /** * bus_input_context_update_lookup_table: * * Update contents in the lookup table. * Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_update_lookup_table (BusInputContext *context, IBusLookupTable *table, gboolean visible) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->lookup_table) { g_object_unref (context->lookup_table); } context->lookup_table = (IBusLookupTable *) g_object_ref_sink (table ? table : lookup_table_empty); context->lookup_table_visible = visible; if (context->capabilities & IBUS_CAP_LOOKUP_TABLE) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)table); bus_input_context_emit_signal (context, "UpdateLookupTable", g_variant_new ("(vb)", variant, visible), NULL); } else { g_signal_emit (context, context_signals[UPDATE_LOOKUP_TABLE], 0, context->lookup_table, context->lookup_table_visible); } } /** * bus_input_context_show_lookup_table: * * Show the lookup table. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_show_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->lookup_table_visible) { return; } context->lookup_table_visible = TRUE; if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "ShowLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[SHOW_LOOKUP_TABLE], 0); } } /** * bus_input_context_hide_lookup_table: * * Hide the lookup table. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_hide_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->lookup_table_visible) { return; } context->lookup_table_visible = FALSE; if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "HideLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[HIDE_LOOKUP_TABLE], 0); } } /** * bus_input_context_page_up_lookup_table: * * Change cursor position. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_page_up_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!ibus_lookup_table_page_up (context->lookup_table)) { return; } if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "PageUpLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[PAGE_UP_LOOKUP_TABLE], 0); } } /** * bus_input_context_page_down_lookup_table: * * Change cursor position. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_page_down_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!ibus_lookup_table_page_down (context->lookup_table)) { return; } if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "PageDownLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[PAGE_DOWN_LOOKUP_TABLE], 0); } } /** * bus_input_context_cursor_up_lookup_table: * * Change cursor position. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_cursor_up_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!ibus_lookup_table_cursor_up (context->lookup_table)) { return; } if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "CursorUpLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[CURSOR_UP_LOOKUP_TABLE], 0); } } /** * bus_input_context_cursor_down_lookup_table: * * Change cursor position. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_cursor_down_lookup_table (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!ibus_lookup_table_cursor_down (context->lookup_table)) { return; } if ((context->capabilities & IBUS_CAP_LOOKUP_TABLE) == IBUS_CAP_LOOKUP_TABLE) { bus_input_context_emit_signal (context, "CursorDownLookupTable", NULL, NULL); } else { g_signal_emit (context, context_signals[CURSOR_DOWN_LOOKUP_TABLE], 0); } } /** * bus_input_context_register_properties: * * Register properties. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_register_properties (BusInputContext *context, IBusPropList *props) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_PROP_LIST (props)); if (context->capabilities & IBUS_CAP_PROPERTY) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)props); bus_input_context_emit_signal (context, "RegisterProperties", g_variant_new ("(v)", variant), NULL); } else { g_signal_emit (context, context_signals[REGISTER_PROPERTIES], 0, props); } } /** * bus_input_context_update_property: * * Update property. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void bus_input_context_update_property (BusInputContext *context, IBusProperty *prop) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_PROPERTY (prop)); if (context->capabilities & IBUS_CAP_PROPERTY) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)prop); bus_input_context_emit_signal (context, "UpdateProperty", g_variant_new ("(v)", variant), NULL); } else { g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); } } /** * _engine_destroy_cb: * * A function to be called when "destroy" glib signal is sent to the engine object. * Remove the engine from the context. */ static void _engine_destroy_cb (BusEngineProxy *engine, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_set_engine (context, NULL); } /** * _engine_commit_text_cb: * * A function to be called when "commit-text" glib signal is sent to the engine object. */ static void _engine_commit_text_cb (BusEngineProxy *engine, IBusText *text, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (text != NULL); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_commit_text (context, text); } /** * _engine_forward_key_event_cb: * * A function to be called when "forward-key-event" glib signal is sent to the engine object. */ static void _engine_forward_key_event_cb (BusEngineProxy *engine, guint keyval, guint keycode, guint state, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_emit_signal (context, "ForwardKeyEvent", g_variant_new ("(uuu)", keyval, keycode, state), NULL); } /** * _engine_delete_surrounding_text_cb: * * A function to be called when "delete-surrounding-text" glib signal is sent to the engine object. */ static void _engine_delete_surrounding_text_cb (BusEngineProxy *engine, gint offset_from_cursor, guint nchars, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_emit_signal (context, "DeleteSurroundingText", g_variant_new ("(iu)", offset_from_cursor, nchars), NULL); } /** * _engine_require_surrounding_text_cb: * * A function to be called when "require-surrounding-text" glib signal is sent to the engine object. */ static void _engine_require_surrounding_text_cb (BusEngineProxy *engine, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_emit_signal (context, "RequireSurroundingText", NULL, NULL); } /** * _engine_update_preedit_text_cb: * * A function to be called when "update-preedit-text" glib signal is sent to the engine object. */ static void _engine_update_preedit_text_cb (BusEngineProxy *engine, IBusText *text, guint cursor_pos, gboolean visible, guint mode, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_TEXT (text)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_update_preedit_text (context, text, cursor_pos, visible, mode); } /** * _engine_update_auxiliary_text_cb: * * A function to be called when "update-auxiliary-text" glib signal is sent to the engine object. */ static void _engine_update_auxiliary_text_cb (BusEngineProxy *engine, IBusText *text, gboolean visible, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_TEXT (text)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_update_auxiliary_text (context, text, visible); } /** * _engine_update_lookup_table_cb: * * A function to be called when "update-lookup-table" glib signal is sent to the engine object. */ static void _engine_update_lookup_table_cb (BusEngineProxy *engine, IBusLookupTable *table, gboolean visible, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_update_lookup_table (context, table, visible); } /** * _engine_register_properties_cb: * * A function to be called when "register-properties" glib signal is sent to the engine object. */ static void _engine_register_properties_cb (BusEngineProxy *engine, IBusPropList *props, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_PROP_LIST (props)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_register_properties (context, props); } /** * _engine_update_property_cb: * * A function to be called when "update-property" glib signal is sent to the engine object. */ static void _engine_update_property_cb (BusEngineProxy *engine, IBusProperty *prop, BusInputContext *context) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_PROPERTY (prop)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (context->engine == engine); bus_input_context_update_property (context, prop); } #define DEFINE_FUNCTION(name) \ static void \ _engine_##name##_cb (BusEngineProxy *engine, \ BusInputContext *context) \ { \ g_assert (BUS_IS_ENGINE_PROXY (engine)); \ g_assert (BUS_IS_INPUT_CONTEXT (context)); \ \ g_assert (context->engine == engine); \ \ bus_input_context_##name (context); \ } DEFINE_FUNCTION (show_preedit_text) DEFINE_FUNCTION (hide_preedit_text) DEFINE_FUNCTION (show_auxiliary_text) DEFINE_FUNCTION (hide_auxiliary_text) DEFINE_FUNCTION (show_lookup_table) DEFINE_FUNCTION (hide_lookup_table) DEFINE_FUNCTION (page_up_lookup_table) DEFINE_FUNCTION (page_down_lookup_table) DEFINE_FUNCTION (cursor_up_lookup_table) DEFINE_FUNCTION (cursor_down_lookup_table) #undef DEFINE_FUNCTION BusInputContext * bus_input_context_new (BusConnection *connection, const gchar *client) { static guint id = 0; g_assert (connection == NULL || BUS_IS_CONNECTION (connection)); g_assert (client != NULL); gchar *path = g_strdup_printf (IBUS_PATH_INPUT_CONTEXT, ++id); BusInputContext *context = NULL; if (connection) { context = (BusInputContext *) g_object_new (BUS_TYPE_INPUT_CONTEXT, "object-path", path, "connection", bus_connection_get_dbus_connection (connection), NULL); } else { context = (BusInputContext *) g_object_new (BUS_TYPE_INPUT_CONTEXT, "object-path", path, NULL); } g_free (path); context->client = g_strdup (client); /* it is a fake input context, just need process hotkey */ context->fake = (strncmp (client, "fake", 4) == 0); if (connection) { g_object_ref_sink (connection); context->connection = connection; g_signal_connect (context->connection, "destroy", (GCallback) _connection_destroy_cb, context); } return context; } void bus_input_context_enable (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->has_focus) { return; } if (context->engine == NULL) { IBusEngineDesc *desc = NULL; g_signal_emit (context, context_signals[REQUEST_ENGINE], 0, NULL, &desc); if (desc != NULL) { bus_input_context_set_engine_by_desc (context, desc, g_gdbus_timeout, /* timeout in msec. */ NULL, /* we do not cancel the call. */ NULL, /* use the default callback function. */ NULL); } } if (context->engine == NULL) return; bus_engine_proxy_focus_in (context->engine); bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } void bus_input_context_disable (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); bus_input_context_clear_preedit_text (context); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { bus_engine_proxy_focus_out (context->engine); bus_engine_proxy_disable (context->engine); } } /* A list of signals (and their handler functions) that could be emit by the engine proxy object. */ const static struct { const gchar *name; GCallback callback; } engine_signals [] = { { "commit-text", G_CALLBACK (_engine_commit_text_cb) }, { "forward-key-event", G_CALLBACK (_engine_forward_key_event_cb) }, { "delete-surrounding-text", G_CALLBACK (_engine_delete_surrounding_text_cb) }, { "require-surrounding-text", G_CALLBACK (_engine_require_surrounding_text_cb) }, { "update-preedit-text", G_CALLBACK (_engine_update_preedit_text_cb) }, { "show-preedit-text", G_CALLBACK (_engine_show_preedit_text_cb) }, { "hide-preedit-text", G_CALLBACK (_engine_hide_preedit_text_cb) }, { "update-auxiliary-text", G_CALLBACK (_engine_update_auxiliary_text_cb) }, { "show-auxiliary-text", G_CALLBACK (_engine_show_auxiliary_text_cb) }, { "hide-auxiliary-text", G_CALLBACK (_engine_hide_auxiliary_text_cb) }, { "update-lookup-table", G_CALLBACK (_engine_update_lookup_table_cb) }, { "show-lookup-table", G_CALLBACK (_engine_show_lookup_table_cb) }, { "hide-lookup-table", G_CALLBACK (_engine_hide_lookup_table_cb) }, { "page-up-lookup-table", G_CALLBACK (_engine_page_up_lookup_table_cb) }, { "page-down-lookup-table", G_CALLBACK (_engine_page_down_lookup_table_cb) }, { "cursor-up-lookup-table", G_CALLBACK (_engine_cursor_up_lookup_table_cb) }, { "cursor-down-lookup-table", G_CALLBACK (_engine_cursor_down_lookup_table_cb) }, { "register-properties", G_CALLBACK (_engine_register_properties_cb) }, { "update-property", G_CALLBACK (_engine_update_property_cb) }, { "destroy", G_CALLBACK (_engine_destroy_cb) }, }; static void bus_input_context_unset_engine (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); bus_input_context_clear_preedit_text (context); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { gint i; /* uninstall signal handlers for the engine. */ for (i = 0; i < G_N_ELEMENTS(engine_signals); i++) { g_signal_handlers_disconnect_by_func (context->engine, engine_signals[i].callback, context); } /* focus out engine so that the next call of bus_engine_proxy_focus_in() will take effect and trigger RegisterProperties. */ bus_engine_proxy_focus_out (context->engine); g_object_unref (context->engine); context->engine = NULL; } } void bus_input_context_set_engine (BusInputContext *context, BusEngineProxy *engine) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->engine == engine) return; if (context->engine != NULL) { bus_input_context_unset_engine (context); } if (engine == NULL) { bus_input_context_disable (context); } else { gint i; context->engine = engine; g_object_ref (context->engine); /* handle signals from the engine. */ for (i = 0; i < G_N_ELEMENTS(engine_signals); i++) { g_signal_connect (context->engine, engine_signals[i].name, engine_signals[i].callback, context); } if (context->has_focus) { bus_engine_proxy_focus_in (context->engine); bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } } g_signal_emit (context, context_signals[ENGINE_CHANGED], 0); } static void set_engine_by_desc_data_free (SetEngineByDescData *data) { if (data->context != NULL) { if (data->context->data == data) data->context->data = NULL; g_object_unref (data->context); } if (data->simple != NULL) { g_object_unref (data->simple); } if (data->cancellable != NULL) g_object_unref (data->cancellable); if (data->origin_cancellable != NULL) { if (data->cancelled_handler_id != 0) g_cancellable_disconnect (data->origin_cancellable, data->cancelled_handler_id); g_object_unref (data->origin_cancellable); } g_slice_free (SetEngineByDescData, data); } /** * new_engine_cb: * * A callback function to be called when bus_engine_proxy_new() is finished. */ static void new_engine_cb (GObject *obj, GAsyncResult *res, SetEngineByDescData *data) { GError *error = NULL; BusEngineProxy *engine = bus_engine_proxy_new_finish (res, &error); if (engine == NULL) { g_simple_async_result_set_from_error (data->simple, error); g_error_free (error); } else { if (data->context->data != data) { /* Request has been overriden or cancelled */ g_object_unref (engine); g_simple_async_result_set_error (data->simple, G_IO_ERROR, G_IO_ERROR_CANCELLED, "Opertation was cancelled"); } else { /* Let BusEngineProxy call a Disable signal. */ bus_input_context_disable (data->context); bus_input_context_set_engine (data->context, engine); g_object_unref (engine); bus_input_context_enable (data->context); g_simple_async_result_set_op_res_gboolean (data->simple, TRUE); } } /* Call the callback function for bus_input_context_set_engine_by_desc(). */ g_simple_async_result_complete_in_idle (data->simple); set_engine_by_desc_data_free (data); } static void cancel_set_engine_by_desc (SetEngineByDescData *data) { if (data->context->data == data) data->context->data = NULL; if (data->origin_cancellable != NULL) { if (data->cancelled_handler_id != 0) { g_cancellable_disconnect (data->origin_cancellable, data->cancelled_handler_id); data->cancelled_handler_id = 0; } g_object_unref (data->origin_cancellable); data->origin_cancellable = NULL; } if (data->cancellable != NULL) { g_cancellable_cancel (data->cancellable); g_object_unref (data->cancellable); data->cancellable = NULL; } } static gboolean set_engine_by_desc_cancelled_idle_cb (SetEngineByDescData *data) { cancel_set_engine_by_desc (data); return FALSE; } static void set_engine_by_desc_cancelled_cb (GCancellable *cancellable, SetEngineByDescData *data) { /* Cancel in idle to avoid deadlock */ g_idle_add ((GSourceFunc) set_engine_by_desc_cancelled_idle_cb, data); } /** * set_engine_by_desc_ready_cb: * * A default callback function for bus_input_context_set_engine_by_desc(). */ static void set_engine_by_desc_ready_cb (BusInputContext *context, GAsyncResult *res, gpointer user_data) { GError *error = NULL; if (!bus_input_context_set_engine_by_desc_finish (context, res, &error)) { g_warning ("Set context engine failed: %s", error->message); g_error_free (error); } } void bus_input_context_set_engine_by_desc (BusInputContext *context, IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); if (context->data != NULL) { /* Cancel previous set_engine_by_desc() request */ cancel_set_engine_by_desc (context->data); } /* Previous request must be completed or cancelled */ g_assert (context->data == NULL); if (callback == NULL) callback = (GAsyncReadyCallback) set_engine_by_desc_ready_cb; GSimpleAsyncResult *simple = g_simple_async_result_new ((GObject *) context, callback, user_data, bus_input_context_set_engine_by_desc); if (g_cancellable_is_cancelled (cancellable)) { g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_CANCELLED, "Operation was cancelled"); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); return; } SetEngineByDescData *data = g_slice_new0 (SetEngineByDescData); context->data = data; data->context = context; g_object_ref (context); data->simple = simple; if (cancellable != NULL) { data->origin_cancellable = cancellable; g_object_ref (cancellable); data->cancelled_handler_id = g_cancellable_connect (data->origin_cancellable, (GCallback) set_engine_by_desc_cancelled_cb, data, NULL); } data->cancellable = g_cancellable_new (); /* We can cancel the bus_engine_proxy_new() call by data->cancellable; * See cancel_set_engine_by_desc() and set_engine_by_desc_cancelled_cb(). */ bus_engine_proxy_new (desc, timeout, data->cancellable, (GAsyncReadyCallback) new_engine_cb, data); } gboolean bus_input_context_set_engine_by_desc_finish (BusInputContext *context, GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (g_simple_async_result_get_source_tag (simple) == bus_input_context_set_engine_by_desc); if (g_simple_async_result_propagate_error (simple, error)) return FALSE; return TRUE; } BusEngineProxy * bus_input_context_get_engine (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); return context->engine; } IBusEngineDesc * bus_input_context_get_engine_desc (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->engine) return bus_engine_proxy_get_desc (context->engine); return NULL; } guint bus_input_context_get_capabilities (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); return context->capabilities; } void bus_input_context_set_capabilities (BusInputContext *context, guint capabilities) { g_assert (BUS_IS_INPUT_CONTEXT (context)); /* If the context does not support IBUS_CAP_FOCUS, then the client application have to handle all information such as * preedit and auxiliary text. */ if ((capabilities & IBUS_CAP_FOCUS) == 0) { capabilities |= (IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_AUXILIARY_TEXT | IBUS_CAP_LOOKUP_TABLE | IBUS_CAP_PROPERTY); } if (context->capabilities != capabilities) { context->capabilities = capabilities; /* If the context does not support IBUS_CAP_FOCUS, then we always assume * it has focus. */ if ((capabilities & IBUS_CAP_FOCUS) == 0) { bus_input_context_focus_in (context); } if (context->engine) { bus_engine_proxy_set_capabilities (context->engine, capabilities); } } context->capabilities = capabilities; } const gchar * bus_input_context_get_client (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); return context->client; } void bus_input_context_get_content_type (BusInputContext *context, guint *purpose, guint *hints) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_return_if_fail (purpose != NULL && hints != NULL); *purpose = context->purpose; *hints = context->hints; } void bus_input_context_set_content_type (BusInputContext *context, guint purpose, guint hints) { GVariant *value; g_assert (BUS_IS_INPUT_CONTEXT (context)); value = g_variant_ref_sink (g_variant_new ("(uu)", purpose, hints)); _ic_set_content_type (context, value); g_variant_unref (value); } ibus-1.5.11/bus/ibusimpl.h0000644000000000000000000000626712551654123012235 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_IBUS_IMPL_H_ #define __BUS_IBUS_IMPL_H_ #include #include "connection.h" #include "component.h" #include "inputcontext.h" #include "factoryproxy.h" #include "panelproxy.h" #include "engineproxy.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_IBUS_IMPL \ (bus_ibus_impl_get_type ()) #define BUS_IBUS_IMPL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_IBUS_IMPL, BusIBusImpl)) #define BUS_IBUS_IMPL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_IBUS_IMPL, BusIBusImplClass)) #define BUS_IS_IBUS_IMPL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_IBUS_IMPL)) #define BUS_IS_IBUS_IMPL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_IBUS_IMPL)) #define BUS_IBUS_IMPL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_IBUS_IMPL, BusIBusImplClass)) #define BUS_DEFAULT_IBUS \ (bus_ibus_impl_get_default ()) #define BUS_DEFAULT_KEYMAP \ (bus_ibus_impl_get_keymap (BUS_DEFAULT_IBUS)) G_BEGIN_DECLS typedef struct _BusIBusImpl BusIBusImpl; typedef struct _BusIBusImplClass BusIBusImplClass; GType bus_ibus_impl_get_type (void); /** * bus_ibus_impl_get_default: * @returns: a BusIBusImpl object which is a singleton. * * Instantiate a BusIBusImpl object (if necessary) and return the object. */ BusIBusImpl *bus_ibus_impl_get_default (void); /* accessors */ BusFactoryProxy *bus_ibus_impl_lookup_factory (BusIBusImpl *ibus, const gchar *path); IBusKeymap *bus_ibus_impl_get_keymap (BusIBusImpl *ibus); BusComponent *bus_ibus_impl_lookup_component_by_name (BusIBusImpl *ibus, const gchar *name); gboolean bus_ibus_impl_is_use_sys_layout (BusIBusImpl *ibus); gboolean bus_ibus_impl_is_embed_preedit_text (BusIBusImpl *ibus); BusInputContext *bus_ibus_impl_get_focused_input_context (BusIBusImpl *ibus); G_END_DECLS #endif ibus-1.5.11/bus/main.c0000644000000000000000000002207012551654123011316 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include "global.h" #include "ibusimpl.h" #include "server.h" static gboolean daemonize = FALSE; static gboolean single = FALSE; static gboolean xim = FALSE; static gboolean replace = FALSE; static gboolean restart = FALSE; static gchar *panel = "default"; static gchar *config = "default"; static gchar *desktop = "gnome"; static void show_version_and_quit (void) { g_print ("%s - Version %s\n", g_get_application_name (), VERSION); exit (EXIT_SUCCESS); } static const GOptionEntry entries[] = { { "version", 'V', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, show_version_and_quit, "Show the application's version.", NULL }, { "daemonize", 'd', 0, G_OPTION_ARG_NONE, &daemonize, "run ibus as background process.", NULL }, { "single", 's', 0, G_OPTION_ARG_NONE, &single, "do not execute panel and config module.", NULL }, { "xim", 'x', 0, G_OPTION_ARG_NONE, &xim, "execute ibus XIM server.", NULL }, { "desktop", 'n', 0, G_OPTION_ARG_STRING, &desktop, "specify the name of desktop session. [default=gnome]", "name" }, { "panel", 'p', 0, G_OPTION_ARG_STRING, &panel, "specify the cmdline of panel program. pass 'disable' not to start a panel program.", "cmdline" }, { "config", 'c', 0, G_OPTION_ARG_STRING, &config, "specify the cmdline of config program. pass 'disable' not to start a config program.", "cmdline" }, { "address", 'a', 0, G_OPTION_ARG_STRING, &g_address, "specify the address of ibus daemon.", "address" }, { "replace", 'r', 0, G_OPTION_ARG_NONE, &replace, "if there is an old ibus-daemon is running, it will be replaced.", NULL }, { "cache", 't', 0, G_OPTION_ARG_STRING, &g_cache, "specify the cache mode. [auto/refresh/none]", NULL }, { "timeout", 'o', 0, G_OPTION_ARG_INT, &g_gdbus_timeout, "gdbus reply timeout in milliseconds. pass -1 to use the default timeout of gdbus.", "timeout [default is 15000]" }, { "mem-profile", 'm', 0, G_OPTION_ARG_NONE, &g_mempro, "enable memory profile, send SIGUSR2 to print out the memory profile.", NULL }, { "restart", 'R', 0, G_OPTION_ARG_NONE, &restart, "restart panel and config processes when they die.", NULL }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &g_verbose, "verbose.", NULL }, { NULL }, }; /** * execute_cmdline: * @cmdline: An absolute path of the executable and its parameters, e.g. "/usr/lib/ibus/ibus-x11 --kill-daemon". * @returns: TRUE if both parsing cmdline and executing the command succeed. * * Execute cmdline. Child process's stdin, stdout, and stderr are attached to /dev/null. * You don't have to handle SIGCHLD from the child process since glib will do. */ static gboolean execute_cmdline (const gchar *cmdline) { g_assert (cmdline); gint argc = 0; gchar **argv = NULL; GError *error = NULL; if (!g_shell_parse_argv (cmdline, &argc, &argv, &error)) { g_warning ("Can not parse cmdline `%s` exec: %s", cmdline, error->message); g_error_free (error); return FALSE; } error = NULL; gboolean retval = g_spawn_async (NULL, argv, NULL, G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, NULL, NULL, NULL, &error); g_strfreev (argv); if (!retval) { g_warning ("Can not execute cmdline `%s`: %s", cmdline, error->message); g_error_free (error); return FALSE; } return TRUE; } #ifndef HAVE_DAEMON static void closeall (gint fd) { gint fdlimit = sysconf(_SC_OPEN_MAX); while (fd < fdlimit) { close(fd++); } } static gint daemon (gint nochdir, gint noclose) { switch (fork()) { case 0: break; case -1: return -1; default: _exit(0); } if (setsid() < 0) { return -1; } switch (fork()) { case 0: break; case -1: return -1; default: _exit(0); } if (!nochdir) { chdir("/"); } if (!noclose) { closeall(0); open("/dev/null",O_RDWR); dup(0); dup(0); } return 0; } #endif /* * _sig_usr2_handler: * @sig: the signal number, which is usually SIGUSR2. * * A signal handler for SIGUSR2 signal. Dump a summary of memory usage to stderr. */ static void _sig_usr2_handler (int sig) { g_mem_profile (); } gint main (gint argc, gchar **argv) { setlocale (LC_ALL, ""); GOptionContext *context = g_option_context_new ("- ibus daemon"); g_option_context_add_main_entries (context, entries, "ibus-daemon"); g_argv = g_strdupv (argv); GError *error = NULL; if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("Option parsing failed: %s\n", error->message); g_error_free (error); exit (-1); } if (g_gdbus_timeout < -1) { g_printerr ("Bad timeout (must be >= -1): %d\n", g_gdbus_timeout); exit (-1); } if (g_mempro) { g_mem_set_vtable (glib_mem_profiler_table); signal (SIGUSR2, _sig_usr2_handler); } /* check uid */ { const gchar *username = ibus_get_user_name (); uid_t uid = getuid (); struct passwd *pwd = getpwuid (uid); if (pwd == NULL || g_strcmp0 (pwd->pw_name, username) != 0) { g_printerr ("Please run ibus-daemon with login user! Do not run ibus-daemon with sudo or su.\n"); exit (-1); } } /* daemonize process */ if (daemonize) { if (daemon (1, 0) != 0) { g_printerr ("Can not daemonize ibus.\n"); exit (-1); } } /* create a new process group. this is important to kill all of its children by SIGTERM at a time in bus_ibus_impl_destroy. */ setpgid (0, 0); ibus_init (); ibus_set_log_handler (g_verbose); /* check if ibus-daemon is running in this session */ if (ibus_get_address () != NULL) { IBusBus *bus = ibus_bus_new (); if (ibus_bus_is_connected (bus)) { if (!replace) { g_printerr ("current session already has an ibus-daemon.\n"); exit (-1); } ibus_bus_exit (bus, FALSE); while (ibus_bus_is_connected (bus)) { g_main_context_iteration (NULL, TRUE); } } g_object_unref (bus); } bus_server_init (); if (!single) { /* execute config component */ if (g_strcmp0 (config, "default") == 0) { BusComponent *component; component = bus_ibus_impl_lookup_component_by_name ( BUS_DEFAULT_IBUS, IBUS_SERVICE_CONFIG); if (component) { bus_component_set_restart (component, restart); } if (component == NULL || !bus_component_start (component, g_verbose)) { g_printerr ("Can not execute default config program\n"); exit (-1); } } else if (g_strcmp0 (config, "disable") != 0 && g_strcmp0 (config, "") != 0) { if (!execute_cmdline (config)) exit (-1); } /* execute panel component */ if (g_strcmp0 (panel, "default") == 0) { BusComponent *component; component = bus_ibus_impl_lookup_component_by_name ( BUS_DEFAULT_IBUS, IBUS_SERVICE_PANEL); if (component) { bus_component_set_restart (component, restart); } if (component == NULL || !bus_component_start (component, g_verbose)) { g_printerr ("Can not execute default panel program\n"); exit (-1); } } else if (g_strcmp0 (panel, "disable") != 0 && g_strcmp0 (panel, "") != 0) { if (!execute_cmdline (panel)) exit (-1); } } /* execute ibus xim server */ if (xim) { if (!execute_cmdline (LIBEXECDIR "/ibus-x11 --kill-daemon")) exit (-1); } bus_server_run (); return 0; } ibus-1.5.11/bus/test-client.h0000644000000000000000000000546612551654123012644 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2010 Google Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_TEST_CLIENT_H_ #define __BUS_TEST_CLIENT_H_ #include /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_TEST_CLIENT \ (bus_test_client_get_type ()) #define BUS_TEST_CLIENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_TEST_CLIENT, BusTestClient)) #define BUS_TEST_CLIENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_TEST_CLIENT, BusTestClientClass)) #define BUS_IS_TEST_CLIENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_TEST_CLIENT)) #define BUS_IS_TEST_CLIENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_TEST_CLIENT)) #define BUS_TEST_CLIENT_GET_CLASS(obj) \ (G_TYPE_CHECK_GET_CLASS ((obj), BUS_TYPE_TEST_CLIENT, BusTestClientClass)) #define MODIFIER_KEY_NUM 7 G_BEGIN_DECLS typedef struct _BusTestClient BusTestClient; typedef struct _BusTestClientClass BusTestClientClass; struct _BusTestClient { IBusObject parent; /* instance members */ IBusInputContext *ibuscontext; /* modifier key state */ gboolean modifier[MODIFIER_KEY_NUM]; gint caps; /* engine is enabled */ gboolean enabled; /* ibus-daemon is enabled */ gboolean connected; /* private member */ }; struct _BusTestClientClass { IBusObjectClass parent; /* class members */ }; GType bus_test_client_get_type (void); BusTestClient *bus_test_client_new (void); gboolean bus_test_client_is_enabled (BusTestClient *client); gboolean bus_test_client_is_connected (BusTestClient *client); gboolean bus_test_client_send_key (BusTestClient *client, guint keysym); void bus_test_client_clear_modifier (BusTestClient *client); G_END_DECLS #endif ibus-1.5.11/bus/engineproxy.h0000644000000000000000000002760012551654123012752 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_ENGINE_PROXY_H_ #define __BUS_ENGINE_PROXY_H_ #include #include #include "connection.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_ENGINE_PROXY \ (bus_engine_proxy_get_type ()) #define BUS_ENGINE_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_ENGINE_PROXY, BusEngineProxy)) #define BUS_ENGINE_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_ENGINE_PROXY, BusEngineProxyClass)) #define BUS_IS_ENGINE_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_ENGINE_PROXY)) #define BUS_IS_ENGINE_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_ENGINE_PROXY)) #define BUS_ENGINE_PROXY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_ENGINE_PROXY, BusEngineProxyClass)) G_BEGIN_DECLS typedef struct _BusEngineProxy BusEngineProxy; typedef struct _BusEngineProxyClass BusEngineProxyClass; GType bus_engine_proxy_get_type (void); /** * bus_engine_proxy_new: * @desc: the engine to create. * @timeout: timeout in msec, or -1 to use the default timeout value. * @cancellable: a object that could be used to cancel the operation. * @callback: a function to be called when the method invocation is done. * @user_data: a pointer that will be passed to the callback. */ void bus_engine_proxy_new (IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * bus_engine_proxy_new_finish: * @res: A #GAsyncResult. * @error: Return location for error or %NULL. * @returns: On success, return an engine object. On error, return %NULL. * * Get the result of bus_engine_proxy_new() call. You have to call this * function in the #GAsyncReadyCallback function. */ BusEngineProxy *bus_engine_proxy_new_finish (GAsyncResult *res, GError **error); /** * bus_engine_proxy_get_desc: * @engine: A #BusEngineProxy. * * Get an #IBusEngineDesc object associated with the engine. */ IBusEngineDesc *bus_engine_proxy_get_desc (BusEngineProxy *engine); /** * bus_engine_proxy_process_key_event: * @engine: A #BusEngineProxy. * @keyval: Key symbol of the key press. * @keycode: KeyCode of the key press. * @state: Key modifier flags. * @callback: A function to be called when the method invocation is done. * @user_data: Data supplied to @callback. * * Call "ProcessKeyEvent" method of an engine asynchronously. */ void bus_engine_proxy_process_key_event (BusEngineProxy *engine, guint keyval, guint keycode, guint state, GAsyncReadyCallback callback, gpointer user_data); /** * bus_engine_proxy_set_cursor_location: * @engine: A #BusEngineProxy. * @x: X coordinate of the cursor. * @y: Y coordinate of the cursor. * @w: Width of the cursor. * @h: Height of the cursor. * * Call "SetCursorLocation" method of an engine asynchronously. Unlike * bus_engine_proxy_process_key_event(), there's no way to know the * result of the method invocation. If the same coordinate is given * twice or more, the function does nothing from the second time. */ void bus_engine_proxy_set_cursor_location (BusEngineProxy *engine, gint x, gint y, gint w, gint h); /** * bus_engine_proxy_focus_in: * @engine: A #BusEngineProxy. * * Call "FocusIn" method of an engine asynchronously. Do nothing if * the engine already has a focus. */ void bus_engine_proxy_focus_in (BusEngineProxy *engine); /** * bus_engine_proxy_focus_out: * @engine: A #BusEngineProxy. * * Call "FocusOut" method of an engine asynchronously. Do nothing if * the engine does not have a focus. */ void bus_engine_proxy_focus_out (BusEngineProxy *engine); /** * bus_engine_proxy_reset: * @engine: A #BusEngineProxy. * * Call "Reset" method of an engine asynchronously. */ void bus_engine_proxy_reset (BusEngineProxy *engine); /** * bus_engine_proxy_set_capabilities: * @engine: A #BusEngineProxy. * @caps: Capabilities flags of IBusEngine, see #IBusCapabilite. * * Call "SetCapabilities" method of an engine asynchronously. */ void bus_engine_proxy_set_capabilities (BusEngineProxy *engine, guint caps); /** * bus_engine_proxy_page_up: * @engine: A #BusEngineProxy. * * Call "PageUp" method of an engine asynchronously. */ void bus_engine_proxy_page_up (BusEngineProxy *engine); /** * bus_engine_proxy_page_down: * @engine: A #BusEngineProxy. * * Call "PageDown" method of an engine asynchronously. */ void bus_engine_proxy_page_down (BusEngineProxy *engine); /** * bus_engine_proxy_cursor_up: * @engine: A #BusEngineProxy. * * Call "CursorUp" method of an engine asynchronously. */ void bus_engine_proxy_cursor_up (BusEngineProxy *engine); /** * bus_engine_proxy_cursor_down: * @engine: A #BusEngineProxy. * * Call "CursorDown" method of an engine asynchronously. */ void bus_engine_proxy_cursor_down (BusEngineProxy *engine); /** * bus_engine_proxy_candidate_clicked: * @engine: A #BusEngineProxy. * @index: Index of candidate be clicked. * @button: Mouse button. * @state: Keyboard state. * * Call "CandidateClicked" method of an engine asynchronously. */ void bus_engine_proxy_candidate_clicked (BusEngineProxy *engine, guint index, guint button, guint state); /** * bus_engine_proxy_enable: * @engine: A #BusEngineProxy. * * Call "Enable" method of an engine asynchronously. Do nothing if the * engine is already enabled. */ void bus_engine_proxy_enable (BusEngineProxy *engine); /** * bus_engine_proxy_disable: * @engine: A #BusEngineProxy. * * Call "Disable" method of an engine asynchronously. Do nothing if * the engine is already disabled. */ void bus_engine_proxy_disable (BusEngineProxy *engine); /** * bus_engine_proxy_property_activate: * @engine: A #BusEngineProxy. * @name: Property name. * @state: Property state. * * Call "PropertyActivate" method of an engine asynchronously. */ void bus_engine_proxy_property_activate (BusEngineProxy *engine, const gchar *prop_name, guint state); /** * bus_engine_proxy_property_show: * @engine: A #BusEngineProxy. * @prop_name: Property name. * * Call "PropertyShow" method of an engine asynchronously. */ void bus_engine_proxy_property_show (BusEngineProxy *engine, const gchar *prop_name); /** * bus_engine_proxy_property_hide: * @engine: A #BusEngineProxy. * @prop_name: Property name. * * Call "PropertyHide" method of an engine asynchronously. */ void bus_engine_proxy_property_hide (BusEngineProxy *engine, const gchar *prop_name); /** * bus_engine_proxy_is_enabled: * @engine: A #BusEngineProxy. * @returns: %TRUE if the engine is enabled. */ gboolean bus_engine_proxy_is_enabled (BusEngineProxy *engine); /** * bus_engine_proxy_set_surrounding_text: * @engine: A #BusEngineProxy. * @text: The surrounding text. * @cursor_pos: The cursor position on surrounding text. * @anchor_pos: The anchor position on selection area. * * Call "SetSurroundingText" method of an engine asynchronously. */ void bus_engine_proxy_set_surrounding_text (BusEngineProxy *engine, IBusText *text, guint cursor_pos, guint anchor_pos); /** * bus_engine_proxy_process_hand_writing_event: * @engine: A #BusEngineProxy. * @coordinates: A #GVariant containing an array of coordinates. * * Call "ProcessHandWritingEvent" method of an engine * asynchronously. The type of the GVariant should be "(ad)". See * ibus_input_context_process_hand_writing_event() for details. */ void bus_engine_proxy_process_hand_writing_event (BusEngineProxy *engine, GVariant *coordinates); /** * bus_engine_proxy_cancel_hand_writing: * @engine: A #BusEngineProxy. * @n_strokes: The number of strokes to be removed. 0 means "remove all". * * Call "CancelHandWriting" method of an engine asynchronously. * See ibus_input_context_cancel_hand_writing() for details. */ void bus_engine_proxy_cancel_hand_writing (BusEngineProxy *engine, guint n_strokes); /** * bus_engine_proxy_set_content_type: * @engine: A #BusEngineProxy. * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. * @hints: Hints that augment @purpose, as an #IBusInputHints. * * Call "SetContentType" method of an engine asynchronously. * See ibus_input_context_set_content_type() for details. */ void bus_engine_proxy_set_content_type (BusEngineProxy *engine, guint purpose, guint hints); /** * bus_engine_proxy_get_properties: * @engine: A #BusEngineProxy. * @returns: An #IBusPropList. * * Get an #IBusPropList object associated with the engine. */ IBusPropList *bus_engine_proxy_get_properties (BusEngineProxy *engine); G_END_DECLS #endif ibus-1.5.11/bus/dbusimpl.h0000644000000000000000000001161412551654123012220 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_DBUS_IMPL_H_ #define __BUS_DBUS_IMPL_H_ #include #include #include "connection.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_DBUS_IMPL \ (bus_dbus_impl_get_type ()) #define BUS_DBUS_IMPL(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_DBUS_IMPL, BusDBusImpl)) #define BUS_DBUS_IMPL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_DBUS_IMPL, BusDBusImplClass)) #define BUS_IS_DBUS_IMPL(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_DBUS_IMPL)) #define BUS_IS_DBUS_IMPL_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_DBUS_IMPL)) #define BUS_DBUS_IMPL_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_DBUS_IMPL, BusDBusImplClass)) #define BUS_DEFAULT_DBUS \ (bus_dbus_impl_get_default ()) G_BEGIN_DECLS typedef struct _BusDBusImpl BusDBusImpl; typedef struct _BusDBusImplClass BusDBusImplClass; GType bus_dbus_impl_get_type (void); /** * bus_dbus_impl_get_default: * @returns: a BusDBusImpl object which is a singleton. * * Instantiate a BusDBusImpl object (if necessary) and return the object. */ BusDBusImpl *bus_dbus_impl_get_default (void); /** * bus_dbus_impl_new_connection: * @connection: A new connection. * @returns: TRUE * * Register all IBusServices (e.g. DBus, IBus, IBus.InputContext) to the connection so that the service_method_call function * for each service could be called. */ gboolean bus_dbus_impl_new_connection (BusDBusImpl *dbus, BusConnection *connection); /** * bus_dbus_impl_get_connection_by_name: * @name: A connection name like ":1.0" and "org.freedesktop.IBus.Panel". * @returns: A BusConnection object which corresponds to the name. * * Search for an active connection whose name is name. If not found, return NULL. */ BusConnection *bus_dbus_impl_get_connection_by_name (BusDBusImpl *dbus, const gchar *name); /** * bus_dbus_impl_forward_message: * * Push the message to the queue (dbus->forward_queue) and schedule a idle function call (bus_dbus_impl_forward_message_idle_cb) which * actually forwards the message to the destination. Note that the destination of the message is embedded in the message. */ void bus_dbus_impl_forward_message (BusDBusImpl *dbus, BusConnection *connection, GDBusMessage *message); /** * bus_dbus_impl_dispatch_message_by_rule: * * Push the message to the queue (dbus->dispatch_queue) and schedule a idle function call (bus_dbus_impl_dispatch_message_by_rule_idle_cb) * which actually dispatch the message by rule. */ void bus_dbus_impl_dispatch_message_by_rule (BusDBusImpl *dbus, GDBusMessage *message, BusConnection *skip_connection); /** * bus_dbus_impl_register_object: * @object: A new service which implements IBusService, like BusIBusImpl and BusInputContext. * @returns: FALSE if dbus is already destroyed. otherwise TRUE. * * Add the IBusService to the daemon. See bus_dbus_impl_new_connection for details. */ gboolean bus_dbus_impl_register_object (BusDBusImpl *dbus, IBusService *object); /** * bus_dbus_impl_unregister_object: * @object: A new service which implements IBusService, like BusIBusImpl and BusInputContext. * @returns: FALSE if dbus is already destroyed. otherwise TRUE. * * Remove the IBusService from the daemon. */ gboolean bus_dbus_impl_unregister_object(BusDBusImpl *dbus, IBusService *object); G_END_DECLS #endif ibus-1.5.11/bus/connection.c0000644000000000000000000001746512551654123012545 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include "connection.h" #include "matchrule.h" struct _BusConnection { IBusObject parent; /* instance members */ /* underlying GDBus connetion */ GDBusConnection *connection; /* a unique name of the connection like ":1.0" */ gchar *unique_name; /* list for well known names */ GList *names; guint filter_id; }; struct _BusConnectionClass { IBusObjectClass parent; /* class members */ }; /* static guint _signals[LAST_SIGNAL] = { 0 }; */ /* functions prototype */ static void bus_connection_destroy (BusConnection *connection); static void bus_connection_set_dbus_connection (BusConnection *connection, GDBusConnection *dbus_connection); static void bus_connection_dbus_connection_closed_cb (GDBusConnection *dbus_connection, gboolean remote_peer_vanished, GError *error, BusConnection *connection); static GQuark bus_connection_quark (void); #define BUS_CONNECTION_QUARK (bus_connection_quark ()) G_DEFINE_TYPE (BusConnection, bus_connection, IBUS_TYPE_OBJECT) static void bus_connection_class_init (BusConnectionClass *class) { IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_connection_destroy; } static void bus_connection_init (BusConnection *connection) { } static void bus_connection_destroy (BusConnection *connection) { if (connection->connection) { /* disconnect from closed signal */ g_signal_handlers_disconnect_by_func (connection->connection, G_CALLBACK (bus_connection_dbus_connection_closed_cb), connection); /* remove filter */ bus_connection_set_filter (connection, NULL, NULL, NULL); /* disconnect busconnection with dbus connection */ g_object_set_qdata ((GObject *)connection->connection, BUS_CONNECTION_QUARK, NULL); if (!g_dbus_connection_is_closed (connection->connection)) { g_dbus_connection_close (connection->connection, NULL, NULL, NULL); } g_object_unref (connection->connection); connection->connection = NULL; } if (connection->unique_name) { g_free (connection->unique_name); connection->unique_name = NULL; } g_list_free_full (connection->names, g_free); connection->names = NULL; IBUS_OBJECT_CLASS(bus_connection_parent_class)->destroy (IBUS_OBJECT (connection)); } static void bus_connection_dbus_connection_closed_cb (GDBusConnection *dbus_connection, gboolean remote_peer_vanished, GError *error, BusConnection *connection) { ibus_object_destroy ((IBusObject *) connection); } static void bus_connection_set_dbus_connection (BusConnection *connection, GDBusConnection *dbus_connection) { connection->connection = dbus_connection; g_object_ref (connection->connection); g_object_set_qdata_full ((GObject *) dbus_connection, BUS_CONNECTION_QUARK, g_object_ref (connection), (GDestroyNotify) g_object_unref); g_signal_connect (connection->connection, "closed", G_CALLBACK (bus_connection_dbus_connection_closed_cb), connection); } static GQuark bus_connection_quark (void) { static GQuark quark = 0; if (quark == 0) { quark = g_quark_from_static_string ("BUS_CONNECTION"); } return quark; } BusConnection * bus_connection_new (GDBusConnection *dbus_connection) { g_return_val_if_fail (bus_connection_lookup (dbus_connection) == NULL, NULL); BusConnection *connection = BUS_CONNECTION (g_object_new (BUS_TYPE_CONNECTION, NULL)); bus_connection_set_dbus_connection (connection, dbus_connection); return connection; } BusConnection * bus_connection_lookup (GDBusConnection *dbus_connection) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (dbus_connection), NULL); return (BusConnection *) g_object_get_qdata ((GObject *) dbus_connection, BUS_CONNECTION_QUARK); } const gchar * bus_connection_get_unique_name (BusConnection *connection) { return connection->unique_name; } void bus_connection_set_unique_name (BusConnection *connection, const gchar *name) { g_assert (connection->unique_name == NULL); /* we don't allow rewriting the unique_name. */ connection->unique_name = g_strdup (name); } const GList * bus_connection_get_names (BusConnection *connection) { return connection->names; } const gchar * bus_connection_add_name (BusConnection *connection, const gchar *name) { gchar *new_name; new_name = g_strdup (name); connection->names = g_list_append (connection->names, new_name); return new_name; } gboolean bus_connection_remove_name (BusConnection *connection, const gchar *name) { GList *list = g_list_find_custom (connection->names, name, (GCompareFunc) g_strcmp0); if (list) { g_free (list->data); connection->names = g_list_delete_link (connection->names, list); return TRUE; } return FALSE; } gboolean bus_connection_has_name (BusConnection *connection, const gchar *name) { GList *list = g_list_find_custom (connection->names, name, (GCompareFunc) g_strcmp0); return list != NULL; } GDBusConnection * bus_connection_get_dbus_connection (BusConnection *connection) { g_assert (BUS_IS_CONNECTION (connection)); return connection->connection; } void bus_connection_set_filter (BusConnection *connection, GDBusMessageFilterFunction filter_func, gpointer user_data, GDestroyNotify user_data_free_func) { g_assert (BUS_IS_CONNECTION (connection)); if (connection->filter_id != 0) { g_dbus_connection_remove_filter (connection->connection, connection->filter_id); connection->filter_id = 0; } if (filter_func != NULL) { connection->filter_id = g_dbus_connection_add_filter (connection->connection, filter_func, user_data, user_data_free_func); /* Note: g_dbus_connection_add_filter seems not to return zero as a valid id. */ } } ibus-1.5.11/bus/test-client.c0000644000000000000000000002523612551654123012634 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2010 Google Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "test-client.h" #ifdef DEBUG # define IDEBUG g_debug #else # define IDEBUG(a...) #endif /* functions prototype */ static void bus_test_client_class_init (BusTestClientClass *class); static void bus_test_client_destroy (IBusObject *object); /* static methods*/ static void _store_modifier_state (BusTestClient *client, guint modifier); static gboolean _is_shift_set (BusTestClient *client); static gboolean _is_modifier_set (BusTestClient *client, guint modifier); static gboolean _is_modifier_key (guint modifier); static guint _get_modifiers_to_mask (BusTestClient *client); static gint16 _get_keysym_to_keycode (guint keysym); static void _bus_disconnected_cb (IBusBus *ibusbus, BusTestClient *client); static void _bus_disabled_cb (IBusInputContext *ibuscontext, BusTestClient *client); static IBusBus *_bus = NULL; static Display *_xdisplay = NULL; G_DEFINE_TYPE (BusTestClient, bus_test_client, IBUS_TYPE_OBJECT) static void bus_test_client_class_init (BusTestClientClass *class) { IDEBUG ("%s", __FUNCTION__); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); ibus_object_class->destroy = bus_test_client_destroy; /* init display object */ if (_xdisplay == NULL) { _xdisplay = XOpenDisplay (NULL); } /* init bus object */ if (_bus == NULL) { ibus_set_display (XDisplayString (_xdisplay)); _bus = ibus_bus_new(); } g_signal_connect (_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL); } static void bus_test_client_init (BusTestClient *client) { IDEBUG ("%s", __FUNCTION__); client->connected = FALSE; client->enabled = FALSE; g_return_if_fail (ibus_bus_is_connected (_bus)); client->connected = TRUE; client->ibuscontext = ibus_bus_create_input_context (_bus, "test-client"); g_return_if_fail (client->ibuscontext != NULL); g_signal_connect (client->ibuscontext, "disabled", G_CALLBACK (_bus_disabled_cb), client); bus_test_client_clear_modifier (client); client->caps = IBUS_CAP_FOCUS; ibus_input_context_set_capabilities (client->ibuscontext, client->caps); ibus_bus_set_global_engine (_bus, "xkb:us::eng"); client->enabled = TRUE; } static void bus_test_client_destroy (IBusObject *object) { IDEBUG ("%s", __FUNCTION__); BusTestClient *client = BUS_TEST_CLIENT (object); g_object_unref (client->ibuscontext); } BusTestClient * bus_test_client_new (void) { IDEBUG ("%s", __FUNCTION__); BusTestClient *client = BUS_TEST_CLIENT (g_object_new (BUS_TYPE_TEST_CLIENT, NULL)); if (client->connected && client->enabled) { return client; } else { return NULL; } } gboolean bus_test_client_is_enabled (BusTestClient *client) { IDEBUG ("%s", __FUNCTION__); return client->enabled; } gboolean bus_test_client_is_connected (BusTestClient *client) { IDEBUG ("%s", __FUNCTION__); return client->connected; } gboolean bus_test_client_send_key (BusTestClient *client, guint keysym) { gboolean is_modifier = _is_modifier_key (keysym); gint16 keycode; guint state; if (is_modifier) { IDEBUG ("key: %d is modifier.", keysym); gboolean is_modifier_set = _is_modifier_set (client, keysym); keycode = _get_keysym_to_keycode (keysym); state = _get_modifiers_to_mask (client); if (is_modifier_set) { state |= IBUS_RELEASE_MASK; } ibus_input_context_process_key_event (client->ibuscontext, keysym, keycode, state); _store_modifier_state (client, keysym); } else { IDEBUG ("key: %d is not modifier.", keysym); /* This is an example code. If you use the keysym >= 0x01000000, * gdk_keyval_is_upper may be useful since * XConvertCase supports implementation-independent conversions. */ KeySym xlower = 0; KeySym xupper = 0; gboolean is_upper = FALSE; if (keysym) { XConvertCase (keysym, &xlower, &xupper); is_upper = ((guint) xupper == keysym); } gboolean is_shift_set = _is_shift_set (client); if (is_upper && !is_shift_set) { _store_modifier_state (client, IBUS_KEY_Shift_L); } keycode = _get_keysym_to_keycode (keysym); state = _get_modifiers_to_mask (client); ibus_input_context_process_key_event (client->ibuscontext, keysym, keycode, state); state |= IBUS_RELEASE_MASK; ibus_input_context_process_key_event (client->ibuscontext, keysym, keycode, state); if (is_upper && !is_shift_set) { _store_modifier_state (client, IBUS_KEY_Shift_L); } } return TRUE; } void bus_test_client_clear_modifier (BusTestClient *client) { int i; for (i = 0; i < MODIFIER_KEY_NUM; i++) { (client->modifier)[i] = FALSE; } } static void _store_modifier_state (BusTestClient *client, guint modifier) { switch(modifier) { case IBUS_KEY_Shift_L: case IBUS_KEY_Shift_R: /* ShiftMask */ client->modifier[0] = !client->modifier[0]; break; case IBUS_KEY_Shift_Lock: case IBUS_KEY_Caps_Lock: /* LockMask */ client->modifier[1] = !client->modifier[1]; break; case IBUS_KEY_Control_L: case IBUS_KEY_Control_R: /* ControlMask */ client->modifier[2] = !client->modifier[2]; break; case IBUS_KEY_Alt_L: case IBUS_KEY_Alt_R: case IBUS_KEY_Meta_L: /* Mod1Mask */ client->modifier[3] = !client->modifier[3]; break; case IBUS_KEY_Num_Lock: /* Mod2Mask */ client->modifier[4] = !client->modifier[4]; break; case IBUS_KEY_Super_L: case IBUS_KEY_Hyper_L: /* Mod4Mask */ client->modifier[5] = !client->modifier[5]; break; case IBUS_KEY_ISO_Level3_Shift: case IBUS_KEY_Mode_switch: /* Mod5Mask */ client->modifier[6] = !client->modifier[6]; break; default: break; } } static gint16 _get_keysym_to_keycode (guint keysym) { return XKeysymToKeycode (_xdisplay, keysym); } static gboolean _is_shift_set (BusTestClient *client) { return client->modifier[0]; } static gboolean _is_modifier_set (BusTestClient *client, guint modifier) { switch(modifier) { case IBUS_KEY_Shift_L: case IBUS_KEY_Shift_R: /* ShiftMask */ return client->modifier[0]; case IBUS_KEY_Shift_Lock: case IBUS_KEY_Caps_Lock: /* LockMask */ return client->modifier[1]; case IBUS_KEY_Control_L: case IBUS_KEY_Control_R: /* ControlMask */ return client->modifier[2]; case IBUS_KEY_Alt_L: case IBUS_KEY_Alt_R: case IBUS_KEY_Meta_L: /* Mod1Mask */ return client->modifier[3]; case IBUS_KEY_Num_Lock: /* Mod2Mask */ return client->modifier[4]; case IBUS_KEY_Super_L: case IBUS_KEY_Hyper_L: /* Mod4Mask */ return client->modifier[5]; case IBUS_KEY_ISO_Level3_Shift: case IBUS_KEY_Mode_switch: /* Mod5Mask */ return client->modifier[6]; default: return FALSE; } } static gboolean _is_modifier_key (guint modifier) { switch(modifier) { case IBUS_KEY_Shift_L: case IBUS_KEY_Shift_R: case IBUS_KEY_Shift_Lock: case IBUS_KEY_Caps_Lock: case IBUS_KEY_Control_L: case IBUS_KEY_Control_R: case IBUS_KEY_Alt_L: case IBUS_KEY_Alt_R: case IBUS_KEY_Meta_L: case IBUS_KEY_Num_Lock: case IBUS_KEY_Super_L: case IBUS_KEY_Hyper_L: case IBUS_KEY_ISO_Level3_Shift: case IBUS_KEY_Mode_switch: return TRUE; default: return FALSE; } } static guint _get_modifiers_to_mask (BusTestClient *client) { guint retval = 0; if(client->modifier[0]) retval |= IBUS_SHIFT_MASK; if(client->modifier[1]) retval |= IBUS_LOCK_MASK; if(client->modifier[2]) retval |= IBUS_CONTROL_MASK; if(client->modifier[3]) retval |= IBUS_MOD1_MASK; if(client->modifier[4]) retval |= IBUS_MOD2_MASK; if(client->modifier[5]) retval |= IBUS_MOD4_MASK; if(client->modifier[6]) retval |= IBUS_MOD5_MASK; return retval; } static void _bus_disconnected_cb (IBusBus *ibusbus, BusTestClient *client) { g_assert (IBUS_IS_BUS (ibusbus)); g_assert (BUS_IS_TEST_CLIENT (client)); IDEBUG ("%s", __FUNCTION__); client->connected = FALSE; IDEBUG ("Disconnected ibus daemon"); } static void _bus_disabled_cb (IBusInputContext *ibuscontext, BusTestClient *client) { g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext)); g_assert (BUS_IS_TEST_CLIENT (client)); IDEBUG ("%s", __FUNCTION__); client->enabled = FALSE; IDEBUG ("Disabled ibus engine"); } ibus-1.5.11/bus/dbusimpl.c0000644000000000000000000022265412551654123012223 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "dbusimpl.h" #include #include "global.h" #include "ibusimpl.h" #include "marshalers.h" #include "matchrule.h" #include "types.h" enum { NAME_OWNER_CHANGED, NAME_LOST, NAME_ACQUIRED, LAST_SIGNAL, }; enum { PROP_0, }; static guint dbus_signals[LAST_SIGNAL] = { 0 }; struct _BusDBusImpl { IBusService parent; /* instance members */ /* a map from a unique bus name (e.g. ":1.0") to a BusConnection. */ GHashTable *unique_names; /* a map from a requested well-known name (e.g. "org.freedesktop.IBus.Panel") to a BusNameService. */ GHashTable *names; /* a list of IBusService objects. */ GList *objects; /* a list of active BusConnections. */ GList *connections; /* a list of BusMatchRules requested by the connections above. */ GList *rules; /* a serial number used to generate a unique name of a bus. */ guint id; GMutex dispatch_lock; GList *dispatch_queue; GMutex forward_lock; GList *forward_queue; /* a list of BusMethodCall to be used to reply when services are really available */ GList *start_service_calls; }; struct _BusDBusImplClass { IBusServiceClass parent; /* class members */ void (* name_owner_changed) (BusDBusImpl *dbus, BusConnection *connection, gchar *name, gchar *old_name, gchar *new_name); void (* name_lost) (BusDBusImpl *dbus, BusConnection *connection, gchar *name); void (* name_acquired) (BusDBusImpl *dbus, BusConnection *connection, gchar *name); }; typedef struct _BusDispatchData BusDispatchData; struct _BusDispatchData { GDBusMessage *message; BusConnection *skip_connection; }; typedef struct _BusNameService BusNameService; struct _BusNameService { gchar *name; GSList *owners; }; typedef struct _BusConnectionOwner BusConnectionOwner; struct _BusConnectionOwner { BusConnection *conn; guint allow_replacement : 1; guint do_not_queue : 1; }; typedef struct _BusMethodCall BusMethodCall; struct _BusMethodCall { BusDBusImpl *dbus; BusConnection *connection; GVariant *parameters; GDBusMethodInvocation *invocation; guint timeout_id; }; /* functions prototype */ static void bus_dbus_impl_destroy (BusDBusImpl *dbus); static void bus_dbus_impl_service_method_call (IBusService *service, GDBusConnection *dbus_connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *bus_dbus_impl_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean bus_dbus_impl_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void bus_dbus_impl_name_owner_changed (BusDBusImpl *dbus, BusConnection *connection, gchar *name, gchar *old_name, gchar *new_name); static void bus_dbus_impl_name_lost (BusDBusImpl *dbus, BusConnection *connection, gchar *name); static void bus_dbus_impl_name_acquired (BusDBusImpl *dbus, BusConnection *connection, gchar *name); static void bus_dbus_impl_connection_destroy_cb (BusConnection *connection, BusDBusImpl *dbus); static void bus_dbus_impl_rule_destroy_cb (BusMatchRule *rule, BusDBusImpl *dbus); static void bus_dbus_impl_object_destroy_cb(IBusService *object, BusDBusImpl *dbus); G_DEFINE_TYPE(BusDBusImpl, bus_dbus_impl, IBUS_TYPE_SERVICE) /* The D-Bus interfaces available in this class, which consists of a list of methods this class implements and * a list of signals this class may emit. See bus_dbus_impl_new_connection and ibusservice.c for more details. */ static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static void bus_connection_owner_set_flags (BusConnectionOwner *owner, guint32 flags) { owner->allow_replacement = (flags & IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT) != 0; owner->do_not_queue = (flags & IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE) != 0; } static BusConnectionOwner * bus_connection_owner_new (BusConnection *connection, guint32 flags) { BusConnectionOwner *owner = NULL; g_assert (BUS_IS_CONNECTION (connection)); owner = g_slice_new (BusConnectionOwner); if (owner != NULL) { owner->conn = g_object_ref (connection); bus_connection_owner_set_flags (owner, flags); } return owner; } static void bus_connection_owner_free (BusConnectionOwner *owner) { g_assert (owner != NULL); g_object_unref (owner->conn); owner->conn = NULL; g_slice_free (BusConnectionOwner, owner); } static GSList * bus_name_service_find_owner_link (BusNameService *service, BusConnection *connection) { GSList *owners = service->owners; while (owners) { BusConnectionOwner *owner = (BusConnectionOwner *) owners->data; if (owner->conn == connection) { break; } owners = owners->next; } return owners; } static BusNameService * bus_name_service_new (const gchar *name) { BusNameService *service = NULL; g_assert (name != NULL); service = g_slice_new (BusNameService); g_assert (service != NULL); service->name = g_strdup (name); service->owners = NULL; return service; } static void bus_name_service_free (BusNameService *service) { g_assert (service != NULL); g_slist_free_full (service->owners, (GDestroyNotify) bus_connection_owner_free); service->owners = NULL; g_free (service->name); g_slice_free (BusNameService, service); } static void bus_name_service_set_primary_owner (BusNameService *service, BusConnectionOwner *owner, BusDBusImpl *dbus) { g_assert (service != NULL); g_assert (owner != NULL); g_assert (dbus != NULL); BusConnectionOwner *old = service->owners != NULL ? (BusConnectionOwner *)service->owners->data : NULL; if (old != NULL) { g_signal_emit (dbus, dbus_signals[NAME_LOST], 0, old->conn, service->name); } g_signal_emit (dbus, dbus_signals[NAME_ACQUIRED], 0, owner->conn, service->name ? service->name : ""); g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, owner->conn, service->name, old != NULL ? bus_connection_get_unique_name (old->conn) : "", bus_connection_get_unique_name (owner->conn)); if (old != NULL && old->do_not_queue != 0) { /* If old primary owner does not want to be in queue, we remove it. */ service->owners = g_slist_remove (service->owners, old); bus_connection_remove_name (old->conn, service->name); bus_connection_owner_free (old); } service->owners = g_slist_prepend (service->owners, (gpointer) owner); } static BusConnectionOwner * bus_name_service_get_primary_owner (BusNameService *service) { g_assert (service != NULL); if (service->owners == NULL) { return NULL; } return (BusConnectionOwner *) service->owners->data; } static void bus_name_service_add_non_primary_owner (BusNameService *service, BusConnectionOwner *owner, BusDBusImpl *dbus) { g_assert (service != NULL); g_assert (owner != NULL); g_assert (dbus != NULL); g_assert (service->owners != NULL); service->owners = g_slist_append (service->owners, (gpointer) owner); } static BusConnectionOwner * bus_name_service_find_owner (BusNameService *service, BusConnection *connection) { g_assert (service != NULL); g_assert (connection != NULL); GSList *owners = bus_name_service_find_owner_link (service, connection); if (owners != NULL) return (BusConnectionOwner *)owners->data; return NULL; } static void bus_name_service_remove_owner (BusNameService *service, BusConnectionOwner *owner, BusDBusImpl *dbus) { GSList *owners; g_assert (service != NULL); g_assert (owner != NULL); owners = bus_name_service_find_owner_link (service, owner->conn); g_assert (owners != NULL); if (owners->data == bus_name_service_get_primary_owner (service)) { BusConnectionOwner *_new = NULL; if (owners->next != NULL) { _new = (BusConnectionOwner *)owners->next->data; } if (dbus != NULL) { g_signal_emit (dbus, dbus_signals[NAME_LOST], 0, owner->conn, service->name); if (_new != NULL) { g_signal_emit (dbus, dbus_signals[NAME_ACQUIRED], 0, _new->conn, service->name); } g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, _new != NULL ? _new->conn : NULL, service->name, bus_connection_get_unique_name (owner->conn), _new != NULL ? bus_connection_get_unique_name (_new->conn) : ""); } } service->owners = g_slist_remove_link (service->owners, (gpointer) owners); } static gboolean bus_name_service_get_allow_replacement (BusNameService *service) { BusConnectionOwner *owner = NULL; g_assert (service != NULL); owner = bus_name_service_get_primary_owner (service); if (owner == NULL) { return TRUE; } return owner->allow_replacement; } static BusMethodCall * bus_method_call_new (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { BusMethodCall *call = g_slice_new0 (BusMethodCall); call->dbus = g_object_ref (dbus); call->connection = g_object_ref (connection); call->parameters = g_variant_ref (parameters); call->invocation = g_object_ref (invocation); return call; } static void bus_method_call_free (BusMethodCall *call) { if (call->timeout_id != 0) { g_source_remove (call->timeout_id); } g_object_unref (call->dbus); g_object_unref (call->connection); g_variant_unref (call->parameters); g_object_unref (call->invocation); g_slice_free (BusMethodCall, call); } static void bus_dbus_impl_class_init (BusDBusImplClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBUS_OBJECT_CLASS (gobject_class)->destroy = (IBusObjectDestroyFunc) bus_dbus_impl_destroy; /* override the default implementations in the parent class. */ IBUS_SERVICE_CLASS (class)->service_method_call = bus_dbus_impl_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = bus_dbus_impl_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = bus_dbus_impl_service_set_property; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); /* register a handler of the name-owner-changed signal below. */ class->name_owner_changed = bus_dbus_impl_name_owner_changed; /* register a handler of the name-lost signal below. */ class->name_lost = bus_dbus_impl_name_lost; /* register a handler of the name-acquired signal below. */ class->name_acquired = bus_dbus_impl_name_acquired; /* install signals */ dbus_signals[NAME_OWNER_CHANGED] = g_signal_new (I_("name-owner-changed"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (BusDBusImplClass, name_owner_changed), NULL, NULL, bus_marshal_VOID__OBJECT_STRING_STRING_STRING, G_TYPE_NONE, 4, BUS_TYPE_CONNECTION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); dbus_signals[NAME_LOST] = g_signal_new (I_("name-lost"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (BusDBusImplClass, name_lost), NULL, NULL, bus_marshal_VOID__OBJECT_STRING, G_TYPE_NONE, 2, BUS_TYPE_CONNECTION, G_TYPE_STRING); dbus_signals[NAME_ACQUIRED] = g_signal_new (I_("name-acquired"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (BusDBusImplClass, name_acquired), NULL, NULL, bus_marshal_VOID__OBJECT_STRING, G_TYPE_NONE, 2, BUS_TYPE_CONNECTION, G_TYPE_STRING); } static void bus_dbus_impl_init (BusDBusImpl *dbus) { dbus->unique_names = g_hash_table_new (g_str_hash, g_str_equal); dbus->names = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) bus_name_service_free); g_mutex_init (&dbus->dispatch_lock); g_mutex_init (&dbus->forward_lock); /* other members are automatically zero-initialized. */ } static void bus_dbus_impl_destroy (BusDBusImpl *dbus) { GList *p; for (p = dbus->objects; p != NULL; p = p->next) { IBusService *object = (IBusService *) p->data; g_signal_handlers_disconnect_by_func (object, G_CALLBACK (bus_dbus_impl_object_destroy_cb), dbus); ibus_object_destroy ((IBusObject *) object); g_object_unref (object); } g_list_free (dbus->objects); dbus->objects = NULL; for (p = dbus->rules; p != NULL; p = p->next) { BusMatchRule *rule = BUS_MATCH_RULE (p->data); g_signal_handlers_disconnect_by_func (rule, G_CALLBACK (bus_dbus_impl_rule_destroy_cb), dbus); ibus_object_destroy ((IBusObject *) rule); g_object_unref (rule); } g_list_free (dbus->rules); dbus->rules = NULL; for (p = dbus->connections; p != NULL; p = p->next) { BusConnection *connection = BUS_CONNECTION (p->data); g_signal_handlers_disconnect_by_func (connection, bus_dbus_impl_connection_destroy_cb, dbus); ibus_object_destroy (IBUS_OBJECT (connection)); g_object_unref (connection); } g_list_free (dbus->connections); dbus->connections = NULL; g_hash_table_remove_all (dbus->unique_names); g_hash_table_remove_all (dbus->names); dbus->unique_names = NULL; dbus->names = NULL; g_list_free_full (dbus->start_service_calls, (GDestroyNotify) bus_method_call_free); dbus->start_service_calls = NULL; g_mutex_clear (&dbus->dispatch_lock); g_mutex_clear (&dbus->forward_lock); /* FIXME destruct _lock and _queue members. */ IBUS_OBJECT_CLASS(bus_dbus_impl_parent_class)->destroy ((IBusObject *) dbus); } /** * bus_dbus_impl_hello: * * Implement the "Hello" method call of the org.freedesktop.DBus interface. * Assign a unique bus name like ":1.0" for the connection and return the name (as a D-Bus reply.) */ static void bus_dbus_impl_hello (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { if (bus_connection_get_unique_name (connection) != NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Already handled an Hello message"); } else { gchar *name = g_strdup_printf (":1.%u", ++dbus->id); bus_connection_set_unique_name (connection, name); g_free (name); name = (gchar *) bus_connection_get_unique_name (connection); g_hash_table_insert (dbus->unique_names, name, connection); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", name)); g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, connection, name, "", name); } } /** * bus_dbus_impl_list_names: * * Implement the "ListNames" method call of the org.freedesktop.DBus interface. * Return all bus names (e.g. ":1.0", "org.freedesktop.IBus.Panel") as a D-Bus reply. */ static void bus_dbus_impl_list_names (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("as")); /* FIXME should add them? */ g_variant_builder_add (&builder, "s", "org.freedesktop.DBus"); g_variant_builder_add (&builder, "s", "org.freedesktop.IBus"); /* append well-known names */ GList *names, *name; names = g_hash_table_get_keys (dbus->names); for (name = names; name != NULL; name = name->next) { g_variant_builder_add (&builder, "s", name->data); } g_list_free (names); /* append unique names */ names = g_hash_table_get_keys (dbus->unique_names); for (name = names; name != NULL; name = name->next) { g_variant_builder_add (&builder, "s", name->data); } g_list_free (names); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder)); } /** * bus_dbus_impl_list_names: * * Implement the "NameHasOwner" method call of the org.freedesktop.DBus interface. * Return TRUE (as a D-Bus reply) if the name is available in dbus->unique_names or is a well-known name. */ static void bus_dbus_impl_name_has_owner (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name = NULL; g_variant_get (parameters, "(&s)", &name); gboolean has_owner; if (!g_dbus_is_name (name)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "'%s' is not a legal bus name", name ? name : "(null)"); return; } if (g_dbus_is_unique_name (name)) { has_owner = g_hash_table_lookup (dbus->unique_names, name) != NULL; } else { if (g_strcmp0 (name, "org.freedesktop.DBus") == 0 || g_strcmp0 (name, "org.freedesktop.IBus") == 0) has_owner = TRUE; else has_owner = g_hash_table_lookup (dbus->names, name) != NULL; } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", has_owner)); } /** * bus_dbus_impl_get_name_owner: * * Implement the "GetNameOwner" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_get_name_owner (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name_owner = NULL; const gchar *name = NULL; g_variant_get (parameters, "(&s)", &name); if (g_strcmp0 (name, "org.freedesktop.DBus") == 0 || g_strcmp0 (name, "org.freedesktop.IBus") == 0) { name_owner = name; } else { BusConnection *owner = bus_dbus_impl_get_connection_by_name (dbus, name); if (owner != NULL) { name_owner = bus_connection_get_unique_name (owner); } } if (name_owner == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER, "Can not get name owner of '%s': no such name", name); } else { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", name_owner)); } } /** * bus_dbus_impl_list_queued_owners: * * Implement the "ListQueuedOwners" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_list_queued_owners (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name = NULL; const gchar *name_owner = NULL; GVariantBuilder builder; BusConnection *named_conn = NULL; g_variant_get (parameters, "(&s)", &name); g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); g_variant_builder_init (&builder, G_VARIANT_TYPE ("as")); if (G_LIKELY (g_dbus_is_unique_name (name))) { named_conn = (BusConnection *) g_hash_table_lookup (dbus->unique_names, name); if (named_conn == NULL) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder)); return; } name_owner = bus_connection_get_unique_name (named_conn); if (name_owner == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER, "Can not get name owner of '%s': no such name", name); return; } g_variant_builder_add (&builder, "s", name_owner); } else { BusNameService *service; GSList *owners; service = (BusNameService *) g_hash_table_lookup (dbus->names, name); if (service == NULL) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder)); return; } for (owners = service->owners; owners; owners = owners->next) { BusConnectionOwner *owner = (BusConnectionOwner *) owners->data; if (owner == NULL) { continue; } named_conn = owner->conn; if (named_conn == NULL) { continue; } name_owner = bus_connection_get_unique_name (named_conn); if (name_owner == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER, "Can not get name owner of '%s': no such name", name); return; } g_variant_builder_add (&builder, "s", name_owner); } } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder)); } /** * bus_dbus_impl_get_id: * * Implement the "GetId" method call of the org.freedesktop.DBus interface. * This function is not implemented yet and always returns a dummy string - "FIXME". */ static void bus_dbus_impl_get_id (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { /* FIXME */ const gchar *uuid = "FIXME"; g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", uuid)); } /** * bus_dbus_impl_rule_destroy_cb: * * A function to be called when one of the dbus->rules is destroyed. */ static void bus_dbus_impl_rule_destroy_cb (BusMatchRule *rule, BusDBusImpl *dbus) { dbus->rules = g_list_remove (dbus->rules, rule); g_object_unref (rule); } /** * bus_dbus_impl_get_id: * * Implement the "AddMatch" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_add_match (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *rule_text = NULL; g_variant_get (parameters, "(&s)", &rule_text); BusMatchRule *rule = bus_match_rule_new (rule_text); if (rule == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_MATCH_RULE_INVALID, "Parse match rule [%s] failed", rule_text); return; } g_dbus_method_invocation_return_value (invocation, NULL); GList *p; for (p = dbus->rules; p != NULL; p = p->next) { if (bus_match_rule_is_equal (rule, (BusMatchRule *) p->data)) { /* The same rule is already registered. Just reuse it. */ bus_match_rule_add_recipient ((BusMatchRule *) p->data, connection); g_object_unref (rule); return; } } if (rule) { bus_match_rule_add_recipient (rule, connection); dbus->rules = g_list_append (dbus->rules, rule); g_signal_connect (rule, "destroy", G_CALLBACK (bus_dbus_impl_rule_destroy_cb), dbus); } } /** * bus_dbus_impl_get_id: * * Implement the "RemoveMatch" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_remove_match (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *rule_text = NULL; g_variant_get (parameters, "(&s)", &rule_text); BusMatchRule *rule = bus_match_rule_new (rule_text); if (rule == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_MATCH_RULE_INVALID, "Parse match rule [%s] failed", rule_text); return; } g_dbus_method_invocation_return_value (invocation, NULL); GList *p; for (p = dbus->rules; p != NULL; p = p->next) { if (bus_match_rule_is_equal (rule, (BusMatchRule *) p->data)) { /* p->data will be destroyed when the final recipient is removed. */ bus_match_rule_remove_recipient ((BusMatchRule *) p->data, connection); break; } /* FIXME should we return G_DBUS_ERROR if rule is not found in dbus->rules */ } g_object_unref (rule); } /** * bus_dbus_impl_request_name: * * Implement the "RequestName" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_request_name (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name = NULL; // e.g. "org.freedesktop.IBus.Panel" guint32 flags = 0; BusNameService *service = NULL; BusConnectionOwner *primary_owner = NULL; BusConnectionOwner *owner = NULL; g_variant_get (parameters, "(&su)", &name, &flags); if (name == NULL || !g_dbus_is_name (name) || g_dbus_is_unique_name (name)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "'%s' is not a legal service name.", name); return; } if (g_strcmp0 (name, "org.freedesktop.DBus") == 0 || g_strcmp0 (name, "org.freedesktop.IBus") == 0) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Can not acquire the service name '%s', it is reserved by IBus", name); return; } enum { ACTION_INVALID, ACTION_IN_QUEUE, ACTION_REPLACE, ACTION_EXISTS, ACTION_ALREADY_OWN, } action = ACTION_INVALID; service = (BusNameService *) g_hash_table_lookup (dbus->names, name); /* If the name servise does not exist, we will create one. */ if (service == NULL) { service = bus_name_service_new (name); g_hash_table_insert (dbus->names, service->name, service); } else { primary_owner = bus_name_service_get_primary_owner (service); } if (primary_owner != NULL) { if (primary_owner->conn == connection) { action = ACTION_ALREADY_OWN; } else { action = (flags & IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE) ? ACTION_EXISTS : ACTION_IN_QUEUE; if ((bus_name_service_get_allow_replacement (service) == TRUE) && (flags & IBUS_BUS_NAME_FLAG_REPLACE_EXISTING)) { action = ACTION_REPLACE; } } } else { action = ACTION_REPLACE; } if (action == ACTION_ALREADY_OWN) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER)); return; } owner = bus_name_service_find_owner (service, connection); /* If connection already in queue, we need remove it at first. */ if (owner != NULL) { bus_connection_remove_name (connection, name); bus_name_service_remove_owner (service, owner, NULL); bus_connection_owner_free (owner); } switch (action) { case ACTION_EXISTS: g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", IBUS_BUS_REQUEST_NAME_REPLY_EXISTS)); return; case ACTION_IN_QUEUE: owner = bus_connection_owner_new (connection, flags); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE)); bus_name_service_add_non_primary_owner (service, owner, dbus); return; case ACTION_REPLACE: bus_connection_add_name (connection, name); owner = bus_connection_owner_new (connection, flags); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)); bus_name_service_set_primary_owner (service, owner, dbus); return; default: g_assert_not_reached (); } } /** * bus_dbus_impl_release_name: * * Implement the "ReleaseName" method call of the org.freedesktop.DBus interface. */ static void bus_dbus_impl_release_name (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name= NULL; BusNameService *service; g_variant_get (parameters, "(&s)", &name); if (name == NULL || !g_dbus_is_name (name) || g_dbus_is_unique_name (name)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "'%s' is not a legal service name.", name); return; } if (g_strcmp0 (name, "org.freedesktop.DBus") == 0 || g_strcmp0 (name, "org.freedesktop.IBus") == 0) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Service name '%s' is owned by IBus.", name); return; } guint retval; service = g_hash_table_lookup (dbus->names, name); if (service == NULL) { retval = 2; /* DBUS_RELEASE_NAME_REPLY_NON_EXISTENT */ } else { /* "ReleaseName" method removes the name in connection->names * and the connection owner. * bus_dbus_impl_connection_destroy_cb() removes all * connection->names and the connection owners. * See also comments in bus_dbus_impl_connection_destroy_cb(). */ if (bus_connection_remove_name (connection, name)) { BusConnectionOwner *owner = bus_name_service_find_owner (service, connection); bus_name_service_remove_owner (service, owner, dbus); if (service->owners == NULL) { g_hash_table_remove (dbus->names, service->name); } bus_connection_owner_free (owner); retval = 1; /* DBUS_RELEASE_NAME_REPLY_RELEASED */ } else { retval = 3; /* DBUS_RELEASE_NAME_REPLY_NOT_OWNER */ } } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", retval)); } static gboolean start_service_timeout_cb (BusMethodCall *call) { const gchar *name= NULL; guint32 flags; /* currently not used in the D-Bus spec */ g_variant_get (call->parameters, "(&su)", &name, &flags); g_dbus_method_invocation_return_error (call->invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Timeout reached before starting %s", name); GList *p = g_list_find (call->dbus->start_service_calls, call); g_return_val_if_fail (p != NULL, FALSE); bus_method_call_free ((BusMethodCall *) p->data); call->dbus->start_service_calls = g_list_delete_link (call->dbus->start_service_calls, p); return FALSE; } /** * bus_dbus_impl_start_service_by_name: * * Implement the "StartServiceByName" method call of the * org.freedesktop.DBus interface. */ static void bus_dbus_impl_start_service_by_name (BusDBusImpl *dbus, BusConnection *connection, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *name= NULL; guint32 flags; /* currently not used in the D-Bus spec */ g_variant_get (parameters, "(&su)", &name, &flags); if (name == NULL || !g_dbus_is_name (name) || g_dbus_is_unique_name (name)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "'%s' is not a legal service name.", name); return; } if (g_strcmp0 (name, "org.freedesktop.DBus") == 0 || g_strcmp0 (name, "org.freedesktop.IBus") == 0) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Service name '%s' is owned by IBus.", name); return; } if (g_hash_table_lookup (dbus->names, name) != NULL) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", IBUS_BUS_START_REPLY_ALREADY_RUNNING)); return; } BusComponent *component = bus_ibus_impl_lookup_component_by_name ( BUS_DEFAULT_IBUS, name); if (component == NULL || !bus_component_start (component, g_verbose)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Failed to start %s", name); return; } BusMethodCall *call = bus_method_call_new (dbus, connection, parameters, invocation); call->timeout_id = g_timeout_add (g_gdbus_timeout, (GSourceFunc) start_service_timeout_cb, call); dbus->start_service_calls = g_list_prepend (dbus->start_service_calls, (gpointer) call); } /** * bus_dbus_impl_name_owner_changed: * * The function is called on name-owner-changed signal, typically when g_signal_emit (dbus, NAME_OWNER_CHANGED) * is called, and broadcasts the signal to clients. */ static void bus_dbus_impl_name_owner_changed (BusDBusImpl *dbus, BusConnection *connection, gchar *name, gchar *old_owner, gchar *new_owner) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); g_assert (old_owner != NULL); g_assert (new_owner != NULL); GDBusMessage *message = g_dbus_message_new_signal ("/org/freedesktop/DBus", "org.freedesktop.DBus", "NameOwnerChanged"); g_dbus_message_set_sender (message, "org.freedesktop.DBus"); /* set a non-zero serial to make libdbus happy */ g_dbus_message_set_serial (message, 1); g_dbus_message_set_body (message, g_variant_new ("(sss)", name, old_owner, new_owner)); /* broadcast the message to clients that listen to the signal. */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); g_object_unref (message); } /** * bus_dbus_impl_name_lost: * * The function is called on name-lost signal, typically when g_signal_emit (dbus, NAME_LOST) * is called, and broadcasts the signal to clients. */ static void bus_dbus_impl_name_lost (BusDBusImpl *dbus, BusConnection *connection, gchar *name) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); GDBusMessage *message = g_dbus_message_new_signal ("/org/freedesktop/DBus", "org.freedesktop.DBus", "NameLost"); g_dbus_message_set_sender (message, "org.freedesktop.DBus"); g_dbus_message_set_destination (message, bus_connection_get_unique_name (connection)); /* set a non-zero serial to make libdbus happy */ g_dbus_message_set_serial (message, 1); g_dbus_message_set_body (message, g_variant_new ("(s)", name)); bus_dbus_impl_forward_message (dbus, connection, message); g_object_unref (message); } /** * bus_dbus_impl_name_acquired: * * The function is called on name-acquired signal, typically when g_signal_emit (dbus, NAME_ACQUIRED) * is called, and broadcasts the signal to clients. */ static void bus_dbus_impl_name_acquired (BusDBusImpl *dbus, BusConnection *connection, gchar *name) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); GDBusMessage *message = g_dbus_message_new_signal ("/org/freedesktop/DBus", "org.freedesktop.DBus", "NameAcquired"); g_dbus_message_set_sender (message, "org.freedesktop.DBus"); g_dbus_message_set_destination (message, bus_connection_get_unique_name (connection)); /* set a non-zero serial to make libdbus happy */ g_dbus_message_set_serial (message, 1); g_dbus_message_set_body (message, g_variant_new ("(s)", name)); bus_dbus_impl_forward_message (dbus, connection, message); g_object_unref (message); GList *p = dbus->start_service_calls; while (p != NULL) { BusMethodCall *call = p->data; const gchar *_name= NULL; guint32 flags; GList *next = p->next; g_variant_get (call->parameters, "(&su)", &_name, &flags); if (g_strcmp0 (name, _name) == 0) { g_dbus_method_invocation_return_value (call->invocation, g_variant_new ("(u)", IBUS_BUS_START_REPLY_SUCCESS)); bus_method_call_free ((BusMethodCall *) p->data); dbus->start_service_calls = g_list_delete_link (dbus->start_service_calls, p); } p = next; } } /** * bus_dbus_impl_service_method_call: * * Handle a D-Bus method call from a client. This function overrides an implementation in src/ibusservice.c. */ static void bus_dbus_impl_service_method_call (IBusService *service, GDBusConnection *dbus_connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { BusDBusImpl *dbus = BUS_DBUS_IMPL (service); if (g_strcmp0 (interface_name, "org.freedesktop.DBus") != 0) { IBUS_SERVICE_CLASS (bus_dbus_impl_parent_class)->service_method_call ( (IBusService *) dbus, dbus_connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } static const struct { const gchar *method_name; void (* method) (BusDBusImpl *, BusConnection *, GVariant *, GDBusMethodInvocation *); } methods[] = { /* DBus interface */ { "Hello", bus_dbus_impl_hello }, { "ListNames", bus_dbus_impl_list_names }, { "NameHasOwner", bus_dbus_impl_name_has_owner }, { "GetNameOwner", bus_dbus_impl_get_name_owner }, { "ListQueuedOwners", bus_dbus_impl_list_queued_owners }, { "GetId", bus_dbus_impl_get_id }, { "AddMatch", bus_dbus_impl_add_match }, { "RemoveMatch", bus_dbus_impl_remove_match }, { "RequestName", bus_dbus_impl_request_name }, { "ReleaseName", bus_dbus_impl_release_name }, { "StartServiceByName", bus_dbus_impl_start_service_by_name }, }; gint i; for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (method_name, methods[i].method_name) == 0) { BusConnection *connection = bus_connection_lookup (dbus_connection); g_assert (BUS_IS_CONNECTION (connection)); methods[i].method (dbus, connection, parameters, invocation); return; } } /* unsupported methods */ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "org.freedesktop.DBus does not support %s", method_name); } /** * bus_dbus_impl_service_get_property: * * Handle a D-Bus method call from a client. This function overrides an implementation in src/ibusservice.c. */ static GVariant * bus_dbus_impl_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { /* FIXME implement the function. */ return IBUS_SERVICE_CLASS (bus_dbus_impl_parent_class)-> service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } /** * bus_dbus_impl_service_set_property: * * Handle a D-Bus method call from a client. This function overrides an implementation in src/ibusservice.c. */ static gboolean bus_dbus_impl_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { /* FIXME implement the function. */ return IBUS_SERVICE_CLASS (bus_dbus_impl_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } /** * bus_dbus_impl_connection_filter_cb: * @returns: A GDBusMessage that will be processed by bus_dbus_impl_service_method_call. NULL when dropping the message. * * A filter function that is called for all incoming and outgoing messages. * WARNING - this function could be called by the GDBus's worker thread. So you should not call thread unsafe IBus functions. */ static GDBusMessage * bus_dbus_impl_connection_filter_cb (GDBusConnection *dbus_connection, GDBusMessage *message, gboolean incoming, gpointer user_data) { g_assert (G_IS_DBUS_CONNECTION (dbus_connection)); g_assert (G_IS_DBUS_MESSAGE (message)); g_assert (BUS_IS_DBUS_IMPL (user_data)); BusDBusImpl *dbus = (BusDBusImpl *) user_data; BusConnection *connection = bus_connection_lookup (dbus_connection); g_assert (connection != NULL); if (incoming) { /* is incoming message */ /* get the destination aka bus name of the message. the destination is set by g_dbus_connection_call_sync (for DBus and IBus messages * in the IBusBus class) or g_initable_new (for config and context messages in the IBusProxy sub classes.) */ const gchar *destination = g_dbus_message_get_destination (message); GDBusMessageType message_type = g_dbus_message_get_message_type (message); if (g_dbus_message_get_locked (message)) { /* If the message is locked, we need make a copy of it. */ GDBusMessage *new_message = g_dbus_message_copy (message, NULL); g_assert (new_message != NULL); g_object_unref (message); message = new_message; } /* connection unique name as sender of the message*/ g_dbus_message_set_sender (message, bus_connection_get_unique_name (connection)); if (g_strcmp0 (destination, "org.freedesktop.IBus") == 0) { /* the message is sent to IBus service. messages from ibusbus and ibuscontext may fall into this category. */ switch (message_type) { case G_DBUS_MESSAGE_TYPE_METHOD_CALL: case G_DBUS_MESSAGE_TYPE_METHOD_RETURN: case G_DBUS_MESSAGE_TYPE_ERROR: /* dispatch messages by match rule */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); return message; case G_DBUS_MESSAGE_TYPE_SIGNAL: /* notreached - signals should not be sent to IBus service. dispatch signal messages by match rule, just in case. */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); g_object_unref (message); g_return_val_if_reached (NULL); /* return NULL since the service does not handle signals. */ default: g_object_unref (message); g_return_val_if_reached (NULL); /* return NULL since the service does not handle signals. */ } } else if (g_strcmp0 (destination, "org.freedesktop.DBus") == 0) { /* the message is sent to DBus service. messages from ibusbus may fall into this category. */ switch (message_type) { case G_DBUS_MESSAGE_TYPE_METHOD_CALL: case G_DBUS_MESSAGE_TYPE_METHOD_RETURN: case G_DBUS_MESSAGE_TYPE_ERROR: /* dispatch messages by match rule */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); return message; case G_DBUS_MESSAGE_TYPE_SIGNAL: /* notreached - signals should not be sent to IBus service. dispatch signal messages by match rule, just in case. */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); g_object_unref (message); g_return_val_if_reached (NULL); /* return NULL since the service does not handle signals. */ default: g_object_unref (message); g_return_val_if_reached (NULL); /* return NULL since the service does not handle signals. */ } } else if (destination == NULL) { /* the message is sent to the current connection. communications between ibus-daemon and panel/engines may fall into this * category since the panel/engine proxies created by ibus-daemon does not set bus name. */ switch (message_type) { case G_DBUS_MESSAGE_TYPE_SIGNAL: case G_DBUS_MESSAGE_TYPE_METHOD_RETURN: case G_DBUS_MESSAGE_TYPE_ERROR: /* dispatch messages by match rule */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); return message; case G_DBUS_MESSAGE_TYPE_METHOD_CALL: g_warning ("Unknown method call: destination=NULL, path='%s', interface='%s', member='%s'", g_dbus_message_get_path (message), g_dbus_message_get_interface (message), g_dbus_message_get_member (message)); bus_dbus_impl_dispatch_message_by_rule (dbus, message, NULL); return message; /* return the message, GDBus library will handle it */ default: /* notreached. */ g_object_unref (message); g_return_val_if_reached (NULL); /* return NULL since the service does not handle messages. */ } } else { /* The message is sent to an other service. Forward it. * For example, the config proxy class in src/ibusconfig.c sets its "g-name" property (i.e. destination) to IBUS_SERVICE_CONFIG. */ bus_dbus_impl_forward_message (dbus, connection, message); g_object_unref (message); return NULL; } } else { /* is outgoing message */ if (g_dbus_message_get_sender (message) == NULL) { if (g_dbus_message_get_locked (message)) { GDBusMessage *new_message = g_dbus_message_copy (message, NULL); g_assert (new_message != NULL); g_object_unref (message); message = new_message; } /* If the message is sending from ibus-daemon directly, * we set the sender to org.freedesktop.DBus */ g_dbus_message_set_sender (message, "org.freedesktop.DBus"); } /* dispatch the outgoing message by rules. */ bus_dbus_impl_dispatch_message_by_rule (dbus, message, connection); return message; } } BusDBusImpl * bus_dbus_impl_get_default (void) { static BusDBusImpl *dbus = NULL; if (dbus == NULL) { dbus = (BusDBusImpl *) g_object_new (BUS_TYPE_DBUS_IMPL, "object-path", "/org/freedesktop/DBus", NULL); } return dbus; } static void bus_dbus_impl_connection_destroy_cb (BusConnection *connection, BusDBusImpl *dbus) { const gchar *unique_name = bus_connection_get_unique_name (connection); const GList *names = NULL; BusNameService *service = NULL; if (unique_name != NULL) { GList *p = dbus->start_service_calls; while (p != NULL) { BusMethodCall *call = p->data; GList *next = p->next; if (call->connection == connection) { bus_method_call_free ((BusMethodCall *) p->data); dbus->start_service_calls = g_list_delete_link (dbus->start_service_calls, p); } p = next; } g_hash_table_remove (dbus->unique_names, unique_name); g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, connection, unique_name, unique_name, ""); } /* service->owners is the queue of connections. * If the connection is the primary owner and * bus_name_service_remove_owner() is called, the owner is removed * in the queue and the next owner will become the primary owner * automatically because service->owners is just a GSList. * If service->owners == NULL, it's good to remove the service in * dbus->names. * I suppose dbus->names are the global queue for every connection * and connection->names are the private queue of the connection. */ names = bus_connection_get_names (connection); while (names != NULL) { const gchar *name = (const gchar *)names->data; service = (BusNameService *) g_hash_table_lookup (dbus->names, name); g_assert (service != NULL); BusConnectionOwner *owner = bus_name_service_find_owner (service, connection); g_assert (owner != NULL); bus_name_service_remove_owner (service, owner, dbus); if (service->owners == NULL) { g_hash_table_remove (dbus->names, service->name); } bus_connection_owner_free (owner); names = names->next; } dbus->connections = g_list_remove (dbus->connections, connection); g_object_unref (connection); } gboolean bus_dbus_impl_new_connection (BusDBusImpl *dbus, BusConnection *connection) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (BUS_IS_CONNECTION (connection)); g_assert (g_list_find (dbus->connections, connection) == NULL); g_object_ref_sink (connection); dbus->connections = g_list_append (dbus->connections, connection); bus_connection_set_filter (connection, bus_dbus_impl_connection_filter_cb, g_object_ref (dbus), g_object_unref); g_signal_connect (connection, "destroy", G_CALLBACK (bus_dbus_impl_connection_destroy_cb), dbus); /* add introspection_xml[] (see above) to the connection. */ ibus_service_register ((IBusService *) dbus, bus_connection_get_dbus_connection (connection), NULL); GList *p; for (p = dbus->objects; p != NULL; p = p->next) { /* add all introspection xmls in dbus->objects to the connection. */ ibus_service_register ((IBusService *) p->data, bus_connection_get_dbus_connection (connection), NULL); } return TRUE; } BusConnection * bus_dbus_impl_get_connection_by_name (BusDBusImpl *dbus, const gchar *name) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); if (G_LIKELY (g_dbus_is_unique_name (name))) { return (BusConnection *) g_hash_table_lookup (dbus->unique_names, name); } else { BusNameService *service; BusConnectionOwner *owner; service = (BusNameService *) g_hash_table_lookup (dbus->names, name); if (service == NULL) { return NULL; } owner = bus_name_service_get_primary_owner (service); return owner ? owner->conn : NULL; } } typedef struct _BusForwardData BusForwardData; struct _BusForwardData { GDBusMessage *message; BusConnection *sender_connection; }; /** * bus_dbus_impl_forward_message_ible_cb: * * Process the first element of the dbus->forward_queue. The first element is forwarded by g_dbus_connection_send_message. */ static gboolean bus_dbus_impl_forward_message_idle_cb (BusDBusImpl *dbus) { g_return_val_if_fail (dbus->forward_queue != NULL, FALSE); g_mutex_lock (&dbus->forward_lock); BusForwardData *data = (BusForwardData *) dbus->forward_queue->data; dbus->forward_queue = g_list_delete_link (dbus->forward_queue, dbus->forward_queue); gboolean has_message = (dbus->forward_queue != NULL); g_mutex_unlock (&dbus->forward_lock); do { const gchar *destination = g_dbus_message_get_destination (data->message); BusConnection *dest_connection = NULL; if (destination != NULL) dest_connection = bus_dbus_impl_get_connection_by_name (dbus, destination); if (dest_connection != NULL) { /* FIXME workaround for gdbus. gdbus can not set an empty body message with signature '()' */ if (g_dbus_message_get_body (data->message) == NULL) g_dbus_message_set_signature (data->message, NULL); GError *error = NULL; gboolean retval = g_dbus_connection_send_message ( bus_connection_get_dbus_connection (dest_connection), data->message, G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL, NULL, &error); if (retval) break; g_warning ("forward message failed: %s.", error->message); g_error_free (error); } /* can not forward message */ if (g_dbus_message_get_message_type (data->message) != G_DBUS_MESSAGE_TYPE_METHOD_CALL) { /* skip non method messages */ break; } /* reply an error message, if forward method call message failed. */ GDBusMessage *reply_message = g_dbus_message_new_method_error (data->message, "org.freedesktop.DBus.Error.ServiceUnknown ", "The service name is '%s'.", destination); g_dbus_message_set_sender (reply_message, "org.freedesktop.DBus"); g_dbus_message_set_destination (reply_message, bus_connection_get_unique_name (data->sender_connection)); g_dbus_connection_send_message (bus_connection_get_dbus_connection (data->sender_connection), reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); g_object_unref (reply_message); } while (0); g_object_unref (data->message); g_object_unref (data->sender_connection); g_slice_free (BusForwardData, data); return has_message; } void bus_dbus_impl_forward_message (BusDBusImpl *dbus, BusConnection *connection, GDBusMessage *message) { /* WARNING - this function could be called by the GDBus's worker thread. So you should not call thread unsafe IBus functions. */ g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (BUS_IS_CONNECTION (connection)); g_assert (G_IS_DBUS_MESSAGE (message)); if (G_UNLIKELY (IBUS_OBJECT_DESTROYED (dbus))) return; /* FIXME the check above might not be sufficient. dbus object could be destroyed in the main thread right after the check, though the * dbus structure itself would not be freed (since the dbus object is ref'ed in bus_dbus_impl_new_connection.) * Anyway, it'd be better to investigate whether the thread safety issue could cause any real problems. */ BusForwardData *data = g_slice_new (BusForwardData); data->message = g_object_ref (message); data->sender_connection = g_object_ref (connection); g_mutex_lock (&dbus->forward_lock); gboolean is_running = (dbus->forward_queue != NULL); dbus->forward_queue = g_list_append (dbus->forward_queue, data); g_mutex_unlock (&dbus->forward_lock); if (!is_running) { g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) bus_dbus_impl_forward_message_idle_cb, g_object_ref (dbus), (GDestroyNotify) g_object_unref); /* the idle callback function will be called from the ibus's main thread. */ } } static BusDispatchData * bus_dispatch_data_new (GDBusMessage *message, BusConnection *skip_connection) { BusDispatchData *data = g_slice_new (BusDispatchData); data->message = (GDBusMessage *) g_object_ref (message); if (skip_connection) { data->skip_connection = (BusConnection *) g_object_ref (skip_connection); } else { data->skip_connection = NULL; } return data; } static void bus_dispatch_data_free (BusDispatchData *data) { g_object_unref (data->message); if (data->skip_connection) g_object_unref (data->skip_connection); g_slice_free (BusDispatchData, data); } /** * bus_dbus_impl_dispatch_message_by_rule_idle_cb: * * Process the first element of the dbus->dispatch_queue. */ static gboolean bus_dbus_impl_dispatch_message_by_rule_idle_cb (BusDBusImpl *dbus) { g_return_val_if_fail (dbus->dispatch_queue != NULL, FALSE); if (G_UNLIKELY (IBUS_OBJECT_DESTROYED (dbus))) { /* dbus was destryed */ g_mutex_lock (&dbus->dispatch_lock); g_list_free_full (dbus->dispatch_queue, (GDestroyNotify) bus_dispatch_data_free); dbus->dispatch_queue = NULL; g_mutex_unlock (&dbus->dispatch_lock); return FALSE; /* return FALSE to prevent this callback to be called again. */ } /* remove fist node */ g_mutex_lock (&dbus->dispatch_lock); BusDispatchData *data = (BusDispatchData *) dbus->dispatch_queue->data; dbus->dispatch_queue = g_list_delete_link (dbus->dispatch_queue, dbus->dispatch_queue); gboolean has_message = (dbus->dispatch_queue != NULL); g_mutex_unlock (&dbus->dispatch_lock); GList *link = NULL; GList *recipients = NULL; /* check each match rules, and get recipients */ for (link = dbus->rules; link != NULL; link = link->next) { GList *list = bus_match_rule_get_recipients ((BusMatchRule *) link->data, data->message); recipients = g_list_concat (recipients, list); } /* send message to each recipients */ for (link = recipients; link != NULL; link = link->next) { BusConnection *connection = (BusConnection *) link->data; if (G_LIKELY (connection != data->skip_connection)) { g_dbus_connection_send_message (bus_connection_get_dbus_connection (connection), data->message, G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL, NULL, NULL); } } g_list_free (recipients); bus_dispatch_data_free (data); return has_message; /* remove this idle callback if no message is left by returning FALSE. */ } void bus_dbus_impl_dispatch_message_by_rule (BusDBusImpl *dbus, GDBusMessage *message, BusConnection *skip_connection) { /* WARNING - this function could be called by the GDBus's worker thread. So you should not call thread unsafe IBus functions. */ g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (message != NULL); g_assert (skip_connection == NULL || BUS_IS_CONNECTION (skip_connection)); if (G_UNLIKELY (IBUS_OBJECT_DESTROYED (dbus))) return; /* FIXME - see the FIXME comment in bus_dbus_impl_forward_message. */ static GQuark dispatched_quark = 0; if (dispatched_quark == 0) { dispatched_quark = g_quark_from_static_string ("DISPATCHED"); } /* A message sent or forwarded by bus_dbus_impl_dispatch_message_by_rule_idle_cb is also processed by the filter callback. * If this message has been dispatched by rule, do nothing. */ if (g_object_get_qdata ((GObject *) message, dispatched_quark) != NULL) return; g_object_set_qdata ((GObject *) message, dispatched_quark, GINT_TO_POINTER (1)); /* append dispatch data into the queue, and start idle task if necessary */ g_mutex_lock (&dbus->dispatch_lock); gboolean is_running = (dbus->dispatch_queue != NULL); dbus->dispatch_queue = g_list_append (dbus->dispatch_queue, bus_dispatch_data_new (message, skip_connection)); g_mutex_unlock (&dbus->dispatch_lock); if (!is_running) { g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) bus_dbus_impl_dispatch_message_by_rule_idle_cb, g_object_ref (dbus), (GDestroyNotify) g_object_unref); /* the idle callback function will be called from the ibus's main thread. */ } } static void bus_dbus_impl_object_destroy_cb (IBusService *object, BusDBusImpl *dbus) { bus_dbus_impl_unregister_object (dbus, object); } gboolean bus_dbus_impl_register_object (BusDBusImpl *dbus, IBusService *object) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (IBUS_IS_SERVICE (object)); if (G_UNLIKELY (IBUS_OBJECT_DESTROYED (dbus))) { return FALSE; } dbus->objects = g_list_prepend (dbus->objects, g_object_ref (object)); g_signal_connect (object, "destroy", G_CALLBACK (bus_dbus_impl_object_destroy_cb), dbus); GList *p; for (p = dbus->connections; p != NULL; p = p->next) { GDBusConnection *connection = bus_connection_get_dbus_connection ((BusConnection *) p->data); if (connection != ibus_service_get_connection ((IBusService *) object)) ibus_service_register ((IBusService *) object, bus_connection_get_dbus_connection ((BusConnection *) p->data), NULL); } return TRUE; } gboolean bus_dbus_impl_unregister_object (BusDBusImpl *dbus, IBusService *object) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (IBUS_IS_SERVICE (object)); GList *p = g_list_find (dbus->objects, object); if (p == NULL) return FALSE; g_signal_handlers_disconnect_by_func (object, G_CALLBACK (bus_dbus_impl_object_destroy_cb), dbus); dbus->objects = g_list_delete_link (dbus->objects, p); if (!IBUS_OBJECT_DESTROYED (object)) { GList *p; for (p = dbus->connections; p != NULL; p = p->next) { ibus_service_unregister ((IBusService *) object, bus_connection_get_dbus_connection ((BusConnection *) p->data)); } } g_object_unref (object); return TRUE; } ibus-1.5.11/bus/ibus-daemon.1.in0000644000000000000000000000412412551654123013120 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2013. .\" Copyright (c) Peng Huang , 2013. .\" .TH IBUS-DAEMON "1" "April 2010" "@VERSION@" "User Commands" .SH NAME .B ibus\-daemon \- daemon program for ibus .SH SYNOPSIS .B ibus\-daemon [\fIOPTION\fR]... .SH DESCRIPTION .PP IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. It also may help developers to develop input method easily. .PP .B ibus\-daemon is a daemon program for ibus and it is also a start up program for users to activate ibus daemon, engines and panel. .SS "Help Options:" .TP \fB\-h\fR, \fB\-\-help\fR Show help options .SS "Application Options:" .TP \fB\-d\fR, \fB\-\-daemonize\fR run ibus as background process. .TP \fB\-s\fR, \fB\-\-single\fR do not execute panel and config module. .TP \fB\-x\fR, \fB\-\-xim\fR execute ibus XIM server. .TP \fB\-n\fR, \fB\-\-desktop\fR=\fIname\fR specify the name of desktop session. [default=gnome] .TP \fB\-p\fR, \fB\-\-panel\fR=\fIcmdline\fR specify the cmdline of panel program. .TP \fB\-c\fR, \fB\-\-config\fR=\fIcmdline\fR specify the cmdline of config program. .TP \fB\-a\fR, \fB\-\-address\fR=\fIaddress\fR specify the address of ibus daemon. .TP \fB\-r\fR, \fB\-\-replace\fR if there is an old ibus\-daemon is running, it will be replaced. .TP \fB\-t\fR, \fB\-\-cache\fR=\fImode\fR [default is auto] force to re\-scan components, and re\-create registry cache. auto, refresh, none is available. .TP \fB\-o\fR, \fB\-\-timeout\fR=\fItimeout\fR [default is 2000] dbus reply timeout in milliseconds. .TP \fB\-j\fR, \fB\-\-monitor\-timeout\fR=\fItimeout\fR [default is 0] timeout of poll changes of engines in seconds. 0 to disable it. .TP \fB\-m\fR, \fB\-\-mem\-profile\fR enable memory profile, send SIGUSR2 to print out the memory profile. .TP \fB\-v\fR, \fB\-\-verbose\fR verbose. .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues .SH "SEE ALSO" .BR ibus (1) ibus-1.5.11/bus/matchrule.h0000644000000000000000000001034412551654123012364 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_MATCH_RULE_H_ #define __BUS_MATCH_RULE_H_ #include #include "connection.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_MATCH_RULE \ (bus_match_rule_get_type ()) #define BUS_MATCH_RULE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_MATCH_RULE, BusMatchRule)) #define BUS_MATCH_RULE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_MATCH_RULE, BusMatchRuleClass)) #define BUS_IS_MATCH_RULE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_MATCH_RULE)) #define BUS_IS_MATCH_RULE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_MATCH_RULE)) #define BUS_MATCH_RULE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_MATCH_RULE, BusMatchRuleClass)) G_BEGIN_DECLS typedef struct _BusMatchRule BusMatchRule; typedef struct _BusMatchRuleClass BusMatchRuleClass; GType bus_match_rule_get_type (void); BusMatchRule *bus_match_rule_new (const gchar *text); BusMatchRule *bus_match_rule_ref (BusMatchRule *rule); void bus_match_rule_unref (BusMatchRule *rule); void bus_match_rule_free (BusMatchRule *rule); gboolean bus_match_rule_set_message_type (BusMatchRule *rule, gint type); gboolean bus_match_rule_set_sender (BusMatchRule *rule, const gchar *sender); gboolean bus_match_rule_set_interface (BusMatchRule *rule, const gchar *interface); gboolean bus_match_rule_set_member (BusMatchRule *rule, const gchar *member); gboolean bus_match_rule_set_path (BusMatchRule *rule, const gchar *path); gboolean bus_match_rule_set_destination (BusMatchRule *rule, const gchar *dest); gboolean bus_match_rule_set_arg (BusMatchRule *rule, guint arg_i, const gchar *arg); gboolean bus_match_rule_match (BusMatchRule *rule, GDBusMessage *message); gboolean bus_match_rule_is_equal (BusMatchRule *a, BusMatchRule *b); void bus_match_rule_add_recipient (BusMatchRule *rule, BusConnection *connection); void bus_match_rule_remove_recipient (BusMatchRule *rule, BusConnection *connection); GList *bus_match_rule_get_recipients (BusMatchRule *rule, GDBusMessage *message); G_END_DECLS #endif ibus-1.5.11/bus/ibusimpl.c0000644000000000000000000021215412551654123012222 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusimpl.h" #include #include #include #include #include #include #include "connection.h" #include "dbusimpl.h" #include "factoryproxy.h" #include "global.h" #include "inputcontext.h" #include "panelproxy.h" #include "server.h" #include "types.h" struct _BusIBusImpl { IBusService parent; /* instance members */ GHashTable *factory_dict; /* registered components */ GList *registered_components; GList *contexts; /* a fake input context for global engine support */ BusInputContext *fake_context; /* a list of engines that are started by a user (without the --ibus * command line flag.) */ GList *register_engine_list; /* if TRUE, ibus-daemon uses a keysym translated by the system * (i.e. XKB) as-is. otherwise, ibus-daemon itself converts keycode * into keysym. */ gboolean use_sys_layout; gboolean embed_preedit_text; IBusRegistry *registry; /* a list of BusComponent objects that are created from component XML * files (or from the cache of them). */ GList *components; /* a mapping from an engine name (e.g. 'pinyin') to the corresponding * IBusEngineDesc object. */ GHashTable *engine_table; BusInputContext *focused_context; BusPanelProxy *panel; /* a default keymap of ibus-daemon (usually "us") which is used only * when use_sys_layout is FALSE. */ IBusKeymap *keymap; gboolean use_global_engine; gchar *global_engine_name; gchar *global_previous_engine_name; }; struct _BusIBusImplClass { IBusServiceClass parent; /* class members */ }; enum { LAST_SIGNAL, }; enum { PROP_0, }; /* static guint _signals[LAST_SIGNAL] = { 0 }; */ /* functions prototype */ static void bus_ibus_impl_destroy (BusIBusImpl *ibus); static void bus_ibus_impl_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant * bus_ibus_impl_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean bus_ibus_impl_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void bus_ibus_impl_registry_init (BusIBusImpl *ibus); static void bus_ibus_impl_registry_changed (BusIBusImpl *ibus); static void bus_ibus_impl_registry_destroy (BusIBusImpl *ibus); static void bus_ibus_impl_component_name_owner_changed (BusIBusImpl *ibus, const gchar *name, const gchar *old_name, const gchar *new_name); static void bus_ibus_impl_global_engine_changed (BusIBusImpl *ibus); static void bus_ibus_impl_set_context_engine_from_desc (BusIBusImpl *ibus, BusInputContext *context, IBusEngineDesc *desc); static BusInputContext *bus_ibus_impl_create_input_context (BusIBusImpl *ibus, BusConnection *connection, const gchar *client); static IBusEngineDesc *bus_ibus_impl_get_engine_desc (BusIBusImpl *ibus, const gchar *engine_name); static void bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, BusInputContext *context); static void bus_ibus_impl_property_changed (BusIBusImpl *service, const gchar *property_name, GVariant *value); /* some callback functions */ static void _context_engine_changed_cb (BusInputContext *context, BusIBusImpl *ibus); /* The interfaces available in this class, which consists of a list of * methods this class implements and a list of signals this class may emit. * Method calls to the interface that are not defined in this XML will * be automatically rejected by the GDBus library (see src/ibusservice.c * for details.) * Implement org.freedesktop.DBus.Properties * http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties */ static const gchar introspection_xml[] = "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"; G_DEFINE_TYPE (BusIBusImpl, bus_ibus_impl, IBUS_TYPE_SERVICE) static void bus_ibus_impl_class_init (BusIBusImplClass *class) { IBUS_OBJECT_CLASS (class)->destroy = (IBusObjectDestroyFunc) bus_ibus_impl_destroy; /* override the parent class's implementation. */ IBUS_SERVICE_CLASS (class)->service_method_call = bus_ibus_impl_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = bus_ibus_impl_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = bus_ibus_impl_service_set_property; /* register the xml so that bus_ibus_impl_service_method_call will be * called on a method call defined in the xml (e.g. 'GetAddress'.) */ ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); } /** * _panel_destroy_cb: * * A callback function which is called when (1) the connection to the panel process is terminated, * or (2) ibus_proxy_destroy (ibus->panel); is called. See src/ibusproxy.c for details. */ static void _panel_destroy_cb (BusPanelProxy *panel, BusIBusImpl *ibus) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_IBUS_IMPL (ibus)); g_return_if_fail (ibus->panel == panel); ibus->panel = NULL; g_object_unref (panel); } static void _registry_changed_cb (IBusRegistry *registry, BusIBusImpl *ibus) { bus_ibus_impl_registry_changed (ibus); } /* * _dbus_name_owner_changed_cb: * * A callback function to be called when the name-owner-changed signal is sent to the dbus object. * This usually means a client (e.g. a panel/config/engine process or an application) is connected/disconnected to/from the bus. */ static void _dbus_name_owner_changed_cb (BusDBusImpl *dbus, BusConnection *orig_connection, const gchar *name, const gchar *old_name, const gchar *new_name, BusIBusImpl *ibus) { g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); g_assert (old_name != NULL); g_assert (new_name != NULL); g_assert (BUS_IS_IBUS_IMPL (ibus)); if (g_strcmp0 (name, IBUS_SERVICE_PANEL) == 0) { if (g_strcmp0 (new_name, "") != 0) { /* a Panel process is started. */ BusConnection *connection; BusInputContext *context = NULL; if (ibus->panel != NULL) { ibus_proxy_destroy ((IBusProxy *) ibus->panel); /* panel should be NULL after destroy. See _panel_destroy_cb for details. */ g_assert (ibus->panel == NULL); } connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name); g_return_if_fail (connection != NULL); ibus->panel = bus_panel_proxy_new (connection); g_signal_connect (ibus->panel, "destroy", G_CALLBACK (_panel_destroy_cb), ibus); if (ibus->focused_context != NULL) { context = ibus->focused_context; } else if (ibus->use_global_engine) { context = ibus->fake_context; } if (context != NULL) { BusEngineProxy *engine; bus_panel_proxy_focus_in (ibus->panel, context); engine = bus_input_context_get_engine (context); if (engine != NULL) { IBusPropList *prop_list = bus_engine_proxy_get_properties (engine); bus_panel_proxy_register_properties (ibus->panel, prop_list); } } } } bus_ibus_impl_component_name_owner_changed (ibus, name, old_name, new_name); } /** * bus_ibus_impl_init: * * The constructor of BusIBusImpl. Initialize all member variables of a BusIBusImpl object. */ static void bus_ibus_impl_init (BusIBusImpl *ibus) { ibus->factory_dict = g_hash_table_new_full ( g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref); ibus->fake_context = bus_input_context_new (NULL, "fake"); g_object_ref_sink (ibus->fake_context); bus_dbus_impl_register_object (BUS_DEFAULT_DBUS, (IBusService *) ibus->fake_context); bus_input_context_set_capabilities (ibus->fake_context, IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT); g_signal_connect (ibus->fake_context, "engine-changed", G_CALLBACK (_context_engine_changed_cb), ibus); bus_input_context_focus_in (ibus->fake_context); ibus->register_engine_list = NULL; ibus->contexts = NULL; ibus->focused_context = NULL; ibus->panel = NULL; ibus->keymap = ibus_keymap_get ("us"); ibus->use_sys_layout = TRUE; ibus->embed_preedit_text = TRUE; ibus->use_global_engine = TRUE; ibus->global_engine_name = NULL; ibus->global_previous_engine_name = NULL; /* focus the fake_context, if use_global_engine is enabled. */ if (ibus->use_global_engine) bus_ibus_impl_set_focused_context (ibus, ibus->fake_context); g_signal_connect (BUS_DEFAULT_DBUS, "name-owner-changed", G_CALLBACK (_dbus_name_owner_changed_cb), ibus); bus_ibus_impl_registry_init (ibus); } /** * bus_ibus_impl_destroy: * * The destructor of BusIBusImpl. */ static void bus_ibus_impl_destroy (BusIBusImpl *ibus) { pid_t pid; glong timeout; gint status; gboolean flag; g_list_foreach (ibus->components, (GFunc) bus_component_stop, NULL); pid = 0; timeout = 0; flag = FALSE; while (1) { while ((pid = waitpid (0, &status, WNOHANG)) > 0); if (pid == -1) { /* all children finished */ break; } if (pid == 0) { /* no child status changed */ g_usleep (1000); timeout += 1000; if (timeout >= G_USEC_PER_SEC) { if (flag == FALSE) { gpointer old; old = signal (SIGTERM, SIG_IGN); /* send TERM signal to the whole process group (i.e. engines, panel, and config daemon.) */ kill (-getpid (), SIGTERM); signal (SIGTERM, old); flag = TRUE; } else { g_warning ("Not every child processes exited!"); break; } } } } g_list_free_full (ibus->register_engine_list, g_object_unref); ibus->register_engine_list = NULL; if (ibus->factory_dict != NULL) { g_hash_table_destroy (ibus->factory_dict); ibus->factory_dict = NULL; } if (ibus->keymap != NULL) { g_object_unref (ibus->keymap); ibus->keymap = NULL; } g_free (ibus->global_engine_name); ibus->global_engine_name = NULL; g_free (ibus->global_previous_engine_name); ibus->global_previous_engine_name = NULL; if (ibus->fake_context) { g_object_unref (ibus->fake_context); ibus->fake_context = NULL; } bus_ibus_impl_registry_destroy (ibus); IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (IBUS_OBJECT (ibus)); } /** * _ibus_get_address: * * Implement the "Address" method call of the org.freedesktop.IBus interface. */ static GVariant * _ibus_get_address (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { if (error) { *error = NULL; } return g_variant_new_string (bus_server_get_address ()); } static void _ibus_get_address_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.GetAddress() is deprecated!"); variant = _ibus_get_address (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", g_variant_get_string (variant, NULL))); g_variant_unref (variant); } static IBusEngineDesc * _find_engine_desc_by_name (BusIBusImpl *ibus, const gchar *engine_name) { IBusEngineDesc *desc = NULL; GList *p; /* find engine in registered engine list */ for (p = ibus->register_engine_list; p != NULL; p = p->next) { desc = (IBusEngineDesc *) p->data; if (g_strcmp0 (ibus_engine_desc_get_name (desc), engine_name) == 0) return desc; } return NULL; } /** * _context_request_engine_cb: * * A callback function to be called when the "request-engine" signal is sent to the context. */ static IBusEngineDesc * _context_request_engine_cb (BusInputContext *context, const gchar *engine_name, BusIBusImpl *ibus) { if (engine_name == NULL || engine_name[0] == '\0') engine_name = DEFAULT_ENGINE; return bus_ibus_impl_get_engine_desc (ibus, engine_name); } /** * bus_ibus_impl_get_engine_desc: * * Get the IBusEngineDesc by engine_name. If the engine_name is NULL, return * a default engine desc. */ static IBusEngineDesc * bus_ibus_impl_get_engine_desc (BusIBusImpl *ibus, const gchar *engine_name) { g_return_val_if_fail (engine_name != NULL, NULL); g_return_val_if_fail (engine_name[0] != '\0', NULL); IBusEngineDesc *desc = _find_engine_desc_by_name (ibus, engine_name); if (desc == NULL) { desc = (IBusEngineDesc *) g_hash_table_lookup (ibus->engine_table, engine_name); } return desc; } static void bus_ibus_impl_set_context_engine_from_desc (BusIBusImpl *ibus, BusInputContext *context, IBusEngineDesc *desc) { bus_input_context_set_engine_by_desc (context, desc, g_gdbus_timeout, /* timeout in msec. */ NULL, /* we do not cancel the call. */ NULL, /* use the default callback function. */ NULL); } /** * bus_ibus_impl_set_focused_context: * * Set the current focused context. */ static void bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, BusInputContext *context) { g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (context == NULL || BUS_IS_INPUT_CONTEXT (context)); g_assert (context == NULL || bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS); /* Do noting if it is focused context. */ if (ibus->focused_context == context) { return; } BusEngineProxy *engine = NULL; guint purpose = 0; guint hints = 0; if (ibus->focused_context) { if (ibus->use_global_engine) { /* dettach engine from the focused context */ engine = bus_input_context_get_engine (ibus->focused_context); if (engine) { g_object_ref (engine); bus_input_context_set_engine (ibus->focused_context, NULL); } } if (ibus->panel != NULL) bus_panel_proxy_focus_out (ibus->panel, ibus->focused_context); bus_input_context_get_content_type (ibus->focused_context, &purpose, &hints); g_object_unref (ibus->focused_context); ibus->focused_context = NULL; } if (context == NULL && ibus->use_global_engine) { context = ibus->fake_context; if (context) bus_input_context_set_content_type (context, purpose, hints); } if (context) { ibus->focused_context = (BusInputContext *) g_object_ref (context); /* attach engine to the focused context */ if (engine != NULL) { bus_input_context_set_engine (context, engine); bus_input_context_enable (context); } if (ibus->panel != NULL) bus_panel_proxy_focus_in (ibus->panel, context); } if (engine != NULL) g_object_unref (engine); } static void bus_ibus_impl_set_global_engine (BusIBusImpl *ibus, BusEngineProxy *engine) { if (!ibus->use_global_engine) return; if (ibus->focused_context) { bus_input_context_set_engine (ibus->focused_context, engine); } else if (ibus->fake_context) { bus_input_context_set_engine (ibus->fake_context, engine); } } static void bus_ibus_impl_set_global_engine_by_name (BusIBusImpl *ibus, const gchar *name) { if (!ibus->use_global_engine) return; BusInputContext *context = ibus->focused_context != NULL ? ibus->focused_context : ibus->fake_context; if (context == NULL) { return; } if (g_strcmp0 (name, ibus->global_engine_name) == 0) { /* If the user requested the same global engine, then we just enable the * original one. */ bus_input_context_enable (context); return; } /* If there is a focused input context, then we just change the engine of * the focused context, which will then change the global engine * automatically. Otherwise, we need to change the global engine directly. */ IBusEngineDesc *desc = NULL; desc = bus_ibus_impl_get_engine_desc (ibus, name); if (desc != NULL) { bus_ibus_impl_set_context_engine_from_desc (ibus, context, desc); } } /* When preload_engines and register_engiens are changed, this function * will check the global engine. If necessay, it will change the global engine. */ static void bus_ibus_impl_check_global_engine (BusIBusImpl *ibus) { GList *engine_list = NULL; /* do nothing */ if (!ibus->use_global_engine) return; /* The current global engine is not removed, so do nothing. */ if (ibus->global_engine_name != NULL && _find_engine_desc_by_name (ibus, ibus->global_engine_name)) { return; } /* If the previous engine is available, then just switch to it. */ if (ibus->global_previous_engine_name != NULL && _find_engine_desc_by_name (ibus, ibus->global_previous_engine_name)) { bus_ibus_impl_set_global_engine_by_name ( ibus, ibus->global_previous_engine_name); return; } /* Just switch to the fist engine in the list. */ engine_list = ibus->register_engine_list; if (engine_list) { IBusEngineDesc *engine_desc = (IBusEngineDesc *)engine_list->data; bus_ibus_impl_set_global_engine_by_name (ibus, ibus_engine_desc_get_name (engine_desc)); return; } /* No engine available? Just disable global engine. */ bus_ibus_impl_set_global_engine (ibus, NULL); } /** * _context_engine_changed_cb: * * A callback function to be called when the "engine-changed" signal is sent to the context. * Update global engine as well if necessary. */ static void _context_engine_changed_cb (BusInputContext *context, BusIBusImpl *ibus) { if (!ibus->use_global_engine) return; if ((context == ibus->focused_context) || (ibus->focused_context == NULL && context == ibus->fake_context)) { BusEngineProxy *engine = bus_input_context_get_engine (context); if (engine != NULL) { /* only set global engine if engine is not NULL */ const gchar *name = ibus_engine_desc_get_name (bus_engine_proxy_get_desc (engine)); if (g_strcmp0 (name, ibus->global_engine_name) == 0) return; g_free (ibus->global_previous_engine_name); ibus->global_previous_engine_name = ibus->global_engine_name; ibus->global_engine_name = g_strdup (name); bus_ibus_impl_global_engine_changed (ibus); } } } /** * _context_focus_in_cb: * * A callback function to be called when the "focus-in" signal is sent to the context. * If necessary, enables the global engine on the context and update ibus->focused_context. */ static void _context_focus_in_cb (BusInputContext *context, BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (BUS_IS_INPUT_CONTEXT (context)); /* Do nothing if context does not support focus. * The global engine shoule be detached from the focused context. */ if ((bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) == 0) { return; } bus_ibus_impl_set_focused_context (ibus, context); } /** * _context_focus_out_cb: * * A callback function to be called when the "focus-out" signal is sent to the context. */ static void _context_focus_out_cb (BusInputContext *context, BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (BUS_IS_INPUT_CONTEXT (context)); /* Do noting if context does not support focus. * Actually, the context should emit focus signals, if it does not support focus */ if ((bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) == 0) { return; } /* Do noting if it is not focused context. */ if (ibus->focused_context != context) { return; } bus_ibus_impl_set_focused_context (ibus, NULL); } /** * _context_destroy_cb: * * A callback function to be called when the "destroy" signal is sent to the * context. */ static void _context_destroy_cb (BusInputContext *context, BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context == ibus->focused_context) bus_ibus_impl_set_focused_context (ibus, NULL); if (ibus->panel && bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) bus_panel_proxy_destroy_context (ibus->panel, context); ibus->contexts = g_list_remove (ibus->contexts, context); g_object_unref (context); } /** * bus_ibus_impl_create_input_context: * @client: A name of a client. e.g. "gtk-im" * @returns: A BusInputContext object. * * Create a new BusInputContext object for the client. */ static BusInputContext * bus_ibus_impl_create_input_context (BusIBusImpl *ibus, BusConnection *connection, const gchar *client) { BusInputContext *context = bus_input_context_new (connection, client); g_object_ref_sink (context); ibus->contexts = g_list_append (ibus->contexts, context); /* Installs glib signal handlers so that the ibus object could be notified when e.g. an IBus.InputContext D-Bus method is called. */ static const struct { gchar *name; GCallback callback; } signals [] = { { "request-engine", G_CALLBACK (_context_request_engine_cb) }, { "engine-changed", G_CALLBACK (_context_engine_changed_cb) }, { "focus-in", G_CALLBACK (_context_focus_in_cb) }, { "focus-out", G_CALLBACK (_context_focus_out_cb) }, { "destroy", G_CALLBACK (_context_destroy_cb) }, }; gint i; for (i = 0; i < G_N_ELEMENTS (signals); i++) { g_signal_connect (context, signals[i].name, signals[i].callback, ibus); } bus_input_context_enable (context); /* register the context object so that the object could handle IBus.InputContext method calls. */ bus_dbus_impl_register_object (BUS_DEFAULT_DBUS, (IBusService *) context); g_object_ref (context); return context; } /** * _ibus_create_input_context: * * Implement the "CreateInputContext" method call of the org.freedesktop.IBus interface. */ static void _ibus_create_input_context (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar *client_name = NULL; // e.g. "gtk-im" g_variant_get (parameters, "(&s)", &client_name); BusConnection *connection = bus_connection_lookup (g_dbus_method_invocation_get_connection (invocation)); BusInputContext *context = bus_ibus_impl_create_input_context (ibus, connection, client_name); if (context) { const gchar *path = ibus_service_get_object_path ((IBusService *) context); /* the format-string 'o' is for a D-Bus object path. */ g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", path)); g_object_unref (context); } else { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Create input context failed!"); } } /** * _ibus_get_current_input_context: * * Implement the "CurrentInputContext" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_current_input_context (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { if (error) { *error = NULL; } if (!ibus->focused_context) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No focused input context"); return NULL; } else { const gchar *path = ibus_service_get_object_path ( (IBusService *) ibus->focused_context); /* the format-string 'o' is for a D-Bus object path. */ return g_variant_new_object_path (path); } } static void _ibus_current_input_context_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GVariant *variant = NULL; GError *error = NULL; g_warning ("org.freedesktop.IBus.CurrentInputContext() is deprecated!"); variant = _ibus_get_current_input_context (ibus, connection, &error); if (variant == NULL) { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "%s", error->message); g_error_free (error); } else { const gchar *path = g_variant_get_string (variant, NULL); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", path)); g_variant_unref (variant); } } static void _component_destroy_cb (BusComponent *component, BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (BUS_IS_COMPONENT (component)); ibus->registered_components = g_list_remove (ibus->registered_components, component); /* remove engines from engine_list */ GList *engines = bus_component_get_engines (component); GList *p; for (p = engines; p != NULL; p = p->next) { if (g_list_find (ibus->register_engine_list, p->data)) { ibus->register_engine_list = g_list_remove (ibus->register_engine_list, p->data); g_object_unref (p->data); } } g_list_free (engines); g_object_unref (component); bus_ibus_impl_check_global_engine (ibus); } /** * _ibus_register_component: * * Implement the "RegisterComponent" method call of the * org.freedesktop.IBus interface. */ static void _ibus_register_component (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GVariant *variant = g_variant_get_child_value (parameters, 0); IBusComponent *component = (IBusComponent *) ibus_serializable_deserialize (variant); if (!IBUS_IS_COMPONENT (component)) { if (component) g_object_unref (component); g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "The first argument should be an IBusComponent."); return; } BusConnection *connection = bus_connection_lookup ( g_dbus_method_invocation_get_connection (invocation)); BusFactoryProxy *factory = bus_factory_proxy_new (connection); if (factory == NULL) { g_object_unref (component); g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Create factory failed."); return; } g_object_ref_sink (component); BusComponent *buscomp = bus_component_new (component, factory); bus_component_set_destroy_with_factory (buscomp, TRUE); g_object_unref (component); g_object_unref (factory); ibus->registered_components = g_list_append (ibus->registered_components, g_object_ref_sink (buscomp)); GList *engines = bus_component_get_engines (buscomp); g_list_foreach (engines, (GFunc) g_object_ref, NULL); ibus->register_engine_list = g_list_concat (ibus->register_engine_list, engines); g_signal_connect (buscomp, "destroy", G_CALLBACK (_component_destroy_cb), ibus); g_dbus_method_invocation_return_value (invocation, NULL); } /** * _ibus_get_engines: * * Implement the "Engines" method call of the org.freedesktop.IBus interface. */ static GVariant * _ibus_get_engines (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { GVariantBuilder builder; GList *engines = NULL; GList *p; if (error) { *error = NULL; } g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); engines = g_hash_table_get_values (ibus->engine_table); for (p = engines; p != NULL; p = p->next) { g_variant_builder_add ( &builder, "v", ibus_serializable_serialize ((IBusSerializable *) p->data)); } g_list_free (engines); return g_variant_builder_end (&builder); } static void _ibus_list_engines_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.ListEngines() is deprecated!"); variant = _ibus_get_engines (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@av)", variant)); } /** * _ibus_get_engines_by_names: * * Implement the "GetEnginesByNames" method call of the org.freedesktop.IBus interface. */ static void _ibus_get_engines_by_names (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { const gchar **names = NULL; g_variant_get (parameters, "(^a&s)", &names); g_assert (names != NULL); gint i = 0; GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); while (names[i] != NULL) { IBusEngineDesc *desc = (IBusEngineDesc *) g_hash_table_lookup ( ibus->engine_table, names[i++]); if (desc == NULL) continue; g_variant_builder_add ( &builder, "v", ibus_serializable_serialize ((IBusSerializable *)desc)); } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(av)", &builder)); } /** * _ibus_get_active_engines: * * Implement the "ActiveEngines" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_active_engines (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { GVariantBuilder builder; GList *p; if (error) { *error = NULL; } g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); for (p = ibus->register_engine_list; p != NULL; p = p->next) { g_variant_builder_add ( &builder, "v", ibus_serializable_serialize ((IBusSerializable *) p->data)); } return g_variant_builder_end (&builder); } static void _ibus_list_active_engines_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.ListActiveEngines() is deprecated!"); variant = _ibus_get_active_engines (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@av)", variant)); } /** * _ibus_exit: * * Implement the "Exit" method call of the org.freedesktop.IBus interface. */ static void _ibus_exit (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { gboolean restart = FALSE; g_variant_get (parameters, "(b)", &restart); g_dbus_method_invocation_return_value (invocation, NULL); /* Make sure the reply has been sent out before exit */ g_dbus_connection_flush_sync ( g_dbus_method_invocation_get_connection (invocation), NULL, NULL); bus_server_quit (restart); } /** * _ibus_ping: * * Implement the "Ping" method call of the org.freedesktop.IBus interface. */ static void _ibus_ping (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, parameters); } /** * _ibus_get_use_sys_layout: * * Implement the "UseSysLayout" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_use_sys_layout (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { if (error) { *error = NULL; } return g_variant_new_boolean (ibus->use_sys_layout); } static void _ibus_get_use_sys_layout_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.GetUseSysLayout() is deprecated!"); variant = _ibus_get_use_sys_layout (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", g_variant_get_boolean (variant))); g_variant_unref (variant); } /** * _ibus_get_use_global_engine: * * Implement the "UseGlobalEngine" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_use_global_engine (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { if (error) { *error = NULL; } return g_variant_new_boolean (ibus->use_global_engine); } static void _ibus_get_use_global_engine_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.GetUseGlobalEngine() is deprecated!"); variant = _ibus_get_use_global_engine (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", g_variant_get_boolean (variant))); g_variant_unref (variant); } /** * _ibus_get_global_engine: * * Implement the "GlobalEngine" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_global_engine (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { IBusEngineDesc *desc = NULL; if (error) { *error = NULL; } do { if (!ibus->use_global_engine) break; BusInputContext *context = ibus->focused_context; if (context == NULL) context = ibus->fake_context; desc = bus_input_context_get_engine_desc (context); if (desc == NULL) break; GVariant *variant = ibus_serializable_serialize ( (IBusSerializable *) desc); // Set type "v" for introspection_xml. return g_variant_new_variant (variant); } while (0); g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No global engine."); return NULL; } static void _ibus_get_global_engine_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.GetGlobalEngine() is deprecated!"); variant = _ibus_get_global_engine (ibus, connection, &error); if (variant == NULL) { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "%s", error->message); g_error_free (error); } else { GVariant *retval = g_variant_get_variant (variant); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(v)", retval)); g_variant_unref (variant); } } struct _SetGlobalEngineData { BusIBusImpl *ibus; GDBusMethodInvocation *invocation; }; typedef struct _SetGlobalEngineData SetGlobalEngineData; static void _ibus_set_global_engine_ready_cb (BusInputContext *context, GAsyncResult *res, SetGlobalEngineData *data) { BusIBusImpl *ibus = data->ibus; GError *error = NULL; if (!bus_input_context_set_engine_by_desc_finish (context, res, &error)) { g_dbus_method_invocation_return_error (data->invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Set global engine failed: %s", error->message); g_error_free (error); } else { g_dbus_method_invocation_return_value (data->invocation, NULL); if (ibus->use_global_engine && (context != ibus->focused_context)) { /* context and ibus->focused_context don't match. This means that * the focus is moved before _ibus_set_global_engine() asynchronous * call finishes. In this case, the engine for the context currently * being focused hasn't been updated. Update the engine here so that * subsequent _ibus_get_global_engine() call could return a * consistent engine name. */ BusEngineProxy *engine = bus_input_context_get_engine (context); if (engine && ibus->focused_context != NULL) { g_object_ref (engine); bus_input_context_set_engine (context, NULL); bus_input_context_set_engine (ibus->focused_context, engine); g_object_unref (engine); } } } g_object_unref (ibus); g_slice_free (SetGlobalEngineData, data); } /** * _ibus_set_global_engine: * * Implement the "SetGlobalEngine" method call of the * org.freedesktop.IBus interface. */ static void _ibus_set_global_engine (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { if (!ibus->use_global_engine) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Global engine feature is disabled."); return; } BusInputContext *context = ibus->focused_context; if (context == NULL) context = ibus->fake_context; const gchar *engine_name = NULL; g_variant_get (parameters, "(&s)", &engine_name); IBusEngineDesc *desc = bus_ibus_impl_get_engine_desc(ibus, engine_name); if (desc == NULL) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot find engine %s.", engine_name); return; } SetGlobalEngineData *data = g_slice_new0 (SetGlobalEngineData); data->ibus = g_object_ref (ibus); data->invocation = invocation; bus_input_context_set_engine_by_desc (context, desc, g_gdbus_timeout, /* timeout in msec. */ NULL, /* we do not cancel the call. */ (GAsyncReadyCallback) _ibus_set_global_engine_ready_cb, data); } /** * _ibus_get_global_engine_enabled: * * Implement the "GlobalEngineEnabled" method call of the * org.freedesktop.IBus interface. */ static GVariant * _ibus_get_global_engine_enabled (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { gboolean enabled = FALSE; if (error) { *error = NULL; } do { if (!ibus->use_global_engine) break; BusInputContext *context = ibus->focused_context; if (context == NULL) context = ibus->fake_context; if (context == NULL) break; enabled = TRUE; } while (0); return g_variant_new_boolean (enabled); } static void _ibus_is_global_engine_enabled_depre (BusIBusImpl *ibus, GVariant *parameters, GDBusMethodInvocation *invocation) { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); GError *error = NULL; GVariant *variant = NULL; g_warning ("org.freedesktop.IBus.IsGlobalEngineEnabled() is deprecated!"); variant = _ibus_get_global_engine_enabled (ibus, connection, &error); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", g_variant_get_boolean (variant))); g_variant_unref (variant); } /** * _ibus_set_preload_engines: * * Implement the "PreloadEngines" method call of the * org.freedesktop.IBus interface. */ static gboolean _ibus_set_preload_engines (BusIBusImpl *ibus, GDBusConnection *connection, GVariant *value, GError **error) { int i, j; const gchar **names = NULL; IBusEngineDesc *desc = NULL; BusComponent *component = NULL; BusFactoryProxy *factory = NULL; GPtrArray *array = g_ptr_array_new (); if (error) { *error = NULL; } g_variant_get (value, "^a&s", &names); for (i = 0; names[i] != NULL; i++) { gboolean has_component = FALSE; desc = bus_ibus_impl_get_engine_desc(ibus, names[i]); if (desc == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot find engine %s.", names[i]); g_ptr_array_free (array, FALSE); return FALSE; } component = bus_component_from_engine_desc (desc); factory = bus_component_get_factory (component); if (factory != NULL) { continue; } for (j = 0; j < array->len; j++) { if (component == (BusComponent *) g_ptr_array_index (array, j)) { has_component = TRUE; break; } } if (!has_component) { g_ptr_array_add (array, component); } } for (j = 0; j < array->len; j++) { bus_component_start ((BusComponent *) g_ptr_array_index (array, j), g_verbose); } g_ptr_array_free (array, FALSE); bus_ibus_impl_property_changed (ibus, "PreloadEngines", value); return TRUE; } /** * _ibus_get_embed_preedit_text: * * Implement the "EmbedPreeditText" method call of * the org.freedesktop.IBus interface. */ static GVariant * _ibus_get_embed_preedit_text (BusIBusImpl *ibus, GDBusConnection *connection, GError **error) { if (error) { *error = NULL; } return g_variant_new_boolean (ibus->embed_preedit_text); } /** * _ibus_set_embed_preedit_text: * * Implement the "EmbedPreeditText" method call of * the org.freedesktop.IBus interface. */ static gboolean _ibus_set_embed_preedit_text (BusIBusImpl *ibus, GDBusConnection *connection, GVariant *value, GError **error) { if (error) { *error = NULL; } gboolean embed_preedit_text = g_variant_get_boolean (value); if (embed_preedit_text != ibus->embed_preedit_text) { ibus->embed_preedit_text = embed_preedit_text; bus_ibus_impl_property_changed (ibus, "EmbedPreeditText", value); } return TRUE; } /** * bus_ibus_impl_service_method_call: * * Handle a D-Bus method call whose destination and interface name are * both "org.freedesktop.IBus" */ static void bus_ibus_impl_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { IBUS_SERVICE_CLASS (bus_ibus_impl_parent_class)->service_method_call ( service, connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } /* all methods in the xml definition above should be listed here. */ static const struct { const gchar *method_name; void (* method_callback) (BusIBusImpl *, GVariant *, GDBusMethodInvocation *); } methods [] = { /* IBus interface */ { "CreateInputContext", _ibus_create_input_context }, { "RegisterComponent", _ibus_register_component }, { "GetEnginesByNames", _ibus_get_engines_by_names }, { "Exit", _ibus_exit }, { "Ping", _ibus_ping }, { "SetGlobalEngine", _ibus_set_global_engine }, /* Start of deprecated methods */ { "GetAddress", _ibus_get_address_depre }, { "CurrentInputContext", _ibus_current_input_context_depre }, { "ListEngines", _ibus_list_engines_depre }, { "ListActiveEngines", _ibus_list_active_engines_depre }, { "GetUseSysLayout", _ibus_get_use_sys_layout_depre }, { "GetUseGlobalEngine", _ibus_get_use_global_engine_depre }, { "GetGlobalEngine", _ibus_get_global_engine_depre }, { "IsGlobalEngineEnabled", _ibus_is_global_engine_enabled_depre }, /* End of deprecated methods */ }; gint i; for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (methods[i].method_name, method_name) == 0) { methods[i].method_callback ((BusIBusImpl *) service, parameters, invocation); return; } } g_warning ("service_method_call received an unknown method: %s", method_name ? method_name : "(null)"); } /** * bus_ibus_impl_service_get_property: * * Handle org.freedesktop.DBus.Properties.Get */ static GVariant * bus_ibus_impl_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { gint i; static const struct { const gchar *method_name; GVariant * (* method_callback) (BusIBusImpl *, GDBusConnection *, GError **); } methods [] = { { "Address", _ibus_get_address }, { "CurrentInputContext", _ibus_get_current_input_context }, { "Engines", _ibus_get_engines }, { "ActiveEngines", _ibus_get_active_engines }, { "GlobalEngine", _ibus_get_global_engine }, { "EmbedPreeditText", _ibus_get_embed_preedit_text }, }; if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { return IBUS_SERVICE_CLASS ( bus_ibus_impl_parent_class)->service_get_property ( service, connection, sender, object_path, interface_name, property_name, error); } for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (methods[i].method_name, property_name) == 0) { return methods[i].method_callback ((BusIBusImpl *) service, connection, error); } } g_warning ("service_get_property received an unknown property: %s", property_name ? property_name : "(null)"); return NULL; } /** * bus_ibus_impl_service_set_property: * * Handle org.freedesktop.DBus.Properties.Set */ static gboolean bus_ibus_impl_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { gint i; static const struct { const gchar *method_name; gboolean (* method_callback) (BusIBusImpl *, GDBusConnection *, GVariant *, GError **); } methods [] = { { "PreloadEngines", _ibus_set_preload_engines }, { "EmbedPreeditText", _ibus_set_embed_preedit_text }, }; if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { return IBUS_SERVICE_CLASS ( bus_ibus_impl_parent_class)->service_set_property ( service, connection, sender, object_path, interface_name, property_name, value, error); } for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (methods[i].method_name, property_name) == 0) { return methods[i].method_callback ((BusIBusImpl *) service, connection, value, error); } } g_warning ("service_set_property received an unknown property: %s", property_name ? property_name : "(null)"); return FALSE; } BusIBusImpl * bus_ibus_impl_get_default (void) { static BusIBusImpl *ibus = NULL; if (ibus == NULL) { ibus = (BusIBusImpl *) g_object_new (BUS_TYPE_IBUS_IMPL, "object-path", IBUS_PATH_IBUS, NULL); } return ibus; } BusFactoryProxy * bus_ibus_impl_lookup_factory (BusIBusImpl *ibus, const gchar *path) { g_assert (BUS_IS_IBUS_IMPL (ibus)); BusFactoryProxy *factory; factory = (BusFactoryProxy *) g_hash_table_lookup (ibus->factory_dict, path); return factory; } IBusKeymap * bus_ibus_impl_get_keymap (BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); return ibus->keymap; } /** * bus_ibus_impl_registry_init: * * Initialize IBusRegistry. */ static void bus_ibus_impl_registry_init (BusIBusImpl *ibus) { GList *p; GList *components; IBusRegistry *registry = ibus_registry_new (); ibus->registry = NULL; ibus->components = NULL; ibus->engine_table = g_hash_table_new (g_str_hash, g_str_equal); if (g_strcmp0 (g_cache, "none") == 0) { /* Only load registry, but not read and write cache. */ ibus_registry_load (registry); } else if (g_strcmp0 (g_cache, "refresh") == 0) { /* Load registry and overwrite the cache. */ ibus_registry_load (registry); ibus_registry_save_cache (registry, TRUE); } else if (g_strcmp0 (g_cache, "auto") == 0) { /* Load registry from cache. If the cache does not exist or * it is outdated, then generate it. */ if (ibus_registry_load_cache (registry, FALSE) == FALSE || ibus_registry_check_modification (registry)) { ibus_object_destroy (IBUS_OBJECT (registry)); registry = ibus_registry_new (); if (ibus_registry_load_cache (registry, TRUE) == FALSE || ibus_registry_check_modification (registry)) { ibus_object_destroy (IBUS_OBJECT (registry)); registry = ibus_registry_new (); ibus_registry_load (registry); ibus_registry_save_cache (registry, TRUE); } } } ibus->registry = registry; components = ibus_registry_get_components (registry); for (p = components; p != NULL; p = p->next) { IBusComponent *component = (IBusComponent *) p->data; BusComponent *buscomp = bus_component_new (component, NULL /* factory */); GList *engines = NULL; GList *p1; g_object_ref_sink (buscomp); ibus->components = g_list_append (ibus->components, buscomp); engines = bus_component_get_engines (buscomp); for (p1 = engines; p1 != NULL; p1 = p1->next) { IBusEngineDesc *desc = (IBusEngineDesc *) p1->data; const gchar *name = ibus_engine_desc_get_name (desc); if (g_hash_table_lookup (ibus->engine_table, name) == NULL) { g_hash_table_insert (ibus->engine_table, (gpointer) name, desc); } else { g_message ("Engine %s is already registered by other component", name); } } g_list_free (engines); } g_list_free (components); g_signal_connect (ibus->registry, "changed", G_CALLBACK (_registry_changed_cb), ibus); ibus_registry_start_monitor_changes (ibus->registry); } static void bus_ibus_impl_registry_destroy (BusIBusImpl *ibus) { g_list_free_full (ibus->components, g_object_unref); ibus->components = NULL; g_hash_table_destroy (ibus->engine_table); ibus->engine_table = NULL; ibus_object_destroy (IBUS_OBJECT (ibus->registry)); ibus->registry = NULL; } static gint _component_is_name_cb (BusComponent *component, const gchar *name) { g_assert (BUS_IS_COMPONENT (component)); g_assert (name); return g_strcmp0 (bus_component_get_name (component), name); } static void bus_ibus_impl_component_name_owner_changed (BusIBusImpl *ibus, const gchar *name, const gchar *old_name, const gchar *new_name) { BusComponent *component; BusFactoryProxy *factory; g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (name); g_assert (old_name); g_assert (new_name); component = bus_ibus_impl_lookup_component_by_name (ibus, name); if (component == NULL) { /* name is a unique name, or a well-known name we don't know. */ return; } if (g_strcmp0 (old_name, "") != 0) { /* the component is stopped. */ factory = bus_component_get_factory (component); if (factory != NULL) { ibus_proxy_destroy ((IBusProxy *) factory); } } if (g_strcmp0 (new_name, "") != 0) { /* the component is started. */ BusConnection *connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name); if (connection == NULL) return; factory = bus_factory_proxy_new (connection); if (factory == NULL) return; bus_component_set_factory (component, factory); g_object_unref (factory); } } BusComponent * bus_ibus_impl_lookup_component_by_name (BusIBusImpl *ibus, const gchar *name) { GList *p; g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (name); p = g_list_find_custom (ibus->components, name, (GCompareFunc) _component_is_name_cb); if (p) { return (BusComponent *) p->data; } else { return NULL; } } /** * bus_ibus_impl_property_changed * * Send a "PropertiesChanged" D-Bus signal for a property to buses * (connections) that are listening to the signal. */ static void bus_ibus_impl_property_changed (BusIBusImpl *service, const gchar *property_name, GVariant *value) { GDBusMessage *message = g_dbus_message_new_signal ("/org/freedesktop/IBus", "org.freedesktop.DBus.Properties", "PropertiesChanged"); /* set a non-zero serial to make libdbus happy */ g_dbus_message_set_serial (message, 1); g_dbus_message_set_sender (message, "org.freedesktop.IBus"); GVariantBuilder *builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); g_variant_builder_add (builder, "{sv}", property_name, value); g_dbus_message_set_body (message, g_variant_new ("(sa{sv}as)", "org.freedesktop.IBus", builder, NULL)); g_variant_builder_unref (builder); bus_dbus_impl_dispatch_message_by_rule (BUS_DEFAULT_DBUS, message, NULL); g_object_unref (message); } /** * bus_ibus_impl_emit_signal: * * Send a D-Bus signal to buses (connections) that are listening to the signal. */ static void bus_ibus_impl_emit_signal (BusIBusImpl *ibus, const gchar *signal_name, GVariant *parameters) { GDBusMessage *message = g_dbus_message_new_signal ("/org/freedesktop/IBus", "org.freedesktop.IBus", signal_name); /* set a non-zero serial to make libdbus happy */ g_dbus_message_set_serial (message, 1); g_dbus_message_set_sender (message, "org.freedesktop.IBus"); if (parameters) g_dbus_message_set_body (message, parameters); bus_dbus_impl_dispatch_message_by_rule (BUS_DEFAULT_DBUS, message, NULL); g_object_unref (message); } static void bus_ibus_impl_registry_changed (BusIBusImpl *ibus) { bus_ibus_impl_emit_signal (ibus, "RegistryChanged", NULL); } static void bus_ibus_impl_global_engine_changed (BusIBusImpl *ibus) { const gchar *name = ibus->global_engine_name ? ibus->global_engine_name : ""; bus_ibus_impl_emit_signal (ibus, "GlobalEngineChanged", g_variant_new ("(s)", name)); } gboolean bus_ibus_impl_is_use_sys_layout (BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); return ibus->use_sys_layout; } gboolean bus_ibus_impl_is_embed_preedit_text (BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); return ibus->embed_preedit_text; } BusInputContext * bus_ibus_impl_get_focused_input_context (BusIBusImpl *ibus) { g_assert (BUS_IS_IBUS_IMPL (ibus)); return ibus->focused_context; } ibus-1.5.11/bus/global.h0000644000000000000000000000232412551654123011637 00000000000000/* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * Copyright (c) 2012 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_GLOBAL_H_ #define __BUS_GLOBAL_H_ #include G_BEGIN_DECLS #define DEFAULT_ENGINE "xkb:us::eng" extern gchar **g_argv; extern gchar *g_address; extern gchar *g_cache; extern gboolean g_mempro; extern gboolean g_verbose; extern gint g_gdbus_timeout; G_END_DECLS #endif ibus-1.5.11/bus/marshalers.c0000644000000000000000000005177712551655054012557 00000000000000#include "marshalers.h" #include #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ /* BOOL:UINT,UINT,UINT (./marshalers.list:1) */ void bus_marshal_BOOLEAN__UINT_UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_BOOLEAN__UINT_UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_uint (param_values + 3), data2); g_value_set_boolean (return_value, v_return); } /* OBJECT:STRING (./marshalers.list:2) */ void bus_marshal_OBJECT__STRING (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef GObject* (*GMarshalFunc_OBJECT__STRING) (gpointer data1, gpointer arg_1, gpointer data2); register GMarshalFunc_OBJECT__STRING callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; GObject* v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_OBJECT__STRING) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_string (param_values + 1), data2); g_value_take_object (return_value, v_return); } /* VOID:INT,UINT (./marshalers.list:3) */ void bus_marshal_VOID__INT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__INT_UINT) (gpointer data1, gint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__INT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__INT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_int (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* VOID:INT,INT,INT,INT (./marshalers.list:4) */ void bus_marshal_VOID__INT_INT_INT_INT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__INT_INT_INT_INT) (gpointer data1, gint arg_1, gint arg_2, gint arg_3, gint arg_4, gpointer data2); register GMarshalFunc_VOID__INT_INT_INT_INT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__INT_INT_INT_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_int (param_values + 1), g_marshal_value_peek_int (param_values + 2), g_marshal_value_peek_int (param_values + 3), g_marshal_value_peek_int (param_values + 4), data2); } /* VOID:OBJECT (./marshalers.list:5) */ /* VOID:OBJECT,BOOLEAN (./marshalers.list:6) */ void bus_marshal_VOID__OBJECT_BOOLEAN (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2); register GMarshalFunc_VOID__OBJECT_BOOLEAN callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_boolean (param_values + 2), data2); } /* VOID:OBJECT,STRING (./marshalers.list:7) */ void bus_marshal_VOID__OBJECT_STRING (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_STRING) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2); register GMarshalFunc_VOID__OBJECT_STRING callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_STRING) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), data2); } /* VOID:OBJECT,UINT,BOOLEAN (./marshalers.list:8) */ void bus_marshal_VOID__OBJECT_UINT_BOOLEAN (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN) (gpointer data1, gpointer arg_1, guint arg_2, gboolean arg_3, gpointer data2); register GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_boolean (param_values + 3), data2); } /* VOID:OBJECT,UINT,BOOLEAN,UINT (./marshalers.list:9) */ void bus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT) (gpointer data1, gpointer arg_1, guint arg_2, gboolean arg_3, guint arg_4, gpointer data2); register GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_boolean (param_values + 3), g_marshal_value_peek_uint (param_values + 4), data2); } /* VOID:OBJECT,STRING,STRING,STRING (./marshalers.list:10) */ void bus_marshal_VOID__OBJECT_STRING_STRING_STRING (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_STRING_STRING_STRING) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer arg_3, gpointer arg_4, gpointer data2); register GMarshalFunc_VOID__OBJECT_STRING_STRING_STRING callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_STRING_STRING_STRING) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), g_marshal_value_peek_string (param_values + 3), g_marshal_value_peek_string (param_values + 4), data2); } /* VOID:STRING (./marshalers.list:11) */ /* VOID:STRING,INT (./marshalers.list:12) */ void bus_marshal_VOID__STRING_INT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_INT) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2); register GMarshalFunc_VOID__STRING_INT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_int (param_values + 2), data2); } /* VOID:UINT,UINT (./marshalers.list:13) */ void bus_marshal_VOID__UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* VOID:UINT,UINT,UINT (./marshalers.list:14) */ void bus_marshal_VOID__UINT_UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__UINT_UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_uint (param_values + 3), data2); } /* VOID:VOID (./marshalers.list:15) */ ibus-1.5.11/bus/panelproxy.h0000644000000000000000000001366312551654123012610 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2014 Peng Huang * Copyright (C) 2008-2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_PANEL_PROXY_H_ #define __BUS_PANEL_PROXY_H_ #include #include "connection.h" #include "inputcontext.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_PANEL_PROXY \ (bus_panel_proxy_get_type ()) #define BUS_PANEL_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_PANEL_PROXY, BusPanelProxy)) #define BUS_PANEL_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ BUS_TYPE_PANEL_PROXY, \ BusPanelProxyClass)) #define BUS_IS_PANEL_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_PANEL_PROXY)) #define BUS_IS_PANEL_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_PANEL_PROXY)) #define BUS_PANEL_PROXY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ BUS_TYPE_PANEL_PROXY, \ BusPanelProxyClass)) G_BEGIN_DECLS typedef struct _BusPanelProxy BusPanelProxy; typedef struct _BusPanelProxyClass BusPanelProxyClass; GType bus_panel_proxy_get_type (void); BusPanelProxy *bus_panel_proxy_new (BusConnection *connection); /* functions that invoke D-Bus methods of the panel component. */ void bus_panel_proxy_focus_in (BusPanelProxy *panel, BusInputContext *context); void bus_panel_proxy_focus_out (BusPanelProxy *panel, BusInputContext *context); void bus_panel_proxy_destroy_context (BusPanelProxy *panel, BusInputContext *context); void bus_panel_proxy_set_cursor_location (BusPanelProxy *panel, gint32 x, gint32 y, gint32 w, gint32 h); void bus_panel_proxy_update_preedit_text (BusPanelProxy *panel, IBusText *text, guint cursor_pos, gboolean visible); void bus_panel_proxy_show_preedit_text (BusPanelProxy *panel); void bus_panel_proxy_hide_preedit_text (BusPanelProxy *panel); void bus_panel_proxy_update_auxiliary_text (BusPanelProxy *panel, IBusText *text, gboolean visible); void bus_panel_proxy_show_auxiliary_text (BusPanelProxy *panel); void bus_panel_proxy_hide_auxiliary_text (BusPanelProxy *panel); void bus_panel_proxy_update_lookup_table (BusPanelProxy *panel, IBusLookupTable *table, gboolean visible); void bus_panel_proxy_show_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_hide_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_page_up_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_page_down_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_cursor_up_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_cursor_down_lookup_table (BusPanelProxy *panel); void bus_panel_proxy_register_properties (BusPanelProxy *panel, IBusPropList *prop_list); void bus_panel_proxy_update_property (BusPanelProxy *panel, IBusProperty *prop); void bus_panel_proxy_set_content_type (BusPanelProxy *panel, guint purpose, guint hints); G_END_DECLS #endif ibus-1.5.11/bus/matchrule.c0000644000000000000000000004577512551654123012377 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "matchrule.h" #include #include "dbusimpl.h" typedef enum { MATCH_TYPE = 1 << 0, MATCH_INTERFACE = 1 << 1, MATCH_MEMBER = 1 << 2, MATCH_SENDER = 1 << 3, MATCH_DESTINATION = 1 << 4, MATCH_PATH = 1 << 5, MATCH_ARGS = 1 << 6, } BusMatchFlags; struct _BusMatchRule { IBusObject parent; /* instance members */ gint flags; gint message_type; gchar *interface; gchar *member; gchar *sender; gchar *destination; gchar *path; GArray *args; GList *recipients; }; struct _BusMatchRuleClass { IBusObjectClass parent; /* class members */ }; typedef struct _BusRecipient BusRecipient; struct _BusRecipient { BusConnection *connection; gint refcount; }; static BusRecipient *bus_recipient_new (BusConnection *connection); static void bus_recipient_free (BusRecipient *recipient); static BusRecipient *bus_recipient_ref (BusRecipient *recipient); static gboolean bus_recipient_unref (BusRecipient *recipient); static void bus_match_rule_destroy (BusMatchRule *rule); static void bus_match_rule_connection_destroy_cb (BusConnection *connection, BusMatchRule *rule); static BusRecipient * bus_recipient_new (BusConnection *connection) { BusRecipient *recipient = g_slice_new (BusRecipient); g_object_ref (connection); recipient->connection = connection; recipient->refcount = 1; return recipient; } static void bus_recipient_free (BusRecipient *recipient) { g_object_unref (recipient->connection); g_slice_free (BusRecipient, recipient); } static BusRecipient * bus_recipient_ref (BusRecipient *recipient) { recipient->refcount ++; return recipient; } static gboolean bus_recipient_unref (BusRecipient *recipient) { recipient->refcount --; if (recipient->refcount == 0) { bus_recipient_free (recipient); return TRUE; } return FALSE; } G_DEFINE_TYPE (BusMatchRule, bus_match_rule, IBUS_TYPE_OBJECT) static void bus_match_rule_class_init (BusMatchRuleClass *class) { IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_match_rule_destroy; } static void bus_match_rule_init (BusMatchRule *rule) { rule->flags = 0; rule->message_type = G_DBUS_MESSAGE_TYPE_INVALID; rule->interface = NULL; rule->member = NULL; rule->sender = NULL; rule->destination = NULL; rule->path = NULL; rule->args = g_array_new (TRUE, TRUE, sizeof (gchar *)); } static void bus_match_rule_destroy (BusMatchRule *rule) { g_free (rule->interface); g_free (rule->member); g_free (rule->sender); g_free (rule->destination); g_free (rule->path); gint i; for (i = 0; i < rule->args->len; i++) { g_free (g_array_index (rule->args, gchar *, i)); } g_array_free (rule->args, TRUE); GList *p; for (p = rule->recipients; p != NULL; p = p->next) { BusRecipient *recipient = (BusRecipient *) p->data; g_signal_handlers_disconnect_by_func (recipient->connection, G_CALLBACK (bus_match_rule_connection_destroy_cb), rule); bus_recipient_free (recipient); } g_list_free (rule->recipients); IBUS_OBJECT_CLASS(bus_match_rule_parent_class)->destroy (IBUS_OBJECT (rule)); } typedef struct _Token { gchar *key; gchar *value; } Token; #define SKIP_WHITE(a) \ while (*(a) == ' ' || *(a) == '\t' || *(a) == '\n') { (a)++; } #define IS_ALPHA(a) \ ((*(a) >= 'a' && *(a) <= 'z') || (*(a) >= 'A' && *(a) <= 'Z')) #define IS_NUMBER(a) \ (*(a) >= '0' && *(a) <= '9') static gchar * find_key (const gchar **p) { GString *text; text = g_string_new (""); SKIP_WHITE(*p) if (!IS_ALPHA (*p)) goto failed; g_string_append_c (text, **p); (*p) ++; while (IS_ALPHA (*p) || IS_NUMBER (*p)) { g_string_append_c (text, **p); (*p) ++; } return g_string_free (text, FALSE); failed: g_string_free (text, TRUE); return NULL; } static gchar * find_value (const gchar **p) { SKIP_WHITE (*p); if (**p == '\'') { GString *text = g_string_new (""); (*p) ++; while (**p != '\'') { if (**p == '\0') { g_string_free (text, TRUE); return NULL; } if (**p == '\\') (*p) ++; g_string_append_c (text, **p); (*p) ++; } (*p) ++; return g_string_free (text, FALSE); } else if (strncmp (*p, "true", 4) == 0) { *p += 4; return g_strdup ("true"); } else if (strncmp (*p, "false", 5) == 0) { *p += 5; return g_strdup ("false"); } return NULL; } static Token * tokenize_rule (const gchar *text) { GArray *tokens; Token token; const gchar *p; gint i; tokens = g_array_new (TRUE, TRUE, sizeof (Token)); p = text; while (*p != '\0') { gchar *key; gchar *value; SKIP_WHITE (p); key = find_key (&p); if (key == NULL) goto failed; SKIP_WHITE (p); if (*p != '=') goto failed; p ++; SKIP_WHITE (p); value = find_value (&p); if (value == NULL) { g_free (key); goto failed; } SKIP_WHITE (p); if (*p != ',' && *p != '\0') { g_free (key); g_free (value); goto failed; } if (*p == ',') p ++; token.key = key; token.value = value; g_array_append_val (tokens, token); } return (Token *)g_array_free (tokens, FALSE); failed: for (i = 0; i < tokens->len; i++) { Token *p = &g_array_index (tokens, Token, i); g_free (p->key); g_free (p->value); } g_array_free (tokens, TRUE); return NULL; } static void tokens_free (Token *tokens) { Token *p; p = tokens; while (p != NULL && p->key != NULL) { g_free (p->key); g_free (p->value); p ++; } g_free (tokens); } static gboolean _atoi (const gchar *text, gint *i) { const gchar *p = text; *i = 0; while (*p != '\0') { if (!IS_NUMBER(p)) return FALSE; *i = (*i) * 10 - '0' + *p; p ++; } return TRUE; } BusMatchRule * bus_match_rule_new (const gchar *text) { g_assert (text != NULL); Token *tokens, *p; BusMatchRule *rule; rule = BUS_MATCH_RULE (g_object_new (BUS_TYPE_MATCH_RULE, NULL)); /* parse rule */ tokens = tokenize_rule (text); if (tokens == NULL) goto failed; for (p = tokens; p != NULL && p->key != 0; p++) { if (g_strcmp0 (p->key, "type") == 0) { if (g_strcmp0 (p->value, "signal") == 0) { bus_match_rule_set_message_type (rule, G_DBUS_MESSAGE_TYPE_SIGNAL); } else if (g_strcmp0 (p->value, "method_call") == 0) { bus_match_rule_set_message_type (rule, G_DBUS_MESSAGE_TYPE_METHOD_CALL); } else if (g_strcmp0 (p->value, "method_return") == 0) { bus_match_rule_set_message_type (rule, G_DBUS_MESSAGE_TYPE_METHOD_RETURN); } else if (g_strcmp0 (p->value, "error") == 0) { bus_match_rule_set_message_type (rule, G_DBUS_MESSAGE_TYPE_ERROR); } else goto failed; } else if (g_strcmp0 (p->key, "sender") == 0) { if (!g_dbus_is_name (p->value)) goto failed; bus_match_rule_set_sender (rule, p->value); } else if (g_strcmp0 (p->key, "interface") == 0) { if (!g_dbus_is_interface_name (p->value)) goto failed; bus_match_rule_set_interface (rule, p->value); } else if (g_strcmp0 (p->key, "member") == 0) { if (!g_dbus_is_member_name (p->value)) goto failed; bus_match_rule_set_member (rule, p->value); } else if (g_strcmp0 (p->key, "path") == 0) { bus_match_rule_set_path (rule, p->value); } else if (g_strcmp0 (p->key, "destination") == 0) { if (!g_dbus_is_name (p->value)) goto failed; bus_match_rule_set_destination (rule, p->value); } else if (strncmp (p->key, "arg", 3) == 0) { gint i; if (! _atoi (p->key + 3, &i)) goto failed; bus_match_rule_set_arg (rule, i, p->value); } else if (g_strcmp0 (p->key, "eavesdrop") == 0) { if (g_strcmp0 (p->value, "true") != 0 && g_strcmp0 (p->value, "false") != 0) goto failed; } else goto failed; } tokens_free (tokens); return rule; failed: tokens_free (tokens); g_object_unref (rule); return NULL; } gboolean bus_match_rule_set_message_type (BusMatchRule *rule, gint type) { g_assert (rule != NULL); g_assert (type == G_DBUS_MESSAGE_TYPE_SIGNAL || type == G_DBUS_MESSAGE_TYPE_METHOD_CALL || type == G_DBUS_MESSAGE_TYPE_METHOD_RETURN || type == G_DBUS_MESSAGE_TYPE_ERROR); rule->flags |= MATCH_TYPE; rule->message_type = type; return TRUE; } gboolean bus_match_rule_set_sender (BusMatchRule *rule, const gchar *sender) { g_assert (rule != NULL); g_assert (sender != NULL); rule->flags |= MATCH_SENDER; g_free (rule->sender); rule->sender = g_strdup (sender); return TRUE; } gboolean bus_match_rule_set_interface (BusMatchRule *rule, const gchar *interface) { g_assert (rule != NULL); g_assert (interface != NULL); rule->flags |= MATCH_INTERFACE; g_free (rule->interface); rule->interface = g_strdup (interface); return TRUE; } gboolean bus_match_rule_set_member (BusMatchRule *rule, const gchar *member) { g_assert (rule != NULL); g_assert (member != NULL); rule->flags |= MATCH_MEMBER; g_free (rule->member); rule->member = g_strdup (member); return TRUE; } gboolean bus_match_rule_set_path (BusMatchRule *rule, const gchar *path) { g_assert (rule != NULL); g_assert (path != NULL); rule->flags |= MATCH_PATH; g_free (rule->path); rule->path = g_strdup (path); return TRUE; } gboolean bus_match_rule_set_destination (BusMatchRule *rule, const gchar *dest) { g_assert (rule != NULL); g_assert (dest != NULL); rule->flags |= MATCH_DESTINATION; g_free (rule->destination); rule->destination = g_strdup (dest); return TRUE; } gboolean bus_match_rule_set_arg (BusMatchRule *rule, guint arg_i, const gchar *arg) { g_assert (rule != NULL); g_assert (arg != NULL); rule->flags |= MATCH_ARGS; if (arg_i >= rule->args->len) { g_array_set_size (rule->args, arg_i + 1); } g_free (g_array_index (rule->args, gchar *, arg_i)); g_array_index (rule->args, gchar *, arg_i) = g_strdup (arg); return TRUE; } static gboolean bus_match_rule_match_name (const gchar *name, const gchar *match_name) { if (g_dbus_is_unique_name (name) && !g_dbus_is_unique_name (match_name)) { BusConnection *connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, match_name); if (connection == NULL) return FALSE; return g_strcmp0 (name, bus_connection_get_unique_name (connection)) == 0; } return g_strcmp0 (name, match_name) == 0; } gboolean bus_match_rule_match (BusMatchRule *rule, GDBusMessage *message) { g_assert (rule != NULL); g_assert (message != NULL); if (rule->flags & MATCH_TYPE) { if (g_dbus_message_get_message_type (message) != rule->message_type) return FALSE; } if (rule->flags & MATCH_INTERFACE) { if (g_strcmp0 (g_dbus_message_get_interface (message), rule->interface) != 0) return FALSE; } if (rule->flags & MATCH_MEMBER) { if (g_strcmp0 (g_dbus_message_get_member (message), rule->member) != 0) return FALSE; } if (rule->flags & MATCH_SENDER) { if (!bus_match_rule_match_name (g_dbus_message_get_sender (message), rule->sender)) return FALSE; } if (rule->flags & MATCH_DESTINATION) { if (!bus_match_rule_match_name (g_dbus_message_get_destination (message), rule->destination)) return FALSE; } if (rule->flags & MATCH_PATH) { if (g_strcmp0 (g_dbus_message_get_path (message), rule->path) != 0) return FALSE; } if (rule->flags & MATCH_ARGS) { guint i; GVariant *arguments = g_dbus_message_get_body (message); if (arguments == NULL) return FALSE; for (i = 0; i < rule->args->len; i++) { const gchar *arg = g_array_index (rule->args, const gchar *, i); if (arg == NULL) continue; GVariant * variant = g_variant_get_child_value (arguments, i); if (variant == NULL) return FALSE; switch (g_variant_classify (variant)) { case G_VARIANT_CLASS_STRING: case G_VARIANT_CLASS_OBJECT_PATH: if (g_strcmp0 (arg, g_variant_get_string (variant, NULL)) == 0) { g_variant_unref (variant); continue; } default: break; } g_variant_unref (variant); return FALSE; } } return TRUE; } gboolean bus_match_rule_is_equal (BusMatchRule *a, BusMatchRule *b) { g_assert (a != NULL); g_assert (b != NULL); if (a->flags != b->flags) return FALSE; if (a->flags & MATCH_TYPE) { if (a->message_type != b->message_type) return FALSE; } if (a->flags & MATCH_INTERFACE) { if (g_strcmp0 (a->interface, b->interface) != 0) return FALSE; } if (a->flags & MATCH_MEMBER) { if (g_strcmp0 (a->member, b->member) != 0) return FALSE; } if (a->flags & MATCH_SENDER) { if (g_strcmp0 (a->sender, b->sender) != 0) return FALSE; } if (a->flags & MATCH_DESTINATION) { if (g_strcmp0 (a->destination, b->destination) != 0) return FALSE; } if (a->flags & MATCH_PATH) { if (g_strcmp0 (a->path, b->path) != 0) return FALSE; } if (a->flags & MATCH_ARGS) { if (a->args->len != b->args->len) return FALSE; gint i; for (i = 0; i < a->args->len; i++) { if (g_strcmp0 (g_array_index (a->args, gchar *, i), g_array_index (b->args, gchar *, i)) != 0) return FALSE; } } return TRUE; } static void bus_match_rule_connection_destroy_cb (BusConnection *connection, BusMatchRule *rule) { GList *p; for (p = rule->recipients; p != NULL; p = p->next) { BusRecipient *recipient = (BusRecipient *)p->data; if (recipient->connection == connection) { rule->recipients = g_list_remove_link (rule->recipients, p); bus_recipient_free (recipient); return; } if (rule->recipients == NULL) { ibus_object_destroy (IBUS_OBJECT (rule)); } } g_assert_not_reached (); } void bus_match_rule_add_recipient (BusMatchRule *rule, BusConnection *connection) { g_assert (BUS_IS_MATCH_RULE (rule)); g_assert (BUS_IS_CONNECTION (connection)); GList *p; for (p = rule->recipients; p != NULL; p = p->next) { BusRecipient *recipient = (BusRecipient *) p->data; if (connection == recipient->connection) { bus_recipient_ref (recipient); return; } } /* alloc a new recipient */ BusRecipient *recipient = bus_recipient_new (connection); rule->recipients = g_list_append (rule->recipients, recipient); g_signal_connect (connection, "destroy", G_CALLBACK (bus_match_rule_connection_destroy_cb), rule); } void bus_match_rule_remove_recipient (BusMatchRule *rule, BusConnection *connection) { g_assert (BUS_IS_MATCH_RULE (rule)); g_assert (BUS_IS_CONNECTION (connection)); GList *p; for (p = rule->recipients; p != NULL; p = p->next) { BusRecipient *recipient = (BusRecipient *) p->data; if (connection == recipient->connection) { if (bus_recipient_unref (recipient)) { rule->recipients = g_list_remove_link (rule->recipients, p); g_signal_handlers_disconnect_by_func (connection, G_CALLBACK (bus_match_rule_connection_destroy_cb), rule); } if (rule->recipients == NULL ) { ibus_object_destroy (IBUS_OBJECT(rule)); } return; } } g_return_if_reached (); } GList * bus_match_rule_get_recipients (BusMatchRule *rule, GDBusMessage *message) { g_assert (BUS_IS_MATCH_RULE (rule)); g_assert (message != NULL); GList *link; GList *recipients = NULL; if (!bus_match_rule_match (rule, message)) return FALSE; for (link = rule->recipients; link != NULL; link = link->next) { BusRecipient *recipient = (BusRecipient *) link->data; recipients = g_list_append (recipients, recipient->connection); } return recipients; } ibus-1.5.11/bus/server.h0000644000000000000000000000366112551654123011712 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_SERVER_H_ #define __BUS_SERVER_H_ #include G_BEGIN_DECLS /** * bus_server_init: * * Initialize GDBus server and write the server address to a file, which is (usually) in ~/.config/ibus/bus/. * Note that the function does not call g_main_loop_run. */ void bus_server_init (void); /** * bus_server_run: * * Enter the glib main loop. You have to call bus_server_init before calling this function. */ void bus_server_run (void); /** * bus_server_quit: * @restart: TRUE if ibus-daemon restarts. * * Quit the glib main loop. */ void bus_server_quit (gboolean restart); /** * bus_server_get_address: * @returns: The server address, e.g. "unix:abstract=/tmp/dbus-aEUnr11L,guid=8b343aaa69eabb9b282dce6f4cdbb4aa" * * Get the server address. This function might return NULL if it is called before initializing the server by * calling bus_server_init. */ const gchar *bus_server_get_address (void); G_END_DECLS #endif ibus-1.5.11/bus/marshalers.h0000644000000000000000000001604212551655054012546 00000000000000 #ifndef __bus_marshal_MARSHAL_H__ #define __bus_marshal_MARSHAL_H__ #include G_BEGIN_DECLS /* BOOL:UINT,UINT,UINT (./marshalers.list:1) */ G_GNUC_INTERNAL void bus_marshal_BOOLEAN__UINT_UINT_UINT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); #define bus_marshal_BOOL__UINT_UINT_UINT bus_marshal_BOOLEAN__UINT_UINT_UINT /* OBJECT:STRING (./marshalers.list:2) */ G_GNUC_INTERNAL void bus_marshal_OBJECT__STRING (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:INT,UINT (./marshalers.list:3) */ G_GNUC_INTERNAL void bus_marshal_VOID__INT_UINT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:INT,INT,INT,INT (./marshalers.list:4) */ G_GNUC_INTERNAL void bus_marshal_VOID__INT_INT_INT_INT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:OBJECT (./marshalers.list:5) */ #define bus_marshal_VOID__OBJECT g_cclosure_marshal_VOID__OBJECT /* VOID:OBJECT,BOOLEAN (./marshalers.list:6) */ G_GNUC_INTERNAL void bus_marshal_VOID__OBJECT_BOOLEAN (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:OBJECT,STRING (./marshalers.list:7) */ G_GNUC_INTERNAL void bus_marshal_VOID__OBJECT_STRING (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:OBJECT,UINT,BOOLEAN (./marshalers.list:8) */ G_GNUC_INTERNAL void bus_marshal_VOID__OBJECT_UINT_BOOLEAN (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:OBJECT,UINT,BOOLEAN,UINT (./marshalers.list:9) */ G_GNUC_INTERNAL void bus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:OBJECT,STRING,STRING,STRING (./marshalers.list:10) */ G_GNUC_INTERNAL void bus_marshal_VOID__OBJECT_STRING_STRING_STRING (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:STRING (./marshalers.list:11) */ #define bus_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING /* VOID:STRING,INT (./marshalers.list:12) */ G_GNUC_INTERNAL void bus_marshal_VOID__STRING_INT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:UINT,UINT (./marshalers.list:13) */ G_GNUC_INTERNAL void bus_marshal_VOID__UINT_UINT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:UINT,UINT,UINT (./marshalers.list:14) */ G_GNUC_INTERNAL void bus_marshal_VOID__UINT_UINT_UINT (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); /* VOID:VOID (./marshalers.list:15) */ #define bus_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID G_END_DECLS #endif /* __bus_marshal_MARSHAL_H__ */ ibus-1.5.11/bus/Makefile.in0000644000000000000000000031057112551654255012307 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = ibus-daemon$(EXEEXT) @ENABLE_TESTS_TRUE@TESTS = test-matchrule$(EXEEXT) \ @ENABLE_TESTS_TRUE@ test-stress$(EXEEXT) $(am__EXEEXT_1) noinst_PROGRAMS = $(am__EXEEXT_2) subdir = bus ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man_onedir)" am__EXEEXT_1 = @ENABLE_TESTS_TRUE@am__EXEEXT_2 = test-matchrule$(EXEEXT) \ @ENABLE_TESTS_TRUE@ test-stress$(EXEEXT) $(am__EXEEXT_1) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am__objects_1 = am__objects_2 = ibus_daemon-component.$(OBJEXT) \ ibus_daemon-dbusimpl.$(OBJEXT) ibus_daemon-ibusimpl.$(OBJEXT) \ ibus_daemon-inputcontext.$(OBJEXT) \ ibus_daemon-engineproxy.$(OBJEXT) \ ibus_daemon-panelproxy.$(OBJEXT) \ ibus_daemon-factoryproxy.$(OBJEXT) \ ibus_daemon-global.$(OBJEXT) ibus_daemon-server.$(OBJEXT) \ ibus_daemon-connection.$(OBJEXT) \ ibus_daemon-matchrule.$(OBJEXT) \ ibus_daemon-marshalers.$(OBJEXT) $(am__objects_1) am_ibus_daemon_OBJECTS = $(am__objects_2) ibus_daemon-main.$(OBJEXT) \ $(am__objects_1) ibus_daemon_OBJECTS = $(am_ibus_daemon_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(libibus) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = ibus_daemon_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_daemon_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_3 = test_matchrule-component.$(OBJEXT) \ test_matchrule-dbusimpl.$(OBJEXT) \ test_matchrule-ibusimpl.$(OBJEXT) \ test_matchrule-inputcontext.$(OBJEXT) \ test_matchrule-engineproxy.$(OBJEXT) \ test_matchrule-panelproxy.$(OBJEXT) \ test_matchrule-factoryproxy.$(OBJEXT) \ test_matchrule-global.$(OBJEXT) \ test_matchrule-server.$(OBJEXT) \ test_matchrule-connection.$(OBJEXT) \ test_matchrule-matchrule.$(OBJEXT) \ test_matchrule-marshalers.$(OBJEXT) $(am__objects_1) am_test_matchrule_OBJECTS = $(am__objects_3) \ test_matchrule-test-matchrule.$(OBJEXT) $(am__objects_1) test_matchrule_OBJECTS = $(am_test_matchrule_OBJECTS) test_matchrule_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_matchrule_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ am_test_stress_OBJECTS = test_stress-test-client.$(OBJEXT) \ test_stress-test-stress.$(OBJEXT) $(am__objects_1) test_stress_OBJECTS = $(am_test_stress_OBJECTS) test_stress_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) test_stress_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_stress_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_daemon_SOURCES) $(test_matchrule_SOURCES) \ $(test_stress_SOURCES) DIST_SOURCES = $(ibus_daemon_SOURCES) $(test_matchrule_SOURCES) \ $(test_stress_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(man_one_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DBINDIR=\"@bindir@\" \ -DIBUS_DISABLE_DEPRECATED \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) commonsrc = \ component.c \ component.h \ dbusimpl.c \ dbusimpl.h \ ibusimpl.c \ ibusimpl.h \ inputcontext.c \ inputcontext.h \ engineproxy.c \ engineproxy.h \ panelproxy.c \ panelproxy.h \ factoryproxy.c \ factoryproxy.h \ global.c \ global.h \ server.c \ server.h \ connection.c \ connection.h \ matchrule.c \ matchrule.h \ marshalers.c \ marshalers.h \ types.h \ $(NULL) ibus_daemon_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_daemon_SOURCES = \ $(commonsrc) \ main.c \ $(NULL) ibus_daemon_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_daemon_LDADD = \ $(AM_LDADD) \ $(NULL) BUILT_SOURCES = \ marshalers.h \ marshalers.c \ $(NULL) test_matchrule_DEPENDENCIES = \ $(libibus) \ $(NULL) test_matchrule_SOURCES = \ $(commonsrc) \ test-matchrule.c \ $(NULL) test_matchrule_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) test_matchrule_LDADD = \ $(AM_LDADD) \ $(NULL) test_stress_SOURCES = \ test-client.c \ test-client.h \ test-stress.c \ $(NULL) test_stress_CFLAGS = \ $(AM_CFLAGS) \ @GTK2_CFLAGS@ \ @X11_CFLAGS@ \ $(NULL) test_stress_LDADD = \ $(AM_LDADD) \ @GTK2_LIBS@ \ @X11_LIBS@ \ $(NULL) EXTRA_DIST = \ $(man_one_in_files) \ marshalers.list \ $(NULL) CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ $(NULL) man_one_in_files = ibus-daemon.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA = $(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu bus/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-daemon$(EXEEXT): $(ibus_daemon_OBJECTS) $(ibus_daemon_DEPENDENCIES) $(EXTRA_ibus_daemon_DEPENDENCIES) @rm -f ibus-daemon$(EXEEXT) $(AM_V_CCLD)$(ibus_daemon_LINK) $(ibus_daemon_OBJECTS) $(ibus_daemon_LDADD) $(LIBS) test-matchrule$(EXEEXT): $(test_matchrule_OBJECTS) $(test_matchrule_DEPENDENCIES) $(EXTRA_test_matchrule_DEPENDENCIES) @rm -f test-matchrule$(EXEEXT) $(AM_V_CCLD)$(test_matchrule_LINK) $(test_matchrule_OBJECTS) $(test_matchrule_LDADD) $(LIBS) test-stress$(EXEEXT): $(test_stress_OBJECTS) $(test_stress_DEPENDENCIES) $(EXTRA_test_stress_DEPENDENCIES) @rm -f test-stress$(EXEEXT) $(AM_V_CCLD)$(test_stress_LINK) $(test_stress_OBJECTS) $(test_stress_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-component.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-connection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-dbusimpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-engineproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-factoryproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-ibusimpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-inputcontext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-marshalers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-matchrule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-panelproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-server.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-component.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-connection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-dbusimpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-engineproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-factoryproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-ibusimpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-inputcontext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-marshalers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-matchrule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-panelproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-server.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-test-matchrule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stress-test-client.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stress-test-stress.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_daemon-component.o: component.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-component.o -MD -MP -MF $(DEPDIR)/ibus_daemon-component.Tpo -c -o ibus_daemon-component.o `test -f 'component.c' || echo '$(srcdir)/'`component.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-component.Tpo $(DEPDIR)/ibus_daemon-component.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='component.c' object='ibus_daemon-component.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-component.o `test -f 'component.c' || echo '$(srcdir)/'`component.c ibus_daemon-component.obj: component.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-component.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-component.Tpo -c -o ibus_daemon-component.obj `if test -f 'component.c'; then $(CYGPATH_W) 'component.c'; else $(CYGPATH_W) '$(srcdir)/component.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-component.Tpo $(DEPDIR)/ibus_daemon-component.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='component.c' object='ibus_daemon-component.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-component.obj `if test -f 'component.c'; then $(CYGPATH_W) 'component.c'; else $(CYGPATH_W) '$(srcdir)/component.c'; fi` ibus_daemon-dbusimpl.o: dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-dbusimpl.o -MD -MP -MF $(DEPDIR)/ibus_daemon-dbusimpl.Tpo -c -o ibus_daemon-dbusimpl.o `test -f 'dbusimpl.c' || echo '$(srcdir)/'`dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-dbusimpl.Tpo $(DEPDIR)/ibus_daemon-dbusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbusimpl.c' object='ibus_daemon-dbusimpl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-dbusimpl.o `test -f 'dbusimpl.c' || echo '$(srcdir)/'`dbusimpl.c ibus_daemon-dbusimpl.obj: dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-dbusimpl.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-dbusimpl.Tpo -c -o ibus_daemon-dbusimpl.obj `if test -f 'dbusimpl.c'; then $(CYGPATH_W) 'dbusimpl.c'; else $(CYGPATH_W) '$(srcdir)/dbusimpl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-dbusimpl.Tpo $(DEPDIR)/ibus_daemon-dbusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbusimpl.c' object='ibus_daemon-dbusimpl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-dbusimpl.obj `if test -f 'dbusimpl.c'; then $(CYGPATH_W) 'dbusimpl.c'; else $(CYGPATH_W) '$(srcdir)/dbusimpl.c'; fi` ibus_daemon-ibusimpl.o: ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-ibusimpl.o -MD -MP -MF $(DEPDIR)/ibus_daemon-ibusimpl.Tpo -c -o ibus_daemon-ibusimpl.o `test -f 'ibusimpl.c' || echo '$(srcdir)/'`ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-ibusimpl.Tpo $(DEPDIR)/ibus_daemon-ibusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimpl.c' object='ibus_daemon-ibusimpl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-ibusimpl.o `test -f 'ibusimpl.c' || echo '$(srcdir)/'`ibusimpl.c ibus_daemon-ibusimpl.obj: ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-ibusimpl.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-ibusimpl.Tpo -c -o ibus_daemon-ibusimpl.obj `if test -f 'ibusimpl.c'; then $(CYGPATH_W) 'ibusimpl.c'; else $(CYGPATH_W) '$(srcdir)/ibusimpl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-ibusimpl.Tpo $(DEPDIR)/ibus_daemon-ibusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimpl.c' object='ibus_daemon-ibusimpl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-ibusimpl.obj `if test -f 'ibusimpl.c'; then $(CYGPATH_W) 'ibusimpl.c'; else $(CYGPATH_W) '$(srcdir)/ibusimpl.c'; fi` ibus_daemon-inputcontext.o: inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-inputcontext.o -MD -MP -MF $(DEPDIR)/ibus_daemon-inputcontext.Tpo -c -o ibus_daemon-inputcontext.o `test -f 'inputcontext.c' || echo '$(srcdir)/'`inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-inputcontext.Tpo $(DEPDIR)/ibus_daemon-inputcontext.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inputcontext.c' object='ibus_daemon-inputcontext.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-inputcontext.o `test -f 'inputcontext.c' || echo '$(srcdir)/'`inputcontext.c ibus_daemon-inputcontext.obj: inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-inputcontext.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-inputcontext.Tpo -c -o ibus_daemon-inputcontext.obj `if test -f 'inputcontext.c'; then $(CYGPATH_W) 'inputcontext.c'; else $(CYGPATH_W) '$(srcdir)/inputcontext.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-inputcontext.Tpo $(DEPDIR)/ibus_daemon-inputcontext.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inputcontext.c' object='ibus_daemon-inputcontext.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-inputcontext.obj `if test -f 'inputcontext.c'; then $(CYGPATH_W) 'inputcontext.c'; else $(CYGPATH_W) '$(srcdir)/inputcontext.c'; fi` ibus_daemon-engineproxy.o: engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-engineproxy.o -MD -MP -MF $(DEPDIR)/ibus_daemon-engineproxy.Tpo -c -o ibus_daemon-engineproxy.o `test -f 'engineproxy.c' || echo '$(srcdir)/'`engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-engineproxy.Tpo $(DEPDIR)/ibus_daemon-engineproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='engineproxy.c' object='ibus_daemon-engineproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-engineproxy.o `test -f 'engineproxy.c' || echo '$(srcdir)/'`engineproxy.c ibus_daemon-engineproxy.obj: engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-engineproxy.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-engineproxy.Tpo -c -o ibus_daemon-engineproxy.obj `if test -f 'engineproxy.c'; then $(CYGPATH_W) 'engineproxy.c'; else $(CYGPATH_W) '$(srcdir)/engineproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-engineproxy.Tpo $(DEPDIR)/ibus_daemon-engineproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='engineproxy.c' object='ibus_daemon-engineproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-engineproxy.obj `if test -f 'engineproxy.c'; then $(CYGPATH_W) 'engineproxy.c'; else $(CYGPATH_W) '$(srcdir)/engineproxy.c'; fi` ibus_daemon-panelproxy.o: panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-panelproxy.o -MD -MP -MF $(DEPDIR)/ibus_daemon-panelproxy.Tpo -c -o ibus_daemon-panelproxy.o `test -f 'panelproxy.c' || echo '$(srcdir)/'`panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-panelproxy.Tpo $(DEPDIR)/ibus_daemon-panelproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='panelproxy.c' object='ibus_daemon-panelproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-panelproxy.o `test -f 'panelproxy.c' || echo '$(srcdir)/'`panelproxy.c ibus_daemon-panelproxy.obj: panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-panelproxy.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-panelproxy.Tpo -c -o ibus_daemon-panelproxy.obj `if test -f 'panelproxy.c'; then $(CYGPATH_W) 'panelproxy.c'; else $(CYGPATH_W) '$(srcdir)/panelproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-panelproxy.Tpo $(DEPDIR)/ibus_daemon-panelproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='panelproxy.c' object='ibus_daemon-panelproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-panelproxy.obj `if test -f 'panelproxy.c'; then $(CYGPATH_W) 'panelproxy.c'; else $(CYGPATH_W) '$(srcdir)/panelproxy.c'; fi` ibus_daemon-factoryproxy.o: factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-factoryproxy.o -MD -MP -MF $(DEPDIR)/ibus_daemon-factoryproxy.Tpo -c -o ibus_daemon-factoryproxy.o `test -f 'factoryproxy.c' || echo '$(srcdir)/'`factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-factoryproxy.Tpo $(DEPDIR)/ibus_daemon-factoryproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='factoryproxy.c' object='ibus_daemon-factoryproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-factoryproxy.o `test -f 'factoryproxy.c' || echo '$(srcdir)/'`factoryproxy.c ibus_daemon-factoryproxy.obj: factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-factoryproxy.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-factoryproxy.Tpo -c -o ibus_daemon-factoryproxy.obj `if test -f 'factoryproxy.c'; then $(CYGPATH_W) 'factoryproxy.c'; else $(CYGPATH_W) '$(srcdir)/factoryproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-factoryproxy.Tpo $(DEPDIR)/ibus_daemon-factoryproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='factoryproxy.c' object='ibus_daemon-factoryproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-factoryproxy.obj `if test -f 'factoryproxy.c'; then $(CYGPATH_W) 'factoryproxy.c'; else $(CYGPATH_W) '$(srcdir)/factoryproxy.c'; fi` ibus_daemon-global.o: global.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-global.o -MD -MP -MF $(DEPDIR)/ibus_daemon-global.Tpo -c -o ibus_daemon-global.o `test -f 'global.c' || echo '$(srcdir)/'`global.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-global.Tpo $(DEPDIR)/ibus_daemon-global.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='global.c' object='ibus_daemon-global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-global.o `test -f 'global.c' || echo '$(srcdir)/'`global.c ibus_daemon-global.obj: global.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-global.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-global.Tpo -c -o ibus_daemon-global.obj `if test -f 'global.c'; then $(CYGPATH_W) 'global.c'; else $(CYGPATH_W) '$(srcdir)/global.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-global.Tpo $(DEPDIR)/ibus_daemon-global.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='global.c' object='ibus_daemon-global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-global.obj `if test -f 'global.c'; then $(CYGPATH_W) 'global.c'; else $(CYGPATH_W) '$(srcdir)/global.c'; fi` ibus_daemon-server.o: server.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-server.o -MD -MP -MF $(DEPDIR)/ibus_daemon-server.Tpo -c -o ibus_daemon-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-server.Tpo $(DEPDIR)/ibus_daemon-server.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='ibus_daemon-server.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c ibus_daemon-server.obj: server.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-server.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-server.Tpo -c -o ibus_daemon-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-server.Tpo $(DEPDIR)/ibus_daemon-server.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='ibus_daemon-server.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` ibus_daemon-connection.o: connection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-connection.o -MD -MP -MF $(DEPDIR)/ibus_daemon-connection.Tpo -c -o ibus_daemon-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-connection.Tpo $(DEPDIR)/ibus_daemon-connection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='connection.c' object='ibus_daemon-connection.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c ibus_daemon-connection.obj: connection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-connection.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-connection.Tpo -c -o ibus_daemon-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-connection.Tpo $(DEPDIR)/ibus_daemon-connection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='connection.c' object='ibus_daemon-connection.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` ibus_daemon-matchrule.o: matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-matchrule.o -MD -MP -MF $(DEPDIR)/ibus_daemon-matchrule.Tpo -c -o ibus_daemon-matchrule.o `test -f 'matchrule.c' || echo '$(srcdir)/'`matchrule.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-matchrule.Tpo $(DEPDIR)/ibus_daemon-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matchrule.c' object='ibus_daemon-matchrule.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-matchrule.o `test -f 'matchrule.c' || echo '$(srcdir)/'`matchrule.c ibus_daemon-matchrule.obj: matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-matchrule.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-matchrule.Tpo -c -o ibus_daemon-matchrule.obj `if test -f 'matchrule.c'; then $(CYGPATH_W) 'matchrule.c'; else $(CYGPATH_W) '$(srcdir)/matchrule.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-matchrule.Tpo $(DEPDIR)/ibus_daemon-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matchrule.c' object='ibus_daemon-matchrule.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-matchrule.obj `if test -f 'matchrule.c'; then $(CYGPATH_W) 'matchrule.c'; else $(CYGPATH_W) '$(srcdir)/matchrule.c'; fi` ibus_daemon-marshalers.o: marshalers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-marshalers.o -MD -MP -MF $(DEPDIR)/ibus_daemon-marshalers.Tpo -c -o ibus_daemon-marshalers.o `test -f 'marshalers.c' || echo '$(srcdir)/'`marshalers.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-marshalers.Tpo $(DEPDIR)/ibus_daemon-marshalers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='marshalers.c' object='ibus_daemon-marshalers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-marshalers.o `test -f 'marshalers.c' || echo '$(srcdir)/'`marshalers.c ibus_daemon-marshalers.obj: marshalers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-marshalers.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-marshalers.Tpo -c -o ibus_daemon-marshalers.obj `if test -f 'marshalers.c'; then $(CYGPATH_W) 'marshalers.c'; else $(CYGPATH_W) '$(srcdir)/marshalers.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-marshalers.Tpo $(DEPDIR)/ibus_daemon-marshalers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='marshalers.c' object='ibus_daemon-marshalers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-marshalers.obj `if test -f 'marshalers.c'; then $(CYGPATH_W) 'marshalers.c'; else $(CYGPATH_W) '$(srcdir)/marshalers.c'; fi` ibus_daemon-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-main.o -MD -MP -MF $(DEPDIR)/ibus_daemon-main.Tpo -c -o ibus_daemon-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-main.Tpo $(DEPDIR)/ibus_daemon-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_daemon-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c ibus_daemon-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -MT ibus_daemon-main.obj -MD -MP -MF $(DEPDIR)/ibus_daemon-main.Tpo -c -o ibus_daemon-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_daemon-main.Tpo $(DEPDIR)/ibus_daemon-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='ibus_daemon-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_daemon_CFLAGS) $(CFLAGS) -c -o ibus_daemon-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` test_matchrule-component.o: component.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-component.o -MD -MP -MF $(DEPDIR)/test_matchrule-component.Tpo -c -o test_matchrule-component.o `test -f 'component.c' || echo '$(srcdir)/'`component.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-component.Tpo $(DEPDIR)/test_matchrule-component.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='component.c' object='test_matchrule-component.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-component.o `test -f 'component.c' || echo '$(srcdir)/'`component.c test_matchrule-component.obj: component.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-component.obj -MD -MP -MF $(DEPDIR)/test_matchrule-component.Tpo -c -o test_matchrule-component.obj `if test -f 'component.c'; then $(CYGPATH_W) 'component.c'; else $(CYGPATH_W) '$(srcdir)/component.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-component.Tpo $(DEPDIR)/test_matchrule-component.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='component.c' object='test_matchrule-component.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-component.obj `if test -f 'component.c'; then $(CYGPATH_W) 'component.c'; else $(CYGPATH_W) '$(srcdir)/component.c'; fi` test_matchrule-dbusimpl.o: dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-dbusimpl.o -MD -MP -MF $(DEPDIR)/test_matchrule-dbusimpl.Tpo -c -o test_matchrule-dbusimpl.o `test -f 'dbusimpl.c' || echo '$(srcdir)/'`dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-dbusimpl.Tpo $(DEPDIR)/test_matchrule-dbusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbusimpl.c' object='test_matchrule-dbusimpl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-dbusimpl.o `test -f 'dbusimpl.c' || echo '$(srcdir)/'`dbusimpl.c test_matchrule-dbusimpl.obj: dbusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-dbusimpl.obj -MD -MP -MF $(DEPDIR)/test_matchrule-dbusimpl.Tpo -c -o test_matchrule-dbusimpl.obj `if test -f 'dbusimpl.c'; then $(CYGPATH_W) 'dbusimpl.c'; else $(CYGPATH_W) '$(srcdir)/dbusimpl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-dbusimpl.Tpo $(DEPDIR)/test_matchrule-dbusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbusimpl.c' object='test_matchrule-dbusimpl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-dbusimpl.obj `if test -f 'dbusimpl.c'; then $(CYGPATH_W) 'dbusimpl.c'; else $(CYGPATH_W) '$(srcdir)/dbusimpl.c'; fi` test_matchrule-ibusimpl.o: ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-ibusimpl.o -MD -MP -MF $(DEPDIR)/test_matchrule-ibusimpl.Tpo -c -o test_matchrule-ibusimpl.o `test -f 'ibusimpl.c' || echo '$(srcdir)/'`ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-ibusimpl.Tpo $(DEPDIR)/test_matchrule-ibusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimpl.c' object='test_matchrule-ibusimpl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-ibusimpl.o `test -f 'ibusimpl.c' || echo '$(srcdir)/'`ibusimpl.c test_matchrule-ibusimpl.obj: ibusimpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-ibusimpl.obj -MD -MP -MF $(DEPDIR)/test_matchrule-ibusimpl.Tpo -c -o test_matchrule-ibusimpl.obj `if test -f 'ibusimpl.c'; then $(CYGPATH_W) 'ibusimpl.c'; else $(CYGPATH_W) '$(srcdir)/ibusimpl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-ibusimpl.Tpo $(DEPDIR)/test_matchrule-ibusimpl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibusimpl.c' object='test_matchrule-ibusimpl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-ibusimpl.obj `if test -f 'ibusimpl.c'; then $(CYGPATH_W) 'ibusimpl.c'; else $(CYGPATH_W) '$(srcdir)/ibusimpl.c'; fi` test_matchrule-inputcontext.o: inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-inputcontext.o -MD -MP -MF $(DEPDIR)/test_matchrule-inputcontext.Tpo -c -o test_matchrule-inputcontext.o `test -f 'inputcontext.c' || echo '$(srcdir)/'`inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-inputcontext.Tpo $(DEPDIR)/test_matchrule-inputcontext.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inputcontext.c' object='test_matchrule-inputcontext.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-inputcontext.o `test -f 'inputcontext.c' || echo '$(srcdir)/'`inputcontext.c test_matchrule-inputcontext.obj: inputcontext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-inputcontext.obj -MD -MP -MF $(DEPDIR)/test_matchrule-inputcontext.Tpo -c -o test_matchrule-inputcontext.obj `if test -f 'inputcontext.c'; then $(CYGPATH_W) 'inputcontext.c'; else $(CYGPATH_W) '$(srcdir)/inputcontext.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-inputcontext.Tpo $(DEPDIR)/test_matchrule-inputcontext.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inputcontext.c' object='test_matchrule-inputcontext.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-inputcontext.obj `if test -f 'inputcontext.c'; then $(CYGPATH_W) 'inputcontext.c'; else $(CYGPATH_W) '$(srcdir)/inputcontext.c'; fi` test_matchrule-engineproxy.o: engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-engineproxy.o -MD -MP -MF $(DEPDIR)/test_matchrule-engineproxy.Tpo -c -o test_matchrule-engineproxy.o `test -f 'engineproxy.c' || echo '$(srcdir)/'`engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-engineproxy.Tpo $(DEPDIR)/test_matchrule-engineproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='engineproxy.c' object='test_matchrule-engineproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-engineproxy.o `test -f 'engineproxy.c' || echo '$(srcdir)/'`engineproxy.c test_matchrule-engineproxy.obj: engineproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-engineproxy.obj -MD -MP -MF $(DEPDIR)/test_matchrule-engineproxy.Tpo -c -o test_matchrule-engineproxy.obj `if test -f 'engineproxy.c'; then $(CYGPATH_W) 'engineproxy.c'; else $(CYGPATH_W) '$(srcdir)/engineproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-engineproxy.Tpo $(DEPDIR)/test_matchrule-engineproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='engineproxy.c' object='test_matchrule-engineproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-engineproxy.obj `if test -f 'engineproxy.c'; then $(CYGPATH_W) 'engineproxy.c'; else $(CYGPATH_W) '$(srcdir)/engineproxy.c'; fi` test_matchrule-panelproxy.o: panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-panelproxy.o -MD -MP -MF $(DEPDIR)/test_matchrule-panelproxy.Tpo -c -o test_matchrule-panelproxy.o `test -f 'panelproxy.c' || echo '$(srcdir)/'`panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-panelproxy.Tpo $(DEPDIR)/test_matchrule-panelproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='panelproxy.c' object='test_matchrule-panelproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-panelproxy.o `test -f 'panelproxy.c' || echo '$(srcdir)/'`panelproxy.c test_matchrule-panelproxy.obj: panelproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-panelproxy.obj -MD -MP -MF $(DEPDIR)/test_matchrule-panelproxy.Tpo -c -o test_matchrule-panelproxy.obj `if test -f 'panelproxy.c'; then $(CYGPATH_W) 'panelproxy.c'; else $(CYGPATH_W) '$(srcdir)/panelproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-panelproxy.Tpo $(DEPDIR)/test_matchrule-panelproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='panelproxy.c' object='test_matchrule-panelproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-panelproxy.obj `if test -f 'panelproxy.c'; then $(CYGPATH_W) 'panelproxy.c'; else $(CYGPATH_W) '$(srcdir)/panelproxy.c'; fi` test_matchrule-factoryproxy.o: factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-factoryproxy.o -MD -MP -MF $(DEPDIR)/test_matchrule-factoryproxy.Tpo -c -o test_matchrule-factoryproxy.o `test -f 'factoryproxy.c' || echo '$(srcdir)/'`factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-factoryproxy.Tpo $(DEPDIR)/test_matchrule-factoryproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='factoryproxy.c' object='test_matchrule-factoryproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-factoryproxy.o `test -f 'factoryproxy.c' || echo '$(srcdir)/'`factoryproxy.c test_matchrule-factoryproxy.obj: factoryproxy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-factoryproxy.obj -MD -MP -MF $(DEPDIR)/test_matchrule-factoryproxy.Tpo -c -o test_matchrule-factoryproxy.obj `if test -f 'factoryproxy.c'; then $(CYGPATH_W) 'factoryproxy.c'; else $(CYGPATH_W) '$(srcdir)/factoryproxy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-factoryproxy.Tpo $(DEPDIR)/test_matchrule-factoryproxy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='factoryproxy.c' object='test_matchrule-factoryproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-factoryproxy.obj `if test -f 'factoryproxy.c'; then $(CYGPATH_W) 'factoryproxy.c'; else $(CYGPATH_W) '$(srcdir)/factoryproxy.c'; fi` test_matchrule-global.o: global.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-global.o -MD -MP -MF $(DEPDIR)/test_matchrule-global.Tpo -c -o test_matchrule-global.o `test -f 'global.c' || echo '$(srcdir)/'`global.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-global.Tpo $(DEPDIR)/test_matchrule-global.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='global.c' object='test_matchrule-global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-global.o `test -f 'global.c' || echo '$(srcdir)/'`global.c test_matchrule-global.obj: global.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-global.obj -MD -MP -MF $(DEPDIR)/test_matchrule-global.Tpo -c -o test_matchrule-global.obj `if test -f 'global.c'; then $(CYGPATH_W) 'global.c'; else $(CYGPATH_W) '$(srcdir)/global.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-global.Tpo $(DEPDIR)/test_matchrule-global.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='global.c' object='test_matchrule-global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-global.obj `if test -f 'global.c'; then $(CYGPATH_W) 'global.c'; else $(CYGPATH_W) '$(srcdir)/global.c'; fi` test_matchrule-server.o: server.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-server.o -MD -MP -MF $(DEPDIR)/test_matchrule-server.Tpo -c -o test_matchrule-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-server.Tpo $(DEPDIR)/test_matchrule-server.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='test_matchrule-server.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-server.o `test -f 'server.c' || echo '$(srcdir)/'`server.c test_matchrule-server.obj: server.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-server.obj -MD -MP -MF $(DEPDIR)/test_matchrule-server.Tpo -c -o test_matchrule-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-server.Tpo $(DEPDIR)/test_matchrule-server.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server.c' object='test_matchrule-server.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-server.obj `if test -f 'server.c'; then $(CYGPATH_W) 'server.c'; else $(CYGPATH_W) '$(srcdir)/server.c'; fi` test_matchrule-connection.o: connection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-connection.o -MD -MP -MF $(DEPDIR)/test_matchrule-connection.Tpo -c -o test_matchrule-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-connection.Tpo $(DEPDIR)/test_matchrule-connection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='connection.c' object='test_matchrule-connection.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c test_matchrule-connection.obj: connection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-connection.obj -MD -MP -MF $(DEPDIR)/test_matchrule-connection.Tpo -c -o test_matchrule-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-connection.Tpo $(DEPDIR)/test_matchrule-connection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='connection.c' object='test_matchrule-connection.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` test_matchrule-matchrule.o: matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-matchrule.o -MD -MP -MF $(DEPDIR)/test_matchrule-matchrule.Tpo -c -o test_matchrule-matchrule.o `test -f 'matchrule.c' || echo '$(srcdir)/'`matchrule.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-matchrule.Tpo $(DEPDIR)/test_matchrule-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matchrule.c' object='test_matchrule-matchrule.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-matchrule.o `test -f 'matchrule.c' || echo '$(srcdir)/'`matchrule.c test_matchrule-matchrule.obj: matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-matchrule.obj -MD -MP -MF $(DEPDIR)/test_matchrule-matchrule.Tpo -c -o test_matchrule-matchrule.obj `if test -f 'matchrule.c'; then $(CYGPATH_W) 'matchrule.c'; else $(CYGPATH_W) '$(srcdir)/matchrule.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-matchrule.Tpo $(DEPDIR)/test_matchrule-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matchrule.c' object='test_matchrule-matchrule.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-matchrule.obj `if test -f 'matchrule.c'; then $(CYGPATH_W) 'matchrule.c'; else $(CYGPATH_W) '$(srcdir)/matchrule.c'; fi` test_matchrule-marshalers.o: marshalers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-marshalers.o -MD -MP -MF $(DEPDIR)/test_matchrule-marshalers.Tpo -c -o test_matchrule-marshalers.o `test -f 'marshalers.c' || echo '$(srcdir)/'`marshalers.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-marshalers.Tpo $(DEPDIR)/test_matchrule-marshalers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='marshalers.c' object='test_matchrule-marshalers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-marshalers.o `test -f 'marshalers.c' || echo '$(srcdir)/'`marshalers.c test_matchrule-marshalers.obj: marshalers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-marshalers.obj -MD -MP -MF $(DEPDIR)/test_matchrule-marshalers.Tpo -c -o test_matchrule-marshalers.obj `if test -f 'marshalers.c'; then $(CYGPATH_W) 'marshalers.c'; else $(CYGPATH_W) '$(srcdir)/marshalers.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-marshalers.Tpo $(DEPDIR)/test_matchrule-marshalers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='marshalers.c' object='test_matchrule-marshalers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-marshalers.obj `if test -f 'marshalers.c'; then $(CYGPATH_W) 'marshalers.c'; else $(CYGPATH_W) '$(srcdir)/marshalers.c'; fi` test_matchrule-test-matchrule.o: test-matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-test-matchrule.o -MD -MP -MF $(DEPDIR)/test_matchrule-test-matchrule.Tpo -c -o test_matchrule-test-matchrule.o `test -f 'test-matchrule.c' || echo '$(srcdir)/'`test-matchrule.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-test-matchrule.Tpo $(DEPDIR)/test_matchrule-test-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-matchrule.c' object='test_matchrule-test-matchrule.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-test-matchrule.o `test -f 'test-matchrule.c' || echo '$(srcdir)/'`test-matchrule.c test_matchrule-test-matchrule.obj: test-matchrule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -MT test_matchrule-test-matchrule.obj -MD -MP -MF $(DEPDIR)/test_matchrule-test-matchrule.Tpo -c -o test_matchrule-test-matchrule.obj `if test -f 'test-matchrule.c'; then $(CYGPATH_W) 'test-matchrule.c'; else $(CYGPATH_W) '$(srcdir)/test-matchrule.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_matchrule-test-matchrule.Tpo $(DEPDIR)/test_matchrule-test-matchrule.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-matchrule.c' object='test_matchrule-test-matchrule.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_matchrule_CFLAGS) $(CFLAGS) -c -o test_matchrule-test-matchrule.obj `if test -f 'test-matchrule.c'; then $(CYGPATH_W) 'test-matchrule.c'; else $(CYGPATH_W) '$(srcdir)/test-matchrule.c'; fi` test_stress-test-client.o: test-client.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -MT test_stress-test-client.o -MD -MP -MF $(DEPDIR)/test_stress-test-client.Tpo -c -o test_stress-test-client.o `test -f 'test-client.c' || echo '$(srcdir)/'`test-client.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stress-test-client.Tpo $(DEPDIR)/test_stress-test-client.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-client.c' object='test_stress-test-client.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -c -o test_stress-test-client.o `test -f 'test-client.c' || echo '$(srcdir)/'`test-client.c test_stress-test-client.obj: test-client.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -MT test_stress-test-client.obj -MD -MP -MF $(DEPDIR)/test_stress-test-client.Tpo -c -o test_stress-test-client.obj `if test -f 'test-client.c'; then $(CYGPATH_W) 'test-client.c'; else $(CYGPATH_W) '$(srcdir)/test-client.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stress-test-client.Tpo $(DEPDIR)/test_stress-test-client.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-client.c' object='test_stress-test-client.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -c -o test_stress-test-client.obj `if test -f 'test-client.c'; then $(CYGPATH_W) 'test-client.c'; else $(CYGPATH_W) '$(srcdir)/test-client.c'; fi` test_stress-test-stress.o: test-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -MT test_stress-test-stress.o -MD -MP -MF $(DEPDIR)/test_stress-test-stress.Tpo -c -o test_stress-test-stress.o `test -f 'test-stress.c' || echo '$(srcdir)/'`test-stress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stress-test-stress.Tpo $(DEPDIR)/test_stress-test-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-stress.c' object='test_stress-test-stress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -c -o test_stress-test-stress.o `test -f 'test-stress.c' || echo '$(srcdir)/'`test-stress.c test_stress-test-stress.obj: test-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -MT test_stress-test-stress.obj -MD -MP -MF $(DEPDIR)/test_stress-test-stress.Tpo -c -o test_stress-test-stress.obj `if test -f 'test-stress.c'; then $(CYGPATH_W) 'test-stress.c'; else $(CYGPATH_W) '$(srcdir)/test-stress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stress-test-stress.Tpo $(DEPDIR)/test_stress-test-stress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-stress.c' object='test_stress-test-stress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_stress_CFLAGS) $(CFLAGS) -c -o test_stress-test-stress.obj `if test -f 'test-stress.c'; then $(CYGPATH_W) 'test-stress.c'; else $(CYGPATH_W) '$(srcdir)/test-stress.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man_oneDATA: $(man_one_DATA) @$(NORMAL_INSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(man_onedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man_onedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man_onedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man_onedir)" || exit $$?; \ done uninstall-man_oneDATA: @$(NORMAL_UNINSTALL) @list='$(man_one_DATA)'; test -n "$(man_onedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(man_onedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-matchrule.log: test-matchrule$(EXEEXT) @p='test-matchrule$(EXEEXT)'; \ b='test-matchrule'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-stress.log: test-stress$(EXEEXT) @p='test-stress$(EXEEXT)'; \ b='test-stress'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man_onedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man_oneDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man_oneDATA .MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man_oneDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-man_oneDATA .PRECIOUS: Makefile # gen marshal marshalers.h: marshalers.list $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=bus_marshal $(srcdir)/marshalers.list --header --internal > $@.tmp && \ mv $@.tmp $@ marshalers.c: marshalers.h marshalers.list $(AM_V_GEN) (echo "#include \"marshalers.h\""; \ $(GLIB_GENMARSHAL) --prefix=bus_marshal $(srcdir)/marshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src test: ibus-daemon $(ENV_IBUS_TEST) \ G_DEBUG=fatal_warnings \ $(builddir)/ibus-daemon -v %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/bus/Makefile.am0000644000000000000000000000720112551654123012261 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2007-2013 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DBINDIR=\"@bindir@\" \ -DIBUS_DISABLE_DEPRECATED \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ $(libibus) \ $(NULL) commonsrc = \ component.c \ component.h \ dbusimpl.c \ dbusimpl.h \ ibusimpl.c \ ibusimpl.h \ inputcontext.c \ inputcontext.h \ engineproxy.c \ engineproxy.h \ panelproxy.c \ panelproxy.h \ factoryproxy.c \ factoryproxy.h \ global.c \ global.h \ server.c \ server.h \ connection.c \ connection.h \ matchrule.c \ matchrule.h \ marshalers.c \ marshalers.h \ types.h \ $(NULL) bin_PROGRAMS = ibus-daemon ibus_daemon_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_daemon_SOURCES = \ $(commonsrc) \ main.c \ $(NULL) ibus_daemon_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_daemon_LDADD = \ $(AM_LDADD) \ $(NULL) BUILT_SOURCES = \ marshalers.h \ marshalers.c \ $(NULL) # gen marshal marshalers.h: marshalers.list $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=bus_marshal $(srcdir)/marshalers.list --header --internal > $@.tmp && \ mv $@.tmp $@ marshalers.c: marshalers.h marshalers.list $(AM_V_GEN) (echo "#include \"marshalers.h\""; \ $(GLIB_GENMARSHAL) --prefix=bus_marshal $(srcdir)/marshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ if ENABLE_TESTS TESTS = \ test-matchrule \ test-stress \ $(NULL) endif noinst_PROGRAMS = $(TESTS) test_matchrule_DEPENDENCIES = \ $(libibus) \ $(NULL) test_matchrule_SOURCES = \ $(commonsrc) \ test-matchrule.c \ $(NULL) test_matchrule_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) test_matchrule_LDADD = \ $(AM_LDADD) \ $(NULL) test_stress_SOURCES = \ test-client.c \ test-client.h \ test-stress.c \ $(NULL) test_stress_CFLAGS = \ $(AM_CFLAGS) \ @GTK2_CFLAGS@ \ @X11_CFLAGS@ \ $(NULL) test_stress_LDADD = \ $(AM_LDADD) \ @GTK2_LIBS@ \ @X11_LIBS@ \ $(NULL) EXTRA_DIST = \ $(man_one_in_files) \ marshalers.list \ $(NULL) CLEANFILES = \ $(man_one_DATA) \ $(man_one_files) \ $(NULL) $(libibus): $(MAKE) -C $(top_builddir)/src test: ibus-daemon $(ENV_IBUS_TEST) \ G_DEBUG=fatal_warnings \ $(builddir)/ibus-daemon -v man_one_in_files = ibus-daemon.1.in man_one_files = $(man_one_in_files:.1.in=.1) man_one_DATA =$(man_one_files:.1=.1.gz) man_onedir = $(mandir)/man1 %.1: %.1.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.1.gz: %.1 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ -include $(top_srcdir)/git.mk ibus-1.5.11/bus/connection.h0000644000000000000000000001107512551654123012541 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_CONNECTION_H_ #define __BUS_CONNECTION_H_ #include /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_CONNECTION \ (bus_connection_get_type ()) #define BUS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_CONNECTION, BusConnection)) #define BUS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_CONNECTION, BusConnectionClass)) #define BUS_IS_CONNECTION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_CONNECTION)) #define BUS_IS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_CONNECTION)) #define BUS_CONNECTION_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_CONNECTION, BusConnectionClass)) G_BEGIN_DECLS typedef struct _BusConnection BusConnection; typedef struct _BusConnectionClass BusConnectionClass; GType bus_connection_get_type (void); /** * bus_connection_new: * * Create a BusConnection object from a low-level GDBus connection. */ BusConnection *bus_connection_new (GDBusConnection *connection); /** * bus_connection_lookup: * * Lookup the BusConnection object which corresponds to the low-level connection. */ BusConnection *bus_connection_lookup (GDBusConnection *connection); const gchar *bus_connection_get_unique_name (BusConnection *connection); void bus_connection_set_unique_name (BusConnection *connection, const gchar *name); /** * bus_connection_get_names: * * Get the list of well-known names of the connection. */ const GList *bus_connection_get_names (BusConnection *connection); /** * bus_connection_add_name: * @name: a well-known name for the connection. * @returns: g_strdup (name) * * Add the well-known name to the connection. */ const gchar *bus_connection_add_name (BusConnection *connection, const gchar *name); /** * bus_connection_remove_name: * @name: a well-known name for the connection. * @returns: TRUE on success. * * Remove the well-known name from the connection. */ gboolean bus_connection_remove_name (BusConnection *connection, const gchar *name); /** * bus_connection_has_name: * @name: a well-known name for the connection. * @returns: TRUE if found the name. * * Lookup the well-known name from the connection. */ gboolean bus_connection_has_name (BusConnection *connection, const gchar *name); /** * bus_connection_get_dbus_connection: * * Get the underlying GDBus connection. */ GDBusConnection *bus_connection_get_dbus_connection (BusConnection *connection); /** * bus_connection_set_filter: * * Set a filter function which will be called on all incoming and outgoing messages on the connection. * WARNING - this filter function could be called by the GDBus's worker thread. So the function should not call thread unsafe IBus functions. */ void bus_connection_set_filter (BusConnection *connection, GDBusMessageFilterFunction filter_func, gpointer user_data, GDestroyNotify user_data_free_func); G_END_DECLS #endif ibus-1.5.11/bus/factoryproxy.h0000644000000000000000000000703012551654123013147 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_FACTORY_PROXY_H_ #define __BUS_FACTORY_PROXY_H_ #include #include "connection.h" #include "engineproxy.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_FACTORY_PROXY \ (bus_factory_proxy_get_type ()) #define BUS_FACTORY_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_FACTORY_PROXY, BusFactoryProxy)) #define BUS_FACTORY_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_FACTORY_PROXY, BusFactoryProxyClass)) #define BUS_IS_FACTORY_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_FACTORY_PROXY)) #define BUS_IS_FACTORY_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_FACTORY_PROXY)) #define BUS_FACTORY_PROXY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_FACTORY_PROXY, BusFactoryProxyClass)) G_BEGIN_DECLS typedef struct _BusFactoryProxy BusFactoryProxy; typedef struct _BusFactoryProxyClass BusFactoryProxyClass; GType bus_factory_proxy_get_type (void); /** * bus_factory_proxy_new: * @connection: the connection between ibus-daemon and an engine process. * @returns: a new proxy object. */ BusFactoryProxy *bus_factory_proxy_new (BusConnection *connection); /** * bus_factory_proxy_create_engine: * @desc: an engine description to create. * @timeout: timeout in msec, or -1 to use the default timeout value. * * Invoke "CreateEngine" method of the "org.freedesktop.IBus.Factory" interface asynchronously. */ void bus_factory_proxy_create_engine (BusFactoryProxy *factory, IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * bus_factory_proxy_create_engine_finish: * @returns: On success, return an D-Bus object path of the new engine. On error, returns NULL. * * Get the result of bus_factory_proxy_create_engine call. You have to call this function in the GAsyncReadyCallback function. */ gchar *bus_factory_proxy_create_engine_finish (BusFactoryProxy *factory, GAsyncResult *res, GError **error); G_END_DECLS #endif ibus-1.5.11/bus/component.c0000644000000000000000000003215212551654123012376 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2010 Peng Huang * Copyright (C) 2010 Google Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "component.h" #include #include #include #include #include "global.h" #include "marshalers.h" #include "types.h" enum { LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_COMPONENT, PROP_FACTORY, }; struct _BusComponent { IBusObject parent; /* instance members */ /* an object which represents one XML file in the ibus/component/ directory. */ IBusComponent *component; /* a proxy object which starts an engine. */ BusFactoryProxy *factory; /* TRUE if the component started in the verbose mode. */ gboolean verbose; /* TRUE if the component needs to be restarted when it dies. */ gboolean restart; /* TRUE if the component will be destroyed with factory. */ gboolean destroy_with_factory; /* process id of the process (e.g. ibus-config, ibus-engine-*, ..) of the component. */ GPid pid; guint child_source_id; }; struct _BusComponentClass { IBusObjectClass parent; /* class members */ }; /* functions prototype */ static GObject* bus_component_constructor (GType type, guint n_construct_params, GObjectConstructParam *construct_params); static void bus_component_set_property (BusComponent *component, guint prop_id, const GValue *value, GParamSpec *pspec); static void bus_component_get_property (BusComponent *component, guint prop_id, GValue *value, GParamSpec *pspec); static void bus_component_destroy (BusComponent *component); G_DEFINE_TYPE (BusComponent, bus_component, IBUS_TYPE_OBJECT) static void bus_component_class_init (BusComponentClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); gobject_class->constructor = bus_component_constructor; gobject_class->set_property = (GObjectSetPropertyFunc) bus_component_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) bus_component_get_property; ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_component_destroy; /* install properties */ g_object_class_install_property (gobject_class, PROP_COMPONENT, g_param_spec_object ("component", /* canonical name of the property */ "component", /* nick name */ "component", /* description */ IBUS_TYPE_COMPONENT, /* object type */ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_FACTORY, g_param_spec_object ("factory", "factory", "factory", BUS_TYPE_FACTORY_PROXY, G_PARAM_READWRITE)); } static void bus_component_init (BusComponent *component) { } /** * bus_component_constructor: * * A constructor method which is called after bus_component_init is called. */ static GObject* bus_component_constructor (GType type, guint n_construct_params, GObjectConstructParam *construct_params) { GObject *object; object = G_OBJECT_CLASS (bus_component_parent_class)->constructor (type, n_construct_params, construct_params); BusComponent *component = (BusComponent *) object; /* we have to override the _constructor method since in _init method, the component->component property is not set yet. */ g_assert (IBUS_IS_COMPONENT (component->component)); static GQuark quark = 0; if (quark == 0) { quark = g_quark_from_static_string ("BusComponent"); } /* associate each engine with BusComponent. a component might have one or more components. For example, ibus-engine-pinyin would * have two - 'pinyin' and 'bopomofo' and ibus-engine-m17n has many. On the other hand, the gtkpanel component does not have an * engine, of course. */ GList *engines = ibus_component_get_engines (component->component); GList *p; for (p = engines; p != NULL; p = p->next) { g_object_set_qdata ((GObject *) p->data, quark, component); } g_list_free (engines); return object; } static void bus_component_set_property (BusComponent *component, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_COMPONENT: g_assert (component->component == NULL); component->component = g_value_dup_object (value); break; case PROP_FACTORY: bus_component_set_factory (component, (BusFactoryProxy *) g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (component, prop_id, pspec); } } static void bus_component_get_property (BusComponent *component, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_COMPONENT: g_value_set_object (value, bus_component_get_component (component)); break; case PROP_FACTORY: g_value_set_object (value, bus_component_get_factory (component)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (component, prop_id, pspec); } } static void bus_component_destroy (BusComponent *component) { if (component->pid != 0) { bus_component_stop (component); g_spawn_close_pid (component->pid); component->pid = 0; } if (component->child_source_id != 0) { g_source_remove (component->child_source_id); component->child_source_id = 0; } if (component->component != NULL) { g_object_unref (component->component); component->component = NULL; } IBUS_OBJECT_CLASS (bus_component_parent_class)->destroy (IBUS_OBJECT (component)); } BusComponent * bus_component_new (IBusComponent *component, BusFactoryProxy *factory) { g_assert (IBUS_IS_COMPONENT (component)); return (BusComponent *) g_object_new (BUS_TYPE_COMPONENT, /* properties below will be set via the bus_component_set_property function. */ "component", component, "factory", factory, NULL); } static void bus_component_factory_destroy_cb (BusFactoryProxy *factory, BusComponent *component) { g_return_if_fail (component->factory == factory); g_object_unref (component->factory); component->factory = NULL; /* emit the "notify" signal for the factory property on component. */ g_object_notify ((GObject *) component, "factory"); if (component->destroy_with_factory) ibus_object_destroy ((IBusObject *) component); } IBusComponent * bus_component_get_component (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); return component->component; } void bus_component_set_factory (BusComponent *component, BusFactoryProxy *factory) { g_assert (BUS_IS_COMPONENT (component)); if (component->factory == factory) { return; } if (component->factory) { g_signal_handlers_disconnect_by_func (component->factory, bus_component_factory_destroy_cb, component); g_object_unref (component->factory); component->factory = NULL; } if (factory) { g_assert (BUS_IS_FACTORY_PROXY (factory)); component->factory = (BusFactoryProxy *) g_object_ref (factory); g_signal_connect (factory, "destroy", G_CALLBACK (bus_component_factory_destroy_cb), component); } /* emit the "notify" signal for the factory property on component. */ g_object_notify ((GObject*) component, "factory"); } BusFactoryProxy * bus_component_get_factory (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); return component->factory; } const gchar * bus_component_get_name (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); return ibus_component_get_name (component->component); } GList * bus_component_get_engines (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); return ibus_component_get_engines (component->component); } void bus_component_set_destroy_with_factory (BusComponent *component, gboolean with_factory) { g_assert (BUS_IS_COMPONENT (component)); component->destroy_with_factory = with_factory; } void bus_component_set_restart (BusComponent *component, gboolean restart) { g_assert (BUS_IS_COMPONENT (component)); component->restart = restart; } /** * bus_component_child_cb: * * A callback function to be called when the child process is terminated. */ static void bus_component_child_cb (GPid pid, gint status, BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); g_assert (component->pid == pid); g_spawn_close_pid (pid); component->pid = 0; component->child_source_id = 0; if (component->restart) { bus_component_start (component, component->verbose); } } gboolean bus_component_start (BusComponent *component, gboolean verbose) { g_assert (BUS_IS_COMPONENT (component)); if (component->pid != 0) return TRUE; component->verbose = verbose; gint argc; gchar **argv; gboolean retval; GError *error = NULL; if (!g_shell_parse_argv (ibus_component_get_exec (component->component), &argc, &argv, &error)) { g_warning ("Can not parse component %s exec: %s", ibus_component_get_name (component->component), error->message); g_error_free (error); return FALSE; } error = NULL; GSpawnFlags flags = G_SPAWN_DO_NOT_REAP_CHILD; if (!verbose) { flags |= G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL; } retval = g_spawn_async (NULL, argv, NULL, flags, NULL, NULL, &(component->pid), &error); g_strfreev (argv); if (!retval) { g_warning ("Can not execute component %s: %s", ibus_component_get_name (component->component), error->message); g_error_free (error); return FALSE; } component->child_source_id = g_child_watch_add (component->pid, (GChildWatchFunc) bus_component_child_cb, component); return TRUE; } gboolean bus_component_stop (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); if (component->pid == 0) return TRUE; kill (component->pid, SIGTERM); return TRUE; } gboolean bus_component_is_running (BusComponent *component) { g_assert (BUS_IS_COMPONENT (component)); return (component->pid != 0); } BusComponent * bus_component_from_engine_desc (IBusEngineDesc *engine) { g_assert (IBUS_IS_ENGINE_DESC (engine)); static GQuark quark = 0; if (quark == 0) { quark = g_quark_from_static_string ("BusComponent"); } return (BusComponent *) g_object_get_qdata ((GObject *) engine, quark); } ibus-1.5.11/bus/panelproxy.c0000644000000000000000000006654412551654123012611 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2014 Peng Huang * Copyright (C) 2008-2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "panelproxy.h" #include "global.h" #include "marshalers.h" #include "types.h" /* panelproxy.c is a very simple proxy class for the panel component that does only the following: * * 1. Handle D-Bus signals from the panel process. For the list of the D-Bus signals, you can check the bus_panel_proxy_g_signal function, or * introspection_xml in src/ibuspanelservice.c. The bus_panel_proxy_g_signal function simply emits a corresponding glib signal for each * D-Bus signal. * 2. Handle glib signals for a BusPanelProxy object (which is usually emitted by bus_panel_proxy_g_signal.) The list of such glib signals is * in the bus_panel_proxy_class_init function. The signal handler function, e.g. bus_panel_proxy_candidate_clicked, simply calls the * corresponding function in inputcontext.c, e.g. bus_input_context_candidate_clicked, using the current focused context. * 3. Provide a way to call D-Bus methods in the panel process. For the list of the D-Bus methods, you can check the header file (panelproxy.h) * or introspection_xml in src/ibuspanelservice.c. Functions that calls g_dbus_proxy_call, e.g. bus_panel_proxy_set_cursor_location, would * fall into this category. * 4. Handle glib signals for a BusInputContext object. The list of such glib signals is in the input_context_signals[] array. The signal handler * function, e.g. _context_set_cursor_location_cb, simply invokes a D-Bus method by calling a function like bus_panel_proxy_set_cursor_location. */ enum { PAGE_UP, PAGE_DOWN, CURSOR_UP, CURSOR_DOWN, CANDIDATE_CLICKED, PROPERTY_ACTIVATE, PROPERTY_SHOW, PROPERTY_HIDE, LAST_SIGNAL, }; struct _BusPanelProxy { IBusProxy parent; /* instance members */ BusInputContext *focused_context; }; struct _BusPanelProxyClass { IBusProxyClass parent; /* class members */ void (* page_up) (BusPanelProxy *panel); void (* page_down) (BusPanelProxy *panel); void (* cursor_up) (BusPanelProxy *panel); void (* cursor_down) (BusPanelProxy *panel); void (* candidate_clicked) (BusPanelProxy *panel, guint index, guint button, guint state); void (* property_activate) (BusPanelProxy *panel, const gchar *prop_name, gint prop_state); }; static guint panel_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void bus_panel_proxy_init (BusPanelProxy *panel); static void bus_panel_proxy_real_destroy (IBusProxy *proxy); static void bus_panel_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters); static void bus_panel_proxy_page_up (BusPanelProxy *panel); static void bus_panel_proxy_page_down (BusPanelProxy *panel); static void bus_panel_proxy_cursor_up (BusPanelProxy *panel); static void bus_panel_proxy_cursor_down (BusPanelProxy *panel); static void bus_panel_proxy_candidate_clicked (BusPanelProxy *panel, guint index, guint button, guint state); static void bus_panel_proxy_property_activate (BusPanelProxy *panel, const gchar *prop_name, gint prop_state); G_DEFINE_TYPE(BusPanelProxy, bus_panel_proxy, IBUS_TYPE_PROXY) BusPanelProxy * bus_panel_proxy_new (BusConnection *connection) { g_assert (BUS_IS_CONNECTION (connection)); GObject *obj; obj = g_initable_new (BUS_TYPE_PANEL_PROXY, NULL, NULL, "g-object-path", IBUS_PATH_PANEL, "g-interface-name", IBUS_INTERFACE_PANEL, "g-connection", bus_connection_get_dbus_connection (connection), "g-default-timeout", g_gdbus_timeout, "g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, NULL); return BUS_PANEL_PROXY (obj); } static void bus_panel_proxy_class_init (BusPanelProxyClass *class) { IBUS_PROXY_CLASS (class)->destroy = bus_panel_proxy_real_destroy; G_DBUS_PROXY_CLASS (class)->g_signal = bus_panel_proxy_g_signal; class->page_up = bus_panel_proxy_page_up; class->page_down = bus_panel_proxy_page_down; class->cursor_up = bus_panel_proxy_cursor_up; class->cursor_down = bus_panel_proxy_cursor_down; class->candidate_clicked = bus_panel_proxy_candidate_clicked; class->property_activate = bus_panel_proxy_property_activate; /* install signals */ panel_signals[PAGE_UP] = g_signal_new (I_("page-up"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, page_up), NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); panel_signals[PAGE_DOWN] = g_signal_new (I_("page-down"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, page_down), NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); panel_signals[CURSOR_UP] = g_signal_new (I_("cursor-up"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, cursor_up), NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); panel_signals[CURSOR_DOWN] = g_signal_new (I_("cursor-down"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, cursor_down), NULL, NULL, bus_marshal_VOID__VOID, G_TYPE_NONE, 0); panel_signals[CANDIDATE_CLICKED] = g_signal_new (I_("candidate-clicked"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, candidate_clicked), NULL, NULL, bus_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); panel_signals[PROPERTY_ACTIVATE] = g_signal_new (I_("property-activate"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, property_activate), NULL, NULL, bus_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); panel_signals[PROPERTY_SHOW] = g_signal_new (I_("property-show"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); panel_signals[PROPERTY_HIDE] = g_signal_new (I_("property-hide"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); } static void bus_panel_proxy_init (BusPanelProxy *panel) { /* member variables will automatically be zero-cleared. */ } static void bus_panel_proxy_real_destroy (IBusProxy *proxy) { BusPanelProxy *panel = (BusPanelProxy *)proxy; if (panel->focused_context) { bus_panel_proxy_focus_out (panel, panel->focused_context); panel->focused_context = NULL; } IBUS_PROXY_CLASS(bus_panel_proxy_parent_class)->destroy ((IBusProxy *)panel); } /** * bus_panel_proxy_g_signal: * * Handle all D-Bus signals from the panel process. This function emits a corresponding glib signal for each D-Bus signal. */ static void bus_panel_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters) { BusPanelProxy *panel = (BusPanelProxy *)proxy; /* The list of nullary D-Bus signals. */ static const struct { const gchar *signal_name; const guint signal_id; } signals [] = { { "PageUp", PAGE_UP }, { "PageDown", PAGE_DOWN }, { "CursorUp", CURSOR_UP }, { "CursorDown", CURSOR_DOWN }, }; gint i; for (i = 0; i < G_N_ELEMENTS (signals); i++) { if (g_strcmp0 (signal_name, signals[i].signal_name) == 0) { g_signal_emit (panel, panel_signals[signals[i].signal_id], 0); return; } } /* Handle D-Bus signals with parameters. Deserialize them and emit a glib signal. */ if (g_strcmp0 ("CandidateClicked", signal_name) == 0) { guint index = 0; guint button = 0; guint state = 0; g_variant_get (parameters, "(uuu)", &index, &button, &state); g_signal_emit (panel, panel_signals[CANDIDATE_CLICKED], 0, index, button, state); return; } if (g_strcmp0 ("PropertyActivate", signal_name) == 0) { gchar *prop_name = NULL; gint prop_state = 0; g_variant_get (parameters, "(&su)", &prop_name, &prop_state); g_signal_emit (panel, panel_signals[PROPERTY_ACTIVATE], 0, prop_name, prop_state); return; } if (g_strcmp0 ("PropertyShow", signal_name) == 0) { gchar *prop_name = NULL; g_variant_get (parameters, "(&s)", &prop_name); g_signal_emit (panel, panel_signals[PROPERTY_SHOW], 0, prop_name); return; } if (g_strcmp0 ("PropertyHide", signal_name) == 0) { gchar *prop_name = NULL; g_variant_get (parameters, "(&s)", &prop_name); g_signal_emit (panel, panel_signals[PROPERTY_HIDE], 0, prop_name); return; } /* shound not be reached */ g_return_if_reached (); } void bus_panel_proxy_set_cursor_location (BusPanelProxy *panel, gint x, gint y, gint w, gint h) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_dbus_proxy_call ((GDBusProxy *)panel, "SetCursorLocation", g_variant_new ("(iiii)", x, y, w, h), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_update_preedit_text (BusPanelProxy *panel, IBusText *text, guint cursor_pos, gboolean visible) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_TEXT (text)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable* )text); g_dbus_proxy_call ((GDBusProxy *)panel, "UpdatePreeditText", g_variant_new ("(vub)", variant, cursor_pos, visible), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_update_auxiliary_text (BusPanelProxy *panel, IBusText *text, gboolean visible) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_TEXT (text)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable* )text); g_dbus_proxy_call ((GDBusProxy *)panel, "UpdateAuxiliaryText", g_variant_new ("(vb)", variant, visible), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_update_lookup_table (BusPanelProxy *panel, IBusLookupTable *table, gboolean visible) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_LOOKUP_TABLE (table)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable* )table); g_dbus_proxy_call ((GDBusProxy *)panel, "UpdateLookupTable", g_variant_new ("(vb)", variant, visible), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_register_properties (BusPanelProxy *panel, IBusPropList *prop_list) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_PROP_LIST (prop_list)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)prop_list); g_dbus_proxy_call ((GDBusProxy *)panel, "RegisterProperties", g_variant_new ("(v)", variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_update_property (BusPanelProxy *panel, IBusProperty *prop) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_PROPERTY (prop)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)prop); g_dbus_proxy_call ((GDBusProxy *)panel, "UpdateProperty", g_variant_new ("(v)", variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_set_content_type (BusPanelProxy *panel, guint purpose, guint hints) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_dbus_proxy_call ((GDBusProxy *)panel, "ContentType", g_variant_new ("(uu)", purpose, hints), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } #define DEFINE_FUNC(name) \ static void \ bus_panel_proxy_##name (BusPanelProxy *panel) \ { \ g_assert (BUS_IS_PANEL_PROXY (panel)); \ \ if (panel->focused_context) { \ bus_input_context_##name (panel->focused_context); \ } \ } DEFINE_FUNC(page_up) DEFINE_FUNC(page_down) DEFINE_FUNC(cursor_up) DEFINE_FUNC(cursor_down) #undef DEFINE_FUNC static void bus_panel_proxy_candidate_clicked (BusPanelProxy *panel, guint index, guint button, guint state) { g_assert (BUS_IS_PANEL_PROXY (panel)); if (panel->focused_context) { bus_input_context_candidate_clicked (panel->focused_context, index, button, state); } } static void bus_panel_proxy_property_activate (BusPanelProxy *panel, const gchar *prop_name, gint prop_state) { g_assert (BUS_IS_PANEL_PROXY (panel)); if (panel->focused_context) { bus_input_context_property_activate (panel->focused_context, prop_name, prop_state); } } #define DEFINE_FUNCTION(Name, name) \ void bus_panel_proxy_##name (BusPanelProxy *panel) \ { \ g_assert (BUS_IS_PANEL_PROXY (panel)); \ g_dbus_proxy_call ((GDBusProxy *) panel, \ #Name, \ NULL, \ G_DBUS_CALL_FLAGS_NONE, \ -1, NULL, NULL, NULL); \ } DEFINE_FUNCTION (ShowPreeditText, show_preedit_text) DEFINE_FUNCTION (HidePreeditText, hide_preedit_text) DEFINE_FUNCTION (ShowAuxiliaryText, show_auxiliary_text) DEFINE_FUNCTION (HideAuxiliaryText, hide_auxiliary_text) DEFINE_FUNCTION (ShowLookupTable, show_lookup_table) DEFINE_FUNCTION (HideLookupTable, hide_lookup_table) DEFINE_FUNCTION (PageUpLookupTable, page_up_lookup_table) DEFINE_FUNCTION (PageDownLookupTable, page_down_lookup_table) DEFINE_FUNCTION (CursorUpLookupTable, cursor_up_lookup_table) DEFINE_FUNCTION (CursorDownLookupTable, cursor_down_lookup_table) DEFINE_FUNCTION (StateChanged, state_changed) #undef DEFINE_FUNCTION static void _context_set_cursor_location_cb (BusInputContext *context, gint x, gint y, gint w, gint h, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_set_cursor_location (panel, x, y, w, h); } static void _context_update_preedit_text_cb (BusInputContext *context, IBusText *text, guint cursor_pos, gboolean visible, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (text != NULL); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_update_preedit_text (panel, text, cursor_pos, visible); } static void _context_update_auxiliary_text_cb (BusInputContext *context, IBusText *text, gboolean visible, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_update_auxiliary_text (panel, text, visible); } static void _context_update_lookup_table_cb (BusInputContext *context, IBusLookupTable *table, gboolean visible, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_update_lookup_table (panel, table, visible); } static void _context_register_properties_cb (BusInputContext *context, IBusPropList *prop_list, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_register_properties (panel, prop_list); } static void _context_update_property_cb (BusInputContext *context, IBusProperty *prop, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_update_property (panel, prop); } static void _context_destroy_cb (BusInputContext *context, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (context == panel->focused_context); bus_panel_proxy_focus_out (panel, context); } static void _context_set_content_type_cb (BusInputContext *context, guint purpose, guint hints, BusPanelProxy *panel) { g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (BUS_IS_PANEL_PROXY (panel)); g_return_if_fail (panel->focused_context == context); bus_panel_proxy_set_content_type (panel, purpose, hints); } #define DEFINE_FUNCTION(name) \ static void _context_##name##_cb (BusInputContext *context, \ BusPanelProxy *panel) \ { \ g_assert (BUS_IS_INPUT_CONTEXT (context)); \ g_assert (BUS_IS_PANEL_PROXY (panel)); \ \ g_return_if_fail (panel->focused_context == context); \ \ bus_panel_proxy_##name (panel); \ } DEFINE_FUNCTION (show_preedit_text) DEFINE_FUNCTION (hide_preedit_text) DEFINE_FUNCTION (show_auxiliary_text) DEFINE_FUNCTION (hide_auxiliary_text) DEFINE_FUNCTION (show_lookup_table) DEFINE_FUNCTION (hide_lookup_table) DEFINE_FUNCTION (page_up_lookup_table) DEFINE_FUNCTION (page_down_lookup_table) DEFINE_FUNCTION (cursor_up_lookup_table) DEFINE_FUNCTION (cursor_down_lookup_table) DEFINE_FUNCTION (state_changed) #undef DEFINE_FUNCTION static const struct { gchar *name; GCallback callback; } input_context_signals[] = { { "set-cursor-location", G_CALLBACK (_context_set_cursor_location_cb) }, { "update-preedit-text", G_CALLBACK (_context_update_preedit_text_cb) }, { "show-preedit-text", G_CALLBACK (_context_show_preedit_text_cb) }, { "hide-preedit-text", G_CALLBACK (_context_hide_preedit_text_cb) }, { "update-auxiliary-text", G_CALLBACK (_context_update_auxiliary_text_cb) }, { "show-auxiliary-text", G_CALLBACK (_context_show_auxiliary_text_cb) }, { "hide-auxiliary-text", G_CALLBACK (_context_hide_auxiliary_text_cb) }, { "update-lookup-table", G_CALLBACK (_context_update_lookup_table_cb) }, { "show-lookup-table", G_CALLBACK (_context_show_lookup_table_cb) }, { "hide-lookup-table", G_CALLBACK (_context_hide_lookup_table_cb) }, { "page-up-lookup-table", G_CALLBACK (_context_page_up_lookup_table_cb) }, { "page-down-lookup-table", G_CALLBACK (_context_page_down_lookup_table_cb) }, { "cursor-up-lookup-table", G_CALLBACK (_context_cursor_up_lookup_table_cb) }, { "cursor-down-lookup-table", G_CALLBACK (_context_cursor_down_lookup_table_cb) }, { "register-properties", G_CALLBACK (_context_register_properties_cb) }, { "update-property", G_CALLBACK (_context_update_property_cb) }, { "engine-changed", G_CALLBACK (_context_state_changed_cb) }, { "destroy", G_CALLBACK (_context_destroy_cb) }, { "set-content-type", G_CALLBACK (_context_set_content_type_cb) }, }; void bus_panel_proxy_focus_in (BusPanelProxy *panel, BusInputContext *context) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_INPUT_CONTEXT (context)); if (panel->focused_context == context) return; if (panel->focused_context != NULL) bus_panel_proxy_focus_out (panel, panel->focused_context); g_object_ref_sink (context); panel->focused_context = context; const gchar *path = ibus_service_get_object_path ((IBusService *)context); g_dbus_proxy_call ((GDBusProxy *)panel, "FocusIn", g_variant_new ("(o)", path), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); /* install signal handlers */ gint i; for (i = 0; i < G_N_ELEMENTS (input_context_signals); i++) { g_signal_connect (context, input_context_signals[i].name, input_context_signals[i].callback, panel); } guint purpose, hints; bus_input_context_get_content_type (context, &purpose, &hints); bus_panel_proxy_set_content_type (panel, purpose, hints); } void bus_panel_proxy_focus_out (BusPanelProxy *panel, BusInputContext *context) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (panel->focused_context == context); /* uninstall signal handlers */ gint i; for (i = 0; i < G_N_ELEMENTS (input_context_signals); i++) { g_signal_handlers_disconnect_by_func (context, input_context_signals[i].callback, panel); } const gchar *path = ibus_service_get_object_path ((IBusService *)context); g_dbus_proxy_call ((GDBusProxy *)panel, "FocusOut", g_variant_new ("(o)", path), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); g_object_unref (panel->focused_context); panel->focused_context = NULL; } void bus_panel_proxy_destroy_context (BusPanelProxy *panel, BusInputContext *context) { const gchar *path; g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_INPUT_CONTEXT (context)); g_object_ref_sink (context); path = ibus_service_get_object_path ((IBusService *)context); g_dbus_proxy_call ((GDBusProxy *)panel, "DestroyContext", g_variant_new ("(o)", path), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); g_object_unref (context); } ibus-1.5.11/bus/server.c0000644000000000000000000001222412551654123011700 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "server.h" #include #include #include #include "dbusimpl.h" #include "ibusimpl.h" #include "global.h" static GDBusServer *server = NULL; static GMainLoop *mainloop = NULL; static BusDBusImpl *dbus = NULL; static BusIBusImpl *ibus = NULL; static gchar *address = NULL; static gboolean _restart = FALSE; static void _restart_server (void) { gchar *exe; gint fd; exe = g_strdup_printf ("/proc/%d/exe", getpid ()); exe = g_file_read_link (exe, NULL); if (exe == NULL) exe = BINDIR "/ibus-daemon"; /* close all fds except stdin, stdout, stderr */ for (fd = 3; fd <= sysconf (_SC_OPEN_MAX); fd ++) { close (fd); } _restart = FALSE; execv (exe, g_argv); /* If the server binary is replaced while the server is running, * "readlink /proc/[pid]/exe" might return a path with " (deleted)" * suffix. */ const gchar suffix[] = " (deleted)"; if (g_str_has_suffix (exe, suffix)) { exe [strlen (exe) - sizeof (suffix) + 1] = '\0'; execv (exe, g_argv); } g_warning ("execv %s failed!", g_argv[0]); exit (-1); } /** * bus_new_connection_cb: * @user_data: always NULL. * @returns: TRUE when the function can handle the connection. * * Handle incoming connections. */ static gboolean bus_new_connection_cb (GDBusServer *server, GDBusConnection *dbus_connection, gpointer user_data) { BusConnection *connection = bus_connection_new (dbus_connection); bus_dbus_impl_new_connection (dbus, connection); if (g_object_is_floating (connection)) { /* bus_dbus_impl_new_connection couldn't handle the connection. just delete the connection and return TRUE * (so that other connection handler will not handle the deleted connection.) */ ibus_object_destroy ((IBusObject *)connection); g_object_unref (connection); } return TRUE; } void bus_server_init (void) { dbus = bus_dbus_impl_get_default (); ibus = bus_ibus_impl_get_default (); bus_dbus_impl_register_object (dbus, (IBusService *)ibus); /* init server */ GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS; gchar *guid = g_dbus_generate_guid (); server = g_dbus_server_new_sync ( g_address, /* the place where the socket file lives, e.g. /tmp, abstract namespace, etc. */ flags, guid, NULL /* observer */, NULL /* cancellable */, NULL /* error */); g_free (guid); g_signal_connect (server, "new-connection", G_CALLBACK (bus_new_connection_cb), NULL); g_dbus_server_start (server); address = g_strdup_printf ("%s,guid=%s", g_dbus_server_get_client_address (server), g_dbus_server_get_guid (server)); /* write address to file */ ibus_write_address (address); /* own a session bus name so that third parties can easily track our life-cycle */ g_bus_own_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_IBUS, G_BUS_NAME_OWNER_FLAGS_NONE, NULL, NULL, NULL, NULL, NULL); } const gchar * bus_server_get_address (void) { return address; } void bus_server_run (void) { g_return_if_fail (server); /* create and run main loop */ mainloop = g_main_loop_new (NULL, FALSE); g_main_loop_run (mainloop); /* bus_server_quit is called. stop server */ g_dbus_server_stop (server); ibus_object_destroy ((IBusObject *)dbus); ibus_object_destroy ((IBusObject *)ibus); /* release resources */ g_object_unref (server); g_main_loop_unref (mainloop); mainloop = NULL; g_free (address); address = NULL; /* When _ibus_exit() is called, bus_ibus_impl_destroy() needs * to be called so that waitpid() prevents the processes from * becoming the daemons. So we run execv() after * ibus_object_destroy(ibus) is called here. */ if (_restart) { _restart_server (); /* should not reach here */ g_assert_not_reached (); } } void bus_server_quit (gboolean restart) { _restart = restart; if (mainloop) g_main_loop_quit (mainloop); } ibus-1.5.11/bus/marshalers.list0000644000000000000000000000043112551654123013261 00000000000000BOOL:UINT,UINT,UINT OBJECT:STRING VOID:INT,UINT VOID:INT,INT,INT,INT VOID:OBJECT VOID:OBJECT,BOOLEAN VOID:OBJECT,STRING VOID:OBJECT,UINT,BOOLEAN VOID:OBJECT,UINT,BOOLEAN,UINT VOID:OBJECT,STRING,STRING,STRING VOID:STRING VOID:STRING,INT VOID:UINT,UINT VOID:UINT,UINT,UINT VOID:VOID ibus-1.5.11/bus/inputcontext.h0000644000000000000000000002322712551654123013150 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2014 Peng Huang * Copyright (C) 2008-2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __BUS_INPUT_CONTEXT_H_ #define __BUS_INPUT_CONTEXT_H_ #include #include "connection.h" #include "factoryproxy.h" /* * Type macros. */ /* define GOBJECT macros */ #define BUS_TYPE_INPUT_CONTEXT \ (bus_input_context_get_type ()) #define BUS_INPUT_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ BUS_TYPE_INPUT_CONTEXT, \ BusInputContext)) #define BUS_INPUT_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ BUS_TYPE_INPUT_CONTEXT, \ BusInputContextClass)) #define BUS_IS_INPUT_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_INPUT_CONTEXT)) #define BUS_IS_INPUT_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_INPUT_CONTEXT)) #define BUS_INPUT_CONTEXT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ BUS_TYPE_INPUT_CONTEXT, \ BusInputContextClass)) G_BEGIN_DECLS typedef struct _BusInputContext BusInputContext; typedef struct _BusInputContextClass BusInputContextClass; GType bus_input_context_get_type (void); BusInputContext *bus_input_context_new (BusConnection *connection, const gchar *client); /** * bus_input_context_focus_in: * * Give a focus to the context. Call FocusIn, Enable, SetCapabilities, * and SetCursorLocation methods of the engine for the context, * and then emit glib signals to the context object. This function does * nothing if the context already has a focus. */ void bus_input_context_focus_in (BusInputContext *context); /** * bus_input_context_focus_out: * * Remove a focus from the context. Call FocusOut method of the engine for * the context. * This function does nothing if the context does not have a focus. */ void bus_input_context_focus_out (BusInputContext *context); /** * bus_input_context_has_focus: * @returns: context->has_focus. */ gboolean bus_input_context_has_focus (BusInputContext *context); /** * bus_input_context_enable: * * Enable the current engine for the context. Request an engine (if needed), * call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods * of the engine for the context, and then emit glib and D-Bus "enabled" * signals. */ void bus_input_context_enable (BusInputContext *context); /** * bus_input_context_disable: * * Disable the current engine for the context. Request an engine (if needed), * call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods * of the engine for the context, and then emit glib and D-Bus "enabled" * signals. */ void bus_input_context_disable (BusInputContext *context); /** * bus_input_context_page_up: * * Call page_up method of the current engine proxy. */ void bus_input_context_page_up (BusInputContext *context); /** * bus_input_context_page_down: * * Call page_down method of the current engine proxy. */ void bus_input_context_page_down (BusInputContext *context); /** * bus_input_context_cursor_up: * * Call cursor_up method of the current engine proxy. */ void bus_input_context_cursor_up (BusInputContext *context); /** * bus_input_context_cursor_down: * * Call cursor_down method of the current engine proxy. */ void bus_input_context_cursor_down (BusInputContext *context); /** * bus_input_context_candidate_clicked: * * Call candidate_clicked method of the current engine proxy. */ void bus_input_context_candidate_clicked (BusInputContext *context, guint index, guint button, guint state); /** * bus_input_context_set_engine: * * Use the engine on the context. */ void bus_input_context_set_engine (BusInputContext *context, BusEngineProxy *engine); /** * bus_input_context_set_engine_by_desc: * @desc: the engine to use on the context. * @timeout: timeout (in ms) for D-Bus calls. * @callback: a function to be called when bus_input_context_set_engine_by_desc * is finished. if NULL, the default callback * function, which just calls * bus_input_context_set_engine_by_desc_finish, is used. * * Create a new BusEngineProxy object and use it on the context. */ void bus_input_context_set_engine_by_desc (BusInputContext *context, IBusEngineDesc *desc, gint timeout, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * bus_input_context_set_engine_by_desc_finish: * * A function to be called by the GAsyncReadyCallback function for * bus_input_context_set_engine_by_desc. */ gboolean bus_input_context_set_engine_by_desc_finish (BusInputContext *context, GAsyncResult *res, GError **error); /** * bus_input_context_get_engine: * * Get a BusEngineProxy object of the current engine. */ BusEngineProxy *bus_input_context_get_engine (BusInputContext *context); /** * bus_input_context_get_engine_desc: * * Get an IBusEngineDesc object of the current engine. */ IBusEngineDesc *bus_input_context_get_engine_desc (BusInputContext *context); /** * bus_input_context_property_activate: * * Call property_activate method of the current engine proxy. */ void bus_input_context_property_activate (BusInputContext *context, const gchar *prop_name, gint prop_state); /** * bus_input_context_get_capabilities: * @returns: context->capabilities. */ guint bus_input_context_get_capabilities (BusInputContext *context); /** * bus_input_context_set_capabilities: * * Call set_capabilities method of the current engine proxy. */ void bus_input_context_set_capabilities (BusInputContext *context, guint capabilities); /** * bus_input_context_get_client: * @returns: context->client. */ const gchar *bus_input_context_get_client (BusInputContext *context); /** * bus_input_context_get_content_type: * @purpose: Input purpose. * @hints: Input hints. */ void bus_input_context_get_content_type (BusInputContext *context, guint *purpose, guint *hints); /** * bus_input_context_set_content_type: * @purpose: Input purpose. * @hints: Input hints. */ void bus_input_context_set_content_type (BusInputContext *context, guint purpose, guint hints); G_END_DECLS #endif ibus-1.5.11/data/0000755000000000000000000000000012551654536010435 500000000000000ibus-1.5.11/data/ibus.schemas.in0000644000000000000000000003536312551654123013273 00000000000000 /schemas/desktop/ibus/general/preload_engines /desktop/ibus/general/preload_engines ibus list [] string Preload engines Preload engines during ibus starts up /schemas/desktop/ibus/general/engines_order /desktop/ibus/general/engines_order ibus list [] string Engines order Saved engines order in input method list /schemas/desktop/ibus/general/switcher-delay-time /desktop/ibus/general/switcher-delay-time ibus int 400 Popup delay milliseconds for IME switcher window Set popup delay milliseconds to show IME switcher window. The default is 400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show the window and switch prev/next engines. /schemas/desktop/ibus/general/version /desktop/ibus/general/version ibus string Saved version number The saved version number will be used to check the difference between the version of the previous installed ibus and one of the current ibus. /schemas/desktop/ibus/general/xkb-latin-layouts /desktop/ibus/general/xkb-latin-layouts ibus list string [ara,bg,cz,dev,gr,gur,in,jp(kana),mal,mkd,ru,ua] Latin layouts which have no ASCII US layout is appended to the latin layouts. variant can be omitted. /schemas/desktop/ibus/general/use-xmodmap /desktop/ibus/general/use-xmodmap ibus bool true Use xmodmap Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched. /schemas/desktop/ibus/general/hotkey/trigger /desktop/ibus/general/hotkey/trigger ibus list string [Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R] Trigger shortcut keys The shortcut keys for turning input method on or off /schemas/desktop/ibus/general/hotkey/triggers /desktop/ibus/general/hotkey/triggers ibus list string [<Super>space] Trigger shortcut keys for gtk_accelerator_parse The shortcut keys for turning input method on or off /schemas/desktop/ibus/general/hotkey/enable_unconditional /desktop/ibus/general/hotkey/enable_unconditional ibus list string [] Enable shortcut keys The shortcut keys for turning input method on /schemas/desktop/ibus/general/hotkey/disable_unconditional /desktop/ibus/general/hotkey/disable_unconditional ibus list string [] Disable shortcut keys The shortcut keys for turning input method off /schemas/desktop/ibus/general/hotkey/next_engine /desktop/ibus/general/hotkey/next_engine ibus list string [Alt+Shift_L] Next engine shortcut keys The shortcut keys for switching to the next input method in the list /schemas/desktop/ibus/general/hotkey/next_engine_in_menu /desktop/ibus/general/hotkey/next_engine_in_menu ibus list string [Alt+Shift_L] Next engine shortcut keys The shortcut keys for switching to the next input method in the list /schemas/desktop/ibus/general/hotkey/prev_engine /desktop/ibus/general/hotkey/prev_engine ibus list string [] Prev engine shortcut keys The shortcut keys for switching to the previous input method /schemas/desktop/ibus/general/hotkey/previous_engine /desktop/ibus/general/hotkey/previous_engine ibus list string [] Prev engine shortcut keys The shortcut keys for switching to the previous input method /schemas/desktop/ibus/panel/show /desktop/ibus/panel/show ibus int 0 Auto hide The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always show /schemas/desktop/ibus/panel/x /desktop/ibus/panel/x ibus int -1 Language panel position /schemas/desktop/ibus/panel/y /desktop/ibus/panel/y ibus int -1 Language panel position /schemas/desktop/ibus/panel/follow-input-cursor-when-always-shown /desktop/ibus/panel/follow-input-cursor-when-always-shown ibus bool false Follow the input cursor in case the panel is always shown If true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location. /schemas/desktop/ibus/panel/auto-hide-timeout /desktop/ibus/panel/auto-hide-timeout ibus int 10000 The milliseconds to show property panel The milliseconds to show property panel after focus-in or properties are changed. /schemas/desktop/ibus/panel/lookup_table_orientation /desktop/ibus/panel/lookup_table_orientation ibus int 1 Orientation of lookup table Orientation of lookup table. 0 = Horizontal, 1 = Vertical /schemas/desktop/ibus/panel/show_icon_on_systray /desktop/ibus/panel/show_icon_on_systray ibus bool true Show icon on system tray Show icon on system tray /schemas/desktop/ibus/panel/show_im_name /desktop/ibus/panel/show_im_name ibus bool false Show input method name Show input method name on language bar /schemas/desktop/ibus/panel/xkb-icon-rgba /desktop/ibus/panel/xkb-icon-rgba ibus string #415099 RGBA value of XKB icon XKB icon shows the layout string and the string is rendered with the RGBA value. The RGBA value can be 1. a color name from X11, 2. a hex value in form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or precentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha. /schemas/desktop/ibus/panel/property-icon-delay-time /desktop/ibus/panel/property-icon-delay-time ibus int 500 The milliseconds to show the panel icon for a property The milliseconds to show the panel icon from the engine icon to a property icon whenever engines are switched if the property is specified by the value of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the property icon is shown immediately. /schemas/desktop/ibus/general/use_system_keyboard_layout /desktop/ibus/general/use_system_keyboard_layout ibus bool false Use system keyboard layout Use system keyboard (XKB) layout /schemas/desktop/ibus/panel/use_custom_font /desktop/ibus/panel/use_custom_font ibus bool false Use custom font Use custom font name for language panel /schemas/desktop/ibus/panel/custom_font /desktop/ibus/panel/custom_font ibus string Sans 10 Custom font Custom font name for language panel /schemas/desktop/ibus/general/embed_preedit_text /desktop/ibus/general/embed_preedit_text ibus bool true Embed Preedit Text Embed Preedit Text in Application Window /schemas/desktop/ibus/general/use_global_engine /desktop/ibus/general/use_global_engine ibus bool true Use global input method Share the same input method among all applications /schemas/desktop/ibus/general/enable_by_default /desktop/ibus/general/enable_by_default ibus bool false Enable input method by default Enable input method by default when the application gets input focus /schemas/desktop/ibus/general/dconf_preserve_name_prefixes /desktop/ibus/general/dconf_preserve_name_prefixes ibus list [/desktop/ibus/engine/pinyin,/desktop/ibus/engine/bopomofo,/desktop/ibus/engine/hangul] string DConf preserve name prefixes Prefixes of DConf keys to stop name conversion ibus-1.5.11/data/keymaps/0000755000000000000000000000000012551654536012106 500000000000000ibus-1.5.11/data/keymaps/jp0000644000000000000000000000226012551654123012352 00000000000000include common shift keycode 2 = exclam shift keycode 3 = quotedbl shift keycode 4 = numbersign shift keycode 5 = dollar shift keycode 6 = percent shift keycode 7 = ampersand shift keycode 8 = apostrophe shift keycode 9 = parenleft shift keycode 10 = parenright shift keycode 11 = asciitilde keycode 12 = minus shift keycode 12 = equal keycode 13 = asciicircum shift keycode 13 = asciitilde keycode 26 = at shift keycode 26 = grave keycode 27 = bracketleft shift keycode 27 = braceleft keycode 39 = semicolon shift keycode 39 = plus keycode 40 = colon shift keycode 40 = asterisk keycode 41 = Zenkaku_Hankaku keycode 43 = bracketright shift keycode 43 = braceright keycode 51 = comma shift keycode 51 = less keycode 52 = period shift keycode 52 = greater keycode 53 = slash shift keycode 53 = question shift keycode 58 = Eisu_toggle keycode 89 = backslash shift keycode 89 = underscore keycode 92 = Henkan_Mode keycode 93 = Hiragana_Katakana keycode 94 = Muhenkan keycode 124 = yen shift keycode 124 = bar keycode 122 = Hangul keycode 123 = Hangul_Hanja shift keycode 84 = Execute keycode 112 = Katakana ibus-1.5.11/data/keymaps/in0000644000000000000000000000005212551654123012344 00000000000000include us keycode 100 = ISO_Level3_Shift ibus-1.5.11/data/keymaps/modifiers0000644000000000000000000000027612551654123013727 00000000000000keycode 29 = Control_L keycode 42 = Shift_L keycode 54 = Shift_R keycode 56 = Alt_L keycode 97 = Control_R keycode 100 = Alt_R keycode 125 = Super_L keycode 126 = Super_R keycode 127 = Menu ibus-1.5.11/data/keymaps/us0000644000000000000000000000160712551654123012374 00000000000000include common shift keycode 2 = exclam shift keycode 3 = at shift keycode 4 = numbersign shift keycode 5 = dollar shift keycode 6 = percent shift keycode 7 = asciicircum shift keycode 8 = ampersand shift keycode 9 = asterisk shift keycode 10 = parenleft shift keycode 11 = parenright keycode 12 = minus shift keycode 12 = underscore keycode 13 = equal shift keycode 13 = plus keycode 26 = bracketleft shift keycode 26 = braceleft keycode 27 = bracketright shift keycode 27 = braceright keycode 39 = semicolon shift keycode 39 = colon keycode 40 = apostrophe shift keycode 40 = quotedbl keycode 41 = grave shift keycode 41 = asciitilde keycode 43 = backslash shift keycode 43 = bar keycode 51 = comma shift keycode 51 = less keycode 52 = period shift keycode 52 = greater keycode 53 = slash shift keycode 53 = question ibus-1.5.11/data/keymaps/common0000644000000000000000000000416212551654123013234 00000000000000include modifiers keycode 1 = Escape keycode 2 = 1 keycode 3 = 2 keycode 4 = 3 keycode 5 = 4 keycode 6 = 5 keycode 7 = 6 keycode 8 = 7 keycode 9 = 8 keycode 10 = 9 keycode 11 = 0 keycode 14 = BackSpace keycode 15 = Tab shift keycode 15 = ISO_Left_Tab keycode 16 = q addupper keycode 17 = w addupper keycode 18 = e addupper keycode 19 = r addupper keycode 20 = t addupper keycode 21 = y addupper keycode 22 = u addupper keycode 23 = i addupper keycode 24 = o addupper keycode 25 = p addupper keycode 28 = Return keycode 30 = a addupper keycode 31 = s addupper keycode 32 = d addupper keycode 33 = f addupper keycode 34 = g addupper keycode 35 = h addupper keycode 36 = j addupper keycode 37 = k addupper keycode 38 = l addupper keycode 44 = z addupper keycode 45 = x addupper keycode 46 = c addupper keycode 47 = v addupper keycode 48 = b addupper keycode 49 = n addupper keycode 50 = m addupper keycode 55 = KP_Multiply keycode 57 = space keycode 58 = Caps_Lock keycode 59 = F1 keycode 60 = F2 keycode 61 = F3 keycode 62 = F4 keycode 63 = F5 keycode 64 = F6 keycode 65 = F7 keycode 66 = F8 keycode 67 = F9 keycode 68 = F10 keycode 69 = Num_Lock keycode 70 = Scroll_Lock keycode 71 = KP_Home numlock keycode 71 = KP_7 keycode 72 = KP_Up numlock keycode 72 = KP_8 keycode 73 = KP_Prior numlock keycode 73 = KP_9 keycode 74 = KP_Subtract keycode 75 = KP_Left numlock keycode 75 = KP_4 keycode 76 = KP_Begin numlock keycode 76 = KP_5 keycode 77 = KP_Right numlock keycode 77 = KP_6 keycode 78 = KP_Add keycode 79 = KP_End numlock keycode 79 = KP_1 keycode 80 = KP_Down numlock keycode 80 = KP_2 keycode 81 = KP_Next numlock keycode 81 = KP_3 keycode 82 = KP_Insert numlock keycode 82 = KP_0 keycode 83 = KP_Delete numlock keycode 83 = KP_Decimal keycode 86 = less shift keycode 86 = greater altgr keycode 86 = bar shift altgr keycode 86 = brokenbar keycode 87 = F11 keycode 88 = F12 keycode 98 = KP_Divide keycode 102 = Home keycode 103 = Up keycode 104 = Page_Up keycode 105 = Left keycode 106 = Right keycode 107 = End keycode 108 = Down keycode 109 = Page_Down keycode 110 = Insert keycode 111 = Delete ibus-1.5.11/data/keymaps/kr0000644000000000000000000000007312551654123012355 00000000000000include us keycode 122 = Hangul keycode 123 = Hangul_Hanja ibus-1.5.11/data/keymaps/Makefile.in0000644000000000000000000004730312551654257014102 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # keymaps = \ # ar \ # common \ # da \ # de \ # de-ch \ # en-gb \ # es \ # et \ # fi \ # fo \ # fr \ # fr-be \ # fr-ca \ # fr-ch \ # hr \ # hu \ # in \ # is \ # it \ # jp \ # lt \ # lv \ # mk \ # modifiers \ # nl \ # nl-be \ # no \ # pl \ # pt \ # pt-br \ # ru \ # sl \ # sv \ # th \ # tr \ # us \ # $(NULL) VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = data/keymaps ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(keymapsdir)" DATA = $(keymaps_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ keymaps = \ common \ modifiers \ us \ jp \ kr \ in \ $(NULL) keymaps_DATA = $(keymaps) keymapsdir = $(pkgdatadir)/keymaps EXTRA_DIST = \ $(keymaps) \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/keymaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/keymaps/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-keymapsDATA: $(keymaps_DATA) @$(NORMAL_INSTALL) @list='$(keymaps_DATA)'; test -n "$(keymapsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(keymapsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(keymapsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(keymapsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(keymapsdir)" || exit $$?; \ done uninstall-keymapsDATA: @$(NORMAL_UNINSTALL) @list='$(keymaps_DATA)'; test -n "$(keymapsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(keymapsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(keymapsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-keymapsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-keymapsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-keymapsDATA install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-keymapsDATA .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/data/keymaps/Makefile.am0000644000000000000000000000262512551654123014057 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # keymaps = \ # ar \ # common \ # da \ # de \ # de-ch \ # en-gb \ # es \ # et \ # fi \ # fo \ # fr \ # fr-be \ # fr-ca \ # fr-ch \ # hr \ # hu \ # in \ # is \ # it \ # jp \ # lt \ # lv \ # mk \ # modifiers \ # nl \ # nl-be \ # no \ # pl \ # pt \ # pt-br \ # ru \ # sl \ # sv \ # th \ # tr \ # us \ # $(NULL) keymaps = \ common \ modifiers \ us \ jp \ kr \ in \ $(NULL) keymaps_DATA = $(keymaps) keymapsdir = $(pkgdatadir)/keymaps EXTRA_DIST = \ $(keymaps) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/data/dconf/0000755000000000000000000000000012551654541011522 500000000000000ibus-1.5.11/data/dconf/make-dconf-override-db.sh0000755000000000000000000000253112551654123016202 00000000000000#!/bin/bash set -e # gnome-continuous doesn't have a machine-id set, which # breaks dbus-launch. There's dbus-run-session which is # better, but not everyone has it yet. export DBUS_FATAL_WARNINGS=0 export TMPDIR=$(mktemp -d --tmpdir="$PWD") export XDG_CONFIG_HOME="$TMPDIR/config" export XDG_CACHE_HOME="$TMPDIR/cache" export GSETTINGS_SCHEMA_DIR="$TMPDIR/schemas" mkdir -p $XDG_CONFIG_HOME $XDG_CACHE_HOME $GSETTINGS_SCHEMA_DIR eval `dbus-launch --sh-syntax` trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID' ERR # in case that schema is not installed on the system glib-compile-schemas --targetdir "$GSETTINGS_SCHEMA_DIR" "$PWD" cat <space'] [desktop/ibus/panel] x=-1 property-icon-delay-time=500 y=-1 lookup-table-orientation=1 show=0 xkb-icon-rgba='#415099' auto-hide-timeout=10000 show-im-name=false follow-input-cursor-when-always-shown=false custom-font='Sans 10' show-icon-on-systray=true use-custom-font=false ibus-1.5.11/data/dconf/profile/0000755000000000000000000000000012551654541013162 500000000000000ibus-1.5.11/data/dconf/profile/ibus0000644000000000000000000000003412551654123013760 00000000000000user-db:user system-db:ibus ibus-1.5.11/data/dconf/ibus.convert0000644000000000000000000000224612551654123014006 00000000000000[org.freedesktop.ibus.general] embed-preedit-text = /desktop/ibus/general/embed_preedit_text enable-by-default = /desktop/ibus/general/enable_by_default preload-engines = /desktop/ibus/general/preload_engines use-global-engine = /desktop/ibus/general/use_global_engine use-system-keyboard-layout = /desktop/ibus/general/use_system_keyboard_layout [org.freedesktop.ibus.general.hotkey] disable-unconditional = /desktop/ibus/general/disable_unconditional enable-unconditional = /desktop/ibus/general/enable_unconditional next-engine = /desktop/ibus/general/next_engine next-engine-in-menu = /desktop/ibus/general/next_engine_in_menu prev-engine = /desktop/ibus/general/prev_engine previous-engine = /desktop/ibus/general/previous_engine trigger = /desktop/ibus/general/trigger [org.freedesktop.ibus.panel] custom-font = /desktop/ibus/general/custom_font lookup-table-orientation = /desktop/ibus/general/lookup_table_orientation show = /desktop/ibus/general/show show-icon-on-systray = /desktop/ibus/general/show_icon_on_systray show-im-name = /desktop/ibus/general/show_im_name use-custom-font = /desktop/ibus/general/use_custom_font x = /desktop/ibus/general/x y = /desktop/ibus/general/y ibus-1.5.11/data/dconf/org.freedesktop.ibus.gschema.xml.in0000644000000000000000000001657712551654536020265 00000000000000[]Preload enginesPreload engines during ibus starts up[]Engines orderSaved engines order in input method list400Popup delay milliseconds for IME switcher windowSet popup delay milliseconds to show IME switcher window. The default is 400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show the window and switch prev/next engines.''Saved version numberThe saved version number will be used to check the difference between the version of the previous installed ibus and one of the current ibus.[ 'ara', 'bg', 'cz', 'dev', 'gr', 'gur', 'in', 'jp(kana)', 'mal', 'mkd', 'ru', 'ua' ]Latin layouts which have no ASCIIUS layout is appended to the latin layouts. variant can be omitted.trueUse xmodmapRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.falseUse system keyboard layoutUse system keyboard (XKB) layouttrueEmbed Preedit TextEmbed Preedit Text in Application WindowtrueUse global input methodShare the same input method among all applicationsfalseEnable input method by defaultEnable input method by default when the application gets input focus[ '/desktop/ibus/engine/pinyin', '/desktop/ibus/engine/bopomofo', '/desktop/ibus/engine/hangul' ]DConf preserve name prefixesPrefixes of DConf keys to stop name conversion[ 'Control+space', 'Zenkaku_Hankaku', 'Alt+Kanji', 'Alt+grave', 'Hangul', 'Alt+Release+Alt_R' ]Trigger shortcut keysThe shortcut keys for turning input method on or off[ '<Super>space' ]Trigger shortcut keys for gtk_accelerator_parseThe shortcut keys for turning input method on or off[]Enable shortcut keysThe shortcut keys for turning input method on[]Disable shortcut keysThe shortcut keys for turning input method off[ 'Alt+Shift_L' ]Next engine shortcut keysThe shortcut keys for switching to the next input method in the list[ 'Alt+Shift_L' ]Next engine shortcut keysThe shortcut keys for switching to the next input method in the list[]Prev engine shortcut keysThe shortcut keys for switching to the previous input method[]Prev engine shortcut keysThe shortcut keys for switching to the previous input method0Auto hideThe behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always show-1Language panel position-1Language panel positionfalseFollow the input cursor in case the panel is always shownIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.10000The milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.1Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticaltrueShow icon on system trayShow icon on system trayfalseShow input method nameShow input method name on language bar'#415099'RGBA value of XKB iconXKB icon shows the layout string and the string is rendered with the RGBA value. The RGBA value can be 1. a color name from X11, 2. a hex value in form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or precentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.500The milliseconds to show the panel icon for a propertyThe milliseconds to show the panel icon from the engine icon to a property icon whenever engines are switched if the property is specified by the value of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the property icon is shown immediately.falseUse custom fontUse custom font name for language panel'Sans 10'Custom fontCustom font name for language panelibus-1.5.11/data/dconf/Makefile.in0000644000000000000000000005544112551654257013524 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2011 Daiki Ueno # Copyright (c) 2007-2011 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = data/dconf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_gsettingsconvert_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(dconfdbdir)" \ "$(DESTDIR)$(dconfprofiledir)" \ "$(DESTDIR)$(gsettingsconvertdir)" DATA = $(dconfdb_DATA) $(dconfprofile_DATA) \ $(dist_gsettingsconvert_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ gsettings_schemas_in_files = org.freedesktop.ibus.gschema.xml.in gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml) gsettingsconvertdir = $(datadir)/GConf/gsettings dist_gsettingsconvert_DATA = ibus.convert EXTRA_DIST = \ $(gsettings_schemas_in_files) \ make-dconf-override-db.sh \ profile/ibus \ 00-upstream-settings \ $(NULL) CLEANFILES = \ $(gsettings_SCHEMAS) \ $(NULL) MAINTAINERCLEANFILES = \ $(gsettings_schemas_in_files) \ 00-upstream-settings \ $(NULL) dconfprofiledir = $(sysconfdir)/dconf/profile dconfprofile_DATA = profile/ibus dconfdbdir = $(sysconfdir)/dconf/db/ibus.d dconfdb_DATA = 00-upstream-settings all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/dconf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/dconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dconfdbDATA: $(dconfdb_DATA) @$(NORMAL_INSTALL) @list='$(dconfdb_DATA)'; test -n "$(dconfdbdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dconfdbdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dconfdbdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dconfdbdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dconfdbdir)" || exit $$?; \ done uninstall-dconfdbDATA: @$(NORMAL_UNINSTALL) @list='$(dconfdb_DATA)'; test -n "$(dconfdbdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dconfdbdir)'; $(am__uninstall_files_from_dir) install-dconfprofileDATA: $(dconfprofile_DATA) @$(NORMAL_INSTALL) @list='$(dconfprofile_DATA)'; test -n "$(dconfprofiledir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dconfprofiledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dconfprofiledir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dconfprofiledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dconfprofiledir)" || exit $$?; \ done uninstall-dconfprofileDATA: @$(NORMAL_UNINSTALL) @list='$(dconfprofile_DATA)'; test -n "$(dconfprofiledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dconfprofiledir)'; $(am__uninstall_files_from_dir) install-dist_gsettingsconvertDATA: $(dist_gsettingsconvert_DATA) @$(NORMAL_INSTALL) @list='$(dist_gsettingsconvert_DATA)'; test -n "$(gsettingsconvertdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(gsettingsconvertdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(gsettingsconvertdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gsettingsconvertdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(gsettingsconvertdir)" || exit $$?; \ done uninstall-dist_gsettingsconvertDATA: @$(NORMAL_UNINSTALL) @list='$(dist_gsettingsconvert_DATA)'; test -n "$(gsettingsconvertdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(gsettingsconvertdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(dconfdbdir)" "$(DESTDIR)$(dconfprofiledir)" "$(DESTDIR)$(gsettingsconvertdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dconfdbDATA install-dconfprofileDATA \ install-dist_gsettingsconvertDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dconfdbDATA uninstall-dconfprofileDATA \ uninstall-dist_gsettingsconvertDATA .MAKE: install-am install-data-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook install-dconfdbDATA install-dconfprofileDATA \ install-dist_gsettingsconvertDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dconfdbDATA uninstall-dconfprofileDATA \ uninstall-dist_gsettingsconvertDATA .PRECIOUS: Makefile @GSETTINGS_RULES@ @INTLTOOL_XML_NOMERGE_RULE@ org.freedesktop.ibus.gschema.xml.in: $(top_srcdir)/data/ibus.schemas.in $(AM_V_GEN) gsettings-schema-convert --force --gconf --xml \ --schema-id "org.freedesktop.ibus" \ --output $@ $< 00-upstream-settings: $(srcdir)/make-dconf-override-db.sh | $(gsettings_SCHEMAS) @$(MKDIR_P) db $(AM_V_GEN) $(srcdir)/make-dconf-override-db.sh > $@ || \ { rc=$$?; $(RM) -rf $@; exit $$rc; } install-data-hook: if test -z "$(DESTDIR)"; then \ dconf update; \ fi -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/data/dconf/Makefile.am0000644000000000000000000000413112551654123013471 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2011 Daiki Ueno # Copyright (c) 2007-2011 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA gsettings_schemas_in_files = org.freedesktop.ibus.gschema.xml.in gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml) gsettingsconvertdir = $(datadir)/GConf/gsettings dist_gsettingsconvert_DATA = ibus.convert @GSETTINGS_RULES@ @INTLTOOL_XML_NOMERGE_RULE@ EXTRA_DIST = \ $(gsettings_schemas_in_files) \ make-dconf-override-db.sh \ profile/ibus \ 00-upstream-settings \ $(NULL) CLEANFILES = \ $(gsettings_SCHEMAS) \ $(NULL) MAINTAINERCLEANFILES = \ $(gsettings_schemas_in_files) \ 00-upstream-settings \ $(NULL) dconfprofiledir = $(sysconfdir)/dconf/profile dconfprofile_DATA = profile/ibus dconfdbdir = $(sysconfdir)/dconf/db/ibus.d dconfdb_DATA = 00-upstream-settings org.freedesktop.ibus.gschema.xml.in: $(top_srcdir)/data/ibus.schemas.in $(AM_V_GEN) gsettings-schema-convert --force --gconf --xml \ --schema-id "org.freedesktop.ibus" \ --output $@ $< 00-upstream-settings: $(srcdir)/make-dconf-override-db.sh | $(gsettings_SCHEMAS) @$(MKDIR_P) db $(AM_V_GEN) $(srcdir)/make-dconf-override-db.sh > $@ || \ { rc=$$?; $(RM) -rf $@; exit $$rc; } install-data-hook: if test -z "$(DESTDIR)"; then \ dconf update; \ fi -include $(top_srcdir)/git.mk ibus-1.5.11/data/icons/0000755000000000000000000000000012551654535011547 500000000000000ibus-1.5.11/data/icons/scalable/0000755000000000000000000000000012551654535013315 500000000000000ibus-1.5.11/data/icons/scalable/ibus-keyboard.svg0000644000000000000000000027261712551654123016526 00000000000000 image/svg+xml ibus-1.5.11/data/icons/scalable/ibus.svg0000644000000000000000000003746412551654123014727 00000000000000 image/svg+xml Character map August 2007 Andreas Nilsson Andreas Nilsson ibus-1.5.11/data/icons/scalable/ibus-setup.svg0000644000000000000000000005345012551654123016056 00000000000000 image/svg+xml System Applications Jakub Steiner http://jimmac.musichall.cz/ system applications group category admin root ibus-1.5.11/data/icons/scalable/ibus-engine.svg0000644000000000000000000005345012551654123016163 00000000000000 image/svg+xml System Applications Jakub Steiner http://jimmac.musichall.cz/ system applications group category admin root ibus-1.5.11/data/icons/32/0000755000000000000000000000000012551654535011773 500000000000000ibus-1.5.11/data/icons/32/ibus-keyboard.png0000644000000000000000000000337212551654123015157 00000000000000‰PNG  IHDR szzôtEXtSoftwareAdobe ImageReadyqÉe<œIDATxÚÄWmlS×~î—íı¯S‡ÐHÆHIKi‰AÓÂ@•X§l øAl¿6¡uêªýX£*£­Ê*µTªª¶£"´hTãG[ж´š`a°‘Ââfùþ²bÇ×_÷ú~¸& eÒðÔ#½:÷ß÷¾ÏyÞ¯c ˆ£íLÀòÓ7»Å¥è°ÅˆËk.[õ­0‰¾ÉàYŠ_ Ã??uÅiÑ-{tMñ]8þúùÿ+€gÞérh¬³†0F5CÈJ†a×ÍôåÔ\×åß=| .å{Ì7}ñȉÞäw ˜&Ã4®¢ª6šŠM|úÆsPèßYúšB…@[Û_y©ZìW³©·?=ÝÞ1p©3E·E¢ß­û¾‘ "«JE‹¯’ÍtíoùM¸íRç‚Á_¼ngs¨4-z9!ŒË47Ýv± \Œmá¤*X&é›r ÷}ÐÚj,ÅìS/tD,÷dX¶¢@õü°B²ô#qf‚1‘ Ä”¨‹$ÓÐ’0Mº&4TL†á,¢ U,/ldf9öÈï7že–À–•J)npR³ _^ü[О|úMþ†‡ÿÀrd÷R² Wÿ9~M«¡jå},Li²@#Ã: ­¦Ï$DUÒI/SÌBôÌ[×}:OÞ%0‰iôQ"†¡§)åy6¨;hìÓ$¹D$ØûÞsûÏòÅ qÚ›²ûÇÙ£?;ɋܱxÜr‰6ŸAE@?[kèJ5>û­ôUÎvÚ]•î©u~öÉ”ŸuwÀ0q™cñÈ퉞øÕš}ªeç®wxé¥öY¿´aÃzKmíjÈŠ {i2Ù4eN¤ÒI8"’) ¢Ó)™ ³›Îqˆúú!ËY4¬k€¢*Tס¡º'ÃçóAEHR¡à4‡†¢†ª~ïÙgû/î€ïïyüý={žX­ë8žC¹Ëƒ«ILGþ‘XmNðŒŒŠû¼ˆÆ#¨\^…h,Lç/×U•+a,˜ž !J#‹‚F?ª}~8(9™‚p#›É`íÚú’É©àÊ¿ü¹ótž£ÇŽÖWz–u7=ØT¢äŒÌ²8~æ –¹e¸<²Š³sóidàЮ:ØÛŒ±ÉaÔúë0:1„š•«ñÏž+Ô˜ü¬7Fbxåé}íG]í: ѹ©qSž‘ÑÑ ù2O]ç€Ó)Âí^–7>Ïj2™¤nÍÀ_ã×ÇGÆöqííí~^àŽ?²¹Yèø¤cáA<Ú, ¬lєݔÚˆÑ ±ì:×\@`XDßPomÌ3áóúÑûùUØKìHgS¨¨¬ÀêUu…‚Ôx9‚Á xWø—b4Ž\ˆÎÍaMÝËàðÀ ž°»¾¾ %Ð=8ŽÃû΢¤„Ãä\+4½ œf¥¾µ¡zùß)£ãP ÛêÄ[r¡fàõX13=óej*tMϯoíQêSU|ÑXðŒKt¡Ê냪j›yUWG’’¤&YزqœúYÃÑ"’jF©…nä°Ü=†9©Ó‘Mð”uÁ.ôááõS°:w edžÛRq}CãéYwÿš;öÒéáf>½òâ/ ­[60kA"S›Í «…‡ÀqعñU”X‚Pèé#q‘žRÁÔÍ­¸qÃ-µÊ]-Žã24µ´Pøñ«ÛF¶™˜E‚Þ¬s†—²!BžÜú?ó˽K©U…»u‹âIá½qÿkáP¸,¿Û7¼Í¨ÀÅÀa$s":»»uß]u´»AÕˆI´Æ±\ˆêGï¥|/în†ãðˆ$ÚRë4v5£tÇÐ?Qƒ«@JÛ iRòvÌÌÆò:÷Ú?èŠÆÓ=鬣3-yº¥” ‘GSKA*£Ò² Ȫ±¸@×JϼNÑ\;ý‹^:ï¾>Ý\›ß»x‚¦–ž»‡jÔ *mƵ¾ÈüÏç :÷4òµR4:,BúàCß‘h„< g™-{H¦d„n†09• ©Í¢Æ£…ß â Íjv(9VWU•Ÿo*ôF«ÛK8>#‡¨ñSźCüW‹€l£“¿°œ †ÿ†"ÿ0'/„ô‚RIEND®B`‚ibus-1.5.11/data/icons/16/0000755000000000000000000000000012551654535011775 500000000000000ibus-1.5.11/data/icons/16/ibus-keyboard.png0000644000000000000000000000117312551654123015156 00000000000000‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<IDATxÚŒ“KhQ†ÿ™{gR£ÕZóÔÒ¡ØÑFÔE£B7’.)HŸ_ bqãV¬DAÜYB]„ìê£H¡+W ‘¦Ô’gó Ñ¶C;Iˆg†vaêc.|ü—{ïî9çÎ-ãÆøûïD&‡ð‡·IÄNb±ØAt»‰*1I\~p1°²%@‡Ãcítwïâ²E‘ãŒ1‰‘r&Éüä¹ë/éè(xÆ[T‹iU§%+'É]â,ñvc>¥ïq“¥>Õ˘y1v\[S¬«Ë«©øôºÙ>éüìö‡|ŒKÒ–&>~òP¦¯z<]÷$Y6°¦iH§3Fã’X«Õû-–¶;^ï~cÓåpjÛc3t¯kßoëºêgÉ3DÞÃb½^:ìN^XÌÁiw¡P̦r¥Œ¾^¹BÖÐÍu]%.A÷÷§G U´kôÕÒ¥$ºìmP–ðµãS2aܺ©”28™sù ”>Å:ÿ9â©|3?ƒð)Üd^]}ý ÊÁ3ôþµÙl‚ ãsy±}øtÆ×Š þžÎ16nÁÇw±6“Jiòª*X¬Ö0_ðyâØJÓ%UÄ­›£Âÿ^D$f uõÝG<ÙƒÔB™E£ó³fžT™œ^Aqi'yQ*@lÊø^"¦þÆf³‰þ‘Gh~n܉O\yn&À/A„¸|NÑNIEND®B`‚ibus-1.5.11/data/icons/48/0000755000000000000000000000000012551654535012002 500000000000000ibus-1.5.11/data/icons/48/ibus-keyboard.png0000644000000000000000000000622412551654123015165 00000000000000‰PNG  IHDR00Wù‡sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDAThÅ™{p\ÕyÀç>ö)­´z®V/#ÛÂø…±ÁæQSl’’„¤‰ ¦4´O I:Ä}©§í”i™†Æ…™44¦ C¥R» /c3á•+ÆÆH²dYÚ•VZiŸ÷}OÿXY12`Kæ›ùæÜ»çî¹ßïÜs¾óó )%Ÿ”ôôö…èžë¦Îµ míùØâØf5М3€²pæœÃËuUÊ›çÕÆBóq¥§·/¬{í8v>í\ð!ÔÓÛ'€MÀÍ…éÔ}Ïý§ s{‹ÐÓÛÚçt-p%È©ñÃß{ì;;Fäyz±Ð^¨§·¯øp9°¨†‘rØóÜc™Ñã/ÿøî?L`ïû §·oð])ý§Ìbnofôøñ'v#¨€\Àl)¥¿ï\0€žÞ¾k€'N>øÙ§Üy°©ìÞBü~Y°9 }ÿ‹–Q|ô©wÌó혞޾Ô=;Öe?ì¹û_½÷§[ãÍO"D?p"s=ãúÌûðoP(’Š»?6§/ïÙ±N.(€"´zó“Wþî×ÖFjê7*ŠZ#¥,K) )}Cúžá{žáû®á»®á9¶á8¦é˜†iEÓ,çÍBvš4Oô²Ê¹iIeÞpÍM߬Y¾aëÒhMcw ½Ea·ïÙ±nhA'±BsªP齪ü†ßU*Ã]Óƒáð<ý•PUÍ. {A×)¥CÅË”²]*ŽÀB¦SC/µ,]û5ظàëÀ¹HOo_7p+ÐÔõ@•^Ÿïý¹ëP²Ê…§=ùý]Ÿ(@Ooß à‡@»ëXO8–ñ®k›3f)?c•‹%ϵ}ßs]ϱ]×±|×¶<Û,9/>ú@–ÊB˜ûDÃi?.çgûÑßÞôˆQœ-Sñ<þœž9/Î,ÜÓ!È'ÐÓÛ§€XsøÅŸ|Ö(ÎNžkLôCè™çžÙ¬ ¹_"ƒçmé{ÞÆŒtÔv¡{'4žU/Å !$<øþ„òíOo¹áþ³š<àºï6UUÿ~Ù²®eÍÍ-D¤”¨ªŠçyhšŽë:ô¶c ±l‹`0„e™„B!LÓ$ cšÆeå÷ÔDŠþÃý¬½t ‰¦t=€ãØhšF¾gdx˜B¹Äò¥K‰×ÖÍÛåy“SiŽyç Ó2ïØõ­¿é;]7¿¡¹o÷=›kkãÿzÛ—¿²¬:£±¡ UU‰ÅjBP[$uuõøÒ§¾¾Ï÷hhhÂó\›q]—¦Æf\×y_éÒØØ„®iì¼óψD¢¤'SŒŽžLqj|”|!ÇÚµ—ró¶í UUUhšF$! ‰Tq㟿\×ûïÛ}OãYº®?|Ëößœ¤ºª×u¨‹×cÛ õ˜¦ASc3år‰D"I©T$ÙÒF±˜§­µƒB!G{['ùBŽŽö%ï)ÛÛ:)ò £ã'iokçâîgi$a6—Ŷ-Ç¡&Vƒ/}ªªª‰F¢Ìä²|æ†ÏÄu]¿ç=÷í¾çÆeK—7‚ _ÈS[§¶&NÙ(Q¯§X*ÐÐÐH¾£©1Áìl–Ds’ìÌÉ–6¦¦'ikí 35A{û&3i:æÊö¶N2S´¶¶#(Š‚ªªŒžåãÇæuph¤DÓ4z€hU–mQ]Ãu+0…|ž%KTEQ¾|ú+(@à¯ÝüÛÑ¡áêâõTWÅ0-“ªªe£Œ¦é‹E4M'_È¡i:³¹4M';3¦éLMgÐ4LfMÓ™ÌLP_ßHfj’úºF¦§§B **¥R ß÷¹ü²M¬è^ɆuWP[SK*BS5"Ñ33Y4MÇq¡º ¯cl|Œ-×mÕ5MûKqïýß¹º½­}ÿÜz[äèñ#¤Rãøþ{Cw)ajÖbdÒ`x PèHDXÒ¦*òÑ=±¢¨¬ºd5“SLL¤ÏªWU•Õ+×’Ëå>9ôõ]-¥5ÙÁ÷þù¡¢ã8-š®þtËu[#Žãln¥¥)9ÿ‡lÞàG~NfƤ¥1ÆÒŽ%lY^‹ã¸Œ¦²ì{#C¡”㊕ ¾ú…KQÕvÈÑžì =Ùñ¡õ õ 4Ô7|` ŠPØxÅ&íÐ+oÒ<ÏõÇÇÇýºº¥¦&Ž€½/½Í#ÿóK>wÝ |1€ë½*¦U(Ï®$ÿW%„4˜œœæÎÝû¹ûO>ÍÅKÎvï )Rú†I&“¥RIw~óÉdkòû@à:ß÷cž/•a.[s +ºÛÉæ~€ç{8þR:~Ds¢žáÔfNLlÃq=„Ȩx¤•g_îG”O²:é-€ÂU„2“ËçÞûÓ}7¿ !b@hÙçî¾ëë·n¹#Z30¬ã¤sW‚’ 6ô.M±çȹ_Çq¸n™` E[Ý>BÚ Æ2ënãàkÃö3Ï>¿-ý꿼¹H ’Ê–5ï[‰;?ï†-º]µA ÚÎ>†&¶sõªçè©Ûñd’P0BŽ#¼×z š£5þ4¾W`b¦ MùkþcïÏÓC³kôñ¿0 b^ægÝê[þ!ÐÞTûäæË›Ae‰x?׬Ú爆Fð}‰ë«8އå4á+—²²ýqº[÷¡k& ˆGS0þ~kU]•ë?´ØÆ¿ T n»~ãòæÙÂãB×**× ñîØ§Ÿ^ëùãmÇ3XÞö$Céͤ³«qܧ£ÝºÈ¤æº;v$nx ºØóN\WÕ«MÁ€."%˜N”WŽíj è>)%B„€B¹]Íq|ìzLk+-ñ´Ô¼Œ¶ý2-—9Au|pè‚4ÔG¯sÝw…ã×28¹‘’½”²A×= ¥Äó„t4½I²îU\×£)vϳȪ‘¦ Dô_Q_wm@lXl@D¼:|±åplìZ†'Ö1>}Žëá8Þܸw±lËvèJ<‹çùxžÀFú>`“žé&¬O3^M0УáðÖÅ4~ ëS÷ÅÂA]MÍn¤¡f€ÎÆCxž‹ôKØŽ;g¼‹i»xž®ÎàºÞ<„çùèjà ‘š¹˜—`X.¡ ÖuA÷ïÊÍÊEM©å@ÿÍŒL®`ÝEÿÅ﬿ŸeÉçpæzÞ²]Š¾Û²©ãy>¾ïãû’Öº_`Ú!®ëẩl%CbÙs“٪̋é| Ï«¸Xß“ø¾¤¹6ÄD&'#Ë^0€?ûöÁÃïœ|>ÂW9td+ãÓKæ!¦sµ¿6~®4mE”ð}Iɬ¦d=‰j&Ó3Éî”o_¼¨îL!„ ÄNõïÝõúá!³»5†¢²…JL>2y/¾µeÎ芞†NwÉ'ðübºtß<õúðÿݵO±°Ç2½8øJyàèwަ­õËPT××ùåÀUH ¾/­sA`:ÛÁ;§Örää6.j Ë·ŽŽØ©·žÚÅÜ)µ8½ÁX$sáAˆJ2® ˆ&6ýñö®—}kÍŠdÐá”Ò¢Ž;7Ó5…Îæj\³`;~*;~ô…?Ï}úM ¥”Å  N?§‘êÖõK’ëïžK–w,¯¯ LWR2TU¨4ÐñåðHÊ91<ôDúÕ<ä”ó9*Çë¥9wÑæo*_"J%ÅB-›nߎ'¯ÅjVF#¡xu4ì:ž+ ES+ÆXnvöFêíŸL½ýßo&`PI •Î7ü±ÎÑNúœªxW´¦ëê•®Q,Ì >?€•?‰t¨w›TR¨ìÌþ#å憘 2ég¤€+}úQåÿ‘è?÷•Š’IEND®B`‚ibus-1.5.11/data/icons/24/0000755000000000000000000000000012551654535011774 500000000000000ibus-1.5.11/data/icons/24/ibus-keyboard.png0000644000000000000000000000204512551654123015154 00000000000000‰PNG  IHDRàw=øtEXtSoftwareAdobe ImageReadyqÉe<ÇIDATxÚÔVkL›U~¾K[h¿"ÙZÊ¥¥- ecnà–L@㌗mcBüáŒ1ñuÍt¢Œ?$ ‰šÌÄctѨ‹nj–×m  ”®ÐQèº–Ž¶ôò]<ß±Ãà¬ýðMÞ¼_NÞ÷yÎyÎyÏùEQp+Å­¶¬àÙÞSÅ?¼X»6Ÿ+Xûg Wž¾‡Qd#-f,fjcñë'֪˙ ,1ô„"K.ECï‹ÉTJ’3J$0}þëÞW|kÕ1ê2†ùW‚ï|y—Pdy—ãùr¨+ÿ«D$\V‰hWæ7…ázzžl Ø¹dWküÇÁP²N¿Ûž?f+u¸Ñ‹^ýå'ëÉã/…ÿ ÁMÖùÉA¥7ÉÌ[Á2†NËb:y¡ïPÇÓá°'ÊoäfÒ©ƒ²(ºæ|#Ϲ¿úxÒ?úkŠ ËYO¯Úƒîîûóôùï¹ê]M!Y¹óõ׎ô©ØTÏ®®.-§Ñ|ÛÒÜÚÄq,***¡7æ£Êf§ÑᨦÑé¬Yív'Vkjíþ}m›‰d̼¿;™Ïl z¥´Ô–åŠQQZ…ùЕ5˜[˜E­Ý…+ó3¸Ã±…Æj[A?lå¯`1UÒÚ‚‚AdY©a¥X™m4™ÌšÓ.ã‹gá%Éè8ìe…ØUEÇÞ»1>5‚­uÛ1<6€-µÛ0riÕUu˜˜ƒµÌŽË~•:“É€`i#‹ªÔnJ Ñi[~—õž…Óh¬/Ä>“za?™©ç~Å”?Çî3SpÕTpÕT𠳕‚›K,˜½2CÒ0›-ùït Ié¥ÞkÚ=¾¥?Ðþ ¬¦³¡Nä$ªß Þy'~Ø÷°w:Œ7mê”g‚FŸÏ Q’¨—”lROÏΉ&¯ò·ïiž${#bpú^f!„Øòm$Á‰Ö¦‹øîL#^}foN'I’D¤Òéò‚Åežá¸bœŸx£#Z¦P,œB‘q ᇠ÷Ñýö‘ÜÞ–‘ȆŸ]uÙ]î„©ð{ÄÒVDbÛŽr`ä<Ò !,% 9G¿eÉõ {ãÐÑ‚þ™@þŽæ†K¨)8ƒ~O'ÝÁfÚŒFÇçðkHJ¤Ÿ4ÎÜz_´ž)oÁëmH¥2F,Å—!fôˆÅ qn JsÖÓÙÌmûãÇŽë4ñ÷ïžA<Ýžg± !0?ÿ¦>}á© dI:Hx‘øŽÒ©3'à}ë½›˜ÿý_ÅŸ Ÿr›¹7P8IEND®B`‚ibus-1.5.11/data/icons/Makefile.in0000644000000000000000000006744612551654257013556 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = data/icons ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(hicolor_icon_16dir)" \ "$(DESTDIR)$(hicolor_icon_22dir)" \ "$(DESTDIR)$(hicolor_icon_24dir)" \ "$(DESTDIR)$(hicolor_icon_32dir)" \ "$(DESTDIR)$(hicolor_icon_48dir)" \ "$(DESTDIR)$(hicolor_icon_scalabledir)" \ "$(DESTDIR)$(iconsdir)" "$(DESTDIR)$(sysiconsdir)" DATA = $(hicolor_icon_16_DATA) $(hicolor_icon_22_DATA) \ $(hicolor_icon_24_DATA) $(hicolor_icon_32_DATA) \ $(hicolor_icon_48_DATA) $(hicolor_icon_scalable_DATA) \ $(icons_DATA) $(sysicons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ icons_DATA = \ $(NULL) iconsdir = $(pkgdatadir)/icons sysicons_DATA = \ $(NULL) sysiconsdir = $(datadir)/pixmaps hicolor_icon_16_DATA = \ 16/ibus-keyboard.png \ $(NULL) hicolor_icon_16dir = $(datadir)/icons/hicolor/16x16/apps/ hicolor_icon_22_DATA = \ 22/ibus-keyboard.png \ $(NULL) hicolor_icon_22dir = $(datadir)/icons/hicolor/22x22/apps/ hicolor_icon_24_DATA = \ 24/ibus-keyboard.png \ $(NULL) hicolor_icon_24dir = $(datadir)/icons/hicolor/24x24/apps/ hicolor_icon_32_DATA = \ 32/ibus-keyboard.png \ $(NULL) hicolor_icon_32dir = $(datadir)/icons/hicolor/32x32/apps/ hicolor_icon_48_DATA = \ 48/ibus-keyboard.png \ $(NULL) hicolor_icon_48dir = $(datadir)/icons/hicolor/48x48/apps/ hicolor_icon_scalable_DATA = \ scalable/ibus.svg \ scalable/ibus-setup.svg \ scalable/ibus-engine.svg \ scalable/ibus-keyboard.svg \ $(NULL) hicolor_icon_scalabledir = $(datadir)/icons/hicolor/scalable/apps/ EXTRA_DIST = \ $(icons_DATA) \ $(sysicons_DATA) \ $(hicolor_icon_16_DATA) \ $(hicolor_icon_22_DATA) \ $(hicolor_icon_24_DATA) \ $(hicolor_icon_32_DATA) \ $(hicolor_icon_48_DATA) \ $(hicolor_icon_scalable_DATA) \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/icons/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-hicolor_icon_16DATA: $(hicolor_icon_16_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_16_DATA)'; test -n "$(hicolor_icon_16dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_16dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_16dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_16dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_16dir)" || exit $$?; \ done uninstall-hicolor_icon_16DATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_16_DATA)'; test -n "$(hicolor_icon_16dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_16dir)'; $(am__uninstall_files_from_dir) install-hicolor_icon_22DATA: $(hicolor_icon_22_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_22_DATA)'; test -n "$(hicolor_icon_22dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_22dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_22dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_22dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_22dir)" || exit $$?; \ done uninstall-hicolor_icon_22DATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_22_DATA)'; test -n "$(hicolor_icon_22dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_22dir)'; $(am__uninstall_files_from_dir) install-hicolor_icon_24DATA: $(hicolor_icon_24_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_24_DATA)'; test -n "$(hicolor_icon_24dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_24dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_24dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_24dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_24dir)" || exit $$?; \ done uninstall-hicolor_icon_24DATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_24_DATA)'; test -n "$(hicolor_icon_24dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_24dir)'; $(am__uninstall_files_from_dir) install-hicolor_icon_32DATA: $(hicolor_icon_32_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_32_DATA)'; test -n "$(hicolor_icon_32dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_32dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_32dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_32dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_32dir)" || exit $$?; \ done uninstall-hicolor_icon_32DATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_32_DATA)'; test -n "$(hicolor_icon_32dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_32dir)'; $(am__uninstall_files_from_dir) install-hicolor_icon_48DATA: $(hicolor_icon_48_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_48_DATA)'; test -n "$(hicolor_icon_48dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_48dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_48dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_48dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_48dir)" || exit $$?; \ done uninstall-hicolor_icon_48DATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_48_DATA)'; test -n "$(hicolor_icon_48dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_48dir)'; $(am__uninstall_files_from_dir) install-hicolor_icon_scalableDATA: $(hicolor_icon_scalable_DATA) @$(NORMAL_INSTALL) @list='$(hicolor_icon_scalable_DATA)'; test -n "$(hicolor_icon_scalabledir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(hicolor_icon_scalabledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(hicolor_icon_scalabledir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hicolor_icon_scalabledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(hicolor_icon_scalabledir)" || exit $$?; \ done uninstall-hicolor_icon_scalableDATA: @$(NORMAL_UNINSTALL) @list='$(hicolor_icon_scalable_DATA)'; test -n "$(hicolor_icon_scalabledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(hicolor_icon_scalabledir)'; $(am__uninstall_files_from_dir) install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) install-sysiconsDATA: $(sysicons_DATA) @$(NORMAL_INSTALL) @list='$(sysicons_DATA)'; test -n "$(sysiconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(sysiconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(sysiconsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysiconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysiconsdir)" || exit $$?; \ done uninstall-sysiconsDATA: @$(NORMAL_UNINSTALL) @list='$(sysicons_DATA)'; test -n "$(sysiconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(sysiconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(hicolor_icon_16dir)" "$(DESTDIR)$(hicolor_icon_22dir)" "$(DESTDIR)$(hicolor_icon_24dir)" "$(DESTDIR)$(hicolor_icon_32dir)" "$(DESTDIR)$(hicolor_icon_48dir)" "$(DESTDIR)$(hicolor_icon_scalabledir)" "$(DESTDIR)$(iconsdir)" "$(DESTDIR)$(sysiconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-hicolor_icon_16DATA \ install-hicolor_icon_22DATA install-hicolor_icon_24DATA \ install-hicolor_icon_32DATA install-hicolor_icon_48DATA \ install-hicolor_icon_scalableDATA install-iconsDATA \ install-sysiconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-hicolor_icon_16DATA \ uninstall-hicolor_icon_22DATA uninstall-hicolor_icon_24DATA \ uninstall-hicolor_icon_32DATA uninstall-hicolor_icon_48DATA \ uninstall-hicolor_icon_scalableDATA uninstall-iconsDATA \ uninstall-sysiconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am \ install-hicolor_icon_16DATA install-hicolor_icon_22DATA \ install-hicolor_icon_24DATA install-hicolor_icon_32DATA \ install-hicolor_icon_48DATA install-hicolor_icon_scalableDATA \ install-html install-html-am install-iconsDATA install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-sysiconsDATA \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-hicolor_icon_16DATA \ uninstall-hicolor_icon_22DATA uninstall-hicolor_icon_24DATA \ uninstall-hicolor_icon_32DATA uninstall-hicolor_icon_48DATA \ uninstall-hicolor_icon_scalableDATA uninstall-iconsDATA \ uninstall-sysiconsDATA .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/data/icons/Makefile.am0000644000000000000000000000400612551654123013514 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA icons_DATA = \ $(NULL) iconsdir = $(pkgdatadir)/icons sysicons_DATA = \ $(NULL) sysiconsdir = $(datadir)/pixmaps hicolor_icon_16_DATA = \ 16/ibus-keyboard.png \ $(NULL) hicolor_icon_16dir= $(datadir)/icons/hicolor/16x16/apps/ hicolor_icon_22_DATA = \ 22/ibus-keyboard.png \ $(NULL) hicolor_icon_22dir= $(datadir)/icons/hicolor/22x22/apps/ hicolor_icon_24_DATA = \ 24/ibus-keyboard.png \ $(NULL) hicolor_icon_24dir= $(datadir)/icons/hicolor/24x24/apps/ hicolor_icon_32_DATA = \ 32/ibus-keyboard.png \ $(NULL) hicolor_icon_32dir= $(datadir)/icons/hicolor/32x32/apps/ hicolor_icon_48_DATA = \ 48/ibus-keyboard.png \ $(NULL) hicolor_icon_48dir= $(datadir)/icons/hicolor/48x48/apps/ hicolor_icon_scalable_DATA = \ scalable/ibus.svg \ scalable/ibus-setup.svg \ scalable/ibus-engine.svg \ scalable/ibus-keyboard.svg \ $(NULL) hicolor_icon_scalabledir= $(datadir)/icons/hicolor/scalable/apps/ EXTRA_DIST = \ $(icons_DATA) \ $(sysicons_DATA) \ $(hicolor_icon_16_DATA) \ $(hicolor_icon_22_DATA) \ $(hicolor_icon_24_DATA) \ $(hicolor_icon_32_DATA) \ $(hicolor_icon_48_DATA) \ $(hicolor_icon_scalable_DATA) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/data/icons/22/0000755000000000000000000000000012551654535011772 500000000000000ibus-1.5.11/data/icons/22/ibus-keyboard.png0000644000000000000000000000202612551654123015151 00000000000000‰PNG  IHDRÄ´l;tEXtSoftwareAdobe ImageReadyqÉe<¸IDATxÚÌUkh[e~Î%mל¤µÑ™&Í=[»f[k/V˜ÝZØ¥:˜ø£?„áëÁ ²Md³Vÿˆ e†  2D¦è‰Ì[™ÌŶ6 KÛu½.MÒ4m’6·s÷;Yl?Y‡à/ï9ß÷¾Ïy¿ç¼Ï÷Qªªâ5^ºb:ýÙHÃýÖÙR@z¿Q[n¢‹Rƒö®ÒT¹"‰ ™ìÆ÷\— ¼¨*òó›éÄ©Àó²"ªÉèœÿÇ¡·ï—C•Ü÷ÑwOr5Ö–µA%ÅÜÉ’H:s'B•¡ªYU¥þQ)fpð¥¦1ªDJµi4ÐwÍ©[V|>ñúy—Åë{®ÒPsêÆŸ¿9ÙIuHÞ=qæ«€^–ä÷I¥‡@SVJE,/òùËþKC2»Ý®þ´"I¾Èbðµë?|9¾q'ÓÊ– E*Ψ¨Üñ©o¯¯ýaZp"\QTå̻Èô÷÷—±el »«Û-ˆØlvˆŠ›Õ^.Àaw£ æàtxîñv› ¼”‡Õb‡@âYA{k7==yì`g×'4Xq?§¯T-+hšA"‡ÝâF,×QÈÊm4x|XŽ-aw_Ñïv5"Ãeó"¾…Õì(æF8N¢i¹‰¥ºÍl®Õýò÷.ýzáDljžºj<Õ˜ÆÉãOcòVû[0þ†f§Æ±Û݈›s!8ë×M¾Ê¢–K “¯"ªØ…Cí#¸<܆·_9^RgȲ^ll*ÏR c‚ÿ泩rÂw5†©ˆAzLÎÇ1ðá¹’€iš’ɼZÈjºæêŸ‘œHfš±žf@)DP læŽÞ;ûµÄvÖdžÑ€G—¢;Z;›¦PoÆèl?].óãhó~‹p¼^Só(¹""íP¼5E|ãx^D<Éa3›‡$V"“­Æ_ci-nðAUHiWSË ç?/×eûŽXBVèËÒH¥ˆÆÆ^ÙùÅØ×o¼¼-`mð“ĽI¬ukmT«”€^ÜιAýW—é¿ ðŸ\@IEND®B`‚ibus-1.5.11/data/Makefile.in0000644000000000000000000006435012551654257012432 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DCONF_TRUE@am__append_1 = dconf subdir = data ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(schemasdir)" DATA = $(schemas_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = icons keymaps dconf am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = icons keymaps $(NULL) $(am__append_1) schemasdir = $(GCONF_SCHEMA_FILE_DIR) schemas_in_files = ibus.schemas.in schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) EXTRA_DIST = \ $(schemas_in_files) \ $(NULL) DISTCLEANFILES = \ $(schemas_DATA) \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-schemasDATA: $(schemas_DATA) @$(NORMAL_INSTALL) @list='$(schemas_DATA)'; test -n "$(schemasdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(schemasdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(schemasdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemasdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(schemasdir)" || exit $$?; \ done uninstall-schemasDATA: @$(NORMAL_UNINSTALL) @list='$(schemas_DATA)'; test -n "$(schemasdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(schemasdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(schemasdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-schemasDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-schemasDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-schemasDATA install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-schemasDATA .PRECIOUS: Makefile @INTLTOOL_SCHEMAS_RULE@ install-data-local: @GCONF_SCHEMAS_INSTALL_TRUE@ if test -z "$(DESTDIR)" ; then \ @GCONF_SCHEMAS_INSTALL_TRUE@ for p in $(schemas_DATA) ; do \ @GCONF_SCHEMAS_INSTALL_TRUE@ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) \ @GCONF_SCHEMAS_INSTALL_TRUE@ --makefile-install-rule $(top_builddir)/data/$$p >&1 > /dev/null; \ @GCONF_SCHEMAS_INSTALL_TRUE@ done \ @GCONF_SCHEMAS_INSTALL_TRUE@ fi -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/data/Makefile.am0000644000000000000000000000275612551654123012413 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SUBDIRS = \ icons \ keymaps \ $(NULL) if ENABLE_DCONF SUBDIRS += dconf endif schemasdir = $(GCONF_SCHEMA_FILE_DIR) schemas_in_files = ibus.schemas.in schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) @INTLTOOL_SCHEMAS_RULE@ install-data-local: if GCONF_SCHEMAS_INSTALL if test -z "$(DESTDIR)" ; then \ for p in $(schemas_DATA) ; do \ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) \ --makefile-install-rule $(top_builddir)/data/$$p >&1 > /dev/null; \ done \ fi endif EXTRA_DIST = \ $(schemas_in_files) \ $(NULL) DISTCLEANFILES = \ $(schemas_DATA) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/m4/0000755000000000000000000000000012551654542010041 500000000000000ibus-1.5.11/m4/as-version.m40000644000000000000000000000377012551654123012313 00000000000000dnl as-version.m4 0.2.0 dnl autostars m4 macro for versioning dnl Thomas Vander Stichele dnl $Id: as-version.m4,v 1.4 2004/06/01 09:40:05 thomasvs Exp $ dnl AS_VERSION dnl example dnl AS_VERSION dnl this macro dnl - AC_SUBST's PACKAGE_VERSION_MAJOR, _MINOR, _MICRO dnl - AC_SUBST's PACKAGE_VERSION_RELEASE, dnl which can be used for rpm release fields dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents dnl maintainer mode from running correctly dnl dnl don't forget to put #undef PACKAGE_VERSION_RELEASE in acconfig.h dnl if you use acconfig.h AC_DEFUN([AS_VERSION], [ PACKAGE_VERSION_MAJOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f1) PACKAGE_VERSION_MINOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f2) PACKAGE_VERSION_MICRO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f3) AC_SUBST(PACKAGE_VERSION_MAJOR) AC_SUBST(PACKAGE_VERSION_MINOR) AC_SUBST(PACKAGE_VERSION_MICRO) ]) dnl AS_NANO(ACTION-IF-NO-NANO, [ACTION-IF-NANO]) dnl requires AC_INIT to be called before dnl For projects using a fourth or nano number in your versioning to indicate dnl development or prerelease snapshots, this macro allows the build to be dnl set up differently accordingly. dnl this macro: dnl - parses AC_PACKAGE_VERSION, set by AC_INIT, and extracts the nano number dnl - sets the variable PACKAGE_VERSION_NANO dnl - sets the variable PACKAGE_VERSION_RELEASE, which can be used dnl for rpm release fields dnl - executes ACTION-IF-NO-NANO or ACTION-IF-NANO dnl example: dnl AS_NANO(RELEASE="yes", RELEASE="no") AC_DEFUN([AS_NANO], [ AC_MSG_CHECKING(nano version) NANO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then AC_MSG_RESULT([0 (release)]) NANO=0 PACKAGE_VERSION_RELEASE=1 ifelse([$1], , :, [$1]) else AC_MSG_RESULT($NANO) PACKAGE_VERSION_RELEASE=0.`date +%Y%m%d.%H%M%S` ifelse([$2], , :, [$2]) fi PACKAGE_VERSION_NANO=$NANO AC_SUBST(PACKAGE_VERSION_NANO) AC_SUBST(PACKAGE_VERSION_RELEASE) ]) ibus-1.5.11/m4/ltversion.m40000644000000000000000000000126212551654224012246 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) ibus-1.5.11/m4/introspection.m40000644000000000000000000000661412551654123013125 00000000000000dnl -*- mode: autoconf -*- dnl Copyright 2009 Johan Dahlin dnl dnl This file is free software; the author(s) gives unlimited dnl permission to copy and/or distribute it, with or without dnl modifications, as long as this notice is preserved. dnl # serial 1 m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([LT_INIT],[$0])dnl setup libtool first dnl enable/disable introspection m4_if([$2], [require], [dnl enable_introspection=yes ],[dnl AC_ARG_ENABLE(introspection, AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], [Enable introspection for this build]),, [enable_introspection=auto]) ])dnl AC_MSG_CHECKING([for gobject-introspection]) dnl presence/version checking AS_CASE([$enable_introspection], [no], [dnl found_introspection="no (disabled, use --enable-introspection to enable)" ],dnl [yes],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0],, AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) ],dnl [auto],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) ],dnl [dnl AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) ])dnl AC_MSG_RESULT([$found_introspection]) INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) AC_SUBST(INTROSPECTION_GENERATE) AC_SUBST(INTROSPECTION_GIRDIR) AC_SUBST(INTROSPECTION_TYPELIBDIR) AC_SUBST(INTROSPECTION_CFLAGS) AC_SUBST(INTROSPECTION_LIBS) AC_SUBST(INTROSPECTION_MAKEFILE) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") ]) dnl Usage: dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) ]) dnl Usage: dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) ]) ibus-1.5.11/m4/gtk-doc.m40000644000000000000000000000631212551654176011560 00000000000000dnl -*- mode: autoconf -*- # serial 2 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) AC_MSG_CHECKING([for gtk-doc]) PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) AC_MSG_RESULT($have_gtk_doc) if test "$have_gtk_doc" = "no"; then AC_MSG_WARN([ You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found.]) fi dnl check for tools we added during development dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that dnl may not be writable by the user. Currently, automake requires that the dnl test name must end in '.test'. dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then AC_MSG_ERROR([ You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '[$]0'.]) fi dnl don't check for glib if we build glib if test "x$PACKAGE_NAME" != "xglib"; then dnl don't fail if someone does not have glib PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) fi dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) ibus-1.5.11/m4/lt~obsolete.m40000644000000000000000000001375612551654225012607 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) ibus-1.5.11/m4/ltsugar.m40000644000000000000000000001042412551654223011701 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) ibus-1.5.11/m4/gconf-2.m40000644000000000000000000000264512551654123011460 00000000000000dnl AM_GCONF_SOURCE_2 dnl Copied from /usr/share/aclocal/gconf-2.m4 so that ibus build does not dnl need GConf2-devel AC_DEFUN([AM_GCONF_SOURCE_2], [ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source` else GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE fi AC_ARG_WITH([gconf-source], AC_HELP_STRING([--with-gconf-source=sourceaddress], [Config database for installing schema files.]), [GCONF_SCHEMA_CONFIG_SOURCE="$withval"],) AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE) AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation]) if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas' fi AC_ARG_WITH([gconf-schema-file-dir], AC_HELP_STRING([--with-gconf-schema-file-dir=dir], [Directory for installing schema files.]), [GCONF_SCHEMA_FILE_DIR="$withval"],) AC_SUBST(GCONF_SCHEMA_FILE_DIR) AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files]) AC_ARG_ENABLE(schemas-install, AC_HELP_STRING([--disable-schemas-install], [Disable the schemas installation]), [case ${enableval} in yes|no) ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-install]) ;; esac]) AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no]) ]) ibus-1.5.11/m4/libtool.m40000644000000000000000000105756412551654221011703 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS ibus-1.5.11/m4/ltoptions.m40000644000000000000000000003007312551654222012254 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) ibus-1.5.11/m4/intltool.m40000644000000000000000000002636112551654176012102 00000000000000## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*- ## Copyright (C) 2001 Eazel, Inc. ## Author: Maciej Stachowiak ## Kenneth Christiansen ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) # serial 42 IT_PROG_INTLTOOL AC_DEFUN([IT_PROG_INTLTOOL], [ AC_PREREQ([2.50])dnl AC_REQUIRE([AM_NLS])dnl case "$am__api_version" in 1.[01234]) AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n "$1"; then AC_MSG_CHECKING([for intltool >= $1]) AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) fi AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update]) AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge]) AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract]) if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.]) fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " [$]@;' AC_SUBST(INTLTOOL_V_MERGE) AC_SUBST(INTLTOOL__v_MERGE_) AC_SUBST(INTLTOOL__v_MERGE_0) INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' AC_SUBST(INTLTOOL_V_MERGE_OPTIONS) AC_SUBST(intltool__v_merge_options_) AC_SUBST(intltool__v_merge_options_0) INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' _IT_SUBST(INTLTOOL_DESKTOP_RULE) _IT_SUBST(INTLTOOL_DIRECTORY_RULE) _IT_SUBST(INTLTOOL_KEYS_RULE) _IT_SUBST(INTLTOOL_PROP_RULE) _IT_SUBST(INTLTOOL_OAF_RULE) _IT_SUBST(INTLTOOL_PONG_RULE) _IT_SUBST(INTLTOOL_SERVER_RULE) _IT_SUBST(INTLTOOL_SHEET_RULE) _IT_SUBST(INTLTOOL_SOUNDLIST_RULE) _IT_SUBST(INTLTOOL_UI_RULE) _IT_SUBST(INTLTOOL_XAM_RULE) _IT_SUBST(INTLTOOL_KBD_RULE) _IT_SUBST(INTLTOOL_XML_RULE) _IT_SUBST(INTLTOOL_XML_NOMERGE_RULE) _IT_SUBST(INTLTOOL_CAVES_RULE) _IT_SUBST(INTLTOOL_SCHEMAS_RULE) _IT_SUBST(INTLTOOL_THEME_RULE) _IT_SUBST(INTLTOOL_SERVICE_RULE) _IT_SUBST(INTLTOOL_POLICY_RULE) # Check the gettext tools to make sure they are GNU AC_PATH_PROG(XGETTEXT, xgettext) AC_PATH_PROG(MSGMERGE, msgmerge) AC_PATH_PROG(MSGFMT, msgfmt) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi AC_PATH_PROG(INTLTOOL_PERL, perl) if test -z "$INTLTOOL_PERL"; then AC_MSG_ERROR([perl not found]) fi AC_MSG_CHECKING([for perl >= 5.8.1]) $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then AC_MSG_ERROR([perl 5.8.1 is required for intltool]) else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` AC_MSG_RESULT([$IT_PERL_VERSION]) fi if test "x$2" != "xno-xml"; then AC_MSG_CHECKING([for XML::Parser]) if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then AC_MSG_RESULT([ok]) else AC_MSG_ERROR([XML::Parser perl module is required for intltool]) fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile AC_SUBST(ALL_LINGUAS) IT_PO_SUBDIR([po]) ]) # IT_PO_SUBDIR(DIRNAME) # --------------------- # All po subdirs have to be declared with this macro; the subdir "po" is # declared by IT_PROG_INTLTOOL. # AC_DEFUN([IT_PO_SUBDIR], [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. dnl dnl The following CONFIG_COMMANDS should be executed at the very end dnl of config.status. AC_CONFIG_COMMANDS_PRE([ AC_CONFIG_COMMANDS([$1/stamp-it], [ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.]) fi rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" >"$1/stamp-it.tmp" [sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" ] [sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r $1/POTFILES } ' "$1/Makefile.in" >"$1/Makefile"] rm -f "$1/Makefile.tmp" mv "$1/stamp-it.tmp" "$1/stamp-it" ]) ])dnl ]) # _IT_SUBST(VARIABLE) # ------------------- # Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST # AC_DEFUN([_IT_SUBST], [ AC_SUBST([$1]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) ] ) # deprecated macros AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) # A hint is needed for aclocal from Automake <= 1.9.4: # AC_DEFUN([AC_PROG_INTLTOOL], ...) ibus-1.5.11/m4/Makefile.in0000644000000000000000000004216312551654260012031 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ as-version.m4 \ vapigen.m4 \ $(NULL) GITIGNOREFILES = \ gtk-doc.m4 \ intltool.m4 \ libtool.m4 \ lt*.m4 \ $(NULL) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu m4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/m4/Makefile.am0000644000000000000000000000204412551654123012010 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA EXTRA_DIST = \ as-version.m4 \ vapigen.m4 \ $(NULL) GITIGNOREFILES = \ gtk-doc.m4 \ intltool.m4 \ libtool.m4 \ lt*.m4 \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/m4/vapigen.m40000644000000000000000000000605112551654123011651 00000000000000dnl vapigen.m4 dnl dnl Copyright 2012 Evan Nemerson dnl dnl This library is free software; you can redistribute it and/or dnl modify it under the terms of the GNU Lesser General Public dnl License as published by the Free Software Foundation; either dnl version 2.1 of the License, or (at your option) any later version. dnl dnl This library is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl Lesser General Public License for more details. dnl dnl You should have received a copy of the GNU Lesser General Public dnl License along with this library; if not, write to the Free Software dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # VAPIGEN_CHECK([VERSION], [API_VERSION], [FOUND-INTROSPECTION], [DEFAULT]) # -------------------------------------- # Check vapigen existence and version # # See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation AC_DEFUN([VAPIGEN_CHECK], [ AC_BEFORE([GOBJECT_INTROSPECTION_CHECK],[$0]) AC_BEFORE([GOBJECT_INTROSPECTION_REQUIRE],[$0]) AC_ARG_ENABLE([vala], [AS_HELP_STRING([--enable-vala[=@<:@no/auto/yes@:>@]],[build Vala bindings @<:@default=]ifelse($4,,auto,$4)[@:>@])],,[ AS_IF([test "x$4" = "x"], [ enable_vala=auto ], [ enable_vala=$4 ]) ]) AS_CASE([$enable_vala], [no], [enable_vala=no], [yes], [ AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [ AC_MSG_ERROR([Vala bindings require GObject Introspection]) ]) ], [auto], [ AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [ enable_vala=no ]) ], [ AC_MSG_ERROR([Invalid argument passed to --enable-vala, should be one of @<:@no/auto/yes@:>@]) ]) AS_IF([test "x$2" = "x"], [ vapigen_pkg_name=vapigen ], [ vapigen_pkg_name=vapigen-$2 ]) AS_IF([test "x$1" = "x"], [ vapigen_pkg="$vapigen_pkg_name" ], [ vapigen_pkg="$vapigen_pkg_name >= $1" ]) PKG_PROG_PKG_CONFIG PKG_CHECK_EXISTS([$vapigen_pkg], [ AS_IF([test "$enable_vala" = "auto"], [ enable_vala=yes ]) ], [ AS_CASE([$enable_vala], [yes], [ AC_MSG_ERROR([$vapigen_pkg not found]) ], [auto], [ enable_vala=no ]) ]) AC_MSG_CHECKING([for vapigen]) AS_CASE([$enable_vala], [yes], [ VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name` VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen AS_IF([test "x$2" = "x"], [ VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name` ], [ VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name` ]) ]) AC_MSG_RESULT([$enable_vala]) AC_SUBST([VAPIGEN]) AC_SUBST([VAPIGEN_VAPIDIR]) AC_SUBST([VAPIGEN_MAKEFILE]) AM_CONDITIONAL(ENABLE_VAPIGEN, test "x$enable_vala" = "xyes") ]) ibus-1.5.11/missing0000755000000000000000000001533012551654253011041 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/src/0000755000000000000000000000000012551654517010312 500000000000000ibus-1.5.11/src/ibusfactory.h0000644000000000000000000001211312551654123012724 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_FACTORY_H_ #define __IBUS_FACTORY_H_ /** * SECTION: ibusfactory * @short_description: Factory for creating engine instances. * @title: IBusFactory * @stability: Stable * * An IBusFactory is an #IBusService that creates input method engine (IME) instance. * It provides CreateEngine remote method, which creates an IME instance by name, * and returns the D-Bus object path to IBus daemon. * * see_also: #IBusEngine * */ #include "ibusservice.h" #include "ibusserializable.h" #include "ibusengine.h" G_BEGIN_DECLS /* * Type macros. */ /* define GOBJECT macros */ /** * IBUS_TYPE_FACTORY: * * Return GType of IBus factory. */ #define IBUS_TYPE_FACTORY \ (ibus_factory_get_type ()) /** * IBUS_FACTORY: * @obj: An object which is subject to casting. * * Casts an IBUS_FACTORY or derived pointer into a (IBusFactory*) pointer. * Depending on the current debugging level, this function may invoke * certain runtime checks to identify invalid casts. */ #define IBUS_FACTORY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_FACTORY, IBusFactory)) /** * IBUS_FACTORY_CLASS: * @klass: A class to be casted. * * Casts a derived IBusFactoryClass structure into a IBusFactoryClass structure. */ #define IBUS_FACTORY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_FACTORY, IBusFactoryClass)) /** * IBUS_IS_FACTORY: * @obj: Instance to check for being a IBUS_FACTORY. * * Checks whether a valid GTypeInstance pointer is of type IBUS_FACTORY. */ #define IBUS_IS_FACTORY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_FACTORY)) /** * IBUS_IS_FACTORY_CLASS: * @klass: A class to be checked. * * Checks whether class "is a" valid IBusFactoryClass structure of type IBUS_FACTORY or derived. */ #define IBUS_IS_FACTORY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_FACTORY)) /** * IBUS_FACTORY_GET_CLASS: * @obj: An object. * * Get the class of a given object and cast the class to IBusFactoryClass. */ #define IBUS_FACTORY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_FACTORY, IBusFactoryClass)) typedef struct _IBusFactory IBusFactory; typedef struct _IBusFactoryClass IBusFactoryClass; typedef struct _IBusFactoryPrivate IBusFactoryPrivate; /** * IBusFactory: * * An opaque data type representing an IBusFactory. */ struct _IBusFactory { /*< private >*/ IBusService parent; IBusFactoryPrivate *priv; /* instance members */ }; struct _IBusFactoryClass { /*< private >*/ IBusServiceClass parent; /*< public >*/ /* signals */ IBusEngine * (* create_engine) (IBusFactory *factory, const gchar *engine_name); /*< private >*/ /* padding */ gpointer pdummy[7]; }; /** * ibus_factory_info_get_type: * * Gets GType of IBus factory information. * * Returns: GType of IBus factory information. */ GType ibus_factory_get_type (void); /** * ibus_factory_new: * @connection: An GDBusConnection. * * Creates a new #IBusFactory. * * Returns: A newly allocated #IBusFactory. */ IBusFactory *ibus_factory_new (GDBusConnection *connection); /** * ibus_factory_add_engine: * @factory: An IBusFactory. * @engine_name: Name of an engine. * @engine_type: GType of an engine. * * Add an engine to the factory. */ void ibus_factory_add_engine (IBusFactory *factory, const gchar *engine_name, GType engine_type); /** * ibus_factory_create_engine: * @factory: An #IBusFactory. * @engine_name: Name of an engine. * * Creates an #IBusEngine with @engine_name. * * Returns: (transfer full): #IBusEngine with @engine_name. */ IBusEngine *ibus_factory_create_engine (IBusFactory *factory, const gchar *engine_name); G_END_DECLS #endif ibus-1.5.11/src/ibusattrlist.h0000644000000000000000000000675612551654123013143 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ATTRIBUTE_LIST_H_ #define __IBUS_ATTRIBUTE_LIST_H_ /** * SECTION: ibusattrlist * @Title: IBusAttrList * @Short_description: AttrList of IBusText. * @See_also: #IBusAttribute #IBusText * @Stability: Stable * */ #include "ibusattribute.h" G_BEGIN_DECLS /* * Type macros. */ /* define IBusAttrList macros */ #define IBUS_TYPE_ATTR_LIST \ (ibus_attr_list_get_type ()) #define IBUS_ATTR_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrList)) #define IBUS_ATTR_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ATTR_LIST, IBusAttrListClass)) #define IBUS_IS_ATTR_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ATTR_LIST)) #define IBUS_IS_ATTR_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ATTR_LIST)) #define IBUS_ATTR_LIST_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass)) typedef struct _IBusAttrList IBusAttrList; typedef struct _IBusAttrListClass IBusAttrListClass; /** * IBusAttrList: * @attributes: GArray that holds #IBusAttribute. * * Array of IBusAttribute. */ struct _IBusAttrList { IBusSerializable parent; /*< public >*/ GArray *attributes; }; struct _IBusAttrListClass { IBusSerializableClass parent; }; /** * ibus_attr_list_get_type: * * Returns GType of #IBusAttrList. * * Returns: GType of #IBusAttrList. */ GType ibus_attr_list_get_type (); /** * ibus_attr_list_new: * * Creates an new #IBusAttrList. * * Returns: A newly allocated #IBusAttrList. */ IBusAttrList *ibus_attr_list_new (); /** * ibus_attr_list_append: * @attr_list: An IBusAttrList instance. * @attr: The IBusAttribute instance to be appended. * * Append an IBusAttribute to IBusAttrList, and increase reference. */ void ibus_attr_list_append (IBusAttrList *attr_list, IBusAttribute *attr); /** * ibus_attr_list_get: * @attr_list: An IBusAttrList instance. * @index: Index of the @attr_list. * * Returns #IBusAttribute at given index. Borrowed reference. * * Returns: (transfer none): #IBusAttribute at given index, %NULL if no such * #IBusAttribute. */ IBusAttribute *ibus_attr_list_get (IBusAttrList *attr_list, guint index); G_END_DECLS #endif ibus-1.5.11/src/ibusconfigservice.c0000644000000000000000000003740512551654123014111 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusshare.h" #include "ibusconfigservice.h" enum { LAST_SIGNAL, }; enum { PROP_0, }; /* functions prototype */ static void ibus_config_service_class_init (IBusConfigServiceClass *class); static void ibus_config_service_init (IBusConfigService *config); static void ibus_config_service_destroy (IBusConfigService *config); static void ibus_config_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *ibus_config_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean ibus_config_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static gboolean ibus_config_service_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error); static GVariant *ibus_config_service_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); static GVariant *ibus_config_service_get_values (IBusConfigService *config, const gchar *section, GError **error); static gboolean ibus_config_service_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); G_DEFINE_TYPE (IBusConfigService, ibus_config_service, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static void ibus_config_service_class_init (IBusConfigServiceClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBUS_OBJECT_CLASS (gobject_class)->destroy = (IBusObjectDestroyFunc) ibus_config_service_destroy; IBUS_SERVICE_CLASS (class)->service_method_call = ibus_config_service_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = ibus_config_service_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = ibus_config_service_service_set_property; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); class->set_value = ibus_config_service_set_value; class->get_value = ibus_config_service_get_value; class->get_values = ibus_config_service_get_values; class->unset_value = ibus_config_service_unset_value; } static void ibus_config_service_init (IBusConfigService *config) { } static void ibus_config_service_destroy (IBusConfigService *config) { IBUS_OBJECT_CLASS(ibus_config_service_parent_class)->destroy ((IBusObject *) config); } static void ibus_config_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusConfigService *config = IBUS_CONFIG_SERVICE (service); if (g_strcmp0 (interface_name, IBUS_INTERFACE_CONFIG) != 0) { IBUS_SERVICE_CLASS (ibus_config_service_parent_class)-> service_method_call (service, connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } if (g_strcmp0 (method_name, "SetValue") == 0) { gchar *section; gchar *name; GVariant *value; gboolean retval; GError *error = NULL; g_variant_get (parameters, "(&s&sv)", §ion, &name, &value); retval = IBUS_CONFIG_SERVICE_GET_CLASS (config)->set_value (config, section, name, value, &error); if (retval) { g_dbus_method_invocation_return_value (invocation, NULL); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } g_variant_unref (value); return; } if (g_strcmp0 (method_name, "GetValue") == 0) { gchar *section; gchar *name; GVariant *value; GError *error = NULL; g_variant_get (parameters, "(&s&s)", §ion, &name); value = IBUS_CONFIG_SERVICE_GET_CLASS (config)->get_value (config, section, name, &error); if (value != NULL) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(v)", value)); g_variant_unref (value); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } return; } if (g_strcmp0 (method_name, "GetValues") == 0) { gchar *section; GVariant *value; GError *error = NULL; g_variant_get (parameters, "(&s)", §ion); value = IBUS_CONFIG_SERVICE_GET_CLASS (config)->get_values (config, section, &error); if (value) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@a{sv})", value)); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } return; } if (g_strcmp0 (method_name, "UnsetValue") == 0) { gchar *section; gchar *name; gboolean retval; GError *error = NULL; g_variant_get (parameters, "(&s&s)", §ion, &name); retval = IBUS_CONFIG_SERVICE_GET_CLASS (config)->unset_value (config, section, name, &error); if (retval) { g_dbus_method_invocation_return_value (invocation, NULL); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } return; } /* should not be reached */ g_return_if_reached (); } static GVariant * ibus_config_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { return IBUS_SERVICE_CLASS (ibus_config_service_parent_class)-> service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } static gboolean ibus_config_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { return IBUS_SERVICE_CLASS (ibus_config_service_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } static gboolean ibus_config_service_set_value (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error) { if (error) { gchar *str = g_variant_print (value, TRUE); *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot set value %s::%s to %s", section, name, str); g_free (str); } return FALSE; } static GVariant * ibus_config_service_get_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot get value %s::%s", section, name); } return NULL; } static GVariant * ibus_config_service_get_values (IBusConfigService *config, const gchar *section, GError **error) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot get values %s", section); } return NULL; } static gboolean ibus_config_service_unset_value (IBusConfigService *config, const gchar *section, const gchar *name, GError **error) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot unset value %s::%s", section, name); } return FALSE; } IBusConfigService * ibus_config_service_new (GDBusConnection *connection) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); GObject *object = g_object_new (IBUS_TYPE_CONFIG_SERVICE, "object-path", IBUS_PATH_CONFIG, "connection", connection, NULL); return IBUS_CONFIG_SERVICE (object); } void ibus_config_service_value_changed (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value) { g_return_if_fail (IBUS_IS_CONFIG_SERVICE (config)); g_return_if_fail (section != NULL); g_return_if_fail (name != NULL); g_return_if_fail (value != NULL); ibus_service_emit_signal ((IBusService *) config, NULL, IBUS_INTERFACE_CONFIG, "ValueChanged", g_variant_new ("(ssv)", section, name, value), NULL); } ibus-1.5.11/src/ibusregistry.h0000644000000000000000000001621012551654123013127 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2013 Peng Huang * Copyright (C) 2013 Takao Fujiwara * Copyright (C) 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_REGISTRY_H_ #define __IBUS_REGISTRY_H_ /** * SECTION: ibusregistry * @short_description: Registry cache handling. * @title: IBusRegistry * @stability: Stable * * An #IBusRegistry loads IBus component files and generates the cache files. * * see_also: #IBusComponent */ #include "ibuscomponent.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_REGISTRY \ (ibus_registry_get_type ()) #define IBUS_REGISTRY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_REGISTRY, IBusRegistry)) #define IBUS_REGISTRY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_REGISTRY, IBusRegistryClass)) #define IBUS_IS_REGISTRY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_REGISTRY)) #define IBUS_IS_REGISTRY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_REGISTRY)) #define IBUS_REGISTRY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_REGISTRY, IBusRegistryClass)) G_BEGIN_DECLS typedef struct _IBusRegistry IBusRegistry; typedef struct _IBusRegistryPrivate IBusRegistryPrivate; typedef struct _IBusRegistryClass IBusRegistryClass; /** * IBusRegistry: * * Registry cache handling. * You can load the registry from compose files or a cache file. */ struct _IBusRegistry { /* instance members */ /*< private >*/ IBusSerializable parent; IBusRegistryPrivate *priv; }; struct _IBusRegistryClass { /* class members */ /*< private >*/ IBusSerializableClass parent; }; GType ibus_registry_get_type (void); /** * ibus_registry_new: * * Creates a new #IBusRegistry * * Returns: A newly allocated #IBusRegistry. */ IBusRegistry *ibus_registry_new (void); /** * ibus_registry_load: * @registry: An #IBusRegistry. * * Read all XML files in a IBus component directory (typically * /usr/share/ibus/component/ *.xml) and update the registry object. * IBUS_COMPONENT_PATH environment valuable is also available for * the custom component directories, whose delimiter is ':'. */ void ibus_registry_load (IBusRegistry *registry); /** * ibus_registry_load_in_dir: * @registry: An #IBusRegistry. * @dirname: IBus component directory which includes XML files. * * Read all XML files in @dirname, create a #IBusComponent object for each file, * and add the component objects to the registry. * If @dirname is "/usr/share/ibus/component", this API and * ibus_registry_load() are same. */ void ibus_registry_load_in_dir (IBusRegistry *registry, const gchar *dirname); /** * ibus_registry_load_cache: * @registry: An #IBusRegistry. * @is_user: %TRUE if the registry cache is loaded in the user directory. * * Load the user or system registry cache. * * Returns: %TRUE if the cache exists and is loaded successfully, * %FALSE otherwise. */ gboolean ibus_registry_load_cache (IBusRegistry *registry, gboolean is_user); /** * ibus_registry_load_cache_file: * @registry: An #IBusRegistry. * @filename: The file path of the registry cache * * Load the registry cache @filename. * * Returns: %TRUE if the cache exists and is loaded successfully, * %FALSE otherwise. */ gboolean ibus_registry_load_cache_file (IBusRegistry *registry, const gchar *filename); /** * ibus_registry_save_cache: * @registry: An #IBusRegistry. * @is_user: %TRUE if the registry cache is saved in the user directory. * * Save the registry in a user directory or system directory. * * Returns: %TRUE if the cache is saved successfully, %FALSE otherwise. */ gboolean ibus_registry_save_cache (IBusRegistry *registry, gboolean is_user); /** * ibus_registry_save_cache_file: * @registry: An #IBusRegistry. * @filename: The file path of the registry cache * * Save the registry cache @filename. * * Returns: %TRUE if the cache is saved successfully, %FALSE otherwise. */ gboolean ibus_registry_save_cache_file (IBusRegistry *registry, const gchar *filename); /** * ibus_registry_output: * @registry: An #IBusRegistry. * @output: GString that holds the result. * @indent: level of indent. * * Output #IBusRegistry as an XML-formatted string. * The output string can be then shown on the screen or written to file. */ void ibus_registry_output (IBusRegistry *registry, GString *output, int indent); /** * ibus_registry_check_modification: * @registry: An #IBusRegistry. * * Check if the registry is updated. * * Returns: %TRUE if mtime is changed; %FALSE otherwise. */ gboolean ibus_registry_check_modification (IBusRegistry *registry); /** * ibus_registry_get_components: * @registry: An #IBusRegistry. * * List components. * * Returns: (transfer container) (element-type IBusComponent): * a list of #IBusComponent objects. * The caller has to call g_list_free() for the returned list. */ GList *ibus_registry_get_components (IBusRegistry *registry); /** * ibus_registry_get_observed_paths: * @registry: An #IBusRegistry. * * List observed paths. * * Returns: (transfer container) (element-type IBusObservedPath): * a list of #IBusObservedPath objects. * The caller has to call g_list_free() for the returned list. */ GList *ibus_registry_get_observed_paths (IBusRegistry *registry); /** * ibus_registry_start_monitor_changes: * @registry: An #IBusRegistry. * * Start to monitor observed paths. */ void ibus_registry_start_monitor_changes (IBusRegistry *registry); G_END_DECLS #endif ibus-1.5.11/src/tests/0000755000000000000000000000000012551654520011446 500000000000000ibus-1.5.11/src/tests/ibus-serializable.c0000644000000000000000000001707312551654123015147 00000000000000#include "ibus.h" void g_variant_type_info_assert_no_infos (void); void test_serializable (IBusSerializable *object) { GVariant *variant; gchar *s1, *s2; variant = ibus_serializable_serialize (object); g_object_unref (object); g_variant_get_data (variant); s1 = g_variant_print (variant, TRUE); object = ibus_serializable_deserialize (variant); g_variant_unref (variant); variant = ibus_serializable_serialize (object); g_object_unref (object); g_variant_get_data (variant); s2 = g_variant_print (variant, TRUE); g_variant_unref (variant); g_assert_cmpstr (s1, ==, s2); g_free (s1); g_free (s2); } static void test_varianttypeinfo (void) { g_variant_type_info_assert_no_infos (); } static void test_attr_list (void) { IBusAttrList *list = ibus_attr_list_new (); ibus_attr_list_append (list, ibus_attribute_new (1, 1, 1, 2)); ibus_attr_list_append (list, ibus_attribute_new (2, 1, 1, 2)); ibus_attr_list_append (list, ibus_attribute_new (3, 1, 1, 2)); ibus_attr_list_append (list, ibus_attribute_new (3, 1, 1, 2)); test_serializable ((IBusSerializable *)list); g_variant_type_info_assert_no_infos (); } static void test_text (void) { test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello")); test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello")); test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello")); test_serializable ((IBusSerializable *)ibus_text_new_from_string ("Hello")); g_variant_type_info_assert_no_infos (); } static void test_engine_desc (void) { test_serializable ((IBusSerializable *)ibus_engine_desc_new ("Hello", "Hello Engine", "Hello Engine Desc", "zh", "GPLv2", "Peng Huang ", "icon", "en")); g_variant_type_info_assert_no_infos (); } static void test_lookup_table (void) { IBusLookupTable *table; table = ibus_lookup_table_new (9, 0, TRUE, FALSE); test_serializable ((IBusSerializable *)table); #if 1 table = ibus_lookup_table_new (9, 0, TRUE, FALSE); ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Hello")); ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Cool")); test_serializable ((IBusSerializable *)table); #endif table = ibus_lookup_table_new (9, 0, TRUE, FALSE); ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Hello")); ibus_lookup_table_append_candidate (table, ibus_text_new_from_static_string ("Cool")); ibus_lookup_table_append_label (table, ibus_text_new_from_static_string ("Hello")); ibus_lookup_table_append_label (table, ibus_text_new_from_static_string ("Cool")); test_serializable ((IBusSerializable *)table); g_variant_type_info_assert_no_infos (); } static void test_property (void) { IBusPropList *list = ibus_prop_list_new (); ibus_prop_list_append (list, ibus_property_new ("sub1", PROP_TYPE_NORMAL, ibus_text_new_from_static_string ("label_sub1"), "icon_sub1", ibus_text_new_from_static_string ("tooltip_sub1"), TRUE, TRUE, PROP_STATE_UNCHECKED, NULL)); ibus_prop_list_append (list, ibus_property_new ("sub2", PROP_TYPE_NORMAL, ibus_text_new_from_static_string ("label_sub1"), "icon_sub1", ibus_text_new_from_static_string ("tooltip_sub1"), TRUE, TRUE, PROP_STATE_UNCHECKED, NULL)); g_object_ref (list); test_serializable ((IBusSerializable *)list); test_serializable ((IBusSerializable *)ibus_property_new ("key", PROP_TYPE_NORMAL, ibus_text_new_from_static_string ("label"), "icon", ibus_text_new_from_static_string ("tooltip"), TRUE, TRUE, PROP_STATE_UNCHECKED, list)); g_variant_type_info_assert_no_infos (); } static void test_attachment (void) { IBusText *text = ibus_text_new_from_static_string ("main text"); ibus_serializable_set_attachment ((IBusSerializable *)text, "key1", g_variant_new_int32 (100)); ibus_serializable_set_attachment ((IBusSerializable *)text, "key2", g_variant_new_string ("value string")); ibus_serializable_set_attachment ((IBusSerializable *)text, "key3", g_variant_new ("(iuds)",1, 2, 3.333, "test value")); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); g_object_unref ((IBusSerializable *)text); IBusSerializable *object = ibus_serializable_deserialize (variant); g_variant_unref (variant); g_assert_cmpstr (((IBusText *)object)->text, ==, "main text"); GVariant *newvalue1 = ibus_serializable_get_attachment (object, "key1"); g_assert (newvalue1 != NULL); g_assert_cmpint (g_variant_get_int32 (newvalue1), ==, 100); GVariant *newvalue2 = ibus_serializable_get_attachment (object, "key2"); g_assert (newvalue2 != NULL); g_assert_cmpstr (g_variant_get_string (newvalue2, NULL), ==, "value string"); { GVariant *newvalue3 = ibus_serializable_get_attachment (object, "key3"); g_assert (newvalue3 != NULL); gint32 i; guint32 u; gdouble d; const gchar *s; g_variant_get (newvalue3, "(iud&s)", &i, &u, &d, &s); g_assert_cmpint (i, ==, 1); g_assert_cmpuint (u, ==, 2); g_assert_cmpfloat (d, ==, 3.333); g_assert_cmpstr (s, ==, "test value"); } g_object_unref (object); g_variant_type_info_assert_no_infos (); } gint main (gint argc, gchar **argv) { ibus_init (); g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/varianttypeinfo", test_varianttypeinfo); g_test_add_func ("/ibus/attrlist", test_attr_list); g_test_add_func ("/ibus/text", test_text); g_test_add_func ("/ibus/enginedesc", test_engine_desc); g_test_add_func ("/ibus/lookuptable", test_lookup_table); g_test_add_func ("/ibus/property", test_property); g_test_add_func ("/ibus/attachment", test_attachment); return g_test_run (); } ibus-1.5.11/src/tests/runtest0000755000000000000000000000432512551654123013023 00000000000000#!/bin/sh # Run a test case given by the first argument in a separate directory. # This script may also launch $top_builddir/bus/ibus-daemon for testing. # Executing a test that uses this file # ==================================== # # Running a single test: # # $ make check TESTS=ibus-foo # # or # # $ top_builddir=<...> top_srcdir=<...> builddir=<...> ./runtest ibus-foo : ${top_builddir:=../..} : ${top_srcdir:=../..} : ${builddir:=.} BUS_REQUIRED_TESTS=" ibus-bus ibus-config ibus-configservice ibus-factory ibus-inputcontext ibus-inputcontext-create ibus-engine-switch ibus-compose " # Portable replacement of basename. func_basename () { case "$1" in */*) expr "$1" : '.*/\(.*\)' ;; *) echo "$1" esac } # Portable replacement of dirname. func_dirname () { case "$1" in */*) expr "$1" : '\(.*\)/.*' ;; *) echo . esac } # Kill ibus-daemon process and remove temporary files. func_cleanup () { tstdir=$1 if test -f $tstdir/ibus-daemon.pid; then . $tstdir/ibus-daemon.pid kill $IBUS_DAEMON_PID &> /dev/null fi rm -fr $tstdir } # Prepare component files necessary for testing, under components/. func_copy_component () { file=$1 base=`func_basename $file` if test -f $file.in; then mkdir -p components sed 's|@libexecdir@|'`func_dirname $file`'|g' < $file.in > components/$base fi } trap 'func_cleanup $tstdir' 1 2 3 15 tst=$1; shift tstdir=tmp-`func_basename $tst` test -d $tstdir || mkdir $tstdir ( cd $tstdir need_bus=no for t in $BUS_REQUIRED_TESTS; do if test $t = `func_basename $tst`; then need_bus=yes fi done if test $need_bus = yes; then func_copy_component "../$top_srcdir/engine/simple.xml" func_copy_component "../$top_srcdir/conf/memconf/memconf.xml" IBUS_COMPONENT_PATH=$PWD/components export IBUS_COMPONENT_PATH IBUS_ADDRESS_FILE=$PWD/ibus-daemon.pid export IBUS_ADDRESS_FILE # Start ibus-daemon. ../$top_builddir/bus/ibus-daemon \ --daemonize \ --cache=none \ --panel=disable \ --config=default \ --verbose; # Wait until all necessary components are up. sleep 1 fi exec "../$tst" ${1+"$@"} ) retval=$? func_cleanup $tstdir exit $retval ibus-1.5.11/src/tests/ibus-compose.c0000644000000000000000000001620712551654123014144 00000000000000#include #include "ibus.h" #include "ibuscomposetable.h" IBusBus *m_bus; IBusComposeTable *m_compose_table; IBusEngine *m_engine; int m_retval; static gboolean window_focus_in_event_cb (GtkWidget *entry, GdkEventFocus *event, gpointer data); static IBusEngine * create_engine_cb (IBusFactory *factory, const gchar *name, gpointer data) { static int i = 1; gchar *engine_path = g_strdup_printf ("/org/freedesktop/IBus/engine/simpletest/%d", i++); gchar *compose_path = NULL; const gchar * const *langs; const gchar * const *l; m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE, name, engine_path, ibus_bus_get_connection (m_bus)); g_free (engine_path); langs = g_get_language_names (); for (l = langs; *l; l++) { if (g_str_has_prefix (*l, "en_US")) break; if (g_strcmp0 (*l, "C") == 0) break; compose_path = g_build_filename ("/usr/share/X11/locale", *l, "Compose", NULL); if (g_file_test (compose_path, G_FILE_TEST_EXISTS)) break; g_free (compose_path); compose_path = NULL; } if (compose_path != NULL) { m_compose_table = ibus_compose_table_new_with_file (compose_path); if (m_compose_table == NULL) g_warning ("Your locale uses en_US compose table."); else ibus_engine_simple_add_table (IBUS_ENGINE_SIMPLE (m_engine), m_compose_table->data, m_compose_table->max_seq_len, m_compose_table->n_seqs); } else { g_warning ("Your locale uses en_US compose file."); } return m_engine; } static gboolean register_ibus_engine () { IBusFactory *factory; IBusComponent *component; IBusEngineDesc *desc; m_bus = ibus_bus_new (); if (!ibus_bus_is_connected (m_bus)) { g_critical ("ibus-daemon is not running."); return FALSE; } factory = ibus_factory_new (ibus_bus_get_connection (m_bus)); g_signal_connect (factory, "create-engine", G_CALLBACK (create_engine_cb), NULL); component = ibus_component_new ( "org.freedesktop.IBus.SimpleTest", "Simple Engine Test", "0.0.1", "GPL", "Takao Fujiwara ", "https://github.com/ibus/ibus/wiki", "", "ibus"); desc = ibus_engine_desc_new ( "xkbtest:us::eng", "XKB Test", "XKB Test", "en", "GPL", "Takao Fujiwara ", "ibus-engine", "us"); ibus_component_add_engine (component, desc); ibus_bus_register_component (m_bus, component); return TRUE; } static gboolean finit (gpointer data) { m_retval = -1; g_warning ("time out"); gtk_main_quit (); return FALSE; } static void set_engine_cb (GObject *object, GAsyncResult *res, gpointer data) { IBusBus *bus = IBUS_BUS (object); GtkWidget *entry = GTK_WIDGET (data); GError *error = NULL; int i, j; int index_stride; if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) { g_warning ("set engine failed: %s", error->message); g_error_free (error); return; } if (m_compose_table == NULL) { gtk_main_quit (); return; } index_stride = m_compose_table->max_seq_len + 2; for (i = 0; i < (m_compose_table->n_seqs * index_stride); i += index_stride) { for (j = i; j < i + (index_stride - 1); j++) { guint keyval = m_compose_table->data[j]; guint keycode = 0; guint modifiers = 0; gboolean retval; if (keyval == 0) break; g_signal_emit_by_name (m_engine, "process-key-event", keyval, keycode, modifiers, &retval); modifiers |= IBUS_RELEASE_MASK; g_signal_emit_by_name (m_engine, "process-key-event", keyval, keycode, modifiers, &retval); } } g_signal_handlers_disconnect_by_func (entry, G_CALLBACK (window_focus_in_event_cb), NULL); g_timeout_add_seconds (10, finit, NULL); } static gboolean window_focus_in_event_cb (GtkWidget *entry, GdkEventFocus *event, gpointer data) { g_assert (m_bus != NULL); ibus_bus_set_global_engine_async (m_bus, "xkbtest:us::eng", -1, NULL, set_engine_cb, entry); return FALSE; } static void window_inserted_text_cb (GtkEntryBuffer *buffer, guint position, const gchar *chars, guint nchars, gpointer data) { static int n_loop = 0; static guint stride = 0; guint i; int seq; gunichar code = g_utf8_get_char (chars); const gchar *test; GtkEntry *entry = GTK_ENTRY (data); g_assert (m_compose_table != NULL); if (n_loop % 2 == 1) { n_loop = 0; return; } i = stride + (m_compose_table->max_seq_len + 2) - 1; seq = (i + 1) / (m_compose_table->max_seq_len + 2); if (m_compose_table->data[i] == code) { test = "OK"; } else { test = "NG"; m_retval = -1; } g_print ("%05d/%05d %s expected: %04X typed: %04X\n", seq, m_compose_table->n_seqs, test, m_compose_table->data[i], code); if (seq == m_compose_table->n_seqs) { gtk_main_quit (); return; } stride += m_compose_table->max_seq_len + 2; n_loop++; gtk_entry_set_text (entry, ""); } static void create_window () { GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkWidget *entry = gtk_entry_new (); GtkEntryBuffer *buffer; g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (entry, "focus-in-event", G_CALLBACK (window_focus_in_event_cb), NULL); buffer = gtk_entry_get_buffer (GTK_ENTRY (entry)); g_signal_connect (buffer, "inserted-text", G_CALLBACK (window_inserted_text_cb), entry); gtk_container_add (GTK_CONTAINER (window), entry); gtk_widget_show_all (window); } int main (int argc, char *argv[]) { ibus_init (); gtk_init (&argc, &argv); if (!register_ibus_engine ()) return -1; create_window (); gtk_main (); return m_retval; } ibus-1.5.11/src/tests/ibus-inputcontext-create.c0000644000000000000000000000623212551654123016501 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2011 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include "ibus.h" static IBusBus *bus = NULL; static void create_finish_success (GObject *object, GAsyncResult *res, gpointer user_data) { g_assert (object == (GObject *)bus); g_assert (user_data == NULL); GError *error = NULL; IBusInputContext *context = NULL; context = ibus_bus_create_input_context_async_finish (bus, res, &error); g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_object_unref (context); ibus_quit (); } static void create_finish_failed (GObject *object, GAsyncResult *res, gpointer user_data) { g_assert (object == (GObject *)bus); g_assert (user_data == NULL); GError *error = NULL; IBusInputContext *context = NULL; context = ibus_bus_create_input_context_async_finish (bus, res, &error); g_assert (context == NULL); g_assert (error != NULL); g_debug ("error = %s", error->message); g_error_free (error); ibus_quit (); } static void test_success (void) { ibus_bus_create_input_context_async (bus, "test", -1, NULL, create_finish_success, NULL); ibus_main (); } static void test_failed (void) { ibus_bus_create_input_context_async (bus, "test", 1000, NULL, create_finish_failed, NULL); GDBusConnection *connection = ibus_bus_get_connection (bus); g_dbus_connection_flush_sync (connection, NULL, NULL); g_dbus_connection_close_sync (connection, NULL, NULL); ibus_main (); } gint main (gint argc, gchar **argv) { gint result; ibus_init (); g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add_func ("/ibus/input_context_async_create_success", test_success); g_test_add_func ("/ibus/input_context_async_create_failed", test_failed); result = g_test_run (); g_object_unref (bus); return result; } ibus-1.5.11/src/tests/ibus-keynames.c0000644000000000000000000000056712551654123014315 00000000000000#include "ibus.h" static void test_keyname (void) { g_assert_cmpstr (ibus_keyval_name (IBUS_KEY_Home), ==, "Home"); g_assert (ibus_keyval_from_name ("Home") == IBUS_KEY_Home); } gint main (gint argc, gchar **argv) { ibus_init (); g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/keyname", test_keyname); return g_test_run (); } ibus-1.5.11/src/tests/ibus-configservice.c0000644000000000000000000000152212551654123015317 00000000000000#include static gboolean timeout_cb (gpointer data) { g_main_loop_quit ((GMainLoop *)data); return FALSE; } static void run_loop_with_timeout (gint interval) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); g_timeout_add (interval, timeout_cb, loop); g_main_loop_run (loop); g_main_loop_unref (loop); } static void test_configservice (void) { IBusBus *bus = ibus_bus_new (); IBusConfigService *config = ibus_config_service_new (ibus_bus_get_connection (bus)); ibus_bus_request_name (bus, "test.config", 0); run_loop_with_timeout (1000); g_object_unref (config); g_object_unref (bus); } gint main (gint argc, gchar **argv) { ibus_init (); g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/configservice", test_configservice); return g_test_run (); } ibus-1.5.11/src/tests/ibus-share.c0000644000000000000000000000065412551654123013600 00000000000000#include #include static void test_machine_id (void) { const gchar *s1 = ibus_get_local_machine_id (); gchar *s2 = dbus_get_local_machine_id (); g_assert_cmpstr (s1, ==, s2); dbus_free (s2); } gint main (gint argc, gchar **argv) { ibus_init (); g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/marchine-id", test_machine_id); return g_test_run (); } ibus-1.5.11/src/tests/ibus-bus.c0000644000000000000000000007256612551654123013302 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "ibus.h" static IBusBus *bus; static void print_engines (const GList *engines) { for (; engines; engines = g_list_next (engines)) { IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data); g_assert (engine_desc); #if 0 g_debug ("%s (id:%s, icon:%s)", ibus_engine_desc_get_longname (engine_desc), ibus_engine_desc_get_name (engine_desc), ibus_engine_desc_get_icon (engine_desc)); #endif } } #ifndef IBUS_DISABLE_DEPRECATED static void test_list_active_engines (void) { GList *engines; IBUS_TYPE_ENGINE_DESC; engines = ibus_bus_list_active_engines (bus); print_engines (engines); g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); } #endif /* IBUS_DISABLE_DEPRECATED */ static void test_list_engines (void) { GList *engines; IBUS_TYPE_ENGINE_DESC; engines = ibus_bus_list_engines (bus); print_engines (engines); g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); } static void name_owner_changed_cb (IBusBus *bus, gchar *name, gchar *old, gchar *new, gpointer data) { g_debug ("%s: bus=%s, old=%s, new=%s", G_STRFUNC, name, old, new); } static void call_next_async_function (void); static void finish_request_name_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; guint id = ibus_bus_request_name_async_finish (bus, res, &error); g_assert (id != 0); g_debug ("request name returned %d: ", id); switch (id) { case IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER: g_debug ("got ownership"); break; case IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE: g_debug ("got queued"); break; case IBUS_BUS_REQUEST_NAME_REPLY_EXISTS: g_debug ("request already in queue"); break; case IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER: g_debug ("already owner"); break; default: g_assert_not_reached (); } if (error) { g_warning ("Error %s: %s", G_STRFUNC, error->message); g_error_free (error); } g_debug ("ibus_bus_request_name_async_finish: OK"); call_next_async_function (); } static void start_request_name_async (void) { ibus_bus_set_watch_dbus_signal (bus, TRUE); ibus_bus_set_watch_ibus_signal (bus, TRUE); g_signal_connect (bus, "name-owner-changed", (GCallback) name_owner_changed_cb, NULL); ibus_bus_request_name_async (bus, "org.freedesktop.IBus.IBusBusTest", IBUS_BUS_NAME_FLAG_REPLACE_EXISTING, -1, /* timeout */ NULL, /* cancellable */ finish_request_name_async, NULL); /* user_data */ } static void finish_name_has_owner_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gboolean has_owner = ibus_bus_name_has_owner_async_finish (bus, res, &error); g_assert (has_owner); g_debug ("ibus_bus_name_has_owner_async_finish: OK"); call_next_async_function (); } static void start_name_has_owner_async (void) { ibus_bus_name_has_owner_async (bus, "org.freedesktop.IBus.IBusBusTest", -1, /* timeout */ NULL, /* cancellable */ finish_name_has_owner_async, NULL); /* user_data */ } static void finish_get_name_owner_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gchar *owner = ibus_bus_get_name_owner_async_finish (bus, res, &error); g_assert (owner); g_free (owner); g_debug ("ibus_bus_name_get_name_owner_async_finish: OK"); call_next_async_function (); } static void start_get_name_owner_async (void) { ibus_bus_get_name_owner_async (bus, "org.freedesktop.IBus.IBusBusTest", -1, /* timeout */ NULL, /* cancellable */ finish_get_name_owner_async, NULL); /* user_data */ } static void finish_release_name_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; guint id = ibus_bus_release_name_async_finish (bus, res, &error); g_assert (id != 0); g_debug ("ibus_bus_release_name_async_finish: OK"); call_next_async_function (); } static void start_release_name_async (void) { ibus_bus_release_name_async (bus, "org.freedesktop.IBus.IBusBusTest", -1, /* timeout */ NULL, /* cancellable */ finish_release_name_async, NULL); /* user_data */ } static void finish_add_match_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gboolean result = ibus_bus_add_match_async_finish (bus, res, &error); g_assert (result); g_debug ("ibus_bus_add_match_finish: OK"); call_next_async_function (); } static void start_add_match_async (void) { ibus_bus_add_match_async (bus, "type='signal'", -1, /* timeout */ NULL, /* cancellable */ finish_add_match_async, NULL); /* user_data */ } static void finish_remove_match_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gboolean result = ibus_bus_remove_match_async_finish (bus, res, &error); g_assert (result); g_debug ("ibus_bus_remove_match_finish: OK"); call_next_async_function (); } static void start_remove_match_async (void) { ibus_bus_remove_match_async (bus, "type='signal'", -1, /* timeout */ NULL, /* cancellable */ finish_remove_match_async, NULL); /* user_data */ } static int create_input_context_count = 0; static void finish_create_input_context_async_sucess (GObject *source_object, GAsyncResult *res, gpointer user_data) { GMainLoop *loop = (GMainLoop *)user_data; GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish (bus, res, &error); g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_object_unref (context); if (--create_input_context_count == 0) g_main_loop_quit (loop); } static void finish_create_input_context_async_failed (GObject *source_object, GAsyncResult *res, gpointer user_data) { GMainLoop *loop = (GMainLoop *)user_data; GError *error = NULL; IBusInputContext *context = ibus_bus_create_input_context_async_finish (bus, res, &error); g_assert (context == NULL); g_assert (error != NULL); g_error_free (error); if (--create_input_context_count <= 0) g_main_loop_quit (loop); } static void test_create_input_context_async (void) { GMainLoop *loop = NULL; GCancellable *cancellable = NULL; /* create an IC */ create_input_context_count = 1; loop = g_main_loop_new (NULL, TRUE); ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ NULL, /* cancellable */ finish_create_input_context_async_sucess, loop); /* user_data */ g_main_loop_run (loop); g_main_loop_unref (loop); /* call create, and then cancel */ create_input_context_count = 1; loop = g_main_loop_new (NULL, TRUE); cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ cancellable, /* cancellable */ finish_create_input_context_async_failed, loop); /* user_data */ g_cancellable_cancel (cancellable); g_object_unref (cancellable); g_main_loop_run (loop); g_main_loop_unref (loop); /* ceate four IC, and cancel two */ create_input_context_count = 4; loop = g_main_loop_new (NULL, TRUE); cancellable = g_cancellable_new (); ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ cancellable, /* cancellable */ finish_create_input_context_async_failed, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ NULL, /* cancellable */ finish_create_input_context_async_sucess, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ NULL, /* cancellable */ finish_create_input_context_async_sucess, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ cancellable, /* cancellable */ finish_create_input_context_async_failed, loop); /* user_data */ g_cancellable_cancel (cancellable); g_object_unref (cancellable); g_main_loop_run (loop); g_main_loop_unref (loop); } static void finish_current_input_context_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; g_free (ibus_bus_current_input_context_async_finish (bus, res, &error)); // no null check. g_debug ("ibus_bus_current_input_context_finish: OK"); call_next_async_function (); } static void start_current_input_context_async (void) { ibus_bus_current_input_context_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_current_input_context_async, NULL); /* user_data */ } static void finish_list_engines_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GList *engines = ibus_bus_list_engines_async_finish (bus, res, &error); // no null check. g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); g_debug ("ibus_bus_list_engines_finish: OK"); call_next_async_function (); } static void start_list_engines_async (void) { ibus_bus_list_engines_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_list_engines_async, NULL); /* user_data */ } #ifndef IBUS_DISABLE_DEPRECATED static void finish_list_active_engines_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GList *engines = ibus_bus_list_active_engines_async_finish (bus, res, &error); // no null check. g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); g_debug ("ibus_bus_list_active_engines_finish: OK"); call_next_async_function (); } static void start_list_active_engines_async (void) { ibus_bus_list_active_engines_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_list_active_engines_async, NULL); /* user_data */ } static void finish_get_use_sys_layout_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_get_use_sys_layout_async_finish (bus, res, &error); g_debug ("ibus_bus_get_use_sys_layout_finish: OK"); call_next_async_function (); } static void start_get_use_sys_layout_async (void) { ibus_bus_get_use_sys_layout_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_get_use_sys_layout_async, NULL); /* user_data */ } static void finish_get_use_global_engine_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_get_use_global_engine_async_finish (bus, res, &error); g_debug ("ibus_bus_get_use_global_engine_finish: OK"); call_next_async_function (); } static void start_get_use_global_engine_async (void) { ibus_bus_get_use_global_engine_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_get_use_global_engine_async, NULL); /* user_data */ } static void finish_is_global_engine_enabled_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_is_global_engine_enabled_async_finish (bus, res, &error); g_debug ("ibus_bus_is_global_engine_enabled_finish: OK"); call_next_async_function (); } static void start_is_global_engine_enabled_async (void) { ibus_bus_is_global_engine_enabled_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_is_global_engine_enabled_async, NULL); /* user_data */ } #endif /* IBUS_DISABLE_DEPRECATED */ static void finish_get_global_engine_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; IBusEngineDesc *desc = ibus_bus_get_global_engine_async_finish (bus, res, &error); if (desc) g_object_unref (desc); g_debug ("ibus_bus_get_global_engine_finish: OK"); call_next_async_function (); } static void start_get_global_engine_async (void) { ibus_bus_get_global_engine_async (bus, -1, /* timeout */ NULL, /* cancellable */ finish_get_global_engine_async, NULL); /* user_data */ } static void finish_set_global_engine_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_set_global_engine_async_finish (bus, res, &error); g_debug ("ibus_bus_set_global_engine_finish: OK"); call_next_async_function (); } static void start_set_global_engine_async (void) { ibus_bus_set_global_engine_async (bus, "anthy", -1, /* timeout */ NULL, /* cancellable */ finish_set_global_engine_async, NULL); /* user_data */ } static void finish_preload_engines_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_preload_engines_async_finish (bus, res, &error); g_debug ("ibus_bus_preload_engines_async_finish: OK"); call_next_async_function (); } static void start_preload_engines_async (void) { const gchar *preload_engines[] = { "xkb:us::eng", NULL }; ibus_bus_preload_engines_async ( bus, preload_engines, -1, /* timeout */ NULL, /* cancellable */ finish_preload_engines_async, NULL); /* user_data */ } static void test_get_address (void) { GVariant *result; result = ibus_bus_get_ibus_property (bus, "Address"); g_variant_get_string (result, NULL); g_variant_unref (result); } static void test_get_current_input_context (void) { GVariant *result; result = ibus_bus_get_ibus_property (bus, "CurrentInputContext"); g_variant_get_string (result, NULL); g_variant_unref (result); } static void test_get_engines (void) { GVariant *result, *var; GVariantIter *iter; GList *engines = NULL; result = ibus_bus_get_ibus_property (bus, "Engines"); iter = g_variant_iter_new (result); while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); g_object_ref_sink (serializable); engines = g_list_append (engines, serializable); } g_variant_iter_free (iter); g_variant_unref (result); print_engines (engines); g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); } static void test_get_global_engine (void) { GVariant *result, *obj; IBusEngineDesc *desc = NULL; if (!ibus_bus_set_global_engine (bus, "xkb:us::eng")) return; result = ibus_bus_get_ibus_property (bus, "GlobalEngine"); g_assert (result); obj = g_variant_get_variant (result); g_assert (obj); desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); g_assert (desc); g_assert_cmpstr (ibus_engine_desc_get_name (desc), ==, "xkb:us::eng"); g_variant_unref (obj); g_variant_unref (result); g_object_unref (desc); } static void test_set_preload_engines (void) { const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL }; GVariant *variant; variant = g_variant_new_strv (preload_engines, -1); ibus_bus_set_ibus_property (bus, "PreloadEngines", variant); } static void finish_get_address_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GVariant *result; result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); g_variant_get_string (result, NULL); g_variant_unref (result); g_debug ("finish_get_address_async: OK"); call_next_async_function (); } static void start_get_address_async (void) { ibus_bus_get_ibus_property_async ( bus, "Address", -1, /* timeout */ NULL, /* cancellable */ finish_get_address_async, NULL); /* user_data */ } static void finish_get_current_input_context_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GVariant *result; result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); g_variant_get_string (result, NULL); g_variant_unref (result); g_debug ("finish_get_current_input_context_async: OK"); call_next_async_function (); } static void start_get_current_input_context_async (void) { ibus_bus_get_ibus_property_async ( bus, "CurrentInputContext", -1, /* timeout */ NULL, /* cancellable */ finish_get_current_input_context_async, NULL); /* user_data */ } static void finish_get_engines_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GVariant *result, *var; GVariantIter *iter; GList *engines = NULL; result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); iter = g_variant_iter_new (result); while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); g_object_ref_sink (serializable); engines = g_list_append (engines, serializable); } g_variant_iter_free (iter); g_variant_unref (result); print_engines (engines); g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); g_debug ("finish_get_engines_async: OK"); call_next_async_function (); } static void start_get_engines_async (void) { ibus_bus_get_ibus_property_async ( bus, "Engines", -1, /* timeout */ NULL, /* cancellable */ finish_get_engines_async, NULL); /* user_data */ } static void finish_get_prop_global_engine_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GVariant *result, *obj; IBusEngineDesc *desc = NULL; result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); obj = g_variant_get_variant (result); desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); g_variant_unref (obj); g_variant_unref (result); if (desc) g_object_unref (desc); g_debug ("finish_get_prop_global_engine_async: OK"); call_next_async_function (); } static void start_get_prop_global_engine_async (void) { ibus_bus_get_ibus_property_async ( bus, "GlobalEngine", -1, /* timeout */ NULL, /* cancellable */ finish_get_prop_global_engine_async, NULL); /* user_data */ } static void finish_set_preload_engines_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; ibus_bus_set_ibus_property_async_finish (bus, res, &error); g_debug ("finish_set_preload_engines_async: OK"); call_next_async_function (); } static void start_set_preload_engines_async (void) { const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL }; GVariant *variant; variant = g_variant_new_strv (preload_engines, -1); ibus_bus_set_ibus_property_async ( bus, "PreloadEngines", variant, -1, /* timeout */ NULL, /* cancellable */ finish_set_preload_engines_async, NULL); /* user_data */ } static void finish_exit_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gboolean result = ibus_bus_exit_async_finish (bus, res, &error); g_assert (result); g_debug ("ibus_bus_exit_finish: OK"); g_usleep (G_USEC_PER_SEC); call_next_async_function (); } static void start_exit_async (void) { ibus_bus_exit_async (bus, TRUE, /* restart */ -1, /* timeout */ NULL, /* cancellable */ finish_exit_async, NULL); /* user_data */ } static gboolean test_async_apis_finish (gpointer user_data) { ibus_quit (); return FALSE; } static void test_get_engines_by_names (void) { IBusEngineDesc **engines = NULL; const gchar *names[] = { "xkb:us::eng", "xkb:ca:eng:eng", "xkb:fr::fra", "xkb:jp::jpn", "invalid_engine_name", NULL, }; engines = ibus_bus_get_engines_by_names (bus, names); g_assert(engines != NULL); IBusEngineDesc **p; gint i = 0; for (p = engines; *p != NULL; p++) { g_assert (IBUS_IS_ENGINE_DESC (*p)); g_assert_cmpstr (names[i], ==, ibus_engine_desc_get_name (*p)); i++; g_object_unref (*p); } // The last engine does not exist. g_assert_cmpint (i, ==, G_N_ELEMENTS(names) - 2); g_free (engines); engines = NULL; } static void test_async_apis (void) { g_debug ("start"); call_next_async_function (); ibus_main (); } static void call_next_async_function (void) { static void (*async_functions[])(void) = { start_request_name_async, start_name_has_owner_async, start_get_name_owner_async, start_release_name_async, start_add_match_async, start_remove_match_async, start_current_input_context_async, // FIXME test ibus_bus_register_component_async. start_list_engines_async, start_list_active_engines_async, start_get_use_sys_layout_async, start_get_use_global_engine_async, start_is_global_engine_enabled_async, start_set_global_engine_async, start_get_global_engine_async, start_preload_engines_async, start_get_address_async, start_get_current_input_context_async, start_get_engines_async, start_get_prop_global_engine_async, start_set_preload_engines_async, start_exit_async, }; static guint index = 0; // Use g_timeout_add to make sure test_async_apis finishes even if async_functions is empty. if (index >= G_N_ELEMENTS (async_functions)) g_timeout_add (1, test_async_apis_finish, NULL); else (*async_functions[index++])(); } static void _bus_connected_cb (IBusBus *bus, gpointer user_data) { g_assert (ibus_bus_is_connected (bus)); ibus_quit (); } static void test_bus_new_async (void) { g_object_unref (bus); bus = ibus_bus_new_async (); g_signal_connect (bus, "connected", G_CALLBACK (_bus_connected_cb), NULL); ibus_main (); } gint main (gint argc, gchar **argv) { gint result; ibus_init (); g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_object_unref (bus); bus = ibus_bus_new (); // crosbug.com/17293 if (!ibus_bus_is_connected (bus)) { g_warning ("Not connected to ibus-daemon"); g_object_unref (bus); return -1; } g_test_add_func ("/ibus/list-engines", test_list_engines); g_test_add_func ("/ibus/list-active-engines", test_list_active_engines); g_test_add_func ("/ibus/create-input-context-async", test_create_input_context_async); g_test_add_func ("/ibus/get-engines-by-names", test_get_engines_by_names); g_test_add_func ("/ibus/get-address", test_get_address); g_test_add_func ("/ibus/get-current-input-context", test_get_current_input_context); g_test_add_func ("/ibus/get-engines", test_get_engines); g_test_add_func ("/ibus/get-global-engine", test_get_global_engine); g_test_add_func ("/ibus/set-preload-engines", test_set_preload_engines); g_test_add_func ("/ibus/async-apis", test_async_apis); g_test_add_func ("/ibus/bus-new-async", test_bus_new_async); g_test_add_func ("/ibus/bus-new-async/list-engines", test_list_engines); g_test_add_func ("/ibus/bus-new-async/list-active-engines", test_list_active_engines); g_test_add_func ("/ibus/bus-new-async/create-input-context-async", test_create_input_context_async); g_test_add_func ("/ibus/bus-new-async/get-engines-by-names", test_get_engines_by_names); g_test_add_func ("/ibus/bus-new-async/async-apis", test_async_apis); result = g_test_run (); g_object_unref (bus); return result; } ibus-1.5.11/src/tests/ibus-config.c0000644000000000000000000003023712551654123013743 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "ibus.h" static IBusBus *bus = NULL; static int create_config_count = 0; static void finish_create_config_async_success (GObject *source_object, GAsyncResult *res, gpointer user_data) { GMainLoop *loop = (GMainLoop *)user_data; GError *error = NULL; IBusConfig *config = ibus_config_new_async_finish (res, &error); g_assert (IBUS_IS_CONFIG (config)); /* Since we reuse single D-Bus connection, we need to remove the default match rule for the next ibus_config_new() call. */ ibus_config_unwatch (config, NULL, NULL); g_object_unref (config); if (--create_config_count == 0) g_main_loop_quit (loop); } static void finish_create_config_async_failed (GObject *source_object, GAsyncResult *res, gpointer user_data) { GMainLoop *loop = (GMainLoop *)user_data; GError *error = NULL; IBusConfig *config = ibus_config_new_async_finish (res, &error); g_assert (config == NULL); g_assert (error != NULL); g_error_free (error); if (--create_config_count <= 0) g_main_loop_quit (loop); } static void test_create_config_async (void) { GMainLoop *loop = NULL; GCancellable *cancellable = NULL; /* create an IC */ create_config_count = 1; loop = g_main_loop_new (NULL, TRUE); ibus_config_new_async (ibus_bus_get_connection (bus), NULL, finish_create_config_async_success, loop); g_main_loop_run (loop); g_main_loop_unref (loop); /* call create, and then cancel */ create_config_count = 1; loop = g_main_loop_new (NULL, TRUE); cancellable = g_cancellable_new (); ibus_config_new_async (ibus_bus_get_connection (bus), cancellable, finish_create_config_async_failed, loop); g_cancellable_cancel (cancellable); g_object_unref (cancellable); g_main_loop_run (loop); g_main_loop_unref (loop); } static void test_config_set_get (void) { IBusConfig *config = ibus_config_new (ibus_bus_get_connection (bus), NULL, NULL); g_assert (config); ibus_config_set_value (config, "test", "v1", g_variant_new_int32(1)); ibus_config_set_value (config, "test", "v2", g_variant_new_string("2")); GVariant *var; var = ibus_config_get_value (config, "test", "v1"); g_assert (var); g_assert_cmpint (g_variant_get_int32(var), ==, 1); g_variant_unref (var); var = ibus_config_get_value (config, "test", "v2"); g_assert (var); g_assert_cmpstr (g_variant_get_string(var, NULL), ==, "2"); g_variant_unref (var); var = ibus_config_get_values (config, "test"); g_assert (var); GVariantIter iter; gchar *name; GVariant *value; g_variant_iter_init (&iter, var); gint value_bits = 0; while (g_variant_iter_next (&iter, "{&sv}", &name, &value)) { if (g_strcmp0 (name, "v1") == 0) { g_assert_cmpint (g_variant_get_int32(value), ==, 1); value_bits |= 1; } else if (g_strcmp0 (name, "v2") == 0) { g_assert_cmpstr (g_variant_get_string(value, NULL), ==, "2"); value_bits |= (1 << 1); } else { g_warning ("unknow value name=%s", name); } ibus_config_unset (config, "test", name); g_variant_unref (value); } g_assert_cmpint (value_bits, ==, 1 | (1 << 1)); g_variant_unref (var); var = ibus_config_get_values (config, "test"); g_assert (var); g_assert_cmpint (g_variant_n_children (var), ==, 0); g_variant_unref (var); /* Since we reuse single D-Bus connection, we need to remove the default match rule for the next ibus_config_new() call. */ ibus_config_unwatch (config, NULL, NULL); g_object_unref (config); } typedef struct { GMainLoop *loop; guint timeout_id; gchar *section; gchar *name; } WatchData; typedef struct { gchar *section; gchar *name; } WatchKey; typedef struct { WatchKey *watched; /* watched keys (null-terminated) */ WatchKey *changed; /* changed keys (null-terminated) */ WatchKey *notified; /* notified keys (same length as changed, not null-terminated) */ } WatchTestData; static WatchKey default_watched[] = { { NULL } }; static WatchKey default_changed[] = { { "test/s1", "n1" }, { "test/s1", "n2" }, { "test/s2", "n1" }, { "test/s2", "n2" }, { NULL } }; static WatchKey default_notified[] = { { "test/s1", "n1" }, { "test/s1", "n2" }, { "test/s2", "n1" }, { "test/s2", "n2" } }; static WatchTestData default_data = { default_watched, default_changed, default_notified }; static WatchKey section_watched[] = { { "test/s1", NULL }, { NULL } }; static WatchKey section_notified[] = { { "test/s1", "n1" }, { "test/s1", "n2" }, { NULL, NULL }, { NULL, NULL }, }; static WatchTestData section_data = { section_watched, default_changed, section_notified }; static WatchKey section_multiple_watched[] = { { "test/s1", NULL }, { "test/s2", NULL }, { NULL } }; static WatchKey section_multiple_notified[] = { { "test/s1", "n1" }, { "test/s1", "n2" }, { "test/s2", "n1" }, { "test/s2", "n2" }, }; static WatchTestData section_multiple_data = { section_multiple_watched, default_changed, section_multiple_notified }; static WatchKey section_name_watched[] = { { "test/s1", "n1" }, { NULL } }; static WatchKey section_name_notified[] = { { "test/s1", "n1" }, { NULL, NULL }, { NULL, NULL }, { NULL, NULL }, }; static WatchTestData section_name_data = { section_name_watched, default_changed, section_name_notified }; static WatchKey section_name_multiple_watched[] = { { "test/s1", "n1" }, { "test/s2", "n2" }, { NULL } }; static WatchKey section_name_multiple_notified[] = { { "test/s1", "n1" }, { NULL, NULL }, { NULL, NULL }, { "test/s2", "n2" }, }; static WatchTestData section_name_multiple_data = { section_name_multiple_watched, default_changed, section_name_multiple_notified }; typedef struct { IBusConfig *config; WatchData data; } WatchFixture; static void value_changed_cb (IBusConfig *config, const gchar *section, const gchar *name, GVariant *value, gpointer user_data) { WatchData *data = (WatchData *) user_data; data->section = g_strdup (section); data->name = g_strdup (name); g_main_loop_quit (data->loop); } static gboolean timeout_cb (gpointer user_data) { WatchData *data = (WatchData *) user_data; g_main_loop_quit (data->loop); data->timeout_id = 0; return FALSE; } static void change_and_test (IBusConfig *config, const gchar *section, const gchar *name, const gchar *expected_section, const gchar *expected_name, WatchData *data) { gboolean retval; GVariant *var; data->section = NULL; data->name = NULL; /* Unset won't notify value-changed signal. */ var = ibus_config_get_values (config, section); if (var != NULL) { GVariant *value = g_variant_lookup_value (var, name, G_VARIANT_TYPE_VARIANT); if (value != NULL) { ibus_config_unset (config, section, name); g_variant_unref (value); } g_variant_unref (var); } data->timeout_id = g_timeout_add (1, timeout_cb, data); g_main_loop_run (data->loop); if (data->timeout_id != 0) { g_source_remove (data->timeout_id); } retval = ibus_config_set_value (config, section, name, g_variant_new_int32 (1)); g_assert (retval); data->timeout_id = g_timeout_add (1, timeout_cb, data); g_main_loop_run (data->loop); if (data->timeout_id != 0) { g_source_remove (data->timeout_id); } g_assert_cmpstr (data->section, ==, expected_section); g_assert_cmpstr (data->name, ==, expected_name); g_free (data->section); g_free (data->name); } static void watch_fixture_setup (WatchFixture *fixture, gconstpointer user_data) { fixture->config = ibus_config_new (ibus_bus_get_connection (bus), NULL, NULL); g_assert (fixture->config); fixture->data.loop = g_main_loop_new (NULL, FALSE); g_signal_connect (fixture->config, "value-changed", G_CALLBACK (value_changed_cb), &fixture->data); } static void watch_fixture_teardown (WatchFixture *fixture, gconstpointer user_data) { g_main_loop_unref (fixture->data.loop); ibus_proxy_destroy (IBUS_PROXY (fixture->config)); g_object_unref (fixture->config); } static void test_config_watch (WatchFixture *fixture, gconstpointer user_data) { const WatchTestData *data = user_data; gint i; for (i = 0; data->watched[i].section != NULL; i++) { ibus_config_watch (fixture->config, data->watched[i].section, data->watched[i].name); } for (i = 0; data->changed[i].section != NULL; i++) { change_and_test (fixture->config, data->changed[i].section, data->changed[i].name, data->notified[i].section, data->notified[i].name, &fixture->data); } for (i = 0; data->watched[i].section != NULL; i++) { ibus_config_unwatch (fixture->config, data->watched[i].section, data->watched[i].name); } if (i > 0) { /* Check if the above unwatch takes effect. */ for (i = 0; data->changed[i].section != NULL; i++) { change_and_test (fixture->config, data->changed[i].section, data->changed[i].name, NULL, NULL, &fixture->data); } } else { /* Since we reuse single D-Bus connection, we need to remove the default match rule for the next ibus_config_new() call. */ ibus_config_unwatch (fixture->config, NULL, NULL); } } gint main (gint argc, gchar **argv) { gint result; ibus_init (); g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add ("/ibus/config-watch/default", WatchFixture, &default_data, watch_fixture_setup, test_config_watch, watch_fixture_teardown); g_test_add ("/ibus/config-watch/section", WatchFixture, §ion_data, watch_fixture_setup, test_config_watch, watch_fixture_teardown); g_test_add ("/ibus/config-watch/section-multiple", WatchFixture, §ion_multiple_data, watch_fixture_setup, test_config_watch, watch_fixture_teardown); g_test_add ("/ibus/config-watch/section-name", WatchFixture, §ion_name_data, watch_fixture_setup, test_config_watch, watch_fixture_teardown); g_test_add ("/ibus/config-watch/section-name-multiple", WatchFixture, §ion_name_multiple_data, watch_fixture_setup, test_config_watch, watch_fixture_teardown); g_test_add_func ("/ibus/create-config-async", test_create_config_async); g_test_add_func ("/ibus/config-set-get", test_config_set_get); result = g_test_run (); g_object_unref (bus); return result; } ibus-1.5.11/src/tests/ibus-util.c0000644000000000000000000000052412551654123013447 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include #include #include #include "ibus.h" int main (int argc, char **argv) { setlocale(LC_ALL, "C"); g_assert_cmpstr (ibus_get_language_name ("eng"), ==, "English"); return 0; } ibus-1.5.11/src/tests/ibus-engine-switch.c0000644000000000000000000001272512551654123015244 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "ibus.h" static IBusBus *bus; #define BEFORE_ENGINE "xkb:us::eng" #define AFTER_ENGINE "xkb:jp::jpn" static const gchar *engine_names[] = { BEFORE_ENGINE, AFTER_ENGINE }; static void change_global_engine (void) { gint i; for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { ibus_bus_set_global_engine (bus, engine_names[i]); IBusEngineDesc *engine_desc = ibus_bus_get_global_engine (bus); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, engine_names[i]); g_object_unref (G_OBJECT (engine_desc)); } } static void change_context_engine (IBusInputContext *context) { gint i; for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { ibus_input_context_set_engine (context, engine_names[i]); IBusEngineDesc *engine_desc = ibus_input_context_get_engine (context); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, engine_names[i]); } } typedef struct { gint count; } GlobalEngineChangedData; static void global_engine_changed_cb (IBusBus *bus, gchar *name, gpointer user_data) { GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; data->count++; } static gboolean timeout_cb (gpointer user_data) { ibus_quit (); return FALSE; } static gboolean change_global_engine_cb (gpointer user_data) { change_global_engine (); return FALSE; } static void test_global_engine (void) { GlobalEngineChangedData data; guint handler_id, timeout_id, idle_id; if (!ibus_bus_get_use_global_engine (bus)) return; data.count = 0; handler_id = g_signal_connect (bus, "global-engine-changed", G_CALLBACK (global_engine_changed_cb), &data); timeout_id = g_timeout_add_seconds (1, timeout_cb, &data); idle_id = g_idle_add ((GSourceFunc) change_global_engine_cb, NULL); ibus_main (); g_assert_cmpint (data.count, ==, G_N_ELEMENTS (engine_names)); g_source_remove (idle_id); g_source_remove (timeout_id); g_signal_handler_disconnect (bus, handler_id); } static void test_context_engine (void) { IBusEngineDesc *engine_desc; IBusInputContext *context; if (ibus_bus_get_use_global_engine (bus)) return; context = ibus_bus_create_input_context (bus, "test"); ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); /* ibus_bus_set_global_engine() changes focused context engine. */ ibus_input_context_focus_in (context); change_context_engine (context); engine_desc = ibus_input_context_get_engine (context); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); g_object_unref (context); } static void test_context_engine_set_by_global (void) { IBusEngineDesc *engine_desc; IBusInputContext *context; if (!ibus_bus_get_use_global_engine (bus)) return; context = ibus_bus_create_input_context (bus, "test"); ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); /* ibus_bus_set_global_engine() changes focused context engine. */ ibus_input_context_focus_in (context); change_global_engine (); /* ibus_input_context_set_engine() does not take effect when global engine is used. */ ibus_input_context_set_engine (context, BEFORE_ENGINE); engine_desc = ibus_input_context_get_engine (context); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); g_object_unref (context); } static void test_context_engine_set_by_focus (void) { IBusEngineDesc *engine_desc; IBusInputContext *context, *another_context; if (!ibus_bus_get_use_global_engine (bus)) return; context = ibus_bus_create_input_context (bus, "test"); ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); another_context = ibus_bus_create_input_context (bus, "another"); ibus_input_context_set_capabilities (another_context, IBUS_CAP_FOCUS); ibus_input_context_focus_in (context); change_global_engine (); /* When focus is lost, context engine is set to "dummy". */ ibus_input_context_focus_in (another_context); engine_desc = ibus_input_context_get_engine (context); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, "dummy"); engine_desc = ibus_input_context_get_engine (another_context); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); g_object_unref (context); g_object_unref (another_context); } gint main (gint argc, gchar **argv) { gint result; ibus_init (); g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_object_unref (bus); bus = ibus_bus_new (); // crosbug.com/17293 ibus_bus_set_watch_ibus_signal (bus, TRUE); g_test_add_func ("/ibus/engine-switch/global-engine", test_global_engine); g_test_add_func ("/ibus/engine-switch/context-engine", test_context_engine); g_test_add_func ("/ibus/engine-switch/context-engine-set-by-global", test_context_engine_set_by_global); g_test_add_func ("/ibus/engine-switch/context-engine-set-by-focus", test_context_engine_set_by_focus); result = g_test_run (); g_object_unref (bus); return result; } ibus-1.5.11/src/tests/ibus-registry.c0000644000000000000000000000022512551654123014340 00000000000000#include int main() { ibus_init (); IBusRegistry *registry = ibus_registry_new (); g_object_unref (registry); return 0; } ibus-1.5.11/src/tests/ibus-inputcontext.c0000644000000000000000000001661112551654123015242 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2011 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include "ibus.h" static IBusBus *bus; static void call_next_async_function (IBusInputContext *context); static gboolean fatal_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { if (!g_strcmp0 (message, "org.freedesktop.IBus.InputContext.GetEngine: GDBus.Error:org.freedesktop.DBus.Error.Failed: Input context does not have engine.")) return FALSE; /* do not call abort. */ return TRUE; } static gchar * get_last_engine_id (const GList *engines) { const char *result = NULL; for (; engines; engines = g_list_next (engines)) { IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data); g_assert (engine_desc); result = ibus_engine_desc_get_name (engine_desc); } return g_strdup (result); } static void call_basic_ipcs (IBusInputContext *context) { ibus_input_context_set_cursor_location (context, 0, 0, 1, 1); ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); ibus_input_context_property_activate (context, "dummy.prop.name", PROP_STATE_CHECKED); ibus_input_context_reset (context); /* When enable() is called, ibus-daemon may start a global (or preloaded, * or default) engine in an asynchrnous manner and return immediately. * Therefore, it is not guaranteed that ibus_input_context_is_enabled() * returns TRUE. */ ibus_input_context_focus_in (context); } static void test_input_context (void) { GList *engines; gchar *active_engine_name = NULL; IBusInputContext *context; IBusEngineDesc *engine_desc; gchar *current_ic; context = ibus_bus_create_input_context (bus, "test"); call_basic_ipcs (context); engines = ibus_bus_list_active_engines (bus); if (engines != NULL) { active_engine_name = get_last_engine_id (engines); } else { active_engine_name = g_strdup ("dummy"); } g_assert (active_engine_name); g_debug ("Use '%s' for testing.", active_engine_name); ibus_input_context_set_engine (context, active_engine_name); current_ic = ibus_bus_current_input_context (bus); g_assert (!strcmp (current_ic, g_dbus_proxy_get_object_path ((GDBusProxy *)context))); g_test_log_set_fatal_handler (fatal_handler, NULL); engine_desc = ibus_input_context_get_engine (context); if (engine_desc) { /* FIXME race condition between ibus_input_context_set_engine and _get_engine. * ibus_input_context_get_engine is not guaranteed to return non-NULL * (even if we use synchronous set_engine()) because ibus-daemon sets a context * engine in an asynchronous manner. See _context_request_engine_cb in * ibusimpl.c which handles context_signals[REQUEST_ENGINE] signal. */ g_assert (!strcmp (active_engine_name, ibus_engine_desc_get_name(engine_desc))); g_object_unref (engine_desc); engine_desc = NULL; } ibus_input_context_process_key_event (context, 0, 0, 0); /* An engine is set. Try to call basic IPCs again. */ call_basic_ipcs (context); g_free (current_ic); g_object_unref (context); g_free (active_engine_name); g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); } static void finish_get_engine_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = IBUS_INPUT_CONTEXT (source_object); GError *error = NULL; IBusEngineDesc *desc = ibus_input_context_get_engine_async_finish (context, res, &error); if (desc) { g_object_unref (desc); } g_debug ("ibus_context_get_engine_async_finish: OK"); call_next_async_function (context); } static void start_get_engine_async (IBusInputContext *context) { ibus_input_context_get_engine_async (context, -1, /* timeout */ NULL, /* cancellable */ finish_get_engine_async, NULL); /* user_data */ } static void finish_process_key_event_async (GObject *source_object, GAsyncResult *res, gpointer user_data) { IBusInputContext *context = IBUS_INPUT_CONTEXT (source_object); GError *error = NULL; gboolean result = ibus_input_context_process_key_event_async_finish (context, res, &error); g_assert (result || error == NULL); g_debug ("ibus_context_process_key_event_async_finish: OK"); call_next_async_function (context); } static void start_process_key_event_async (IBusInputContext *context) { ibus_input_context_process_key_event_async (context, 0, 0, 0, -1, /* timeout */ NULL, /* cancellable */ finish_process_key_event_async, NULL); /* user_data */ } static gboolean test_async_apis_finish (gpointer user_data) { ibus_quit (); return FALSE; } static void test_async_apis (void) { g_debug ("start"); IBusInputContext *context; context = ibus_bus_create_input_context (bus, "test"); call_basic_ipcs (context); call_next_async_function (context); ibus_main (); } static void call_next_async_function (IBusInputContext *context) { static void (*async_functions[])(IBusInputContext *) = { start_get_engine_async, start_process_key_event_async, }; static guint index = 0; // Use g_timeout_add to make sure test_async_apis finishes even if async_functions is empty. if (index >= G_N_ELEMENTS (async_functions)) g_timeout_add (1, test_async_apis_finish, NULL); else (*async_functions[index++])(context); } gint main (gint argc, gchar **argv) { gint result; ibus_init (); g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add_func ("/ibus/input_context", test_input_context); g_test_add_func ("/ibus/input_context_async_with_callback", test_async_apis); result = g_test_run (); g_object_unref (bus); return result; } ibus-1.5.11/src/tests/ibus-factory.c0000644000000000000000000000146612551654123014147 00000000000000#include static gboolean timeout_cb (gpointer data) { g_main_loop_quit ((GMainLoop *)data); return FALSE; } static void run_loop_with_timeout (gint interval) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); g_timeout_add (interval, timeout_cb, loop); g_main_loop_run (loop); g_main_loop_unref (loop); } static void test_factory (void) { IBusBus *bus = ibus_bus_new (); IBusFactory *factory = ibus_factory_new (ibus_bus_get_connection (bus)); ibus_bus_request_name (bus, "test.factory", 0); run_loop_with_timeout (1000); g_object_unref (factory); g_object_unref (bus); } gint main (gint argc, gchar **argv) { ibus_init (); g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/factory", test_factory); return g_test_run (); } ibus-1.5.11/src/tests/Makefile.in0000644000000000000000000015127612551654261013451 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = $(am__EXEEXT_4) TESTS = ibus-bus$(EXEEXT) ibus-config$(EXEEXT) \ ibus-configservice$(EXEEXT) ibus-factory$(EXEEXT) \ ibus-inputcontext$(EXEEXT) ibus-inputcontext-create$(EXEEXT) \ ibus-keynames$(EXEEXT) ibus-registry$(EXEEXT) \ ibus-serializable$(EXEEXT) ibus-share$(EXEEXT) \ ibus-util$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ $(am__EXEEXT_3) @ENABLE_ENGINE_TRUE@am__append_1 = ibus-engine-switch @ENABLE_GTK3_TRUE@am__append_2 = ibus-compose subdir = src/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = @ENABLE_ENGINE_TRUE@am__EXEEXT_2 = ibus-engine-switch$(EXEEXT) @ENABLE_GTK3_TRUE@am__EXEEXT_3 = ibus-compose$(EXEEXT) am__EXEEXT_4 = ibus-bus$(EXEEXT) ibus-config$(EXEEXT) \ ibus-configservice$(EXEEXT) ibus-factory$(EXEEXT) \ ibus-inputcontext$(EXEEXT) ibus-inputcontext-create$(EXEEXT) \ ibus-keynames$(EXEEXT) ibus-registry$(EXEEXT) \ ibus-serializable$(EXEEXT) ibus-share$(EXEEXT) \ ibus-util$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ $(am__EXEEXT_3) PROGRAMS = $(noinst_PROGRAMS) am_ibus_bus_OBJECTS = ibus-bus.$(OBJEXT) ibus_bus_OBJECTS = $(am_ibus_bus_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = \ $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ $(am__DEPENDENCIES_1) ibus_bus_DEPENDENCIES = $(am__DEPENDENCIES_2) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_ibus_compose_OBJECTS = ibus_compose-ibus-compose.$(OBJEXT) ibus_compose_OBJECTS = $(am_ibus_compose_OBJECTS) ibus_compose_DEPENDENCIES = $(am__DEPENDENCIES_2) ibus_compose_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_compose_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_ibus_config_OBJECTS = ibus-config.$(OBJEXT) ibus_config_OBJECTS = $(am_ibus_config_OBJECTS) ibus_config_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_configservice_OBJECTS = ibus-configservice.$(OBJEXT) ibus_configservice_OBJECTS = $(am_ibus_configservice_OBJECTS) ibus_configservice_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_engine_switch_OBJECTS = ibus-engine-switch.$(OBJEXT) ibus_engine_switch_OBJECTS = $(am_ibus_engine_switch_OBJECTS) ibus_engine_switch_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_factory_OBJECTS = ibus-factory.$(OBJEXT) ibus_factory_OBJECTS = $(am_ibus_factory_OBJECTS) ibus_factory_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_inputcontext_OBJECTS = ibus-inputcontext.$(OBJEXT) ibus_inputcontext_OBJECTS = $(am_ibus_inputcontext_OBJECTS) ibus_inputcontext_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_inputcontext_create_OBJECTS = \ ibus-inputcontext-create.$(OBJEXT) ibus_inputcontext_create_OBJECTS = \ $(am_ibus_inputcontext_create_OBJECTS) ibus_inputcontext_create_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_keynames_OBJECTS = ibus-keynames.$(OBJEXT) ibus_keynames_OBJECTS = $(am_ibus_keynames_OBJECTS) ibus_keynames_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_registry_OBJECTS = ibus-registry.$(OBJEXT) ibus_registry_OBJECTS = $(am_ibus_registry_OBJECTS) ibus_registry_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_serializable_OBJECTS = ibus-serializable.$(OBJEXT) ibus_serializable_OBJECTS = $(am_ibus_serializable_OBJECTS) ibus_serializable_DEPENDENCIES = $(am__DEPENDENCIES_2) am_ibus_share_OBJECTS = ibus_share-ibus-share.$(OBJEXT) ibus_share_OBJECTS = $(am_ibus_share_OBJECTS) ibus_share_DEPENDENCIES = $(am__DEPENDENCIES_2) ibus_share_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_share_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_ibus_util_OBJECTS = ibus-util.$(OBJEXT) ibus_util_OBJECTS = $(am_ibus_util_OBJECTS) ibus_util_DEPENDENCIES = $(am__DEPENDENCIES_2) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(ibus_bus_SOURCES) $(ibus_compose_SOURCES) \ $(ibus_config_SOURCES) $(ibus_configservice_SOURCES) \ $(ibus_engine_switch_SOURCES) $(ibus_factory_SOURCES) \ $(ibus_inputcontext_SOURCES) \ $(ibus_inputcontext_create_SOURCES) $(ibus_keynames_SOURCES) \ $(ibus_registry_SOURCES) $(ibus_serializable_SOURCES) \ $(ibus_share_SOURCES) $(ibus_util_SOURCES) DIST_SOURCES = $(ibus_bus_SOURCES) $(ibus_compose_SOURCES) \ $(ibus_config_SOURCES) $(ibus_configservice_SOURCES) \ $(ibus_engine_switch_SOURCES) $(ibus_factory_SOURCES) \ $(ibus_inputcontext_SOURCES) \ $(ibus_inputcontext_create_SOURCES) $(ibus_keynames_SOURCES) \ $(ibus_registry_SOURCES) $(ibus_serializable_SOURCES) \ $(ibus_share_SOURCES) $(ibus_util_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = DEPS = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -g \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DIBUS_DISABLE_DEPRECATION_WARNINGS \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) prog_ldadd = \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ $(NULL) TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ $(NULL) LOG_COMPILER = $(srcdir)/runtest EXTRA_DIST = runtest ibus_bus_SOURCES = ibus-bus.c ibus_bus_LDADD = $(prog_ldadd) ibus_compose_SOURCES = ibus-compose.c ibus_compose_CFLAGS = @GTK3_CFLAGS@ ibus_compose_LDADD = $(prog_ldadd) @GTK3_LIBS@ ibus_config_SOURCES = ibus-config.c ibus_config_LDADD = $(prog_ldadd) ibus_configservice_SOURCES = ibus-configservice.c ibus_configservice_LDADD = $(prog_ldadd) ibus_engine_switch_SOURCES = ibus-engine-switch.c ibus_engine_switch_LDADD = $(prog_ldadd) ibus_factory_SOURCES = ibus-factory.c ibus_factory_LDADD = $(prog_ldadd) ibus_inputcontext_SOURCES = ibus-inputcontext.c ibus_inputcontext_LDADD = $(prog_ldadd) ibus_inputcontext_create_SOURCES = ibus-inputcontext-create.c ibus_inputcontext_create_LDADD = $(prog_ldadd) ibus_keynames_SOURCES = ibus-keynames.c ibus_keynames_LDADD = $(prog_ldadd) ibus_registry_SOURCES = ibus-registry.c ibus_registry_LDADD = $(prog_ldadd) ibus_serializable_SOURCES = ibus-serializable.c ibus_serializable_LDADD = $(prog_ldadd) ibus_share_SOURCES = ibus-share.c ibus_share_CFLAGS = @DBUS_CFLAGS@ ibus_share_LDADD = $(prog_ldadd) @DBUS_LIBS@ ibus_util_SOURCES = ibus-util.c ibus_util_LDADD = $(prog_ldadd) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ibus-bus$(EXEEXT): $(ibus_bus_OBJECTS) $(ibus_bus_DEPENDENCIES) $(EXTRA_ibus_bus_DEPENDENCIES) @rm -f ibus-bus$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_bus_OBJECTS) $(ibus_bus_LDADD) $(LIBS) ibus-compose$(EXEEXT): $(ibus_compose_OBJECTS) $(ibus_compose_DEPENDENCIES) $(EXTRA_ibus_compose_DEPENDENCIES) @rm -f ibus-compose$(EXEEXT) $(AM_V_CCLD)$(ibus_compose_LINK) $(ibus_compose_OBJECTS) $(ibus_compose_LDADD) $(LIBS) ibus-config$(EXEEXT): $(ibus_config_OBJECTS) $(ibus_config_DEPENDENCIES) $(EXTRA_ibus_config_DEPENDENCIES) @rm -f ibus-config$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_config_OBJECTS) $(ibus_config_LDADD) $(LIBS) ibus-configservice$(EXEEXT): $(ibus_configservice_OBJECTS) $(ibus_configservice_DEPENDENCIES) $(EXTRA_ibus_configservice_DEPENDENCIES) @rm -f ibus-configservice$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_configservice_OBJECTS) $(ibus_configservice_LDADD) $(LIBS) ibus-engine-switch$(EXEEXT): $(ibus_engine_switch_OBJECTS) $(ibus_engine_switch_DEPENDENCIES) $(EXTRA_ibus_engine_switch_DEPENDENCIES) @rm -f ibus-engine-switch$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_engine_switch_OBJECTS) $(ibus_engine_switch_LDADD) $(LIBS) ibus-factory$(EXEEXT): $(ibus_factory_OBJECTS) $(ibus_factory_DEPENDENCIES) $(EXTRA_ibus_factory_DEPENDENCIES) @rm -f ibus-factory$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_factory_OBJECTS) $(ibus_factory_LDADD) $(LIBS) ibus-inputcontext$(EXEEXT): $(ibus_inputcontext_OBJECTS) $(ibus_inputcontext_DEPENDENCIES) $(EXTRA_ibus_inputcontext_DEPENDENCIES) @rm -f ibus-inputcontext$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_inputcontext_OBJECTS) $(ibus_inputcontext_LDADD) $(LIBS) ibus-inputcontext-create$(EXEEXT): $(ibus_inputcontext_create_OBJECTS) $(ibus_inputcontext_create_DEPENDENCIES) $(EXTRA_ibus_inputcontext_create_DEPENDENCIES) @rm -f ibus-inputcontext-create$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_inputcontext_create_OBJECTS) $(ibus_inputcontext_create_LDADD) $(LIBS) ibus-keynames$(EXEEXT): $(ibus_keynames_OBJECTS) $(ibus_keynames_DEPENDENCIES) $(EXTRA_ibus_keynames_DEPENDENCIES) @rm -f ibus-keynames$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_keynames_OBJECTS) $(ibus_keynames_LDADD) $(LIBS) ibus-registry$(EXEEXT): $(ibus_registry_OBJECTS) $(ibus_registry_DEPENDENCIES) $(EXTRA_ibus_registry_DEPENDENCIES) @rm -f ibus-registry$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_registry_OBJECTS) $(ibus_registry_LDADD) $(LIBS) ibus-serializable$(EXEEXT): $(ibus_serializable_OBJECTS) $(ibus_serializable_DEPENDENCIES) $(EXTRA_ibus_serializable_DEPENDENCIES) @rm -f ibus-serializable$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_serializable_OBJECTS) $(ibus_serializable_LDADD) $(LIBS) ibus-share$(EXEEXT): $(ibus_share_OBJECTS) $(ibus_share_DEPENDENCIES) $(EXTRA_ibus_share_DEPENDENCIES) @rm -f ibus-share$(EXEEXT) $(AM_V_CCLD)$(ibus_share_LINK) $(ibus_share_OBJECTS) $(ibus_share_LDADD) $(LIBS) ibus-util$(EXEEXT): $(ibus_util_OBJECTS) $(ibus_util_DEPENDENCIES) $(EXTRA_ibus_util_DEPENDENCIES) @rm -f ibus-util$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_util_OBJECTS) $(ibus_util_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-bus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-configservice.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-engine-switch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-factory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-inputcontext-create.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-inputcontext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-keynames.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-registry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-serializable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_compose-ibus-compose.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_share-ibus-share.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ibus_compose-ibus-compose.o: ibus-compose.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_compose_CFLAGS) $(CFLAGS) -MT ibus_compose-ibus-compose.o -MD -MP -MF $(DEPDIR)/ibus_compose-ibus-compose.Tpo -c -o ibus_compose-ibus-compose.o `test -f 'ibus-compose.c' || echo '$(srcdir)/'`ibus-compose.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_compose-ibus-compose.Tpo $(DEPDIR)/ibus_compose-ibus-compose.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-compose.c' object='ibus_compose-ibus-compose.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_compose_CFLAGS) $(CFLAGS) -c -o ibus_compose-ibus-compose.o `test -f 'ibus-compose.c' || echo '$(srcdir)/'`ibus-compose.c ibus_compose-ibus-compose.obj: ibus-compose.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_compose_CFLAGS) $(CFLAGS) -MT ibus_compose-ibus-compose.obj -MD -MP -MF $(DEPDIR)/ibus_compose-ibus-compose.Tpo -c -o ibus_compose-ibus-compose.obj `if test -f 'ibus-compose.c'; then $(CYGPATH_W) 'ibus-compose.c'; else $(CYGPATH_W) '$(srcdir)/ibus-compose.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_compose-ibus-compose.Tpo $(DEPDIR)/ibus_compose-ibus-compose.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-compose.c' object='ibus_compose-ibus-compose.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_compose_CFLAGS) $(CFLAGS) -c -o ibus_compose-ibus-compose.obj `if test -f 'ibus-compose.c'; then $(CYGPATH_W) 'ibus-compose.c'; else $(CYGPATH_W) '$(srcdir)/ibus-compose.c'; fi` ibus_share-ibus-share.o: ibus-share.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_share_CFLAGS) $(CFLAGS) -MT ibus_share-ibus-share.o -MD -MP -MF $(DEPDIR)/ibus_share-ibus-share.Tpo -c -o ibus_share-ibus-share.o `test -f 'ibus-share.c' || echo '$(srcdir)/'`ibus-share.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_share-ibus-share.Tpo $(DEPDIR)/ibus_share-ibus-share.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-share.c' object='ibus_share-ibus-share.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_share_CFLAGS) $(CFLAGS) -c -o ibus_share-ibus-share.o `test -f 'ibus-share.c' || echo '$(srcdir)/'`ibus-share.c ibus_share-ibus-share.obj: ibus-share.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_share_CFLAGS) $(CFLAGS) -MT ibus_share-ibus-share.obj -MD -MP -MF $(DEPDIR)/ibus_share-ibus-share.Tpo -c -o ibus_share-ibus-share.obj `if test -f 'ibus-share.c'; then $(CYGPATH_W) 'ibus-share.c'; else $(CYGPATH_W) '$(srcdir)/ibus-share.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_share-ibus-share.Tpo $(DEPDIR)/ibus_share-ibus-share.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-share.c' object='ibus_share-ibus-share.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_share_CFLAGS) $(CFLAGS) -c -o ibus_share-ibus-share.obj `if test -f 'ibus-share.c'; then $(CYGPATH_W) 'ibus-share.c'; else $(CYGPATH_W) '$(srcdir)/ibus-share.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? ibus-bus.log: ibus-bus$(EXEEXT) @p='ibus-bus$(EXEEXT)'; \ b='ibus-bus'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-config.log: ibus-config$(EXEEXT) @p='ibus-config$(EXEEXT)'; \ b='ibus-config'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-configservice.log: ibus-configservice$(EXEEXT) @p='ibus-configservice$(EXEEXT)'; \ b='ibus-configservice'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-factory.log: ibus-factory$(EXEEXT) @p='ibus-factory$(EXEEXT)'; \ b='ibus-factory'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-inputcontext.log: ibus-inputcontext$(EXEEXT) @p='ibus-inputcontext$(EXEEXT)'; \ b='ibus-inputcontext'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-inputcontext-create.log: ibus-inputcontext-create$(EXEEXT) @p='ibus-inputcontext-create$(EXEEXT)'; \ b='ibus-inputcontext-create'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-keynames.log: ibus-keynames$(EXEEXT) @p='ibus-keynames$(EXEEXT)'; \ b='ibus-keynames'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-registry.log: ibus-registry$(EXEEXT) @p='ibus-registry$(EXEEXT)'; \ b='ibus-registry'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-serializable.log: ibus-serializable$(EXEEXT) @p='ibus-serializable$(EXEEXT)'; \ b='ibus-serializable'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-share.log: ibus-share$(EXEEXT) @p='ibus-share$(EXEEXT)'; \ b='ibus-share'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-util.log: ibus-util$(EXEEXT) @p='ibus-util$(EXEEXT)'; \ b='ibus-util'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-engine-switch.log: ibus-engine-switch$(EXEEXT) @p='ibus-engine-switch$(EXEEXT)'; \ b='ibus-engine-switch'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) ibus-compose.log: ibus-compose$(EXEEXT) @p='ibus-compose$(EXEEXT)'; \ b='ibus-compose'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/src/tests/Makefile.am0000644000000000000000000000622212551654123013423 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = DEPS = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la AM_CPPFLAGS = \ -g \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DIBUS_DISABLE_DEPRECATION_WARNINGS \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) prog_ldadd = \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ $(NULL) noinst_PROGRAMS = $(TESTS) TESTS = \ ibus-bus \ ibus-config \ ibus-configservice \ ibus-factory \ ibus-inputcontext \ ibus-inputcontext-create \ ibus-keynames \ ibus-registry \ ibus-serializable \ ibus-share \ ibus-util \ $(NULL) if ENABLE_ENGINE TESTS += ibus-engine-switch endif if ENABLE_GTK3 TESTS += ibus-compose endif TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ $(NULL) LOG_COMPILER = $(srcdir)/runtest EXTRA_DIST = runtest ibus_bus_SOURCES = ibus-bus.c ibus_bus_LDADD = $(prog_ldadd) ibus_compose_SOURCES = ibus-compose.c ibus_compose_CFLAGS = @GTK3_CFLAGS@ ibus_compose_LDADD = $(prog_ldadd) @GTK3_LIBS@ ibus_config_SOURCES = ibus-config.c ibus_config_LDADD = $(prog_ldadd) ibus_configservice_SOURCES = ibus-configservice.c ibus_configservice_LDADD = $(prog_ldadd) ibus_engine_switch_SOURCES = ibus-engine-switch.c ibus_engine_switch_LDADD = $(prog_ldadd) ibus_factory_SOURCES = ibus-factory.c ibus_factory_LDADD = $(prog_ldadd) ibus_inputcontext_SOURCES = ibus-inputcontext.c ibus_inputcontext_LDADD = $(prog_ldadd) ibus_inputcontext_create_SOURCES = ibus-inputcontext-create.c ibus_inputcontext_create_LDADD = $(prog_ldadd) ibus_keynames_SOURCES = ibus-keynames.c ibus_keynames_LDADD = $(prog_ldadd) ibus_registry_SOURCES = ibus-registry.c ibus_registry_LDADD = $(prog_ldadd) ibus_serializable_SOURCES = ibus-serializable.c ibus_serializable_LDADD = $(prog_ldadd) ibus_share_SOURCES = ibus-share.c ibus_share_CFLAGS = @DBUS_CFLAGS@ ibus_share_LDADD = $(prog_ldadd) @DBUS_LIBS@ ibus_util_SOURCES = ibus-util.c ibus_util_LDADD = $(prog_ldadd) -include $(top_srcdir)/git.mk ibus-1.5.11/src/ibuskeyuni.c0000644000000000000000000040156212551654123012566 00000000000000/* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ /* * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "ibuskeys.h" /* Thanks to Markus G. Kuhn for the ksysym<->Unicode * mapping functions, from the xterm sources. */ /* These tables could be compressed by contiguous ranges, but the benefit of doing so * is smallish. It would save about ~1000 bytes total. */ static const struct { unsigned short keysym; unsigned short ucs; } gdk_keysym_to_unicode_tab[] = { { 0x01a1, 0x0104 }, /* Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */ { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */ { 0x01a3, 0x0141 }, /* Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */ { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */ { 0x01a6, 0x015a }, /* Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */ { 0x01a9, 0x0160 }, /* Scaron Å  LATIN CAPITAL LETTER S WITH CARON */ { 0x01aa, 0x015e }, /* Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */ { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */ { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */ { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */ { 0x01af, 0x017b }, /* Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */ { 0x01b1, 0x0105 }, /* aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */ { 0x01b2, 0x02db }, /* ogonek Ë› OGONEK */ { 0x01b3, 0x0142 }, /* lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */ { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */ { 0x01b6, 0x015b }, /* sacute Å› LATIN SMALL LETTER S WITH ACUTE */ { 0x01b7, 0x02c7 }, /* caron ˇ CARON */ { 0x01b9, 0x0161 }, /* scaron Å¡ LATIN SMALL LETTER S WITH CARON */ { 0x01ba, 0x015f }, /* scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */ { 0x01bb, 0x0165 }, /* tcaron Å¥ LATIN SMALL LETTER T WITH CARON */ { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */ { 0x01bd, 0x02dd }, /* doubleacute Ë DOUBLE ACUTE ACCENT */ { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */ { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */ { 0x01c0, 0x0154 }, /* Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */ { 0x01c3, 0x0102 }, /* Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */ { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */ { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */ { 0x01c8, 0x010c }, /* Ccaron ÄŒ LATIN CAPITAL LETTER C WITH CARON */ { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */ { 0x01cc, 0x011a }, /* Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */ { 0x01cf, 0x010e }, /* Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */ { 0x01d0, 0x0110 }, /* Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */ { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */ { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */ { 0x01d5, 0x0150 }, /* Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */ { 0x01d9, 0x016e }, /* Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */ { 0x01db, 0x0170 }, /* Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ { 0x01de, 0x0162 }, /* Tcedilla Å¢ LATIN CAPITAL LETTER T WITH CEDILLA */ { 0x01e0, 0x0155 }, /* racute Å• LATIN SMALL LETTER R WITH ACUTE */ { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */ { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */ { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */ { 0x01e8, 0x010d }, /* ccaron Ä LATIN SMALL LETTER C WITH CARON */ { 0x01ea, 0x0119 }, /* eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */ { 0x01ec, 0x011b }, /* ecaron Ä› LATIN SMALL LETTER E WITH CARON */ { 0x01ef, 0x010f }, /* dcaron Ä LATIN SMALL LETTER D WITH CARON */ { 0x01f0, 0x0111 }, /* dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */ { 0x01f1, 0x0144 }, /* nacute Å„ LATIN SMALL LETTER N WITH ACUTE */ { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */ { 0x01f5, 0x0151 }, /* odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */ { 0x01f8, 0x0159 }, /* rcaron Å™ LATIN SMALL LETTER R WITH CARON */ { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */ { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */ { 0x01fe, 0x0163 }, /* tcedilla Å£ LATIN SMALL LETTER T WITH CEDILLA */ { 0x01ff, 0x02d9 }, /* abovedot Ë™ DOT ABOVE */ { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */ { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ { 0x02a9, 0x0130 }, /* Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */ { 0x02ab, 0x011e }, /* Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */ { 0x02ac, 0x0134 }, /* Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */ { 0x02b6, 0x0125 }, /* hcircumflex Ä¥ LATIN SMALL LETTER H WITH CIRCUMFLEX */ { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */ { 0x02bb, 0x011f }, /* gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */ { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */ { 0x02c5, 0x010a }, /* Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */ { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ { 0x02d5, 0x0120 }, /* Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */ { 0x02d8, 0x011c }, /* Gcircumflex Äœ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */ { 0x02de, 0x015c }, /* Scircumflex Åœ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ { 0x02e5, 0x010b }, /* cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */ { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */ { 0x02f5, 0x0121 }, /* gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */ { 0x02f8, 0x011d }, /* gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */ { 0x02fd, 0x016d }, /* ubreve Å­ LATIN SMALL LETTER U WITH BREVE */ { 0x02fe, 0x015d }, /* scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */ { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */ { 0x03a3, 0x0156 }, /* Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */ { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */ { 0x03a6, 0x013b }, /* Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */ { 0x03aa, 0x0112 }, /* Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */ { 0x03ab, 0x0122 }, /* Gcedilla Ä¢ LATIN CAPITAL LETTER G WITH CEDILLA */ { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */ { 0x03b3, 0x0157 }, /* rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */ { 0x03b5, 0x0129 }, /* itilde Ä© LATIN SMALL LETTER I WITH TILDE */ { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */ { 0x03ba, 0x0113 }, /* emacron Ä“ LATIN SMALL LETTER E WITH MACRON */ { 0x03bb, 0x0123 }, /* gcedilla Ä£ LATIN SMALL LETTER G WITH CEDILLA */ { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */ { 0x03bd, 0x014a }, /* ENG ÅŠ LATIN CAPITAL LETTER ENG */ { 0x03bf, 0x014b }, /* eng Å‹ LATIN SMALL LETTER ENG */ { 0x03c0, 0x0100 }, /* Amacron Ä€ LATIN CAPITAL LETTER A WITH MACRON */ { 0x03c7, 0x012e }, /* Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */ { 0x03cc, 0x0116 }, /* Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */ { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */ { 0x03d1, 0x0145 }, /* Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */ { 0x03d2, 0x014c }, /* Omacron ÅŒ LATIN CAPITAL LETTER O WITH MACRON */ { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */ { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */ { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */ { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */ { 0x03e0, 0x0101 }, /* amacron Ä LATIN SMALL LETTER A WITH MACRON */ { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */ { 0x03ec, 0x0117 }, /* eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */ { 0x03ef, 0x012b }, /* imacron Ä« LATIN SMALL LETTER I WITH MACRON */ { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */ { 0x03f2, 0x014d }, /* omacron Å LATIN SMALL LETTER O WITH MACRON */ { 0x03f3, 0x0137 }, /* kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */ { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */ { 0x03fd, 0x0169 }, /* utilde Å© LATIN SMALL LETTER U WITH TILDE */ { 0x03fe, 0x016b }, /* umacron Å« LATIN SMALL LETTER U WITH MACRON */ { 0x047e, 0x203e }, /* overline ‾ OVERLINE */ { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */ { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */ { 0x04a3, 0x300d }, /* kana_closingbracket 〠RIGHT CORNER BRACKET */ { 0x04a4, 0x3001 }, /* kana_comma 〠IDEOGRAPHIC COMMA */ { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */ { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */ { 0x04a7, 0x30a1 }, /* kana_a ã‚¡ KATAKANA LETTER SMALL A */ { 0x04a8, 0x30a3 }, /* kana_i ã‚£ KATAKANA LETTER SMALL I */ { 0x04a9, 0x30a5 }, /* kana_u ã‚¥ KATAKANA LETTER SMALL U */ { 0x04aa, 0x30a7 }, /* kana_e ã‚§ KATAKANA LETTER SMALL E */ { 0x04ab, 0x30a9 }, /* kana_o ã‚© KATAKANA LETTER SMALL O */ { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */ { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */ { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */ { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */ { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */ { 0x04b1, 0x30a2 }, /* kana_A ã‚¢ KATAKANA LETTER A */ { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */ { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */ { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */ { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */ { 0x04b6, 0x30ab }, /* kana_KA ã‚« KATAKANA LETTER KA */ { 0x04b7, 0x30ad }, /* kana_KI ã‚­ KATAKANA LETTER KI */ { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */ { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */ { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */ { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */ { 0x04bc, 0x30b7 }, /* kana_SHI ã‚· KATAKANA LETTER SI */ { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */ { 0x04be, 0x30bb }, /* kana_SE ã‚» KATAKANA LETTER SE */ { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */ { 0x04c0, 0x30bf }, /* kana_TA ã‚¿ KATAKANA LETTER TA */ { 0x04c1, 0x30c1 }, /* kana_CHI ムKATAKANA LETTER TI */ { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */ { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */ { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */ { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */ { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */ { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */ { 0x04c8, 0x30cd }, /* kana_NE ムKATAKANA LETTER NE */ { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */ { 0x04ca, 0x30cf }, /* kana_HA ムKATAKANA LETTER HA */ { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */ { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */ { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */ { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */ { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */ { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */ { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */ { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */ { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */ { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */ { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */ { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */ { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */ { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */ { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */ { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */ { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */ { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */ { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */ { 0x04de, 0x309b }, /* voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */ { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ { 0x05ac, 0x060c }, /* Arabic_comma ØŒ ARABIC COMMA */ { 0x05bb, 0x061b }, /* Arabic_semicolon Ø› ARABIC SEMICOLON */ { 0x05bf, 0x061f }, /* Arabic_question_mark ØŸ ARABIC QUESTION MARK */ { 0x05c1, 0x0621 }, /* Arabic_hamza Ø¡ ARABIC LETTER HAMZA */ { 0x05c2, 0x0622 }, /* Arabic_maddaonalef Ø¢ ARABIC LETTER ALEF WITH MADDA ABOVE */ { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef Ø£ ARABIC LETTER ALEF WITH HAMZA ABOVE */ { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */ { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef Ø¥ ARABIC LETTER ALEF WITH HAMZA BELOW */ { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */ { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */ { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */ { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */ { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */ { 0x05cb, 0x062b }, /* Arabic_theh Ø« ARABIC LETTER THEH */ { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */ { 0x05cd, 0x062d }, /* Arabic_hah Ø­ ARABIC LETTER HAH */ { 0x05ce, 0x062e }, /* Arabic_khah Ø® ARABIC LETTER KHAH */ { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */ { 0x05d0, 0x0630 }, /* Arabic_thal ذ ARABIC LETTER THAL */ { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */ { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */ { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */ { 0x05d4, 0x0634 }, /* Arabic_sheen Ø´ ARABIC LETTER SHEEN */ { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */ { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */ { 0x05d7, 0x0637 }, /* Arabic_tah Ø· ARABIC LETTER TAH */ { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */ { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */ { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */ { 0x05e0, 0x0640 }, /* Arabic_tatweel Ù€ ARABIC TATWEEL */ { 0x05e1, 0x0641 }, /* Arabic_feh Ù ARABIC LETTER FEH */ { 0x05e2, 0x0642 }, /* Arabic_qaf Ù‚ ARABIC LETTER QAF */ { 0x05e3, 0x0643 }, /* Arabic_kaf Ùƒ ARABIC LETTER KAF */ { 0x05e4, 0x0644 }, /* Arabic_lam Ù„ ARABIC LETTER LAM */ { 0x05e5, 0x0645 }, /* Arabic_meem Ù… ARABIC LETTER MEEM */ { 0x05e6, 0x0646 }, /* Arabic_noon Ù† ARABIC LETTER NOON */ { 0x05e7, 0x0647 }, /* Arabic_ha Ù‡ ARABIC LETTER HEH */ { 0x05e8, 0x0648 }, /* Arabic_waw Ùˆ ARABIC LETTER WAW */ { 0x05e9, 0x0649 }, /* Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */ { 0x05ea, 0x064a }, /* Arabic_yeh ÙŠ ARABIC LETTER YEH */ { 0x05eb, 0x064b }, /* Arabic_fathatan Ù‹ ARABIC FATHATAN */ { 0x05ec, 0x064c }, /* Arabic_dammatan ÙŒ ARABIC DAMMATAN */ { 0x05ed, 0x064d }, /* Arabic_kasratan Ù ARABIC KASRATAN */ { 0x05ee, 0x064e }, /* Arabic_fatha ÙŽ ARABIC FATHA */ { 0x05ef, 0x064f }, /* Arabic_damma Ù ARABIC DAMMA */ { 0x05f0, 0x0650 }, /* Arabic_kasra Ù ARABIC KASRA */ { 0x05f1, 0x0651 }, /* Arabic_shadda Ù‘ ARABIC SHADDA */ { 0x05f2, 0x0652 }, /* Arabic_sukun Ù’ ARABIC SUKUN */ { 0x06a1, 0x0452 }, /* Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */ { 0x06a2, 0x0453 }, /* Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */ { 0x06a3, 0x0451 }, /* Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */ { 0x06a4, 0x0454 }, /* Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */ { 0x06a5, 0x0455 }, /* Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */ { 0x06a6, 0x0456 }, /* Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06a7, 0x0457 }, /* Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */ { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */ { 0x06a9, 0x0459 }, /* Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */ { 0x06aa, 0x045a }, /* Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */ { 0x06ab, 0x045b }, /* Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */ { 0x06ac, 0x045c }, /* Macedonia_kje Ñœ CYRILLIC SMALL LETTER KJE */ { 0x06ad, 0x0491 }, /* Ukrainian_ghe_with_upturn Ò‘ CYRILLIC SMALL LETTER GHE WITH UPTURN */ { 0x06ae, 0x045e }, /* Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */ { 0x06af, 0x045f }, /* Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */ { 0x06b0, 0x2116 }, /* numerosign â„– NUMERO SIGN */ { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */ { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */ { 0x06b3, 0x0401 }, /* Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */ { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */ { 0x06b5, 0x0405 }, /* Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */ { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */ { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */ { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */ { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */ { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */ { 0x06bc, 0x040c }, /* Macedonia_KJE ÐŒ CYRILLIC CAPITAL LETTER KJE */ { 0x06bd, 0x0490 }, /* Ukrainian_GHE_WITH_UPTURN Ò CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ { 0x06be, 0x040e }, /* Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */ { 0x06bf, 0x040f }, /* Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */ { 0x06c0, 0x044e }, /* Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */ { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */ { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */ { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */ { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */ { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */ { 0x06c6, 0x0444 }, /* Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */ { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */ { 0x06c8, 0x0445 }, /* Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */ { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */ { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */ { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */ { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */ { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */ { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */ { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */ { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */ { 0x06d1, 0x044f }, /* Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */ { 0x06d2, 0x0440 }, /* Cyrillic_er Ñ€ CYRILLIC SMALL LETTER ER */ { 0x06d3, 0x0441 }, /* Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */ { 0x06d4, 0x0442 }, /* Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */ { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */ { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */ { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */ { 0x06d8, 0x044c }, /* Cyrillic_softsign ÑŒ CYRILLIC SMALL LETTER SOFT SIGN */ { 0x06d9, 0x044b }, /* Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */ { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */ { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */ { 0x06dc, 0x044d }, /* Cyrillic_e Ñ CYRILLIC SMALL LETTER E */ { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */ { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */ { 0x06df, 0x044a }, /* Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */ { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */ { 0x06e1, 0x0410 }, /* Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */ { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */ { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */ { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */ { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */ { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */ { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */ { 0x06e8, 0x0425 }, /* Cyrillic_HA Ð¥ CYRILLIC CAPITAL LETTER HA */ { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */ { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */ { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */ { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */ { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */ { 0x06ee, 0x041d }, /* Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */ { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */ { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */ { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */ { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */ { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */ { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */ { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */ { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */ { 0x06f7, 0x0412 }, /* Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */ { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */ { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */ { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */ { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */ { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */ { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */ { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */ { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */ { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */ { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */ { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */ { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */ { 0x07a5, 0x03aa }, /* Greek_IOTAdieresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ { 0x07a7, 0x038c }, /* Greek_OMICRONaccent ÎŒ GREEK CAPITAL LETTER OMICRON WITH TONOS */ { 0x07a8, 0x038e }, /* Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */ { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */ { 0x07ae, 0x0385 }, /* Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */ { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */ { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */ { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */ { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */ { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */ { 0x07b5, 0x03ca }, /* Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */ { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ { 0x07b7, 0x03cc }, /* Greek_omicronaccent ÏŒ GREEK SMALL LETTER OMICRON WITH TONOS */ { 0x07b8, 0x03cd }, /* Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */ { 0x07b9, 0x03cb }, /* Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ { 0x07bb, 0x03ce }, /* Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */ { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */ { 0x07c2, 0x0392 }, /* Greek_BETA Î’ GREEK CAPITAL LETTER BETA */ { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */ { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */ { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */ { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */ { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */ { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */ { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */ { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */ { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */ { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */ { 0x07cd, 0x039d }, /* Greek_NU Î GREEK CAPITAL LETTER NU */ { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */ { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */ { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */ { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */ { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */ { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */ { 0x07d5, 0x03a5 }, /* Greek_UPSILON Î¥ GREEK CAPITAL LETTER UPSILON */ { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */ { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */ { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */ { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */ { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */ { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */ { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */ { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */ { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */ { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */ { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */ { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */ { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */ { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */ { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */ { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */ { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */ { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */ { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */ { 0x07f0, 0x03c0 }, /* Greek_pi Ï€ GREEK SMALL LETTER PI */ { 0x07f1, 0x03c1 }, /* Greek_rho Ï GREEK SMALL LETTER RHO */ { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */ { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */ { 0x07f4, 0x03c4 }, /* Greek_tau Ï„ GREEK SMALL LETTER TAU */ { 0x07f5, 0x03c5 }, /* Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */ { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */ { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */ { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */ { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */ /* 0x08a1 leftradical ? ??? */ /* 0x08a2 topleftradical ? ??? */ /* 0x08a3 horizconnector ? ??? */ { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */ { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */ { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */ /* 0x08a7 topleftsqbracket ? ??? */ /* 0x08a8 botleftsqbracket ? ??? */ /* 0x08a9 toprightsqbracket ? ??? */ /* 0x08aa botrightsqbracket ? ??? */ /* 0x08ab topleftparens ? ??? */ /* 0x08ac botleftparens ? ??? */ /* 0x08ad toprightparens ? ??? */ /* 0x08ae botrightparens ? ??? */ /* 0x08af leftmiddlecurlybrace ? ??? */ /* 0x08b0 rightmiddlecurlybrace ? ??? */ /* 0x08b1 topleftsummation ? ??? */ /* 0x08b2 botleftsummation ? ??? */ /* 0x08b3 topvertsummationconnector ? ??? */ /* 0x08b4 botvertsummationconnector ? ??? */ /* 0x08b5 toprightsummation ? ??? */ /* 0x08b6 botrightsummation ? ??? */ /* 0x08b7 rightmiddlesummation ? ??? */ { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */ { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */ { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */ { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */ { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */ { 0x08c1, 0x221d }, /* variation ∠PROPORTIONAL TO */ { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */ { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */ { 0x08c8, 0x2245 }, /* approximate ≅ APPROXIMATELY EQUAL TO */ /* 0x08c9 similarequal ? ??? */ { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */ { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */ { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */ { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */ { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */ { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */ { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */ { 0x08dd, 0x222a }, /* union ∪ UNION */ { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */ { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */ { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */ { 0x08f6, 0x0192 }, /* function Æ’ LATIN SMALL LETTER F WITH HOOK */ { 0x08fb, 0x2190 }, /* leftarrow ↠LEFTWARDS ARROW */ { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */ { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */ { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */ { 0x09df, 0x2422 }, /* blank ⢠BLANK SYMBOL */ { 0x09e0, 0x25c6 }, /* soliddiamond â—† BLACK DIAMOND */ { 0x09e1, 0x2592 }, /* checkerboard â–’ MEDIUM SHADE */ { 0x09e2, 0x2409 }, /* ht ≠SYMBOL FOR HORIZONTAL TABULATION */ { 0x09e3, 0x240c }, /* ff ⌠SYMBOL FOR FORM FEED */ { 0x09e4, 0x240d }, /* cr â SYMBOL FOR CARRIAGE RETURN */ { 0x09e5, 0x240a }, /* lf ⊠SYMBOL FOR LINE FEED */ { 0x09e8, 0x2424 }, /* nl ⤠SYMBOL FOR NEWLINE */ { 0x09e9, 0x240b }, /* vt â‹ SYMBOL FOR VERTICAL TABULATION */ { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */ { 0x09eb, 0x2510 }, /* uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */ { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ { 0x09ed, 0x2514 }, /* lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */ { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ /* 0x09ef horizlinescan1 ? ??? */ /* 0x09f0 horizlinescan3 ? ??? */ { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */ /* 0x09f2 horizlinescan7 ? ??? */ /* 0x09f3 horizlinescan9 ? ??? */ { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */ { 0x09f6, 0x2534 }, /* bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */ { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */ { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */ { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */ { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */ { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */ { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */ { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */ { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */ { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */ { 0x0aa9, 0x2014 }, /* emdash — EM DASH */ { 0x0aaa, 0x2013 }, /* endash – EN DASH */ /* 0x0aac signifblank ? ??? */ { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */ /* 0x0aaf doubbaselinedot ? ??? */ { 0x0ab0, 0x2153 }, /* onethird â…“ VULGAR FRACTION ONE THIRD */ { 0x0ab1, 0x2154 }, /* twothirds â…” VULGAR FRACTION TWO THIRDS */ { 0x0ab2, 0x2155 }, /* onefifth â…• VULGAR FRACTION ONE FIFTH */ { 0x0ab3, 0x2156 }, /* twofifths â…– VULGAR FRACTION TWO FIFTHS */ { 0x0ab4, 0x2157 }, /* threefifths â…— VULGAR FRACTION THREE FIFTHS */ { 0x0ab5, 0x2158 }, /* fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */ { 0x0ab6, 0x2159 }, /* onesixth â…™ VULGAR FRACTION ONE SIXTH */ { 0x0ab7, 0x215a }, /* fivesixths â…š VULGAR FRACTION FIVE SIXTHS */ { 0x0ab8, 0x2105 }, /* careof â„… CARE OF */ { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */ { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */ { 0x0abd, 0x002e }, /* decimalpoint . FULL STOP */ { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */ /* 0x0abf marker ? ??? */ { 0x0ac3, 0x215b }, /* oneeighth â…› VULGAR FRACTION ONE EIGHTH */ { 0x0ac4, 0x215c }, /* threeeighths â…œ VULGAR FRACTION THREE EIGHTHS */ { 0x0ac5, 0x215d }, /* fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */ { 0x0ac6, 0x215e }, /* seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */ { 0x0ac9, 0x2122 }, /* trademark â„¢ TRADE MARK SIGN */ { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */ /* 0x0acb trademarkincircle ? ??? */ { 0x0acc, 0x25c1 }, /* leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */ { 0x0acd, 0x25b7 }, /* rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */ { 0x0ace, 0x25cb }, /* emopencircle â—‹ WHITE CIRCLE */ { 0x0acf, 0x25a1 }, /* emopenrectangle â–¡ WHITE SQUARE */ { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */ { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */ { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */ { 0x0ad3, 0x201d }, /* rightdoublequotemark †RIGHT DOUBLE QUOTATION MARK */ { 0x0ad4, 0x211e }, /* prescription ℞ PRESCRIPTION TAKE */ { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */ { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */ { 0x0ad9, 0x271d }, /* latincross ✠LATIN CROSS */ /* 0x0ada hexagram ? ??? */ { 0x0adb, 0x25ac }, /* filledrectbullet â–¬ BLACK RECTANGLE */ { 0x0adc, 0x25c0 }, /* filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */ { 0x0add, 0x25b6 }, /* filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */ { 0x0ade, 0x25cf }, /* emfilledcircle â— BLACK CIRCLE */ { 0x0adf, 0x25a0 }, /* emfilledrect â–  BLACK SQUARE */ { 0x0ae0, 0x25e6 }, /* enopencircbullet â—¦ WHITE BULLET */ { 0x0ae1, 0x25ab }, /* enopensquarebullet â–« WHITE SMALL SQUARE */ { 0x0ae2, 0x25ad }, /* openrectbullet â–­ WHITE RECTANGLE */ { 0x0ae3, 0x25b3 }, /* opentribulletup â–³ WHITE UP-POINTING TRIANGLE */ { 0x0ae4, 0x25bd }, /* opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */ { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */ { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */ { 0x0ae7, 0x25aa }, /* enfilledsqbullet â–ª BLACK SMALL SQUARE */ { 0x0ae8, 0x25b2 }, /* filledtribulletup â–² BLACK UP-POINTING TRIANGLE */ { 0x0ae9, 0x25bc }, /* filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */ { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */ { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */ { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */ { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */ { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */ { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */ { 0x0af1, 0x2020 }, /* dagger † DAGGER */ { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */ { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */ { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */ { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */ { 0x0af6, 0x266d }, /* musicalflat â™­ MUSIC FLAT SIGN */ { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */ { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */ { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */ { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */ { 0x0afb, 0x2117 }, /* phonographcopyright â„— SOUND RECORDING COPYRIGHT */ { 0x0afc, 0x2038 }, /* caret ‸ CARET */ { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */ { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */ /* 0x0aff cursor ? ??? */ { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */ { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */ { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */ { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */ { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */ { 0x0bc2, 0x22a4 }, /* downtack ⊤ DOWN TACK */ { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */ { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */ { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */ { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */ { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD (Unicode 3.0) */ { 0x0bce, 0x22a5 }, /* uptack ⊥ UP TACK */ { 0x0bcf, 0x25cb }, /* circle â—‹ WHITE CIRCLE */ { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */ { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */ { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */ { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */ { 0x0bdc, 0x22a3 }, /* lefttack ⊣ LEFT TACK */ { 0x0bfc, 0x22a2 }, /* righttack ⊢ RIGHT TACK */ { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */ { 0x0ce0, 0x05d0 }, /* hebrew_aleph × HEBREW LETTER ALEF */ { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */ { 0x0ce2, 0x05d2 }, /* hebrew_gimel ×’ HEBREW LETTER GIMEL */ { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */ { 0x0ce4, 0x05d4 }, /* hebrew_he ×” HEBREW LETTER HE */ { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */ { 0x0ce6, 0x05d6 }, /* hebrew_zain ×– HEBREW LETTER ZAYIN */ { 0x0ce7, 0x05d7 }, /* hebrew_chet ×— HEBREW LETTER HET */ { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */ { 0x0ce9, 0x05d9 }, /* hebrew_yod ×™ HEBREW LETTER YOD */ { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */ { 0x0ceb, 0x05db }, /* hebrew_kaph ×› HEBREW LETTER KAF */ { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */ { 0x0ced, 0x05dd }, /* hebrew_finalmem × HEBREW LETTER FINAL MEM */ { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */ { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */ { 0x0cf0, 0x05e0 }, /* hebrew_nun ×  HEBREW LETTER NUN */ { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */ { 0x0cf2, 0x05e2 }, /* hebrew_ayin ×¢ HEBREW LETTER AYIN */ { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ×£ HEBREW LETTER FINAL PE */ { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */ { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */ { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */ { 0x0cf7, 0x05e7 }, /* hebrew_qoph ×§ HEBREW LETTER QOF */ { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */ { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */ { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */ { 0x0da1, 0x0e01 }, /* Thai_kokai ภTHAI CHARACTER KO KAI */ { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */ { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */ { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */ { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */ { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */ { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */ { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */ { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */ { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */ { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */ { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */ { 0x0dad, 0x0e0d }, /* Thai_yoying ภTHAI CHARACTER YO YING */ { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */ { 0x0daf, 0x0e0f }, /* Thai_topatak ภTHAI CHARACTER TO PATAK */ { 0x0db0, 0x0e10 }, /* Thai_thothan ภTHAI CHARACTER THO THAN */ { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */ { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */ { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */ { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */ { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */ { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */ { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */ { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */ { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */ { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */ { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */ { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */ { 0x0dbd, 0x0e1d }, /* Thai_fofa ภTHAI CHARACTER FO FA */ { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */ { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */ { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */ { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */ { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */ { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */ { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */ { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */ { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */ { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */ { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */ { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */ { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */ { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */ { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */ { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */ { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */ { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */ { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */ { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */ { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */ { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */ { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */ { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */ { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */ { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */ { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */ { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */ { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */ { 0x0dde, 0x0e3e }, /* Thai_maihanakat_maitho ฾ ??? */ { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */ { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */ { 0x0de1, 0x0e41 }, /* Thai_saraae ๠THAI CHARACTER SARA AE */ { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */ { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */ { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */ { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */ { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */ { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */ { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */ { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */ { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */ { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */ { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */ { 0x0ded, 0x0e4d }, /* Thai_nikhahit ๠THAI CHARACTER NIKHAHIT */ { 0x0df0, 0x0e50 }, /* Thai_leksun ๠THAI DIGIT ZERO */ { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */ { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */ { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */ { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */ { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */ { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */ { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */ { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */ { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */ { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */ { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */ { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */ { 0x0ea4, 0x3134 }, /* Hangul_Nieun ã„´ HANGUL LETTER NIEUN */ { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */ { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ã„¶ HANGUL LETTER NIEUN-HIEUH */ { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */ { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */ { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */ { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */ { 0x0eab, 0x313b }, /* Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */ { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */ { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */ { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */ { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */ { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */ { 0x0eb1, 0x3141 }, /* Hangul_Mieum ã… HANGUL LETTER MIEUM */ { 0x0eb2, 0x3142 }, /* Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */ { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */ { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */ { 0x0eb5, 0x3145 }, /* Hangul_Sios ã…… HANGUL LETTER SIOS */ { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */ { 0x0eb7, 0x3147 }, /* Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */ { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */ { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */ { 0x0eba, 0x314a }, /* Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */ { 0x0ebb, 0x314b }, /* Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */ { 0x0ebc, 0x314c }, /* Hangul_Tieut ã…Œ HANGUL LETTER THIEUTH */ { 0x0ebd, 0x314d }, /* Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */ { 0x0ebe, 0x314e }, /* Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */ { 0x0ebf, 0x314f }, /* Hangul_A ã… HANGUL LETTER A */ { 0x0ec0, 0x3150 }, /* Hangul_AE ã… HANGUL LETTER AE */ { 0x0ec1, 0x3151 }, /* Hangul_YA ã…‘ HANGUL LETTER YA */ { 0x0ec2, 0x3152 }, /* Hangul_YAE ã…’ HANGUL LETTER YAE */ { 0x0ec3, 0x3153 }, /* Hangul_EO ã…“ HANGUL LETTER EO */ { 0x0ec4, 0x3154 }, /* Hangul_E ã…” HANGUL LETTER E */ { 0x0ec5, 0x3155 }, /* Hangul_YEO ã…• HANGUL LETTER YEO */ { 0x0ec6, 0x3156 }, /* Hangul_YE ã…– HANGUL LETTER YE */ { 0x0ec7, 0x3157 }, /* Hangul_O ã…— HANGUL LETTER O */ { 0x0ec8, 0x3158 }, /* Hangul_WA ã…˜ HANGUL LETTER WA */ { 0x0ec9, 0x3159 }, /* Hangul_WAE ã…™ HANGUL LETTER WAE */ { 0x0eca, 0x315a }, /* Hangul_OE ã…š HANGUL LETTER OE */ { 0x0ecb, 0x315b }, /* Hangul_YO ã…› HANGUL LETTER YO */ { 0x0ecc, 0x315c }, /* Hangul_U ã…œ HANGUL LETTER U */ { 0x0ecd, 0x315d }, /* Hangul_WEO ã… HANGUL LETTER WEO */ { 0x0ece, 0x315e }, /* Hangul_WE ã…ž HANGUL LETTER WE */ { 0x0ecf, 0x315f }, /* Hangul_WI ã…Ÿ HANGUL LETTER WI */ { 0x0ed0, 0x3160 }, /* Hangul_YU ã…  HANGUL LETTER YU */ { 0x0ed1, 0x3161 }, /* Hangul_EU ã…¡ HANGUL LETTER EU */ { 0x0ed2, 0x3162 }, /* Hangul_YI ã…¢ HANGUL LETTER YI */ { 0x0ed3, 0x3163 }, /* Hangul_I ã…£ HANGUL LETTER I */ { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */ { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */ { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */ { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */ { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */ { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */ { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */ { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */ { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */ { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */ { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */ { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */ { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */ { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */ { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */ { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */ { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */ { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */ { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */ { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */ { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */ { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */ { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */ { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */ { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */ { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇠHANGUL JONGSEONG PHIEUPH */ { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */ { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */ { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */ { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */ { 0x0ef2, 0x317f }, /* Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */ /* 0x0ef3 Hangul_KkogjiDalrinIeung ? ??? */ { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */ { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */ { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆠHANGUL LETTER ARAEA */ { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */ { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */ /* 0x0ef9 Hangul_J_KkogjiDalrinIeung ? ??? */ { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */ { 0x0eff, 0x20a9 }, /* Korean_Won â‚© WON SIGN */ { 0x13bc, 0x0152 }, /* OE Å’ LATIN CAPITAL LIGATURE OE */ { 0x13bd, 0x0153 }, /* oe Å“ LATIN SMALL LIGATURE OE */ { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */ { 0x20a0, 0x20a0 }, /* EcuSign â‚  EURO-CURRENCY SIGN */ { 0x20a1, 0x20a1 }, /* ColonSign â‚¡ COLON SIGN */ { 0x20a2, 0x20a2 }, /* CruzeiroSign â‚¢ CRUZEIRO SIGN */ { 0x20a3, 0x20a3 }, /* FFrancSign â‚£ FRENCH FRANC SIGN */ { 0x20a4, 0x20a4 }, /* LiraSign ₤ LIRA SIGN */ { 0x20a5, 0x20a5 }, /* MillSign â‚¥ MILL SIGN */ { 0x20a6, 0x20a6 }, /* NairaSign ₦ NAIRA SIGN */ { 0x20a7, 0x20a7 }, /* PesetaSign â‚§ PESETA SIGN */ { 0x20a8, 0x20a8 }, /* RupeeSign ₨ RUPEE SIGN */ { 0x20a9, 0x20a9 }, /* WonSign â‚© WON SIGN */ { 0x20aa, 0x20aa }, /* NewSheqelSign ₪ NEW SHEQEL SIGN */ { 0x20ab, 0x20ab }, /* DongSign â‚« DONG SIGN */ { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */ /* Following items added to GTK, not in the xterm table */ /* A few ASCII control characters */ { 0xFF08 /* Backspace */, '\b' }, { 0xFF09 /* Tab */, '\t' }, { 0xFF0A /* Linefeed */, '\n' }, { 0xFF0B /* Vert. Tab */, '\v' }, { 0xFF0D /* Return */, '\r' }, { 0xFF1B /* Escape */, '\033' }, /* Numeric keypad */ { 0xFF80 /* Space */, ' ' }, { 0xFFAA /* Multiply */, '*' }, { 0xFFAB /* Add */, '+' }, { 0xFFAC /* Separator */, ',' }, { 0xFFAD /* Subtract */, '-' }, { 0xFFAE /* Decimal */, '.' }, { 0xFFAF /* Divide */, '/' }, { 0xFFB0 /* 0 */, '0' }, { 0xFFB1 /* 1 */, '1' }, { 0xFFB2 /* 2 */, '2' }, { 0xFFB3 /* 3 */, '3' }, { 0xFFB4 /* 4 */, '4' }, { 0xFFB5 /* 5 */, '5' }, { 0xFFB6 /* 6 */, '6' }, { 0xFFB7 /* 7 */, '7' }, { 0xFFB8 /* 8 */, '8' }, { 0xFFB9 /* 9 */, '9' }, { 0xFFBD /* Equal */, '=' }, /* End numeric keypad */ { 0xFFFF /* Delete */, '\177' } }; gunichar ibus_keyval_to_unicode (guint keyval) { int min = 0; int max = G_N_ELEMENTS (gdk_keysym_to_unicode_tab) - 1; int mid; /* First check for Latin-1 characters (1:1 mapping) */ if ((keyval >= 0x0020 && keyval <= 0x007e) || (keyval >= 0x00a0 && keyval <= 0x00ff)) return keyval; /* Also check for directly encoded 24-bit UCS characters: */ if ((keyval & 0xff000000) == 0x01000000) return keyval & 0x00ffffff; /* binary search in table */ while (max >= min) { mid = (min + max) / 2; if (gdk_keysym_to_unicode_tab[mid].keysym < keyval) min = mid + 1; else if (gdk_keysym_to_unicode_tab[mid].keysym > keyval) max = mid - 1; else { /* found it */ return gdk_keysym_to_unicode_tab[mid].ucs; } } /* No matching Unicode value found */ return 0; } static const struct { unsigned short keysym; unsigned short ucs; } gdk_unicode_to_keysym_tab[] = { { 0x0abd, 0x002e }, /* decimalpoint . FULL STOP */ { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */ { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */ { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */ { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */ { 0x03c0, 0x0100 }, /* Amacron Ä€ LATIN CAPITAL LETTER A WITH MACRON */ { 0x03e0, 0x0101 }, /* amacron Ä LATIN SMALL LETTER A WITH MACRON */ { 0x01c3, 0x0102 }, /* Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */ { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */ { 0x01a1, 0x0104 }, /* Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */ { 0x01b1, 0x0105 }, /* aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */ { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */ { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */ { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */ { 0x02c5, 0x010a }, /* Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */ { 0x02e5, 0x010b }, /* cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */ { 0x01c8, 0x010c }, /* Ccaron ÄŒ LATIN CAPITAL LETTER C WITH CARON */ { 0x01e8, 0x010d }, /* ccaron Ä LATIN SMALL LETTER C WITH CARON */ { 0x01cf, 0x010e }, /* Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */ { 0x01ef, 0x010f }, /* dcaron Ä LATIN SMALL LETTER D WITH CARON */ { 0x01d0, 0x0110 }, /* Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */ { 0x01f0, 0x0111 }, /* dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */ { 0x03aa, 0x0112 }, /* Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */ { 0x03ba, 0x0113 }, /* emacron Ä“ LATIN SMALL LETTER E WITH MACRON */ { 0x03cc, 0x0116 }, /* Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */ { 0x03ec, 0x0117 }, /* eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */ { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */ { 0x01ea, 0x0119 }, /* eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */ { 0x01cc, 0x011a }, /* Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */ { 0x01ec, 0x011b }, /* ecaron Ä› LATIN SMALL LETTER E WITH CARON */ { 0x02d8, 0x011c }, /* Gcircumflex Äœ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ { 0x02f8, 0x011d }, /* gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */ { 0x02ab, 0x011e }, /* Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */ { 0x02bb, 0x011f }, /* gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */ { 0x02d5, 0x0120 }, /* Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */ { 0x02f5, 0x0121 }, /* gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */ { 0x03ab, 0x0122 }, /* Gcedilla Ä¢ LATIN CAPITAL LETTER G WITH CEDILLA */ { 0x03bb, 0x0123 }, /* gcedilla Ä£ LATIN SMALL LETTER G WITH CEDILLA */ { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ { 0x02b6, 0x0125 }, /* hcircumflex Ä¥ LATIN SMALL LETTER H WITH CIRCUMFLEX */ { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */ { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */ { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */ { 0x03b5, 0x0129 }, /* itilde Ä© LATIN SMALL LETTER I WITH TILDE */ { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */ { 0x03ef, 0x012b }, /* imacron Ä« LATIN SMALL LETTER I WITH MACRON */ { 0x03c7, 0x012e }, /* Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */ { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */ { 0x02a9, 0x0130 }, /* Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */ { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */ { 0x02ac, 0x0134 }, /* Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */ { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */ { 0x03f3, 0x0137 }, /* kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */ { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */ { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */ { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */ { 0x03a6, 0x013b }, /* Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */ { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */ { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */ { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */ { 0x01a3, 0x0141 }, /* Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */ { 0x01b3, 0x0142 }, /* lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */ { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */ { 0x01f1, 0x0144 }, /* nacute Å„ LATIN SMALL LETTER N WITH ACUTE */ { 0x03d1, 0x0145 }, /* Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */ { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */ { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */ { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */ { 0x03bd, 0x014a }, /* ENG ÅŠ LATIN CAPITAL LETTER ENG */ { 0x03bf, 0x014b }, /* eng Å‹ LATIN SMALL LETTER ENG */ { 0x03d2, 0x014c }, /* Omacron ÅŒ LATIN CAPITAL LETTER O WITH MACRON */ { 0x03f2, 0x014d }, /* omacron Å LATIN SMALL LETTER O WITH MACRON */ { 0x01d5, 0x0150 }, /* Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ { 0x01f5, 0x0151 }, /* odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */ { 0x13bc, 0x0152 }, /* OE Å’ LATIN CAPITAL LIGATURE OE */ { 0x13bd, 0x0153 }, /* oe Å“ LATIN SMALL LIGATURE OE */ { 0x01c0, 0x0154 }, /* Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */ { 0x01e0, 0x0155 }, /* racute Å• LATIN SMALL LETTER R WITH ACUTE */ { 0x03a3, 0x0156 }, /* Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */ { 0x03b3, 0x0157 }, /* rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */ { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */ { 0x01f8, 0x0159 }, /* rcaron Å™ LATIN SMALL LETTER R WITH CARON */ { 0x01a6, 0x015a }, /* Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */ { 0x01b6, 0x015b }, /* sacute Å› LATIN SMALL LETTER S WITH ACUTE */ { 0x02de, 0x015c }, /* Scircumflex Åœ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ { 0x02fe, 0x015d }, /* scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */ { 0x01aa, 0x015e }, /* Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */ { 0x01ba, 0x015f }, /* scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */ { 0x01a9, 0x0160 }, /* Scaron Å  LATIN CAPITAL LETTER S WITH CARON */ { 0x01b9, 0x0161 }, /* scaron Å¡ LATIN SMALL LETTER S WITH CARON */ { 0x01de, 0x0162 }, /* Tcedilla Å¢ LATIN CAPITAL LETTER T WITH CEDILLA */ { 0x01fe, 0x0163 }, /* tcedilla Å£ LATIN SMALL LETTER T WITH CEDILLA */ { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */ { 0x01bb, 0x0165 }, /* tcaron Å¥ LATIN SMALL LETTER T WITH CARON */ { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */ { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */ { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */ { 0x03fd, 0x0169 }, /* utilde Å© LATIN SMALL LETTER U WITH TILDE */ { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */ { 0x03fe, 0x016b }, /* umacron Å« LATIN SMALL LETTER U WITH MACRON */ { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */ { 0x02fd, 0x016d }, /* ubreve Å­ LATIN SMALL LETTER U WITH BREVE */ { 0x01d9, 0x016e }, /* Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */ { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */ { 0x01db, 0x0170 }, /* Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */ { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */ { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */ { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */ { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */ { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */ { 0x01af, 0x017b }, /* Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */ { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */ { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */ { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */ { 0x08f6, 0x0192 }, /* function Æ’ LATIN SMALL LETTER F WITH HOOK */ { 0x01b7, 0x02c7 }, /* caron ˇ CARON */ { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */ { 0x01ff, 0x02d9 }, /* abovedot Ë™ DOT ABOVE */ { 0x01b2, 0x02db }, /* ogonek Ë› OGONEK */ { 0x01bd, 0x02dd }, /* doubleacute Ë DOUBLE ACUTE ACCENT */ { 0x07ae, 0x0385 }, /* Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */ { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */ { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */ { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */ { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */ { 0x07a7, 0x038c }, /* Greek_OMICRONaccent ÎŒ GREEK CAPITAL LETTER OMICRON WITH TONOS */ { 0x07a8, 0x038e }, /* Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */ { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */ { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */ { 0x07c2, 0x0392 }, /* Greek_BETA Î’ GREEK CAPITAL LETTER BETA */ { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */ { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */ { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */ { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */ { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */ { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */ { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */ { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */ { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */ { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */ { 0x07cd, 0x039d }, /* Greek_NU Î GREEK CAPITAL LETTER NU */ { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */ { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */ { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */ { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */ { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */ { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */ { 0x07d5, 0x03a5 }, /* Greek_UPSILON Î¥ GREEK CAPITAL LETTER UPSILON */ { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */ { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */ { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */ { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */ { 0x07a5, 0x03aa }, /* Greek_IOTAdieresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */ { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */ { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */ { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */ { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */ { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */ { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */ { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */ { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */ { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */ { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */ { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */ { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */ { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */ { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */ { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */ { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */ { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */ { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */ { 0x07f0, 0x03c0 }, /* Greek_pi Ï€ GREEK SMALL LETTER PI */ { 0x07f1, 0x03c1 }, /* Greek_rho Ï GREEK SMALL LETTER RHO */ { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */ { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */ { 0x07f4, 0x03c4 }, /* Greek_tau Ï„ GREEK SMALL LETTER TAU */ { 0x07f5, 0x03c5 }, /* Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */ { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */ { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */ { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */ { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */ { 0x07b5, 0x03ca }, /* Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */ { 0x07b9, 0x03cb }, /* Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ { 0x07b7, 0x03cc }, /* Greek_omicronaccent ÏŒ GREEK SMALL LETTER OMICRON WITH TONOS */ { 0x07b8, 0x03cd }, /* Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */ { 0x07bb, 0x03ce }, /* Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */ { 0x06b3, 0x0401 }, /* Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */ { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */ { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */ { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */ { 0x06b5, 0x0405 }, /* Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */ { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */ { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */ { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */ { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */ { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */ { 0x06bc, 0x040c }, /* Macedonia_KJE ÐŒ CYRILLIC CAPITAL LETTER KJE */ { 0x06be, 0x040e }, /* Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */ { 0x06bf, 0x040f }, /* Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */ { 0x06e1, 0x0410 }, /* Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */ { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */ { 0x06f7, 0x0412 }, /* Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */ { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */ { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */ { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */ { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */ { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */ { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */ { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */ { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */ { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */ { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */ { 0x06ee, 0x041d }, /* Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */ { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */ { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */ { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */ { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */ { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */ { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */ { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */ { 0x06e8, 0x0425 }, /* Cyrillic_HA Ð¥ CYRILLIC CAPITAL LETTER HA */ { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */ { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */ { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */ { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */ { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */ { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */ { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */ { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */ { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */ { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */ { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */ { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */ { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */ { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */ { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */ { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */ { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */ { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */ { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */ { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */ { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */ { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */ { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */ { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */ { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */ { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */ { 0x06d2, 0x0440 }, /* Cyrillic_er Ñ€ CYRILLIC SMALL LETTER ER */ { 0x06d3, 0x0441 }, /* Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */ { 0x06d4, 0x0442 }, /* Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */ { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */ { 0x06c6, 0x0444 }, /* Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */ { 0x06c8, 0x0445 }, /* Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */ { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */ { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */ { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */ { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */ { 0x06df, 0x044a }, /* Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */ { 0x06d9, 0x044b }, /* Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */ { 0x06d8, 0x044c }, /* Cyrillic_softsign ÑŒ CYRILLIC SMALL LETTER SOFT SIGN */ { 0x06dc, 0x044d }, /* Cyrillic_e Ñ CYRILLIC SMALL LETTER E */ { 0x06c0, 0x044e }, /* Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */ { 0x06d1, 0x044f }, /* Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */ { 0x06a3, 0x0451 }, /* Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */ { 0x06a1, 0x0452 }, /* Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */ { 0x06a2, 0x0453 }, /* Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */ { 0x06a4, 0x0454 }, /* Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */ { 0x06a5, 0x0455 }, /* Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */ { 0x06a6, 0x0456 }, /* Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ { 0x06a7, 0x0457 }, /* Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */ { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */ { 0x06a9, 0x0459 }, /* Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */ { 0x06aa, 0x045a }, /* Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */ { 0x06ab, 0x045b }, /* Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */ { 0x06ac, 0x045c }, /* Macedonia_kje Ñœ CYRILLIC SMALL LETTER KJE */ { 0x06ae, 0x045e }, /* Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */ { 0x06af, 0x045f }, /* Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */ { 0x0ce0, 0x05d0 }, /* hebrew_aleph × HEBREW LETTER ALEF */ { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */ { 0x0ce2, 0x05d2 }, /* hebrew_gimel ×’ HEBREW LETTER GIMEL */ { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */ { 0x0ce4, 0x05d4 }, /* hebrew_he ×” HEBREW LETTER HE */ { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */ { 0x0ce6, 0x05d6 }, /* hebrew_zain ×– HEBREW LETTER ZAYIN */ { 0x0ce7, 0x05d7 }, /* hebrew_chet ×— HEBREW LETTER HET */ { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */ { 0x0ce9, 0x05d9 }, /* hebrew_yod ×™ HEBREW LETTER YOD */ { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */ { 0x0ceb, 0x05db }, /* hebrew_kaph ×› HEBREW LETTER KAF */ { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */ { 0x0ced, 0x05dd }, /* hebrew_finalmem × HEBREW LETTER FINAL MEM */ { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */ { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */ { 0x0cf0, 0x05e0 }, /* hebrew_nun ×  HEBREW LETTER NUN */ { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */ { 0x0cf2, 0x05e2 }, /* hebrew_ayin ×¢ HEBREW LETTER AYIN */ { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ×£ HEBREW LETTER FINAL PE */ { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */ { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */ { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */ { 0x0cf7, 0x05e7 }, /* hebrew_qoph ×§ HEBREW LETTER QOF */ { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */ { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */ { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */ { 0x05ac, 0x060c }, /* Arabic_comma ØŒ ARABIC COMMA */ { 0x05bb, 0x061b }, /* Arabic_semicolon Ø› ARABIC SEMICOLON */ { 0x05bf, 0x061f }, /* Arabic_question_mark ØŸ ARABIC QUESTION MARK */ { 0x05c1, 0x0621 }, /* Arabic_hamza Ø¡ ARABIC LETTER HAMZA */ { 0x05c2, 0x0622 }, /* Arabic_maddaonalef Ø¢ ARABIC LETTER ALEF WITH MADDA ABOVE */ { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef Ø£ ARABIC LETTER ALEF WITH HAMZA ABOVE */ { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */ { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef Ø¥ ARABIC LETTER ALEF WITH HAMZA BELOW */ { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */ { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */ { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */ { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */ { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */ { 0x05cb, 0x062b }, /* Arabic_theh Ø« ARABIC LETTER THEH */ { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */ { 0x05cd, 0x062d }, /* Arabic_hah Ø­ ARABIC LETTER HAH */ { 0x05ce, 0x062e }, /* Arabic_khah Ø® ARABIC LETTER KHAH */ { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */ { 0x05d0, 0x0630 }, /* Arabic_thal ذ ARABIC LETTER THAL */ { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */ { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */ { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */ { 0x05d4, 0x0634 }, /* Arabic_sheen Ø´ ARABIC LETTER SHEEN */ { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */ { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */ { 0x05d7, 0x0637 }, /* Arabic_tah Ø· ARABIC LETTER TAH */ { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */ { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */ { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */ { 0x05e0, 0x0640 }, /* Arabic_tatweel Ù€ ARABIC TATWEEL */ { 0x05e1, 0x0641 }, /* Arabic_feh Ù ARABIC LETTER FEH */ { 0x05e2, 0x0642 }, /* Arabic_qaf Ù‚ ARABIC LETTER QAF */ { 0x05e3, 0x0643 }, /* Arabic_kaf Ùƒ ARABIC LETTER KAF */ { 0x05e4, 0x0644 }, /* Arabic_lam Ù„ ARABIC LETTER LAM */ { 0x05e5, 0x0645 }, /* Arabic_meem Ù… ARABIC LETTER MEEM */ { 0x05e6, 0x0646 }, /* Arabic_noon Ù† ARABIC LETTER NOON */ { 0x05e7, 0x0647 }, /* Arabic_ha Ù‡ ARABIC LETTER HEH */ { 0x05e8, 0x0648 }, /* Arabic_waw Ùˆ ARABIC LETTER WAW */ { 0x05e9, 0x0649 }, /* Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */ { 0x05ea, 0x064a }, /* Arabic_yeh ÙŠ ARABIC LETTER YEH */ { 0x05eb, 0x064b }, /* Arabic_fathatan Ù‹ ARABIC FATHATAN */ { 0x05ec, 0x064c }, /* Arabic_dammatan ÙŒ ARABIC DAMMATAN */ { 0x05ed, 0x064d }, /* Arabic_kasratan Ù ARABIC KASRATAN */ { 0x05ee, 0x064e }, /* Arabic_fatha ÙŽ ARABIC FATHA */ { 0x05ef, 0x064f }, /* Arabic_damma Ù ARABIC DAMMA */ { 0x05f0, 0x0650 }, /* Arabic_kasra Ù ARABIC KASRA */ { 0x05f1, 0x0651 }, /* Arabic_shadda Ù‘ ARABIC SHADDA */ { 0x05f2, 0x0652 }, /* Arabic_sukun Ù’ ARABIC SUKUN */ { 0x0da1, 0x0e01 }, /* Thai_kokai ภTHAI CHARACTER KO KAI */ { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */ { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */ { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */ { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */ { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */ { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */ { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */ { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */ { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */ { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */ { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */ { 0x0dad, 0x0e0d }, /* Thai_yoying ภTHAI CHARACTER YO YING */ { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */ { 0x0daf, 0x0e0f }, /* Thai_topatak ภTHAI CHARACTER TO PATAK */ { 0x0db0, 0x0e10 }, /* Thai_thothan ภTHAI CHARACTER THO THAN */ { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */ { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */ { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */ { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */ { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */ { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */ { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */ { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */ { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */ { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */ { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */ { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */ { 0x0dbd, 0x0e1d }, /* Thai_fofa ภTHAI CHARACTER FO FA */ { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */ { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */ { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */ { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */ { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */ { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */ { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */ { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */ { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */ { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */ { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */ { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */ { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */ { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */ { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */ { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */ { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */ { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */ { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */ { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */ { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */ { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */ { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */ { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */ { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */ { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */ { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */ { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */ { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */ { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */ { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */ { 0x0de1, 0x0e41 }, /* Thai_saraae ๠THAI CHARACTER SARA AE */ { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */ { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */ { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */ { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */ { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */ { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */ { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */ { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */ { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */ { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */ { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */ { 0x0ded, 0x0e4d }, /* Thai_nikhahit ๠THAI CHARACTER NIKHAHIT */ { 0x0df0, 0x0e50 }, /* Thai_leksun ๠THAI DIGIT ZERO */ { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */ { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */ { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */ { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */ { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */ { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */ { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */ { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */ { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */ { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */ { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */ { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */ { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */ { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */ { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */ { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */ { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */ { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */ { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */ { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */ { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */ { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */ { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */ { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */ { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */ { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */ { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */ { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */ { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */ { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */ { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */ { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */ { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */ { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */ { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇠHANGUL JONGSEONG PHIEUPH */ { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */ { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */ { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */ { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */ { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */ { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */ { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */ { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */ { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */ { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */ { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */ { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */ { 0x0aaa, 0x2013 }, /* endash – EN DASH */ { 0x0aa9, 0x2014 }, /* emdash — EM DASH */ { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */ { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */ { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */ { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */ { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */ { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */ { 0x0ad3, 0x201d }, /* rightdoublequotemark †RIGHT DOUBLE QUOTATION MARK */ { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */ { 0x0af1, 0x2020 }, /* dagger † DAGGER */ { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */ { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */ { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */ { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */ { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */ { 0x0afc, 0x2038 }, /* caret ‸ CARET */ { 0x047e, 0x203e }, /* overline ‾ OVERLINE */ { 0x20a0, 0x20a0 }, /* EcuSign â‚  EURO-CURRENCY SIGN */ { 0x20a1, 0x20a1 }, /* ColonSign â‚¡ COLON SIGN */ { 0x20a2, 0x20a2 }, /* CruzeiroSign â‚¢ CRUZEIRO SIGN */ { 0x20a3, 0x20a3 }, /* FFrancSign â‚£ FRENCH FRANC SIGN */ { 0x20a4, 0x20a4 }, /* LiraSign ₤ LIRA SIGN */ { 0x20a5, 0x20a5 }, /* MillSign â‚¥ MILL SIGN */ { 0x20a6, 0x20a6 }, /* NairaSign ₦ NAIRA SIGN */ { 0x20a7, 0x20a7 }, /* PesetaSign â‚§ PESETA SIGN */ { 0x20a8, 0x20a8 }, /* RupeeSign ₨ RUPEE SIGN */ { 0x0eff, 0x20a9 }, /* Korean_Won â‚© WON SIGN */ { 0x20a9, 0x20a9 }, /* WonSign â‚© WON SIGN */ { 0x20aa, 0x20aa }, /* NewSheqelSign ₪ NEW SHEQEL SIGN */ { 0x20ab, 0x20ab }, /* DongSign â‚« DONG SIGN */ { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */ { 0x0ab8, 0x2105 }, /* careof â„… CARE OF */ { 0x06b0, 0x2116 }, /* numerosign â„– NUMERO SIGN */ { 0x0afb, 0x2117 }, /* phonographcopyright â„— SOUND RECORDING COPYRIGHT */ { 0x0ad4, 0x211e }, /* prescription ℞ PRESCRIPTION TAKE */ { 0x0ac9, 0x2122 }, /* trademark â„¢ TRADE MARK SIGN */ { 0x0ab0, 0x2153 }, /* onethird â…“ VULGAR FRACTION ONE THIRD */ { 0x0ab1, 0x2154 }, /* twothirds â…” VULGAR FRACTION TWO THIRDS */ { 0x0ab2, 0x2155 }, /* onefifth â…• VULGAR FRACTION ONE FIFTH */ { 0x0ab3, 0x2156 }, /* twofifths â…– VULGAR FRACTION TWO FIFTHS */ { 0x0ab4, 0x2157 }, /* threefifths â…— VULGAR FRACTION THREE FIFTHS */ { 0x0ab5, 0x2158 }, /* fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */ { 0x0ab6, 0x2159 }, /* onesixth â…™ VULGAR FRACTION ONE SIXTH */ { 0x0ab7, 0x215a }, /* fivesixths â…š VULGAR FRACTION FIVE SIXTHS */ { 0x0ac3, 0x215b }, /* oneeighth â…› VULGAR FRACTION ONE EIGHTH */ { 0x0ac4, 0x215c }, /* threeeighths â…œ VULGAR FRACTION THREE EIGHTHS */ { 0x0ac5, 0x215d }, /* fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */ { 0x0ac6, 0x215e }, /* seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */ { 0x08fb, 0x2190 }, /* leftarrow ↠LEFTWARDS ARROW */ { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */ { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */ { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */ { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */ { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */ { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */ { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */ { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */ { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */ { 0x08c1, 0x221d }, /* variation ∠PROPORTIONAL TO */ { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */ { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */ { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */ { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */ { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */ { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */ { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */ { 0x08dd, 0x222a }, /* union ∪ UNION */ { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */ { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */ { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */ { 0x08c8, 0x2245 }, /* approximate ≅ APPROXIMATELY EQUAL TO */ { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */ { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */ { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */ { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */ { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */ { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */ { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */ { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */ { 0x0bfc, 0x22a2 }, /* righttack ⊢ RIGHT TACK */ { 0x0bdc, 0x22a3 }, /* lefttack ⊣ LEFT TACK */ { 0x0bc2, 0x22a4 }, /* downtack ⊤ DOWN TACK */ { 0x0bce, 0x22a5 }, /* uptack ⊥ UP TACK */ { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */ { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */ { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */ { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */ { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */ { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */ { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */ { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD (Unicode 3.0) */ { 0x09e2, 0x2409 }, /* ht ≠SYMBOL FOR HORIZONTAL TABULATION */ { 0x09e5, 0x240a }, /* lf ⊠SYMBOL FOR LINE FEED */ { 0x09e9, 0x240b }, /* vt â‹ SYMBOL FOR VERTICAL TABULATION */ { 0x09e3, 0x240c }, /* ff ⌠SYMBOL FOR FORM FEED */ { 0x09e4, 0x240d }, /* cr â SYMBOL FOR CARRIAGE RETURN */ { 0x09df, 0x2422 }, /* blank ⢠BLANK SYMBOL */ { 0x09e8, 0x2424 }, /* nl ⤠SYMBOL FOR NEWLINE */ { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */ { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */ { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */ { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ { 0x09eb, 0x2510 }, /* uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */ { 0x09ed, 0x2514 }, /* lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */ { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */ { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */ { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ { 0x09f6, 0x2534 }, /* bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */ { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ { 0x09e1, 0x2592 }, /* checkerboard â–’ MEDIUM SHADE */ { 0x0adf, 0x25a0 }, /* emfilledrect â–  BLACK SQUARE */ { 0x0acf, 0x25a1 }, /* emopenrectangle â–¡ WHITE SQUARE */ { 0x0ae7, 0x25aa }, /* enfilledsqbullet â–ª BLACK SMALL SQUARE */ { 0x0ae1, 0x25ab }, /* enopensquarebullet â–« WHITE SMALL SQUARE */ { 0x0adb, 0x25ac }, /* filledrectbullet â–¬ BLACK RECTANGLE */ { 0x0ae2, 0x25ad }, /* openrectbullet â–­ WHITE RECTANGLE */ { 0x0ae8, 0x25b2 }, /* filledtribulletup â–² BLACK UP-POINTING TRIANGLE */ { 0x0ae3, 0x25b3 }, /* opentribulletup â–³ WHITE UP-POINTING TRIANGLE */ { 0x0add, 0x25b6 }, /* filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */ { 0x0acd, 0x25b7 }, /* rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */ { 0x0ae9, 0x25bc }, /* filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */ { 0x0ae4, 0x25bd }, /* opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */ { 0x0adc, 0x25c0 }, /* filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */ { 0x0acc, 0x25c1 }, /* leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */ { 0x09e0, 0x25c6 }, /* soliddiamond â—† BLACK DIAMOND */ { 0x0ace, 0x25cb }, /* emopencircle â—‹ WHITE CIRCLE */ { 0x0bcf, 0x25cb }, /* circle â—‹ WHITE CIRCLE */ { 0x0ade, 0x25cf }, /* emfilledcircle â— BLACK CIRCLE */ { 0x0ae0, 0x25e6 }, /* enopencircbullet â—¦ WHITE BULLET */ { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */ { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */ { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */ { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */ { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */ { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */ { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */ { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */ { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */ { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */ { 0x0af6, 0x266d }, /* musicalflat â™­ MUSIC FLAT SIGN */ { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */ { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */ { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */ { 0x0ad9, 0x271d }, /* latincross ✠LATIN CROSS */ { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */ { 0x04a4, 0x3001 }, /* kana_comma 〠IDEOGRAPHIC COMMA */ { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */ { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */ { 0x04a3, 0x300d }, /* kana_closingbracket 〠RIGHT CORNER BRACKET */ { 0x04de, 0x309b }, /* voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */ { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ { 0x04a7, 0x30a1 }, /* kana_a ã‚¡ KATAKANA LETTER SMALL A */ { 0x04b1, 0x30a2 }, /* kana_A ã‚¢ KATAKANA LETTER A */ { 0x04a8, 0x30a3 }, /* kana_i ã‚£ KATAKANA LETTER SMALL I */ { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */ { 0x04a9, 0x30a5 }, /* kana_u ã‚¥ KATAKANA LETTER SMALL U */ { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */ { 0x04aa, 0x30a7 }, /* kana_e ã‚§ KATAKANA LETTER SMALL E */ { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */ { 0x04ab, 0x30a9 }, /* kana_o ã‚© KATAKANA LETTER SMALL O */ { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */ { 0x04b6, 0x30ab }, /* kana_KA ã‚« KATAKANA LETTER KA */ { 0x04b7, 0x30ad }, /* kana_KI ã‚­ KATAKANA LETTER KI */ { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */ { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */ { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */ { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */ { 0x04bc, 0x30b7 }, /* kana_SHI ã‚· KATAKANA LETTER SI */ { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */ { 0x04be, 0x30bb }, /* kana_SE ã‚» KATAKANA LETTER SE */ { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */ { 0x04c0, 0x30bf }, /* kana_TA ã‚¿ KATAKANA LETTER TA */ { 0x04c1, 0x30c1 }, /* kana_CHI ムKATAKANA LETTER TI */ { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */ { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */ { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */ { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */ { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */ { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */ { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */ { 0x04c8, 0x30cd }, /* kana_NE ムKATAKANA LETTER NE */ { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */ { 0x04ca, 0x30cf }, /* kana_HA ムKATAKANA LETTER HA */ { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */ { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */ { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */ { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */ { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */ { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */ { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */ { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */ { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */ { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */ { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */ { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */ { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */ { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */ { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */ { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */ { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */ { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */ { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */ { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */ { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */ { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */ { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */ { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */ { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */ { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */ { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */ { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */ { 0x0ea4, 0x3134 }, /* Hangul_Nieun ã„´ HANGUL LETTER NIEUN */ { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */ { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ã„¶ HANGUL LETTER NIEUN-HIEUH */ { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */ { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */ { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */ { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */ { 0x0eab, 0x313b }, /* Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */ { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */ { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */ { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */ { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */ { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */ { 0x0eb1, 0x3141 }, /* Hangul_Mieum ã… HANGUL LETTER MIEUM */ { 0x0eb2, 0x3142 }, /* Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */ { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */ { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */ { 0x0eb5, 0x3145 }, /* Hangul_Sios ã…… HANGUL LETTER SIOS */ { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */ { 0x0eb7, 0x3147 }, /* Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */ { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */ { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */ { 0x0eba, 0x314a }, /* Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */ { 0x0ebb, 0x314b }, /* Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */ { 0x0ebc, 0x314c }, /* Hangul_Tieut ã…Œ HANGUL LETTER THIEUTH */ { 0x0ebd, 0x314d }, /* Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */ { 0x0ebe, 0x314e }, /* Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */ { 0x0ebf, 0x314f }, /* Hangul_A ã… HANGUL LETTER A */ { 0x0ec0, 0x3150 }, /* Hangul_AE ã… HANGUL LETTER AE */ { 0x0ec1, 0x3151 }, /* Hangul_YA ã…‘ HANGUL LETTER YA */ { 0x0ec2, 0x3152 }, /* Hangul_YAE ã…’ HANGUL LETTER YAE */ { 0x0ec3, 0x3153 }, /* Hangul_EO ã…“ HANGUL LETTER EO */ { 0x0ec4, 0x3154 }, /* Hangul_E ã…” HANGUL LETTER E */ { 0x0ec5, 0x3155 }, /* Hangul_YEO ã…• HANGUL LETTER YEO */ { 0x0ec6, 0x3156 }, /* Hangul_YE ã…– HANGUL LETTER YE */ { 0x0ec7, 0x3157 }, /* Hangul_O ã…— HANGUL LETTER O */ { 0x0ec8, 0x3158 }, /* Hangul_WA ã…˜ HANGUL LETTER WA */ { 0x0ec9, 0x3159 }, /* Hangul_WAE ã…™ HANGUL LETTER WAE */ { 0x0eca, 0x315a }, /* Hangul_OE ã…š HANGUL LETTER OE */ { 0x0ecb, 0x315b }, /* Hangul_YO ã…› HANGUL LETTER YO */ { 0x0ecc, 0x315c }, /* Hangul_U ã…œ HANGUL LETTER U */ { 0x0ecd, 0x315d }, /* Hangul_WEO ã… HANGUL LETTER WEO */ { 0x0ece, 0x315e }, /* Hangul_WE ã…ž HANGUL LETTER WE */ { 0x0ecf, 0x315f }, /* Hangul_WI ã…Ÿ HANGUL LETTER WI */ { 0x0ed0, 0x3160 }, /* Hangul_YU ã…  HANGUL LETTER YU */ { 0x0ed1, 0x3161 }, /* Hangul_EU ã…¡ HANGUL LETTER EU */ { 0x0ed2, 0x3162 }, /* Hangul_YI ã…¢ HANGUL LETTER YI */ { 0x0ed3, 0x3163 }, /* Hangul_I ã…£ HANGUL LETTER I */ { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */ { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */ { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */ { 0x0ef2, 0x317f }, /* Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */ { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */ { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */ { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆠHANGUL LETTER ARAEA */ { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */ }; guint ibus_unicode_to_keyval (gunichar wc) { int min = 0; int max = G_N_ELEMENTS (gdk_unicode_to_keysym_tab) - 1; int mid; /* First check for Latin-1 characters (1:1 mapping) */ if ((wc >= 0x0020 && wc <= 0x007e) || (wc >= 0x00a0 && wc <= 0x00ff)) return wc; /* Binary search in table */ while (max >= min) { mid = (min + max) / 2; if (gdk_unicode_to_keysym_tab[mid].ucs < wc) min = mid + 1; else if (gdk_unicode_to_keysym_tab[mid].ucs > wc) max = mid - 1; else { /* found it */ return gdk_unicode_to_keysym_tab[mid].keysym; } } /* * No matching keysym value found, return Unicode value plus 0x01000000 * (a convention introduced in the UTF-8 work on xterm). */ return wc | 0x01000000; } ibus-1.5.11/src/ibusmarshalers.list0000644000000000000000000000071212551654123014144 00000000000000VOID:NONE VOID:OBJECT VOID:POINTER VOID:STRING VOID:STRING,INT VOID:STRING,UINT BOOL:POINTER BOOL:POINTER,POINTER BOOL:UINT,UINT BOOL:UINT,UINT,UINT BOOL:ULONG VOID:INT,INT,INT,INT VOID:UINT,UINT VOID:INT,UINT VOID:UINT,UINT,UINT VOID:OBJECT,UINT,BOOL VOID:OBJECT,UINT,BOOL,UINT VOID:OBJECT,UINT,UINT VOID:OBJECT,BOOL VOID:BOXED,BOOL VOID:BOXED VOID:STRING,STRING,VARIANT VOID:STRING,STRING,STRING VOID:UINT VOID:UINT,POINTER VOID:POINTER,UINT OBJECT:STRING ibus-1.5.11/src/ibusconfig.c0000644000000000000000000006216212551654123012526 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusinternal.h" #include "ibusmarshalers.h" #include "ibusshare.h" #include "ibusconfig.h" #include "ibusbus.h" #include "ibuserror.h" #define IBUS_CONFIG_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_CONFIG, IBusConfigPrivate)) enum { VALUE_CHANGED, LAST_SIGNAL, }; /* IBusConfigPriv */ struct _IBusConfigPrivate { GArray *watch_rules; guint watch_config_signal_id; }; static guint config_signals[LAST_SIGNAL] = { 0 }; static void ibus_config_class_init (IBusConfigClass *class); static void ibus_config_init (IBusConfig *config); static void ibus_config_real_destroy (IBusProxy *proxy); static void ibus_config_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters); static void initable_iface_init (GInitableIface *initable_iface); static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface); static gchar *_make_match_rule (const gchar *section, const gchar *name); static guint _signal_subscribe (GDBusProxy *proxy); static void _signal_unsubscribe (GDBusProxy *proxy, guint signal_id); static void _remove_all_match_rules (IBusConfig *config); G_DEFINE_TYPE_WITH_CODE (IBusConfig, ibus_config, IBUS_TYPE_PROXY, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init) ); static void ibus_config_class_init (IBusConfigClass *class) { GDBusProxyClass *dbus_proxy_class = G_DBUS_PROXY_CLASS (class); IBusProxyClass *proxy_class = IBUS_PROXY_CLASS (class); g_type_class_add_private (class, sizeof (IBusConfigPrivate)); dbus_proxy_class->g_signal = ibus_config_g_signal; proxy_class->destroy = ibus_config_real_destroy; /* install signals */ /** * IBusConfig::value-changed: * @config: An IBusConfig. * @section: Section name. * @name: Name of the property. * @value: Value. * * Emitted when configuration value is changed. * Argument @user_data is ignored in this function. */ config_signals[VALUE_CHANGED] = g_signal_new (I_("value-changed"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__STRING_STRING_VARIANT, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT | G_SIGNAL_TYPE_STATIC_SCOPE); } static void ibus_config_init (IBusConfig *config) { config->priv = IBUS_CONFIG_GET_PRIVATE (config); config->priv->watch_rules = g_array_new (FALSE, FALSE, sizeof (gchar *)); } static void ibus_config_real_destroy (IBusProxy *proxy) { IBusConfigPrivate *priv = IBUS_CONFIG_GET_PRIVATE (proxy); _signal_unsubscribe (G_DBUS_PROXY (proxy), priv->watch_config_signal_id); _remove_all_match_rules (IBUS_CONFIG (proxy)); g_array_free (priv->watch_rules, FALSE); IBUS_PROXY_CLASS(ibus_config_parent_class)->destroy (proxy); } static void ibus_config_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters) { if (g_strcmp0 (signal_name, "ValueChanged") == 0) { const gchar *section = NULL; const gchar *name = NULL; GVariant *value = NULL; g_variant_get (parameters, "(&s&sv)", §ion, &name, &value); g_signal_emit (proxy, config_signals[VALUE_CHANGED], 0, section, name, value); g_variant_unref (value); return; } g_return_if_reached (); } static void _connection_signal_cb (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, IBusConfig *config) { g_return_if_fail (IBUS_IS_CONFIG (config)); ibus_config_g_signal (G_DBUS_PROXY (config), sender_name, signal_name, parameters); } static gchar * _make_match_rule (const gchar *section, const gchar *name) { GString *str = g_string_new ("type='signal'," "interface='" IBUS_INTERFACE_CONFIG "'," "path='" IBUS_PATH_CONFIG "'," "member='ValueChanged'"); if (section != NULL) { g_string_append_printf (str, ",arg0='%s'", section); if (name != NULL) g_string_append_printf (str, ",arg1='%s'", name); } return g_string_free (str, FALSE); } static void _remove_all_match_rules (IBusConfig *config) { gint i; for (i = 0; i < config->priv->watch_rules->len; i++) { IBusBus *bus = ibus_bus_new (); gchar *rule = g_array_index (config->priv->watch_rules, gchar *, i); ibus_bus_remove_match (bus, rule); g_object_unref (bus); g_free (rule); } g_array_set_size (config->priv->watch_rules, 0); } gboolean ibus_config_watch (IBusConfig *config, const gchar *section, const gchar *name) { g_return_val_if_fail (IBUS_IS_CONFIG (config), FALSE); g_assert ((section != NULL) || (section == NULL && name == NULL)); IBusBus *bus = ibus_bus_new (); gchar *rule; gboolean retval; if (section == NULL && name == NULL) { _remove_all_match_rules (config); rule = _make_match_rule (NULL, NULL); retval = ibus_bus_add_match (bus, rule); g_object_unref (bus); g_free (rule); return retval; } if (config->priv->watch_rules->len == 0) { rule = _make_match_rule (NULL, NULL); retval = ibus_bus_remove_match (bus, rule); g_free (rule); if (!retval) { g_object_unref (bus); return FALSE; } } rule = _make_match_rule (section, name); retval = ibus_bus_add_match (bus, rule); g_object_unref (bus); if (!retval) { g_free (rule); return FALSE; } g_array_append_val (config->priv->watch_rules, rule); return TRUE; } gboolean ibus_config_unwatch (IBusConfig *config, const gchar *section, const gchar *name) { g_return_val_if_fail (IBUS_IS_CONFIG (config), FALSE); g_assert ((section != NULL) || (section == NULL && name == NULL)); IBusBus *bus = ibus_bus_new (); gchar *rule = _make_match_rule (section, name); gboolean retval; retval = ibus_bus_remove_match (bus, rule); g_object_unref (bus); if (retval && (section != NULL || name != NULL)) { /* Remove the previously registered match rule from config->priv->watch_rules. */ gint i; for (i = 0; i < config->priv->watch_rules->len; i++) { gchar *_rule = g_array_index (config->priv->watch_rules, gchar *, i); if (g_strcmp0 (_rule, rule) == 0) { config->priv->watch_rules = g_array_remove_index_fast (config->priv->watch_rules, i); g_free (_rule); break; } } } g_free (rule); return TRUE; } IBusConfig * ibus_config_new (GDBusConnection *connection, GCancellable *cancellable, GError **error) { g_assert (G_IS_DBUS_CONNECTION (connection)); GInitable *initable; char *owner; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS; initable = g_initable_new (IBUS_TYPE_CONFIG, cancellable, error, "g-connection", connection, "g-flags", flags, "g-name", IBUS_SERVICE_CONFIG, "g-interface-name", IBUS_INTERFACE_CONFIG, "g-object-path", IBUS_PATH_CONFIG, "g-default-timeout", ibus_get_timeout (), NULL); if (initable == NULL) return NULL; owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (initable)); if (owner == NULL) { /* The configuration daemon, which is usually ibus-gconf, is not started yet. */ g_set_error (error, IBUS_ERROR, IBUS_ERROR_NO_CONFIG, "Configuration daemon is not running."); g_object_unref (initable); return NULL; } g_free (owner); /* clients should not destroy the config service. */ IBUS_PROXY (initable)->own = FALSE; return IBUS_CONFIG (initable); } void ibus_config_new_async (GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (G_IS_DBUS_CONNECTION (connection)); g_assert (callback != NULL); GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS; g_async_initable_new_async (IBUS_TYPE_CONFIG, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-connection", connection, "g-flags", flags, "g-name", IBUS_SERVICE_CONFIG, "g-interface-name", IBUS_INTERFACE_CONFIG, "g-object-path", IBUS_PATH_CONFIG, "g-default-timeout", ibus_get_timeout (), NULL); } IBusConfig * ibus_config_new_async_finish (GAsyncResult *res, GError **error) { g_assert (G_IS_ASYNC_RESULT (res)); g_assert (error == NULL || *error == NULL); GObject *object = NULL; GObject *source_object = NULL; source_object = g_async_result_get_source_object (res); g_assert (source_object != NULL); object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (object != NULL) { char *owner; owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (object)); if (owner == NULL) { /* The configuration daemon, which is usually ibus-gconf, * is not started yet. */ g_set_error (error, IBUS_ERROR, IBUS_ERROR_NO_CONFIG, "Configuration daemon is not running."); g_object_unref (object); return NULL; } g_free (owner); /* clients should not destroy the config service. */ IBUS_PROXY (object)->own = FALSE; return IBUS_CONFIG (object); } else { return NULL; } } GVariant * ibus_config_get_value (IBusConfig *config, const gchar *section, const gchar *name) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_assert (name != NULL); GError *error = NULL; GVariant *result; result = g_dbus_proxy_call_sync ((GDBusProxy *) config, "GetValue", /* method_name */ g_variant_new ("(ss)", section, name), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ &error /* error */ ); if (result == NULL) { g_warning ("%s.GetValue: %s", IBUS_INTERFACE_CONFIG, error->message); g_error_free (error); return NULL; } GVariant *value = NULL; g_variant_get (result, "(v)", &value); g_variant_unref (result); return value; } void ibus_config_get_value_async (IBusConfig *config, const gchar *section, const gchar *name, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_assert (name != NULL); g_dbus_proxy_call ((GDBusProxy *)config, "GetValue", g_variant_new ("(ss)", section, name), G_DBUS_CALL_FLAGS_NONE, timeout_ms, cancellable, callback, user_data); } GVariant * ibus_config_get_value_async_finish (IBusConfig *config, GAsyncResult *result, GError **error) { g_assert (IBUS_IS_CONFIG (config)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (error == NULL || *error == NULL); GVariant *value = NULL; GVariant *retval = g_dbus_proxy_call_finish ((GDBusProxy *)config, result, error); if (retval != NULL) { g_variant_get (retval, "(v)", &value); g_variant_unref (retval); } return value; } GVariant * ibus_config_get_values (IBusConfig *config, const gchar *section) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); GError *error = NULL; GVariant *result; result = g_dbus_proxy_call_sync ((GDBusProxy *) config, "GetValues", g_variant_new ("(s)", section), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (result == NULL) { g_warning ("%s.GetValues: %s", IBUS_INTERFACE_CONFIG, error->message); g_error_free (error); return NULL; } GVariant *value = NULL; g_variant_get (result, "(@a{sv})", &value); g_variant_unref (result); return value; } void ibus_config_get_values_async (IBusConfig *config, const gchar *section, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_dbus_proxy_call ((GDBusProxy *)config, "GetValues", g_variant_new ("(s)", section), G_DBUS_CALL_FLAGS_NONE, timeout_ms, cancellable, callback, user_data); } GVariant * ibus_config_get_values_async_finish (IBusConfig *config, GAsyncResult *result, GError **error) { g_assert (IBUS_IS_CONFIG (config)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (error == NULL || *error == NULL); GVariant *value = NULL; GVariant *retval = g_dbus_proxy_call_finish ((GDBusProxy *)config, result, error); if (retval != NULL) { g_variant_get (retval, "(@a{sv})", &value); g_variant_unref (retval); } return value; } gboolean ibus_config_set_value (IBusConfig *config, const gchar *section, const gchar *name, GVariant *value) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_assert (name != NULL); g_assert (value != NULL); GError *error = NULL; GVariant *result; result = g_dbus_proxy_call_sync ((GDBusProxy *) config, "SetValue", /* method_name */ g_variant_new ("(ssv)", section, name, value), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ &error /* error */ ); if (result == NULL) { g_warning ("%s.SetValue: %s", IBUS_INTERFACE_CONFIG, error->message); g_error_free (error); return FALSE; } g_variant_unref (result); return TRUE; } void ibus_config_set_value_async (IBusConfig *config, const gchar *section, const gchar *name, GVariant *value, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_assert (name != NULL); g_assert (value != NULL); g_dbus_proxy_call ((GDBusProxy *) config, "SetValue", /* method_name */ g_variant_new ("(ssv)", section, name, value), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ timeout_ms, cancellable, callback, user_data); } gboolean ibus_config_set_value_async_finish (IBusConfig *config, GAsyncResult *result, GError **error) { g_assert (IBUS_IS_CONFIG (config)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (error == NULL || *error == NULL); GVariant *retval = g_dbus_proxy_call_finish ((GDBusProxy *)config, result, error); if (retval != NULL) { g_variant_unref (retval); return TRUE; } return FALSE; } gboolean ibus_config_unset (IBusConfig *config, const gchar *section, const gchar *name) { g_assert (IBUS_IS_CONFIG (config)); g_assert (section != NULL); g_assert (name != NULL); GError *error = NULL; GVariant *result; result = g_dbus_proxy_call_sync ((GDBusProxy *) config, "UnsetValue", /* method_name */ g_variant_new ("(ss)", section, name), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ &error /* error */ ); if (result == NULL) { g_warning ("%s.UnsetValue: %s", IBUS_INTERFACE_CONFIG, error->message); g_error_free (error); return FALSE; } g_variant_unref (result); return TRUE; } static guint _signal_subscribe (GDBusProxy *proxy) { GDBusConnection *connection = g_dbus_proxy_get_connection (proxy); return g_dbus_connection_signal_subscribe (connection, NULL, IBUS_INTERFACE_CONFIG, NULL, NULL, NULL, G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE, (GDBusSignalCallback) _connection_signal_cb, g_object_ref (proxy), (GDestroyNotify) g_object_unref); } static void _signal_unsubscribe (GDBusProxy *proxy, guint signal_id) { GDBusConnection *connection = g_dbus_proxy_get_connection (proxy); g_dbus_connection_signal_unsubscribe (connection, signal_id); } static GInitableIface *initable_iface_parent = NULL; static gboolean initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { if (!initable_iface_parent->init (initable, cancellable, error)) return FALSE; IBusConfig *config = IBUS_CONFIG (initable); config->priv->watch_config_signal_id = _signal_subscribe (G_DBUS_PROXY (initable)); gboolean retval = ibus_config_watch (config, NULL, NULL); if (!retval) g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "Cannot watch configuration change."); return retval; } static void initable_iface_init (GInitableIface *initable_iface) { initable_iface_parent = g_type_interface_peek_parent (initable_iface); initable_iface->init = initable_init; } static GAsyncInitableIface *async_initable_iface_parent = NULL; static void async_initable_init_async (GAsyncInitable *initable, gint io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { async_initable_iface_parent->init_async (initable, io_priority, cancellable, callback, user_data); } static gboolean async_initable_init_finish (GAsyncInitable *initable, GAsyncResult *res, GError **error) { if (!async_initable_iface_parent->init_finish (initable, res, error)) return FALSE; IBusConfig *config = IBUS_CONFIG (initable); config->priv->watch_config_signal_id = _signal_subscribe (G_DBUS_PROXY (initable)); return ibus_config_watch (config, NULL, NULL); } static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface) { async_initable_iface_parent = g_type_interface_peek_parent (async_initable_iface); async_initable_iface->init_async = async_initable_init_async; async_initable_iface->init_finish = async_initable_init_finish; } ibus-1.5.11/src/ibusenumtypes.h0000644000000000000000000001420412551654437013321 00000000000000 /* Generated data (by glib-mkenums) */ #ifndef __IBUS_ENUM_TYPES_H__ #define __IBUS_ENUM_TYPES_H__ #include G_BEGIN_DECLS /* enumerations from "ibusobject.h" */ /** * ibus_object_flags_get_type: * @returns: GType of IBUS_OBJECT_FLAGS * * Returns the type of IBUS_OBJECT_FLAGS as GType. */ GType ibus_object_flags_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_OBJECT_FLAGS: * @returns: GType of IBUS_OBJECT_FLAGS * * Returns the type of IBUS_OBJECT_FLAGS as GType. */ #define IBUS_TYPE_OBJECT_FLAGS (ibus_object_flags_get_type ()) /* enumerations from "ibusattribute.h" */ /** * ibus_attr_type_get_type: * @returns: GType of IBUS_ATTR_TYPE * * Returns the type of IBUS_ATTR_TYPE as GType. */ GType ibus_attr_type_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_ATTR_TYPE: * @returns: GType of IBUS_ATTR_TYPE * * Returns the type of IBUS_ATTR_TYPE as GType. */ #define IBUS_TYPE_ATTR_TYPE (ibus_attr_type_get_type ()) /** * ibus_attr_underline_get_type: * @returns: GType of IBUS_ATTR_UNDERLINE * * Returns the type of IBUS_ATTR_UNDERLINE as GType. */ GType ibus_attr_underline_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_ATTR_UNDERLINE: * @returns: GType of IBUS_ATTR_UNDERLINE * * Returns the type of IBUS_ATTR_UNDERLINE as GType. */ #define IBUS_TYPE_ATTR_UNDERLINE (ibus_attr_underline_get_type ()) /* enumerations from "ibusproperty.h" */ /** * ibus_prop_type_get_type: * @returns: GType of IBUS_PROP_TYPE * * Returns the type of IBUS_PROP_TYPE as GType. */ GType ibus_prop_type_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_PROP_TYPE: * @returns: GType of IBUS_PROP_TYPE * * Returns the type of IBUS_PROP_TYPE as GType. */ #define IBUS_TYPE_PROP_TYPE (ibus_prop_type_get_type ()) /** * ibus_prop_state_get_type: * @returns: GType of IBUS_PROP_STATE * * Returns the type of IBUS_PROP_STATE as GType. */ GType ibus_prop_state_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_PROP_STATE: * @returns: GType of IBUS_PROP_STATE * * Returns the type of IBUS_PROP_STATE as GType. */ #define IBUS_TYPE_PROP_STATE (ibus_prop_state_get_type ()) /* enumerations from "ibustypes.h" */ /** * ibus_modifier_type_get_type: * @returns: GType of IBUS_MODIFIER_TYPE * * Returns the type of IBUS_MODIFIER_TYPE as GType. */ GType ibus_modifier_type_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_MODIFIER_TYPE: * @returns: GType of IBUS_MODIFIER_TYPE * * Returns the type of IBUS_MODIFIER_TYPE as GType. */ #define IBUS_TYPE_MODIFIER_TYPE (ibus_modifier_type_get_type ()) /** * ibus_capabilite_get_type: * @returns: GType of IBUS_CAPABILITE * * Returns the type of IBUS_CAPABILITE as GType. */ GType ibus_capabilite_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_CAPABILITE: * @returns: GType of IBUS_CAPABILITE * * Returns the type of IBUS_CAPABILITE as GType. */ #define IBUS_TYPE_CAPABILITE (ibus_capabilite_get_type ()) /** * ibus_preedit_focus_mode_get_type: * @returns: GType of IBUS_PREEDIT_FOCUS_MODE * * Returns the type of IBUS_PREEDIT_FOCUS_MODE as GType. */ GType ibus_preedit_focus_mode_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_PREEDIT_FOCUS_MODE: * @returns: GType of IBUS_PREEDIT_FOCUS_MODE * * Returns the type of IBUS_PREEDIT_FOCUS_MODE as GType. */ #define IBUS_TYPE_PREEDIT_FOCUS_MODE (ibus_preedit_focus_mode_get_type ()) /** * ibus_orientation_get_type: * @returns: GType of IBUS_ORIENTATION * * Returns the type of IBUS_ORIENTATION as GType. */ GType ibus_orientation_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_ORIENTATION: * @returns: GType of IBUS_ORIENTATION * * Returns the type of IBUS_ORIENTATION as GType. */ #define IBUS_TYPE_ORIENTATION (ibus_orientation_get_type ()) /** * ibus_bus_name_flag_get_type: * @returns: GType of IBUS_BUS_NAME_FLAG * * Returns the type of IBUS_BUS_NAME_FLAG as GType. */ GType ibus_bus_name_flag_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_BUS_NAME_FLAG: * @returns: GType of IBUS_BUS_NAME_FLAG * * Returns the type of IBUS_BUS_NAME_FLAG as GType. */ #define IBUS_TYPE_BUS_NAME_FLAG (ibus_bus_name_flag_get_type ()) /** * ibus_bus_request_name_reply_get_type: * @returns: GType of IBUS_BUS_REQUEST_NAME_REPLY * * Returns the type of IBUS_BUS_REQUEST_NAME_REPLY as GType. */ GType ibus_bus_request_name_reply_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_BUS_REQUEST_NAME_REPLY: * @returns: GType of IBUS_BUS_REQUEST_NAME_REPLY * * Returns the type of IBUS_BUS_REQUEST_NAME_REPLY as GType. */ #define IBUS_TYPE_BUS_REQUEST_NAME_REPLY (ibus_bus_request_name_reply_get_type ()) /** * ibus_bus_start_service_by_name_reply_get_type: * @returns: GType of IBUS_BUS_START_SERVICE_BY_NAME_REPLY * * Returns the type of IBUS_BUS_START_SERVICE_BY_NAME_REPLY as GType. */ GType ibus_bus_start_service_by_name_reply_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_BUS_START_SERVICE_BY_NAME_REPLY: * @returns: GType of IBUS_BUS_START_SERVICE_BY_NAME_REPLY * * Returns the type of IBUS_BUS_START_SERVICE_BY_NAME_REPLY as GType. */ #define IBUS_TYPE_BUS_START_SERVICE_BY_NAME_REPLY (ibus_bus_start_service_by_name_reply_get_type ()) /** * ibus_error_get_type: * @returns: GType of IBUS_ERROR * * Returns the type of IBUS_ERROR as GType. */ GType ibus_error_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_ERROR: * @returns: GType of IBUS_ERROR * * Returns the type of IBUS_ERROR as GType. */ #define IBUS_TYPE_ERROR (ibus_error_get_type ()) /** * ibus_input_purpose_get_type: * @returns: GType of IBUS_INPUT_PURPOSE * * Returns the type of IBUS_INPUT_PURPOSE as GType. */ GType ibus_input_purpose_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_INPUT_PURPOSE: * @returns: GType of IBUS_INPUT_PURPOSE * * Returns the type of IBUS_INPUT_PURPOSE as GType. */ #define IBUS_TYPE_INPUT_PURPOSE (ibus_input_purpose_get_type ()) /** * ibus_input_hints_get_type: * @returns: GType of IBUS_INPUT_HINTS * * Returns the type of IBUS_INPUT_HINTS as GType. */ GType ibus_input_hints_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_INPUT_HINTS: * @returns: GType of IBUS_INPUT_HINTS * * Returns the type of IBUS_INPUT_HINTS as GType. */ #define IBUS_TYPE_INPUT_HINTS (ibus_input_hints_get_type ()) G_END_DECLS #endif /* __IBUS_ENUM_TYPES_H__ */ /* Generated data ends here */ ibus-1.5.11/src/ibusenginesimple.c0000644000000000000000000007436712551654123013752 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2014 Peng Huang * Copyright (C) 2015 Takao Fujiwara * Copyright (C) 2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "ibusenginesimple.h" #include "ibuskeys.h" #include "ibuskeysyms.h" #include "ibuscomposetable.h" #include #include #define X11_DATADIR "/usr/share/X11/locale" #define IBUS_ENGINE_SIMPLE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimplePrivate)) struct _IBusEngineSimplePrivate { GSList *tables; guint compose_buffer[IBUS_MAX_COMPOSE_LEN + 1]; gunichar tentative_match; gint tentative_match_len; guint in_hex_sequence : 1; guint modifiers_dropped : 1; }; static const guint16 ibus_compose_ignore[] = { IBUS_KEY_Shift_L, IBUS_KEY_Shift_R, IBUS_KEY_Control_L, IBUS_KEY_Control_R, IBUS_KEY_Caps_Lock, IBUS_KEY_Shift_Lock, IBUS_KEY_Meta_L, IBUS_KEY_Meta_R, IBUS_KEY_Alt_L, IBUS_KEY_Alt_R, IBUS_KEY_Super_L, IBUS_KEY_Super_R, IBUS_KEY_Hyper_L, IBUS_KEY_Hyper_R, IBUS_KEY_Mode_switch, IBUS_KEY_ISO_Level3_Shift }; /* functions prototype */ static void ibus_engine_simple_destroy (IBusEngineSimple *simple); static void ibus_engine_simple_reset (IBusEngine *engine); static gboolean ibus_engine_simple_process_key_event (IBusEngine *engine, guint keyval, guint keycode, guint modifiers); static void ibus_engine_simple_commit_char (IBusEngineSimple *simple, gunichar ch); static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple); G_DEFINE_TYPE (IBusEngineSimple, ibus_engine_simple, IBUS_TYPE_ENGINE) static void ibus_engine_simple_class_init (IBusEngineSimpleClass *class) { IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (class); ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_simple_destroy; engine_class->reset = ibus_engine_simple_reset; engine_class->process_key_event = ibus_engine_simple_process_key_event; g_type_class_add_private (class, sizeof (IBusEngineSimplePrivate)); } static void ibus_engine_simple_init (IBusEngineSimple *simple) { simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple); } static void ibus_engine_simple_destroy (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; g_slist_free_full (priv->tables, g_free); priv->tables = NULL; IBUS_OBJECT_CLASS(ibus_engine_simple_parent_class)->destroy ( IBUS_OBJECT (simple)); } static void ibus_engine_simple_reset (IBusEngine *engine) { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; priv->compose_buffer[0] = 0; if (priv->tentative_match || priv->in_hex_sequence) { priv->in_hex_sequence = FALSE; priv->tentative_match = 0; priv->tentative_match_len = 0; ibus_engine_hide_preedit_text ((IBusEngine *)simple); } } static void ibus_engine_simple_commit_char (IBusEngineSimple *simple, gunichar ch) { g_return_if_fail (g_unichar_validate (ch)); IBusEngineSimplePrivate *priv = simple->priv; if (priv->tentative_match || priv->in_hex_sequence) { priv->in_hex_sequence = FALSE; priv->tentative_match = 0; priv->tentative_match_len = 0; ibus_engine_simple_update_preedit_text (simple); } ibus_engine_commit_text ((IBusEngine *)simple, ibus_text_new_from_unichar (ch)); } static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; gunichar outbuf[IBUS_MAX_COMPOSE_LEN + 2]; int len = 0; if (priv->in_hex_sequence) { int hexchars = 0; outbuf[0] = L'u'; len = 1; while (priv->compose_buffer[hexchars] != 0) { outbuf[len] = ibus_keyval_to_unicode ( priv->compose_buffer[hexchars]); ++len; ++hexchars; } g_assert (len <= IBUS_MAX_COMPOSE_LEN + 1); } else if (priv->tentative_match) outbuf[len++] = priv->tentative_match; outbuf[len] = L'\0'; if (len == 0) { ibus_engine_hide_preedit_text ((IBusEngine *)simple); } else { IBusText *text = ibus_text_new_from_ucs4 (outbuf); ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, len); ibus_engine_update_preedit_text ((IBusEngine *)simple, text, len, TRUE); } } /* In addition to the table-driven sequences, we allow Unicode hex * codes to be entered. The method chosen here is similar to the * one recommended in ISO 14755, but not exactly the same, since we * don't want to steal 16 valuable key combinations. * * A hex Unicode sequence must be started with Ctrl-Shift-U, followed * by a sequence of hex digits entered with Ctrl-Shift still held. * Releasing one of the modifiers or pressing space while the modifiers * are still held commits the character. It is possible to erase * digits using backspace. * * As an extension to the above, we also allow to start the sequence * with Ctrl-Shift-U, then release the modifiers before typing any * digits, and enter the digits without modifiers. */ #define HEX_MOD_MASK (IBUS_CONTROL_MASK | IBUS_SHIFT_MASK) static gboolean check_hex (IBusEngineSimple *simple, gint n_compose) { IBusEngineSimplePrivate *priv = simple->priv; gint i; GString *str; gulong n; gchar *nptr = NULL; gchar buf[7]; priv->tentative_match = 0; priv->tentative_match_len = 0; str = g_string_new (NULL); i = 0; while (i < n_compose) { gunichar ch; ch = ibus_keyval_to_unicode (priv->compose_buffer[i]); if (ch == 0) return FALSE; if (!g_unichar_isxdigit (ch)) return FALSE; buf[g_unichar_to_utf8 (ch, buf)] = '\0'; g_string_append (str, buf); ++i; } n = strtoul (str->str, &nptr, 16); /* if strtoul fails it probably means non-latin digits were used; * we should in principle handle that, but we probably don't. */ if (nptr - str->str < str->len) { g_string_free (str, TRUE); return FALSE; } else g_string_free (str, TRUE); if (g_unichar_validate (n)) { priv->tentative_match = n; priv->tentative_match_len = n_compose; } return TRUE; } static int compare_seq_index (const void *key, const void *value) { const guint *keysyms = key; const guint16 *seq = value; if (keysyms[0] < seq[0]) return -1; else if (keysyms[0] > seq[0]) return 1; return 0; } static int compare_seq (const void *key, const void *value) { int i = 0; const guint *keysyms = key; const guint16 *seq = value; while (keysyms[i]) { if (keysyms[i] < seq[i]) return -1; else if (keysyms[i] > seq[i]) return 1; i++; } return 0; } static gboolean check_table (IBusEngineSimple *simple, IBusComposeTable *table, gint n_compose) { // g_debug("check_table"); IBusEngineSimplePrivate *priv = simple->priv; gint row_stride = table->max_seq_len + 2; guint16 *seq; g_assert (IBUS_IS_ENGINE_SIMPLE (simple)); if (n_compose > table->max_seq_len) return FALSE; seq = bsearch (priv->compose_buffer, table->data, table->n_seqs, sizeof (guint16) * row_stride, compare_seq); if (seq == NULL) return FALSE; guint16 *prev_seq; /* Back up to the first sequence that matches to make sure * we find the exact match if their is one. */ while (seq > table->data) { prev_seq = seq - row_stride; if (compare_seq (priv->compose_buffer, prev_seq) != 0) { break; } seq = prev_seq; } /* complete sequence */ if (n_compose == table->max_seq_len || seq[n_compose] == 0) { guint16 *next_seq; gunichar value = 0x10000 * seq[table->max_seq_len] + seq[table->max_seq_len + 1]; /* We found a tentative match. See if there are any longer * sequences containing this subsequence */ next_seq = seq + row_stride; if (next_seq < table->data + row_stride * table->n_seqs) { if (compare_seq (priv->compose_buffer, next_seq) == 0) { priv->tentative_match = value; priv->tentative_match_len = n_compose; ibus_engine_simple_update_preedit_text (simple); return TRUE; } } ibus_engine_simple_commit_char (simple, value); // g_debug ("U+%04X\n", value); priv->compose_buffer[0] = 0; } return TRUE; } static gboolean check_compact_table (IBusEngineSimple *simple, const IBusComposeTableCompact *table, gint n_compose) { IBusEngineSimplePrivate *priv = simple->priv; gint row_stride; guint16 *seq_index; guint16 *seq; gint i; /* Will never match, if the sequence in the compose buffer is longer * than the sequences in the table. Further, compare_seq (key, val) * will overrun val if key is longer than val. */ if (n_compose > table->max_seq_len) return FALSE; // g_debug ("check_compact_table(n_compose=%d) [%04x, %04x, %04x, %04x]", // n_compose, // priv->compose_buffer[0], // priv->compose_buffer[1], // priv->compose_buffer[2], // priv->compose_buffer[3]); seq_index = bsearch (priv->compose_buffer, table->data, table->n_index_size, sizeof (guint16) * table->n_index_stride, compare_seq_index); if (seq_index == NULL) { // g_debug ("compact: no\n"); return FALSE; } if (n_compose == 1) { // g_debug ("compact: yes\n"); return TRUE; } // g_debug ("compact: %04x ", *seq_index); seq = NULL; for (i = n_compose - 1; i < table->max_seq_len; i++) { row_stride = i + 1; if (seq_index[i + 1] - seq_index[i] > 0) { seq = bsearch (priv->compose_buffer + 1, table->data + seq_index[i], (seq_index[i + 1] - seq_index[i]) / row_stride, sizeof (guint16) * row_stride, compare_seq); // g_debug ("seq = %p", seq); if (seq) { if (i == n_compose - 1) break; else { ibus_engine_simple_update_preedit_text (simple); // g_debug ("yes\n"); return TRUE; } } } } if (!seq) { // g_debug ("no\n"); return FALSE; } else { gunichar value; value = seq[row_stride - 1]; ibus_engine_simple_commit_char (simple, value); priv->compose_buffer[0] = 0; // g_debug ("U+%04X\n", value); return TRUE; } } /* Checks if a keysym is a dead key. Dead key keysym values are defined in * ../gdk/gdkkeysyms.h and the first is GDK_KEY_dead_grave. As X.Org is updated, * more dead keys are added and we need to update the upper limit. * Currently, the upper limit is GDK_KEY_dead_dasia+1. The +1 has to do with * a temporary issue in the X.Org header files. * In future versions it will be just the keysym (no +1). */ #define IS_DEAD_KEY(k) \ ((k) >= IBUS_KEY_dead_grave && (k) <= (IBUS_KEY_dead_dasia + 1)) /* This function receives a sequence of Unicode characters and tries to * normalize it (NFC). We check for the case the the resulting string * has length 1 (single character). * NFC normalisation normally rearranges diacritic marks, unless these * belong to the same Canonical Combining Class. * If they belong to the same canonical combining class, we produce all * permutations of the diacritic marks, then attempt to normalize. */ static gboolean check_normalize_nfc (gunichar* combination_buffer, gint n_compose) { gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_LEN]; gchar *combination_utf8_temp = NULL; gchar *nfc_temp = NULL; gint n_combinations; gunichar temp_swap; gint i; n_combinations = 1; for (i = 1; i < n_compose; i++ ) n_combinations *= i; /* Xorg reuses dead_tilde for the perispomeni diacritic mark. * We check if base character belongs to Greek Unicode block, * and if so, we replace tilde with perispomeni. */ if (combination_buffer[0] >= 0x390 && combination_buffer[0] <= 0x3FF) { for (i = 1; i < n_compose; i++ ) if (combination_buffer[i] == 0x303) combination_buffer[i] = 0x342; } memcpy (combination_buffer_temp, combination_buffer, IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); for (i = 0; i < n_combinations; i++ ) { g_unicode_canonical_ordering (combination_buffer_temp, n_compose); combination_utf8_temp = g_ucs4_to_utf8 (combination_buffer_temp, -1, NULL, NULL, NULL); nfc_temp = g_utf8_normalize (combination_utf8_temp, -1, G_NORMALIZE_NFC); if (g_utf8_strlen (nfc_temp, -1) == 1) { memcpy (combination_buffer, combination_buffer_temp, IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); g_free (combination_utf8_temp); g_free (nfc_temp); return TRUE; } g_free (combination_utf8_temp); g_free (nfc_temp); if (n_compose > 2) { temp_swap = combination_buffer_temp[i % (n_compose - 1) + 1]; combination_buffer_temp[i % (n_compose - 1) + 1] = combination_buffer_temp[(i+1) % (n_compose - 1) + 1]; combination_buffer_temp[(i+1) % (n_compose - 1) + 1] = temp_swap; } else break; } return FALSE; } static gboolean check_algorithmically (IBusEngineSimple *simple, gint n_compose) { IBusEngineSimplePrivate *priv = simple->priv; gint i; gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; gchar *combination_utf8, *nfc; if (n_compose >= IBUS_MAX_COMPOSE_LEN) return FALSE; for (i = 0; i < n_compose && IS_DEAD_KEY (priv->compose_buffer[i]); i++) ; if (i == n_compose) return TRUE; if (i > 0 && i == n_compose - 1) { combination_buffer[0] = ibus_keyval_to_unicode (priv->compose_buffer[i]); combination_buffer[n_compose] = 0; i--; while (i >= 0) { switch (priv->compose_buffer[i]) { #define CASE(keysym, unicode) \ case IBUS_KEY_dead_##keysym: \ combination_buffer[i+1] = unicode; \ break CASE (grave, 0x0300); CASE (acute, 0x0301); CASE (circumflex, 0x0302); CASE (tilde, 0x0303); /* Also used with perispomeni, 0x342. */ CASE (macron, 0x0304); CASE (breve, 0x0306); CASE (abovedot, 0x0307); CASE (diaeresis, 0x0308); CASE (hook, 0x0309); CASE (abovering, 0x030A); CASE (doubleacute, 0x030B); CASE (caron, 0x030C); CASE (abovecomma, 0x0313); /* Equivalent to psili */ CASE (abovereversedcomma, 0x0314); /* Equivalent to dasia */ CASE (horn, 0x031B); /* Legacy use for psili, 0x313 (or 0x343). */ CASE (belowdot, 0x0323); CASE (cedilla, 0x0327); CASE (ogonek, 0x0328); /* Legacy use for dasia, 0x314.*/ CASE (iota, 0x0345); CASE (voiced_sound, 0x3099); /* Per Markus Kuhn keysyms.txt file. */ CASE (semivoiced_sound, 0x309A); /* Per Markus Kuhn keysyms.txt file. */ /* The following cases are to be removed once xkeyboard-config, * xorg are fully updated. */ /* Workaround for typo in 1.4.x xserver-xorg */ case 0xfe66: combination_buffer[i+1] = 0x314; break; /* CASE (dasia, 0x314); */ /* CASE (perispomeni, 0x342); */ /* CASE (psili, 0x343); */ #undef CASE default: combination_buffer[i+1] = ibus_keyval_to_unicode (priv->compose_buffer[i]); } i--; } /* If the buffer normalizes to a single character, * then modify the order of combination_buffer accordingly, if necessary, * and return TRUE. */ if (check_normalize_nfc (combination_buffer, n_compose)) { gunichar value; combination_utf8 = g_ucs4_to_utf8 (combination_buffer, -1, NULL, NULL, NULL); nfc = g_utf8_normalize (combination_utf8, -1, G_NORMALIZE_NFC); value = g_utf8_get_char (nfc); ibus_engine_simple_commit_char (simple, value); priv->compose_buffer[0] = 0; g_free (combination_utf8); g_free (nfc); return TRUE; } } return FALSE; } static gboolean no_sequence_matches (IBusEngineSimple *simple, gint n_compose, guint keyval, guint keycode, guint modifiers) { IBusEngineSimplePrivate *priv = simple->priv; gunichar ch; /* No compose sequences found, check first if we have a partial * match pending. */ if (priv->tentative_match) { gint len = priv->tentative_match_len; int i; ibus_engine_simple_commit_char (simple, priv->tentative_match); priv->compose_buffer[0] = 0; for (i=0; i < n_compose - len - 1; i++) { ibus_engine_simple_process_key_event ( (IBusEngine *)simple, priv->compose_buffer[len + i], 0, 0); } return ibus_engine_simple_process_key_event ( (IBusEngine *)simple, keyval, keycode, modifiers); } else { priv->compose_buffer[0] = 0; if (n_compose > 1) { /* Invalid sequence */ // FIXME beep_window (event->window); return TRUE; } ch = ibus_keyval_to_unicode (keyval); /* IBUS_CHANGE: RH#769133 * Since we use ibus xkb engines as the disable state, * do not commit the characters locally without in_hex_sequence. */ if (ch != 0 && !g_unichar_iscntrl (ch) && priv->in_hex_sequence) { ibus_engine_simple_commit_char (simple, ch); return TRUE; } else return FALSE; } } static gboolean is_hex_keyval (guint keyval) { gunichar ch = ibus_keyval_to_unicode (keyval); return g_unichar_isxdigit (ch); } static gboolean ibus_engine_simple_process_key_event (IBusEngine *engine, guint keyval, guint keycode, guint modifiers) { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; gint n_compose = 0; gboolean have_hex_mods; gboolean is_hex_start; gboolean is_hex_end; gboolean is_backspace; gboolean is_escape; guint hex_keyval; gint i; while (priv->compose_buffer[n_compose] != 0) n_compose++; if (modifiers & IBUS_RELEASE_MASK) { if (priv->in_hex_sequence && (keyval == IBUS_KEY_Control_L || keyval == IBUS_KEY_Control_R || keyval == IBUS_KEY_Shift_L || keyval == IBUS_KEY_Shift_R)) { if (priv->tentative_match && g_unichar_validate (priv->tentative_match)) { ibus_engine_simple_commit_char (simple, priv->tentative_match); } else if (n_compose == 0) { priv->modifiers_dropped = TRUE; } else { /* invalid hex sequence */ /* FIXME beep_window (event->window); */ priv->tentative_match = 0; priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } return TRUE; } else return FALSE; } /* Ignore modifier key presses */ for (i = 0; i < G_N_ELEMENTS (ibus_compose_ignore); i++) if (keyval == ibus_compose_ignore[i]) return FALSE; if (priv->in_hex_sequence && priv->modifiers_dropped) have_hex_mods = TRUE; else have_hex_mods = (modifiers & (HEX_MOD_MASK)) == HEX_MOD_MASK; is_hex_start = keyval == IBUS_KEY_U; is_hex_end = (keyval == IBUS_KEY_space || keyval == IBUS_KEY_KP_Space || keyval == IBUS_KEY_Return || keyval == IBUS_KEY_ISO_Enter || keyval == IBUS_KEY_KP_Enter); is_backspace = keyval == IBUS_KEY_BackSpace; is_escape = keyval == IBUS_KEY_Escape; hex_keyval = is_hex_keyval (keyval) ? keyval : 0; /* gtkimcontextsimple causes a buffer overflow in priv->compose_buffer. * Add the check code here. */ if (n_compose >= IBUS_MAX_COMPOSE_LEN) { if (is_backspace) { priv->compose_buffer[--n_compose] = 0; } else if (is_hex_end) { /* invalid hex sequence */ // beep_window (event->window); priv->tentative_match = 0; priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; } else if (is_escape) { ibus_engine_simple_reset (engine); return TRUE; } if (have_hex_mods) ibus_engine_simple_update_preedit_text (simple); return TRUE; } /* If we are already in a non-hex sequence, or * this keystroke is not hex modifiers + hex digit, don't filter * key events with accelerator modifiers held down. We only treat * Control and Alt as accel modifiers here, since Super, Hyper and * Meta are often co-located with Mode_Switch, Multi_Key or * ISO_Level3_Switch. */ if (!have_hex_mods || (n_compose > 0 && !priv->in_hex_sequence) || (n_compose == 0 && !priv->in_hex_sequence && !is_hex_start) || (priv->in_hex_sequence && !hex_keyval && !is_hex_start && !is_hex_end && !is_escape && !is_backspace)) { if (modifiers & (IBUS_MOD1_MASK | IBUS_CONTROL_MASK) || (priv->in_hex_sequence && priv->modifiers_dropped && (keyval == IBUS_KEY_Return || keyval == IBUS_KEY_ISO_Enter || keyval == IBUS_KEY_KP_Enter))) { return FALSE; } } /* Handle backspace */ if (priv->in_hex_sequence && have_hex_mods && is_backspace) { if (n_compose > 0) { n_compose--; priv->compose_buffer[n_compose] = 0; check_hex (simple, n_compose); } else { priv->in_hex_sequence = FALSE; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } /* Check for hex sequence restart */ if (priv->in_hex_sequence && have_hex_mods && is_hex_start) { if (priv->tentative_match && g_unichar_validate (priv->tentative_match)) { ibus_engine_simple_commit_char (simple, priv->tentative_match); } else { /* invalid hex sequence */ if (n_compose > 0) { // FIXME beep_window (event->window); priv->tentative_match = 0; priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; } } } /* Check for hex sequence start */ if (!priv->in_hex_sequence && have_hex_mods && is_hex_start) { priv->compose_buffer[0] = 0; priv->in_hex_sequence = TRUE; priv->modifiers_dropped = FALSE; priv->tentative_match = 0; // g_debug ("Start HEX MODE"); ibus_engine_simple_update_preedit_text (simple); return TRUE; } /* Then, check for compose sequences */ if (priv->in_hex_sequence) { if (hex_keyval) priv->compose_buffer[n_compose++] = hex_keyval; else if (is_escape) { // FIXME ibus_engine_simple_reset (engine); return TRUE; } else if (!is_hex_end) { // FIXME /* non-hex character in hex sequence */ // beep_window (event->window); return TRUE; } } else priv->compose_buffer[n_compose++] = keyval; priv->compose_buffer[n_compose] = 0; if (priv->in_hex_sequence) { /* If the modifiers are still held down, consider the sequence again */ if (have_hex_mods) { /* space or return ends the sequence, and we eat the key */ if (n_compose > 0 && is_hex_end) { if (priv->tentative_match && g_unichar_validate (priv->tentative_match)) { ibus_engine_simple_commit_char (simple, priv->tentative_match); priv->compose_buffer[0] = 0; } else { // FIXME /* invalid hex sequence */ // beep_window (event->window); priv->tentative_match = 0; priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; } } else if (!check_hex (simple, n_compose)) // FIXME // beep_window (event->window); ; ibus_engine_simple_update_preedit_text (simple); return TRUE; } } else { GSList *list = priv->tables; while (list) { if (check_table (simple, (IBusComposeTable *)list->data, n_compose)) { // g_debug("check_table returns true"); return TRUE; } list = list->next; } if (check_compact_table (simple, &ibus_compose_table_compact, n_compose)) { return TRUE; } if (check_algorithmically (simple, n_compose)) return TRUE; } /* The current compose_buffer doesn't match anything */ return no_sequence_matches (simple, n_compose, keyval, keycode, modifiers); } void ibus_engine_simple_add_table (IBusEngineSimple *simple, const guint16 *data, gint max_seq_len, gint n_seqs) { IBusEngineSimplePrivate *priv = simple->priv; g_return_if_fail (IBUS_IS_ENGINE_SIMPLE (simple)); g_return_if_fail (data != NULL); g_return_if_fail (max_seq_len <= IBUS_MAX_COMPOSE_LEN); IBusComposeTable *table = g_new (IBusComposeTable, 1); table->data = data; table->max_seq_len = max_seq_len; table->n_seqs = n_seqs; priv->tables = g_slist_prepend (priv->tables, table); } gboolean ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, const gchar *locale) { const gchar *_locale = locale; gchar **langs = NULL; gchar **l = NULL; gchar *path = NULL; if (_locale == NULL) { _locale = g_getenv ("LC_CTYPE"); if (_locale == NULL) { _locale = g_getenv ("LANG"); } if (_locale == NULL) { _locale = "C"; } /* FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=751826 */ langs = g_get_locale_variants (_locale); for (l = langs; *l; l++) { if (g_str_has_prefix (*l, "en_US")) break; if (g_strcmp0 (*l, "C") == 0) break; path = g_build_filename (X11_DATADIR, *l, "Compose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) break; g_free (path); path = NULL; } g_strfreev (langs); } else { path = g_build_filename (X11_DATADIR, locale, "Compose", NULL); do { if (g_file_test (path, G_FILE_TEST_EXISTS)) break; g_free (path); path = NULL; } while (0); } if (path == NULL) return FALSE; return ibus_engine_simple_add_compose_file (simple, path); } gboolean ibus_engine_simple_add_compose_file (IBusEngineSimple *simple, const gchar *compose_file) { IBusEngineSimplePrivate *priv = simple->priv; IBusComposeTable *table; g_assert (compose_file != NULL); table = ibus_compose_table_new_with_file (compose_file); if (table == NULL) return FALSE; priv->tables = g_slist_prepend (priv->tables, table); return TRUE; } ibus-1.5.11/src/ibusenumtypes.c0000644000000000000000000002666412551654437013331 00000000000000 /* Generated data (by glib-mkenums) */ #include "ibus.h" /* enumerations from "ibusobject.h" */ GType ibus_object_flags_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { IBUS_IN_DESTRUCTION, "IBUS_IN_DESTRUCTION", "in-destruction" }, { IBUS_DESTROYED, "IBUS_DESTROYED", "destroyed" }, { IBUS_RESERVED_1, "IBUS_RESERVED_1", "reserved-1" }, { IBUS_RESERVED_2, "IBUS_RESERVED_2", "reserved-2" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("IBusObjectFlags"), values); } return etype; } /* enumerations from "ibusattribute.h" */ GType ibus_attr_type_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_ATTR_TYPE_UNDERLINE, "IBUS_ATTR_TYPE_UNDERLINE", "underline" }, { IBUS_ATTR_TYPE_FOREGROUND, "IBUS_ATTR_TYPE_FOREGROUND", "foreground" }, { IBUS_ATTR_TYPE_BACKGROUND, "IBUS_ATTR_TYPE_BACKGROUND", "background" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusAttrType"), values); } return etype; } GType ibus_attr_underline_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_ATTR_UNDERLINE_NONE, "IBUS_ATTR_UNDERLINE_NONE", "none" }, { IBUS_ATTR_UNDERLINE_SINGLE, "IBUS_ATTR_UNDERLINE_SINGLE", "single" }, { IBUS_ATTR_UNDERLINE_DOUBLE, "IBUS_ATTR_UNDERLINE_DOUBLE", "double" }, { IBUS_ATTR_UNDERLINE_LOW, "IBUS_ATTR_UNDERLINE_LOW", "low" }, { IBUS_ATTR_UNDERLINE_ERROR, "IBUS_ATTR_UNDERLINE_ERROR", "error" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusAttrUnderline"), values); } return etype; } /* enumerations from "ibusproperty.h" */ GType ibus_prop_type_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { PROP_TYPE_NORMAL, "PROP_TYPE_NORMAL", "normal" }, { PROP_TYPE_TOGGLE, "PROP_TYPE_TOGGLE", "toggle" }, { PROP_TYPE_RADIO, "PROP_TYPE_RADIO", "radio" }, { PROP_TYPE_MENU, "PROP_TYPE_MENU", "menu" }, { PROP_TYPE_SEPARATOR, "PROP_TYPE_SEPARATOR", "separator" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusPropType"), values); } return etype; } GType ibus_prop_state_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { PROP_STATE_UNCHECKED, "PROP_STATE_UNCHECKED", "unchecked" }, { PROP_STATE_CHECKED, "PROP_STATE_CHECKED", "checked" }, { PROP_STATE_INCONSISTENT, "PROP_STATE_INCONSISTENT", "inconsistent" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusPropState"), values); } return etype; } /* enumerations from "ibustypes.h" */ GType ibus_modifier_type_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { IBUS_SHIFT_MASK, "IBUS_SHIFT_MASK", "shift-mask" }, { IBUS_LOCK_MASK, "IBUS_LOCK_MASK", "lock-mask" }, { IBUS_CONTROL_MASK, "IBUS_CONTROL_MASK", "control-mask" }, { IBUS_MOD1_MASK, "IBUS_MOD1_MASK", "mod1-mask" }, { IBUS_MOD2_MASK, "IBUS_MOD2_MASK", "mod2-mask" }, { IBUS_MOD3_MASK, "IBUS_MOD3_MASK", "mod3-mask" }, { IBUS_MOD4_MASK, "IBUS_MOD4_MASK", "mod4-mask" }, { IBUS_MOD5_MASK, "IBUS_MOD5_MASK", "mod5-mask" }, { IBUS_BUTTON1_MASK, "IBUS_BUTTON1_MASK", "button1-mask" }, { IBUS_BUTTON2_MASK, "IBUS_BUTTON2_MASK", "button2-mask" }, { IBUS_BUTTON3_MASK, "IBUS_BUTTON3_MASK", "button3-mask" }, { IBUS_BUTTON4_MASK, "IBUS_BUTTON4_MASK", "button4-mask" }, { IBUS_BUTTON5_MASK, "IBUS_BUTTON5_MASK", "button5-mask" }, { IBUS_HANDLED_MASK, "IBUS_HANDLED_MASK", "handled-mask" }, { IBUS_FORWARD_MASK, "IBUS_FORWARD_MASK", "forward-mask" }, { IBUS_IGNORED_MASK, "IBUS_IGNORED_MASK", "ignored-mask" }, { IBUS_SUPER_MASK, "IBUS_SUPER_MASK", "super-mask" }, { IBUS_HYPER_MASK, "IBUS_HYPER_MASK", "hyper-mask" }, { IBUS_META_MASK, "IBUS_META_MASK", "meta-mask" }, { IBUS_RELEASE_MASK, "IBUS_RELEASE_MASK", "release-mask" }, { IBUS_MODIFIER_MASK, "IBUS_MODIFIER_MASK", "modifier-mask" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("IBusModifierType"), values); } return etype; } GType ibus_capabilite_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { IBUS_CAP_PREEDIT_TEXT, "IBUS_CAP_PREEDIT_TEXT", "preedit-text" }, { IBUS_CAP_AUXILIARY_TEXT, "IBUS_CAP_AUXILIARY_TEXT", "auxiliary-text" }, { IBUS_CAP_LOOKUP_TABLE, "IBUS_CAP_LOOKUP_TABLE", "lookup-table" }, { IBUS_CAP_FOCUS, "IBUS_CAP_FOCUS", "focus" }, { IBUS_CAP_PROPERTY, "IBUS_CAP_PROPERTY", "property" }, { IBUS_CAP_SURROUNDING_TEXT, "IBUS_CAP_SURROUNDING_TEXT", "surrounding-text" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("IBusCapabilite"), values); } return etype; } GType ibus_preedit_focus_mode_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_ENGINE_PREEDIT_CLEAR, "IBUS_ENGINE_PREEDIT_CLEAR", "clear" }, { IBUS_ENGINE_PREEDIT_COMMIT, "IBUS_ENGINE_PREEDIT_COMMIT", "commit" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusPreeditFocusMode"), values); } return etype; } GType ibus_orientation_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_ORIENTATION_HORIZONTAL, "IBUS_ORIENTATION_HORIZONTAL", "horizontal" }, { IBUS_ORIENTATION_VERTICAL, "IBUS_ORIENTATION_VERTICAL", "vertical" }, { IBUS_ORIENTATION_SYSTEM, "IBUS_ORIENTATION_SYSTEM", "system" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusOrientation"), values); } return etype; } GType ibus_bus_name_flag_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT, "IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT", "allow-replacement" }, { IBUS_BUS_NAME_FLAG_REPLACE_EXISTING, "IBUS_BUS_NAME_FLAG_REPLACE_EXISTING", "replace-existing" }, { IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE, "IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE", "do-not-queue" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("IBusBusNameFlag"), values); } return etype; } GType ibus_bus_request_name_reply_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER, "IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER", "primary-owner" }, { IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE, "IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE", "in-queue" }, { IBUS_BUS_REQUEST_NAME_REPLY_EXISTS, "IBUS_BUS_REQUEST_NAME_REPLY_EXISTS", "exists" }, { IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER, "IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER", "already-owner" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusBusRequestNameReply"), values); } return etype; } GType ibus_bus_start_service_by_name_reply_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_BUS_START_REPLY_SUCCESS, "IBUS_BUS_START_REPLY_SUCCESS", "success" }, { IBUS_BUS_START_REPLY_ALREADY_RUNNING, "IBUS_BUS_START_REPLY_ALREADY_RUNNING", "already-running" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusBusStartServiceByNameReply"), values); } return etype; } GType ibus_error_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_ERROR_NO_ENGINE, "IBUS_ERROR_NO_ENGINE", "no-engine" }, { IBUS_ERROR_NO_CONFIG, "IBUS_ERROR_NO_CONFIG", "no-config" }, { IBUS_ERROR_FAILED, "IBUS_ERROR_FAILED", "failed" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusError"), values); } return etype; } GType ibus_input_purpose_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_INPUT_PURPOSE_FREE_FORM, "IBUS_INPUT_PURPOSE_FREE_FORM", "free-form" }, { IBUS_INPUT_PURPOSE_ALPHA, "IBUS_INPUT_PURPOSE_ALPHA", "alpha" }, { IBUS_INPUT_PURPOSE_DIGITS, "IBUS_INPUT_PURPOSE_DIGITS", "digits" }, { IBUS_INPUT_PURPOSE_NUMBER, "IBUS_INPUT_PURPOSE_NUMBER", "number" }, { IBUS_INPUT_PURPOSE_PHONE, "IBUS_INPUT_PURPOSE_PHONE", "phone" }, { IBUS_INPUT_PURPOSE_URL, "IBUS_INPUT_PURPOSE_URL", "url" }, { IBUS_INPUT_PURPOSE_EMAIL, "IBUS_INPUT_PURPOSE_EMAIL", "email" }, { IBUS_INPUT_PURPOSE_NAME, "IBUS_INPUT_PURPOSE_NAME", "name" }, { IBUS_INPUT_PURPOSE_PASSWORD, "IBUS_INPUT_PURPOSE_PASSWORD", "password" }, { IBUS_INPUT_PURPOSE_PIN, "IBUS_INPUT_PURPOSE_PIN", "pin" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusInputPurpose"), values); } return etype; } GType ibus_input_hints_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { IBUS_INPUT_HINT_NONE, "IBUS_INPUT_HINT_NONE", "none" }, { IBUS_INPUT_HINT_SPELLCHECK, "IBUS_INPUT_HINT_SPELLCHECK", "spellcheck" }, { IBUS_INPUT_HINT_NO_SPELLCHECK, "IBUS_INPUT_HINT_NO_SPELLCHECK", "no-spellcheck" }, { IBUS_INPUT_HINT_WORD_COMPLETION, "IBUS_INPUT_HINT_WORD_COMPLETION", "word-completion" }, { IBUS_INPUT_HINT_LOWERCASE, "IBUS_INPUT_HINT_LOWERCASE", "lowercase" }, { IBUS_INPUT_HINT_UPPERCASE_CHARS, "IBUS_INPUT_HINT_UPPERCASE_CHARS", "uppercase-chars" }, { IBUS_INPUT_HINT_UPPERCASE_WORDS, "IBUS_INPUT_HINT_UPPERCASE_WORDS", "uppercase-words" }, { IBUS_INPUT_HINT_UPPERCASE_SENTENCES, "IBUS_INPUT_HINT_UPPERCASE_SENTENCES", "uppercase-sentences" }, { IBUS_INPUT_HINT_INHIBIT_OSK, "IBUS_INPUT_HINT_INHIBIT_OSK", "inhibit-osk" }, { IBUS_INPUT_HINT_VERTICAL_WRITING, "IBUS_INPUT_HINT_VERTICAL_WRITING", "vertical-writing" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("IBusInputHints"), values); } return etype; } /* Generated data ends here */ ibus-1.5.11/src/ibuserror.h0000644000000000000000000000255612551654123012420 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2011-2013 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ERROR_H_ #define __IBUS_ERROR_H_ /** * SECTION: ibuserror * @short_description: Error functions and definition. * @stability: Stable * * This file defines some error functions and definition. */ #include G_BEGIN_DECLS #define IBUS_ERROR ibus_error_quark() GQuark ibus_error_quark (void); G_END_DECLS #endif ibus-1.5.11/src/ibusshare.c0000644000000000000000000002207212551654123012357 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusshare.h" #include #include #include #include #include #include #include #include #include #include static gchar *_display = NULL; const gchar * ibus_get_local_machine_id (void) { static gchar *machine_id = NULL; if (machine_id == NULL) { GError *error = NULL; if (!g_file_get_contents ("/var/lib/dbus/machine-id", &machine_id, NULL, &error) && !g_file_get_contents ("/etc/machine-id", &machine_id, NULL, NULL)) { g_warning ("Unable to load /var/lib/dbus/machine-id: %s", error->message); machine_id = "machine-id"; } else { g_strstrip (machine_id); } if (error != NULL) { g_error_free (error); } } return machine_id; } void ibus_set_display (const gchar *display) { if (_display != NULL) g_free (_display); _display = g_strdup (display); } const gchar * ibus_get_user_name (void) { return g_get_user_name (); } glong ibus_get_daemon_uid (void) { return getuid (); } const gchar * ibus_get_session_id (void) { return g_getenv("IBUS_SESSION_ID"); } const gchar * ibus_get_socket_path (void) { static gchar *path = NULL; if (path == NULL) { gchar *hostname = "unix"; gchar *display; gchar *displaynumber = "0"; /* gchar *screennumber = "0"; */ gchar *p; path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE")); if (path != NULL) { return path; } if (_display == NULL) { display = g_strdup (g_getenv ("DISPLAY")); } else { display = g_strdup (_display); } if (display == NULL) { g_warning ("DISPLAY is empty! We use default DISPLAY (:0.0)"); } else { p = display; hostname = display; for (; *p != ':' && *p != '\0'; p++); if (*p == ':') { *p = '\0'; p++; displaynumber = p; } for (; *p != '.' && *p != '\0'; p++); if (*p == '.') { *p = '\0'; p++; /* Do not use screennumber screennumber = p; */ } } if (hostname[0] == '\0') hostname = "unix"; p = g_strdup_printf ("%s-%s-%s", ibus_get_local_machine_id (), hostname, displaynumber); path = g_build_filename (g_get_user_config_dir (), "ibus", "bus", p, NULL); g_free (p); g_free (display); } return path; } gint ibus_get_timeout (void) { /* 16000 ms is the default timeout on the ibus-daemon side * (15 sec) plus 1. */ static const gint default_timeout = 16000; static gint64 timeout = -2; if (timeout == -2) { const gchar *timeout_str = g_getenv ("IBUS_TIMEOUT"); if (timeout_str == NULL) { timeout = default_timeout; } else { timeout = g_ascii_strtoll(timeout_str, NULL, 10); if (timeout < -1 || timeout == 0 || timeout > G_MAXINT) { timeout = default_timeout; } } } return timeout; } const gchar * ibus_get_address (void) { static gchar *address = NULL; pid_t pid = -1; static gchar buffer[1024]; FILE *pf; /* free address */ if (address != NULL) { g_free (address); address = NULL; } /* get address from env variable */ address = g_strdup (g_getenv ("IBUS_ADDRESS")); if (address) { return address; } /* read address from ~/.config/ibus/bus/soketfile */ pf = fopen (ibus_get_socket_path (), "r"); if (pf == NULL) { return NULL; } while (!feof (pf)) { gchar *p = buffer; if (fgets (buffer, sizeof (buffer), pf) == NULL) break; /* skip comment line */ if (p[0] == '#') continue; /* parse IBUS_ADDRESS */ if (strncmp (p, "IBUS_ADDRESS=", sizeof ("IBUS_ADDRESS=") - 1) == 0) { address = p + sizeof ("IBUS_ADDRESS=") - 1; for (p = (gchar *)address; *p != '\n' && *p != '\0'; p++); if (*p == '\n') *p = '\0'; address = g_strdup (address); continue; } /* parse IBUS_DAEMON_PID */ if (strncmp (p, "IBUS_DAEMON_PID=", sizeof ("IBUS_DAEMON_PID=") - 1) == 0) { pid = atoi(p + sizeof ("IBUS_DAEMON_PID=") - 1); continue; } } fclose (pf); if (pid == -1 || kill (pid, 0) != 0) { return NULL; } return address; } void ibus_write_address (const gchar *address) { FILE *pf; gchar *path; g_return_if_fail (address != NULL); path = g_path_get_dirname (ibus_get_socket_path ()); g_mkdir_with_parents (path, 0700); g_free (path); g_unlink (ibus_get_socket_path ()); pf = fopen (ibus_get_socket_path (), "w"); g_return_if_fail (pf != NULL); fprintf (pf, "# This file is created by ibus-daemon, please do not modify it\n" "IBUS_ADDRESS=%s\n" "IBUS_DAEMON_PID=%ld\n", address, (glong) getpid ()); fclose (pf); } void ibus_free_strv (gchar **strv) { gchar **p; if (strv == NULL) return; for (p = strv; *p != NULL; p++) { g_free (*p); } g_free (strv); } void ibus_init (void) { #if !GLIB_CHECK_VERSION(2,35,0) g_type_init (); #endif IBUS_ERROR; IBUS_TYPE_TEXT; IBUS_TYPE_ATTRIBUTE; IBUS_TYPE_ATTR_LIST; IBUS_TYPE_LOOKUP_TABLE; IBUS_TYPE_COMPONENT; IBUS_TYPE_ENGINE_DESC; IBUS_TYPE_OBSERVED_PATH; IBUS_TYPE_REGISTRY; } static GMainLoop *main_loop = NULL; void ibus_main (void) { main_loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (main_loop); g_main_loop_unref (main_loop); main_loop = NULL; } void ibus_quit (void) { if (main_loop) { g_main_loop_quit (main_loop); } } static gboolean ibus_log_handler_is_verbose = FALSE; static guint ibus_log_handler_id = 0; static void ibus_log_handler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { // In the quiet mode (i.e. not verbose), we'll ignore DEBUG and // WARNING messages. if (!ibus_log_handler_is_verbose && ((log_level & G_LOG_LEVEL_DEBUG) || (log_level & G_LOG_LEVEL_WARNING))) { return; } // Add timing info like "17:34:57.680038" (hour, min, sec, microsecond). struct timeval time_val; gettimeofday (&time_val, NULL); struct tm local_time; localtime_r (&time_val.tv_sec, &local_time); char* new_message = g_strdup_printf ("%02d:%02d:%02d.%6d: %s", local_time.tm_hour, local_time.tm_min, local_time.tm_sec, (int)time_val.tv_usec, message); g_log_default_handler (log_domain, log_level, new_message, user_data); g_free (new_message); } void ibus_set_log_handler (gboolean verbose) { if (ibus_log_handler_id != 0) { g_log_remove_handler (G_LOG_DOMAIN, ibus_log_handler_id); } ibus_log_handler_is_verbose = verbose; ibus_log_handler_id = g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_MASK, ibus_log_handler, NULL); } void ibus_unset_log_handler (void) { if (ibus_log_handler_id != 0) { g_log_remove_handler (G_LOG_DOMAIN, ibus_log_handler_id); ibus_log_handler_id = 0; } } ibus-1.5.11/src/ibusbus.h0000644000000000000000000013525312551654123012061 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_BUS_H_ #define __IBUS_BUS_H_ /** * SECTION: ibusbus * @short_description: Connect with IBus daemon. * @stability: Stable * * An IBusBus connects with IBus daemon. */ #include #include #include "ibusinputcontext.h" #include "ibusconfig.h" #include "ibuscomponent.h" #include "ibusshare.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_BUS \ (ibus_bus_get_type ()) #define IBUS_BUS(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_BUS, IBusBus)) #define IBUS_BUS_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_BUS, IBusBusClass)) #define IBUS_IS_BUS(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_BUS)) #define IBUS_IS_BUS_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_BUS)) #define IBUS_BUS_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_BUS, IBusBusClass)) G_BEGIN_DECLS typedef struct _IBusBus IBusBus; typedef struct _IBusBusClass IBusBusClass; typedef struct _IBusBusPrivate IBusBusPrivate; /** * IBusBus: * * An opaque data type representing IBus bus (daemon communication) status. */ struct _IBusBus { IBusObject parent; /* instance members */ IBusBusPrivate *priv; }; struct _IBusBusClass { IBusObjectClass parent; /* class members */ }; GType ibus_bus_get_type (void); /** * ibus_bus_new: * * Creates a new #IBusBus instance. * * Returns: A newly allocated #IBusBus instance, and the instance is not * floating. */ IBusBus *ibus_bus_new (void); /** * ibus_bus_new_async: * * Creates a new #IBusBus instance. The instance will asynchronously connect * to the IBus daemon. * * Returns: A newly allocated #IBusBus instance, and the instance is not * floating. */ IBusBus *ibus_bus_new_async (void); /** * ibus_bus_is_connected: * @bus: An #IBusBus. * * Return %TRUE if @bus is connected to IBus daemon. * * Returns: %TRUE if @bus is connected, %FALSE otherwise. */ gboolean ibus_bus_is_connected (IBusBus *bus); /** * ibus_bus_get_connection: * @bus: An #IBusBus. * * Gets a #GDBusConnection of an #IBusBus instance. * * Returns: (transfer none): A #GDBusConnection of an #IBusBus instance. */ GDBusConnection * ibus_bus_get_connection (IBusBus *bus); /** * ibus_bus_hello: * @bus: An #IBusBus. * * This function sends a "HELLO" message to DBus daemon, * which replies the unique name of current IBus process. * * Returns: The unique name of IBus process in DBus. */ const gchar *ibus_bus_hello (IBusBus *bus); /** * ibus_bus_request_name: * @bus: the IBusBus instance to be processed. * @name: Name to be requested. * @flags: IBusBusNameFlag. * * Request a name from IBus daemon synchronously. * * Returns: 0 if failed; IBusBusRequestNameReply otherwise. */ guint32 ibus_bus_request_name (IBusBus *bus, const gchar *name, guint32 flags); /** * ibus_bus_request_name_async: * @bus: An #IBusBus. * @name: Name to be requested. * @flags: Flags (FixMe). * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL * if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Request a name from IBus daemon asynchronously. */ void ibus_bus_request_name_async (IBusBus *bus, const gchar *name, guint flags, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_request_name_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_request_name_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_request_name_async(). * * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_request_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_release_name: * @bus: An #IBusBus. * @name: Name to be released. * * Release a name to IBus daemon synchronously. * * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_release_name (IBusBus *bus, const gchar *name); /** * ibus_bus_release_name_async: * @bus: An #IBusBus. * @name: Name to be released. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Release a name to IBus daemon asynchronously. */ void ibus_bus_release_name_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_release_name_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_release_name_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_release_name_async(). * * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_release_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_list_queued_owners: * @bus: An IBusBus. * @name: Name to be queried. * * Lists the unique bus names of connections currently queued for a bus name. * FIXME add an asynchronous version. * * Returns: (transfer full) (element-type utf8): * The unique bus names of connections currently queued for @name. */ GList * ibus_bus_list_queued_owners (IBusBus *bus, const gchar *name); /** * ibus_bus_name_has_owner: * @bus: An #IBusBus. * @name: Name to be checked. * * Checks whether the name has owner synchronously. * * Returns: %TRUE if the name has owner, %FALSE otherwise. */ gboolean ibus_bus_name_has_owner (IBusBus *bus, const gchar *name); /** * ibus_bus_name_has_owner_async: * @bus: An #IBusBus. * @name: Name to be checked. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Checks whether the name has owner asynchronously. */ void ibus_bus_name_has_owner_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_name_has_owner_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_name_has_owner_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_name_has_owner_async(). * * Returns: %TRUE if the name has owner, %FALSE otherwise. */ gboolean ibus_bus_name_has_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_list_names: * @bus: An #IBusBus. * * Return lists that attached to @bus. * [FixMe] Not implemented yet, only return %NULL. * [FixMe] Add async version. * * Returns: (transfer full) (element-type utf8): Lists that attached to @bus. */ GList *ibus_bus_list_names (IBusBus *bus); /** * ibus_bus_add_match: * @bus: An #IBusBus. * @rule: Match rule. * * Add a match rule to an #IBusBus synchronously. * * Returns: %TRUE if the rule is added. %FALSE otherwise. */ gboolean ibus_bus_add_match (IBusBus *bus, const gchar *rule); /** * ibus_bus_add_match_async: * @bus: An #IBusBus. * @rule: Match rule. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Add a match rule to an #IBusBus asynchronously. */ void ibus_bus_add_match_async (IBusBus *bus, const gchar *rule, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_add_match_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_add_match_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_add_match_async(). * * Returns: %TRUE if the rule is added. %FALSE otherwise. */ gboolean ibus_bus_add_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_remove_match: * @bus: An #IBusBus. * @rule: Match rule. * * Remove a match rule to an #IBusBus synchronously. * * Returns: %TRUE if the rule is removed. %FALSE otherwise. */ gboolean ibus_bus_remove_match (IBusBus *bus, const gchar *rule); /** * ibus_bus_remove_match_async: * @bus: An #IBusBus. * @rule: Match rule. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Remove a match rule to an IBusBus asynchronously. */ void ibus_bus_remove_match_async (IBusBus *bus, const gchar *rule, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_remove_match_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_remove_match_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_remove_match_async(). * * Returns: %TRUE if the rule is removed. %FALSE otherwise. */ gboolean ibus_bus_remove_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_get_name_owner: * @bus: An #IBusBus. * @name: Name. * * Return the name owner synchronously. * * Returns: Owner of the name. The returned value must be freed with g_free(). */ gchar *ibus_bus_get_name_owner (IBusBus *bus, const gchar *name); /** * ibus_bus_get_name_owner_async: * @bus: An #IBusBus. * @name: Name. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Return the name owner asynchronously. */ void ibus_bus_get_name_owner_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_get_name_owner_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_name_owner_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_get_name_owner_async(). * * Returns: Owner of the name. The returned value must be freed with g_free(). */ gchar *ibus_bus_get_name_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /* declare ibus methods */ /** * ibus_bus_exit: * @bus: An #IBusBus. * @restart: Whether restarting the ibus. * * Exit or restart ibus-daemon synchronously. * * Returns: %TRUE if the "Exit" call is suceeded, %FALSE otherwise. */ gboolean ibus_bus_exit (IBusBus *bus, gboolean restart); /** * ibus_bus_exit_async: * @bus: An #IBusBus. * @restart: Whether restarting the ibus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Exit or restart ibus-daemon asynchronously. */ void ibus_bus_exit_async (IBusBus *bus, gboolean restart, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_exit_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_exit_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_exit_async(). * * Returns: %TRUE if the "Exit" call is suceeded, %FALSE otherwise. */ gboolean ibus_bus_exit_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_create_input_context: * @bus: An #IBusBus. * @client_name: Name of client. * "CreateInputContext" call is suceeded, %NULL otherwise. * * Create an input context for client synchronously. * * Returns: (transfer full): An newly allocated #IBusInputContext if the */ IBusInputContext * ibus_bus_create_input_context (IBusBus *bus, const gchar *client_name); /** * ibus_bus_create_input_context_async: * @bus: An #IBusBus. * @client_name: Name of client. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * It should not be %NULL. * @user_data: The data to pass to callback. * * Create an input context for client asynchronously. */ void ibus_bus_create_input_context_async (IBusBus *bus, const gchar *client_name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_create_input_context_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_create_input_context_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_create_input_context_async(). * * Returns: (transfer full): An newly allocated #IBusInputContext if the * "CreateInputContext" call is suceeded, %NULL otherwise. */ IBusInputContext * ibus_bus_create_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_current_input_context: * @bus: An #IBusBus. * * Get the current focused input context synchronously. * * Returns: The named of currently focued #IBusInputContext if the * "CurrentInputContext" call suceeded, %NULL otherwise. The return * value must be freed with g_free(). */ gchar *ibus_bus_current_input_context (IBusBus *bus); /** * ibus_bus_current_input_context_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Get the current focused input context asynchronously. */ void ibus_bus_current_input_context_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_current_input_context_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_current_input_context_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_current_input_context_async(). * * Returns: The named of currently focued IBusInputContext if the * "CurrentInputContext" call suceeded, %NULL otherwise. The return * value must be freed with g_free(). */ gchar *ibus_bus_current_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_register_component: * @bus: An #IBusBus. * @component: A input engine component. * * Register a componet to an #IBusBus synchronously. * * Returns: %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. */ gboolean ibus_bus_register_component (IBusBus *bus, IBusComponent *component); /** * ibus_bus_register_component_async: * @bus: An #IBusBus. * @component: A input engine component. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Register a componet to an #IBusBus asynchronously. */ void ibus_bus_register_component_async (IBusBus *bus, IBusComponent *component, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_register_component_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_register_component_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_register_component_async(). * * Returns: %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. */ gboolean ibus_bus_register_component_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_list_engines: * @bus: An #IBusBus. * * List engines synchronously. * * Returns: (transfer container) (element-type IBusEngineDesc): * A List of engines. */ GList *ibus_bus_list_engines (IBusBus *bus); /** * ibus_bus_list_engines_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL * if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * List engines asynchronously. */ void ibus_bus_list_engines_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_list_engines_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_list_engines_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_list_engines_async(). * * Returns: (transfer container) (element-type IBusEngineDesc): * A List of engines. */ GList *ibus_bus_list_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); #ifndef IBUS_DISABLE_DEPRECATED /** * ibus_bus_list_active_engines: * @bus: An #IBusBus. * * List active engines synchronously. * * Returns: (transfer container) (element-type IBusEngineDesc): * A List of active engines. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/preload-engines instead. */ IBUS_DEPRECATED GList *ibus_bus_list_active_engines (IBusBus *bus); /** * ibus_bus_list_active_engines_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL * if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * List active engines asynchronously. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/preload-engines instead. */ IBUS_DEPRECATED void ibus_bus_list_active_engines_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_list_active_engines_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_list_active_engines_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_list_active_engines_async(). * * Returns: (transfer container) (element-type IBusEngineDesc): * A List of active engines. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/preload-engines instead. */ IBUS_DEPRECATED GList *ibus_bus_list_active_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); #endif /* IBUS_DISABLE_DEPRECATED */ /** * ibus_bus_get_engines_by_names: * @bus: An #IBusBus. * @names: (array zero-terminated=1): A %NULL-terminated array of names. * * Get engines by given names synchronously. If some engine names do not exist, * this function will simply ignore them, and return rest of engines. * TODO(penghuang): add asynchronous version * * Returns: (array zero-terminated=1) (transfer full): * A %NULL-terminated array of engines. */ IBusEngineDesc ** ibus_bus_get_engines_by_names (IBusBus *bus, const gchar * const *names); #ifndef IBUS_DISABLE_DEPRECATED /** * ibus_bus_get_use_sys_layout: * @bus: An #IBusBus. * * Check if the bus's "use_sys_layout" option is enabled or not synchronously. * * Returns: %TRUE if "use_sys_layout" option is enabled. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/use_system_keyboard_layout instead. */ IBUS_DEPRECATED gboolean ibus_bus_get_use_sys_layout (IBusBus *bus); /** * ibus_bus_get_use_sys_layout_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Check if the bus's "use_sys_layout" option is enabled or not asynchronously. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/use_system_keyboard_layout instead. */ IBUS_DEPRECATED void ibus_bus_get_use_sys_layout_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_get_use_sys_layout_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_use_sys_layout_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_get_use_sys_layout_async(). * * Returns: TRUE if "use_sys_layout" option is enabled. * * Deprecated: 1.5.3: Read dconf value * /desktop/ibus/general/use_system_keyboard_layout instead. */ IBUS_DEPRECATED gboolean ibus_bus_get_use_sys_layout_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_get_use_global_engine: * @bus: An #IBusBus. * * Check if the bus's "use_global_engine" option is enabled or not * synchronously. * * Returns: TRUE if "use_global_engine" option is enabled. * * Deprecated: 1.5.3: Currently global engine is always used. */ IBUS_DEPRECATED gboolean ibus_bus_get_use_global_engine (IBusBus *bus); /** * ibus_bus_get_use_global_engine_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Check if the bus's "use_global_engine" option is enabled or not asynchronously. * * Deprecated: 1.5.3: Currently global engine is always used. */ IBUS_DEPRECATED void ibus_bus_get_use_global_engine_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_get_use_global_engine_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_use_global_engine_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_get_use_global_engine_async(). * * Returns: %TRUE if "use_global_engine" option is enabled. * * Deprecated: 1.5.3: Currently global engine is always used. */ IBUS_DEPRECATED gboolean ibus_bus_get_use_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_is_global_engine_enabled: * @bus: An #IBusBus. * * Check if the current global engine is enabled or not synchronously. * * Returns: %TRUE if the current global engine is enabled. * * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. * Currently global engine is always used and ibus_bus_get_global_engine() * returns NULL until the first global engine is assigned. * You can use ibus_set_log_handler() to disable a warning when * ibus_bus_get_global_engine() returns NULL. */ IBUS_DEPRECATED gboolean ibus_bus_is_global_engine_enabled (IBusBus *bus); /** * ibus_bus_is_global_engine_enabled_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Check if the current global engine is enabled or not asynchronously. * * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. * Currently global engine is always used and ibus_bus_get_global_engine() * returns NULL until the first global engine is assigned. * You can use ibus_set_log_handler() to disable a warning when * ibus_bus_get_global_engine() returns NULL. */ IBUS_DEPRECATED void ibus_bus_is_global_engine_enabled_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_is_global_engine_enabled_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_is_global_engine_enabled_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_is_global_engine_enabled_async(). * * Returns: %TRUE if the current global engine is enabled. * * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. * Currently global engine is always used and ibus_bus_get_global_engine() * returns NULL until the first global engine is assigned. * You can use ibus_set_log_handler() to disable a warning when * ibus_bus_get_global_engine() returns NULL. */ IBUS_DEPRECATED gboolean ibus_bus_is_global_engine_enabled_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); #endif /* IBUS_DISABLE_DEPRECATED */ /** * ibus_bus_get_global_engine: * @bus: An #IBusBus. * * Get the description of current global engine synchronously. * * Returns: (transfer none): The description of current global engine, * or %NULL if there is no global engine. */ IBusEngineDesc * ibus_bus_get_global_engine (IBusBus *bus); /** * ibus_bus_get_global_engine_async: * @bus: An #IBusBus. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL * if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Get the description of current global engine asynchronously. */ void ibus_bus_get_global_engine_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_get_global_engine_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_global_engine_async_finish(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_get_global_engine_async_finish(). * * Returns: (transfer none): The description of current global engine, * or %NULL if there is no global engine. */ IBusEngineDesc * ibus_bus_get_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_set_global_engine: * @bus: An #IBusBus. * @global_engine: A new engine name. * * Set current global engine synchronously. * * Returns: %TRUE if the global engine was set successfully. */ gboolean ibus_bus_set_global_engine (IBusBus *bus, const gchar *global_engine); /** * ibus_bus_set_global_engine_async: * @bus: An #IBusBus. * @global_engine: A new engine name. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Set current global engine asynchronously. */ void ibus_bus_set_global_engine_async (IBusBus *bus, const gchar *global_engine, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_set_global_engine_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_set_global_engine_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_set_global_engine_async(). * * Returns: %TRUE if no IPC errros. %FALSE otherwise. */ gboolean ibus_bus_set_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_set_watch_dbus_signal: * @bus: An #IBusBus. * @watch: %TRUE if you want ibusbus to emit "name-owner-changed" signal when * ibus-daemon emits the NameOwnerChanged DBus signal. * * Start or stop watching the NameOwnerChanged DBus signal. */ void ibus_bus_set_watch_dbus_signal (IBusBus *bus, gboolean watch); /** * ibus_bus_set_watch_ibus_signal: * @bus: An #IBusBus. * @watch: %TRUE if you want ibusbus to emit "global-engine-changed" signal when * ibus-daemon emits the GlobalEngineChanged IBus signal. * * Start or stop watching the GlobalEngineChanged IBus signal. */ void ibus_bus_set_watch_ibus_signal (IBusBus *bus, gboolean watch); /* declare config apis */ /** * ibus_bus_get_config: * @bus: An #IBusBus. * * Get the config instance from #IBusBus. * * Returns: (transfer none): An #IBusConfig object which is configurable with * @bus. */ IBusConfig *ibus_bus_get_config (IBusBus *bus); /** * ibus_bus_preload_engines: * @bus: An #IBusBus. * @names: (array zero-terminated=1): A %NULL-terminated array of engine names. * * Start bus components by engine names synchronously. * * Returns: %TRUE if components start. %FALSE otherwise. */ gboolean ibus_bus_preload_engines (IBusBus *bus, const gchar * const *names); /** * ibus_bus_preload_engines_async: * @bus: An #IBusBus. * @names: (array zero-terminated=1): A %NULL-terminated array of engine names. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Start bus components by engine names asynchronously. */ void ibus_bus_preload_engines_async (IBusBus *bus, const gchar * const *names, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_preload_engines_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_preload_engines_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_preload_engines_async(). * * Returns: %TRUE if component starts. %FALSE otherwise. */ gboolean ibus_bus_preload_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_get_ibus_property: * @bus: An #IBusBus. * @property_name: property name in org.freedesktop.DBus.Properties.Get * * Get org.freedesktop.DBus.Properties. * * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get * The returned value must be freed with g_variant_unref(). */ GVariant * ibus_bus_get_ibus_property (IBusBus *bus, const gchar *property_name); /** * ibus_bus_get_ibus_property_async: * @bus: An #IBusBus. * @property_name: property name in org.freedesktop.DBus.Properties.Get * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Get org.freedesktop.DBus.Properties asynchronously. */ void ibus_bus_get_ibus_property_async (IBusBus *bus, const gchar *property_name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_get_ibus_property_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_ibus_property_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_get_ibus_property_async(). * * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get * The returned value must be freed with g_variant_unref(). */ GVariant * ibus_bus_get_ibus_property_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); /** * ibus_bus_set_ibus_property: * @bus: An #IBusBus. * @property_name: property name in org.freedesktop.DBus.Properties.Set * @value: value in org.freedesktop.DBus.Properties.Set * * Set org.freedesktop.DBus.Properties. */ void ibus_bus_set_ibus_property (IBusBus *bus, const gchar *property_name, GVariant *value); /** * ibus_bus_set_ibus_property_async: * @bus: An #IBusBus. * @property_name: property name in org.freedesktop.DBus.Properties.Set * @value: value in org.freedesktop.DBus.Properties.Set * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Set org.freedesktop.DBus.Properties asynchronously. */ void ibus_bus_set_ibus_property_async (IBusBus *bus, const gchar *property_name, GVariant *value, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_bus_set_ibus_property_async_finish: * @bus: An #IBusBus. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_set_ibus_property_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_bus_set_ibus_property_async(). * * Returns: %TRUE if property is set with async. %FALSE failed. */ gboolean ibus_bus_set_ibus_property_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); G_END_DECLS #endif ibus-1.5.11/src/ibusengine.h0000644000000000000000000004004412551654123012526 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ENGINE_H_ #define __IBUS_ENGINE_H_ /** * SECTION: ibusengine * @short_description: Input method engine abstract. * @title: IBusEngine * @stability: Stable * * An IBusEngine provides infrastructure for input method engine. * Developers can "extend" this class for input method engine development. * * see_also: #IBusComponent, #IBusEngineDesc */ #include "ibusservice.h" #include "ibusattribute.h" #include "ibuslookuptable.h" #include "ibusproplist.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_ENGINE \ (ibus_engine_get_type ()) #define IBUS_ENGINE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ENGINE, IBusEngine)) #define IBUS_ENGINE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ENGINE, IBusEngineClass)) #define IBUS_IS_ENGINE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ENGINE)) #define IBUS_IS_ENGINE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ENGINE)) #define IBUS_ENGINE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ENGINE, IBusEngineClass)) G_BEGIN_DECLS typedef struct _IBusEngine IBusEngine; typedef struct _IBusEngineClass IBusEngineClass; typedef struct _IBusEnginePrivate IBusEnginePrivate; /** * IBusEngine: * @enabled: Whether the engine is enabled. * @has_focus: Whether the engine has focus. * @cursor_area: Area of cursor. * @client_capabilities: IBusCapabilite (client capabilities) flags. * * IBusEngine properties. */ struct _IBusEngine { /*< private >*/ IBusService parent; IBusEnginePrivate *priv; /* instance members */ /*< public >*/ gboolean enabled; gboolean has_focus; /* cursor location */ IBusRectangle cursor_area; guint client_capabilities; }; struct _IBusEngineClass { /*< private >*/ IBusServiceClass parent; /* class members */ /*< public >*/ /* signals */ gboolean (* process_key_event) (IBusEngine *engine, guint keyval, guint keycode, guint state); void (* focus_in) (IBusEngine *engine); void (* focus_out) (IBusEngine *engine); void (* reset) (IBusEngine *engine); void (* enable) (IBusEngine *engine); void (* disable) (IBusEngine *engine); void (* set_cursor_location) (IBusEngine *engine, gint x, gint y, gint w, gint h); void (* set_capabilities) (IBusEngine *engine, guint caps); void (* page_up) (IBusEngine *engine); void (* page_down) (IBusEngine *engine); void (* cursor_up) (IBusEngine *engine); void (* cursor_down) (IBusEngine *engine); void (* property_activate) (IBusEngine *engine, const gchar *prop_name, guint prop_state); void (* property_show) (IBusEngine *engine, const gchar *prop_name); void (* property_hide) (IBusEngine *engine, const gchar *prop_name); void (* candidate_clicked) (IBusEngine *engine, guint index, guint button, guint state); void (* set_surrounding_text) (IBusEngine *engine, IBusText *text, guint cursor_index, guint anchor_pos); void (* process_hand_writing_event) (IBusEngine *engine, const gdouble *coordinates, guint coordinates_len); void (* cancel_hand_writing) (IBusEngine *engine, guint n_strokes); void (* set_content_type) (IBusEngine *engine, guint purpose, guint hints); /*< private >*/ /* padding */ gpointer pdummy[4]; }; GType ibus_engine_get_type (void); /** * ibus_engine_new: * @engine_name: Name of the IBusObject. * @object_path: Path for IBusService. * @connection: An opened GDBusConnection. * * Create a new #IBusEngine. * * Returns: A newly allocated IBusEngine. */ IBusEngine *ibus_engine_new (const gchar *engine_name, const gchar *object_path, GDBusConnection *connection); /** * ibus_engine_new_with_type: * @engine_type: GType of #IBusEngine. * @engine_name: Name of the IBusObject. * @object_path: Path for IBusService. * @connection: An opened GDBusConnection. * * Create a new #IBusEngine. * * Returns: A newly allocated IBusEngine. */ IBusEngine *ibus_engine_new_with_type (GType engine_type, const gchar *engine_name, const gchar *object_path, GDBusConnection *connection); /** * ibus_engine_commit_text: * @engine: An IBusEngine. * @text: String commit to IBusEngine. * * Commit output of input method to IBus client. * * (Note: The text object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_commit_text (IBusEngine *engine, IBusText *text); /** * ibus_engine_update_preedit_text: * @engine: An IBusEngine. * @text: Update content. * @cursor_pos: Current position of cursor * @visible: Whether the pre-edit buffer is visible. * * Update the pre-edit buffer. * * (Note: The text object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_preedit_text (IBusEngine *engine, IBusText *text, guint cursor_pos, gboolean visible); /** * ibus_engine_update_preedit_text_with_mode: * @engine: An IBusEngine. * @text: Update content. * @cursor_pos: Current position of cursor * @visible: Whether the pre-edit buffer is visible. * @mode: Pre-edit commit mode when the focus is lost. * * Update the pre-edit buffer with commit mode. Similar to * ibus_engine_update_preedit_text(), this function allows users to specify * the behavior on focus out when the pre-edit buffer is visible. * * If @mode is IBUS_ENGINE_PREEDIT_COMMIT, contents of the pre-edit buffer * will be comitted and cleared. * If @mode is IBUS_ENGINE_PREEDIT_CLEAR, contents of the pre-edit buffer * will be cleared only. * * (Note: The text object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_preedit_text_with_mode (IBusEngine *engine, IBusText *text, guint cursor_pos, gboolean visible, IBusPreeditFocusMode mode); /** * ibus_engine_show_preedit_text: * @engine: An IBusEngine. * * Show the pre-edit buffer. */ void ibus_engine_show_preedit_text (IBusEngine *engine); /** * ibus_engine_hide_preedit_text: * @engine: An IBusEngine. * * Hide the pre-edit buffer. */ void ibus_engine_hide_preedit_text (IBusEngine *engine); /** * ibus_engine_update_auxiliary_text: * @engine: An IBusEngine. * @text: Update content. * @visible: Whether the auxiliary text bar is visible. * * Update the auxiliary bar. * * (Note: The text object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_auxiliary_text (IBusEngine *engine, IBusText *text, gboolean visible); /** * ibus_engine_show_auxiliary_text: * @engine: An IBusEngine. * * Show the auxiliary bar. */ void ibus_engine_show_auxiliary_text (IBusEngine *engine); /** * ibus_engine_hide_auxiliary_text: * @engine: An IBusEngine. * * Hide the auxiliary bar. */ void ibus_engine_hide_auxiliary_text (IBusEngine *engine); /** * ibus_engine_update_lookup_table: * @engine: An IBusEngine. * @lookup_table: An lookup_table. * @visible: Whether the lookup_table is visible. * * Update the lookup table. * * (Note: The table object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_lookup_table (IBusEngine *engine, IBusLookupTable *lookup_table, gboolean visible); /** * ibus_engine_update_lookup_table_fast: * @engine: An IBusEngine. * @lookup_table: An lookup_table. * @visible: Whether the lookup_table is visible. * * Fast update for big lookup table. * * If size of lookup table is not over table page size *4, * then it calls ibus_engine_update_lookup_table(). * * (Note: The table object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_lookup_table_fast (IBusEngine *engine, IBusLookupTable *lookup_table, gboolean visible); /** * ibus_engine_show_lookup_table: * @engine: An IBusEngine. * * Show the lookup table. */ void ibus_engine_show_lookup_table (IBusEngine *engine); /** * ibus_engine_hide_lookup_table: * @engine: An IBusEngine. * * Hide the lookup table. */ void ibus_engine_hide_lookup_table (IBusEngine *engine); /** * ibus_engine_forward_key_event: * @engine: An IBusEngine. * @keyval: KeySym. * @keycode: keyboard scancode. * @state: Key modifier flags. * * Forward the key event. */ void ibus_engine_forward_key_event (IBusEngine *engine, guint keyval, guint keycode, guint state); /** * ibus_engine_register_properties: * @engine: An IBusEngine. * @prop_list: Property List. * * Register and show properties in language bar. * * (Note: The prop_list object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_register_properties (IBusEngine *engine, IBusPropList *prop_list); /** * ibus_engine_update_property: * @engine: An IBusEngine. * @prop: IBusProperty to be updated. * * Update the state displayed in language bar. * * (Note: The prop object will be released, if it is floating. * If caller want to keep the object, caller should make the object * sink by g_object_ref_sink.) */ void ibus_engine_update_property(IBusEngine *engine, IBusProperty *prop); /** * ibus_engine_delete_surrounding_text: * @engine: An IBusEngine. * @offset: The offset of the first char. * @nchars: Number of chars to be deleted. * * Delete surrounding text. */ void ibus_engine_delete_surrounding_text(IBusEngine *engine, gint offset, guint nchars); /** * ibus_engine_get_surrounding_text: * @engine: An IBusEngine. * @text: (out) (transfer none) (allow-none): Location to store surrounding text. * @cursor_pos: (out) (allow-none): Cursor position in characters in @text. * @anchor_pos: (out) (allow-none): Anchor position of selection in @text. * * Get surrounding text. * * It is also used to tell the input-context that the engine will * utilize surrounding-text. In that case, it must be called in * #IBusEngine::enable handler, with both @text and @cursor set to * %NULL. * * See also: #IBusEngine::set-surrounding-text */ void ibus_engine_get_surrounding_text (IBusEngine *engine, IBusText **text, guint *cursor_pos, guint *anchor_pos); /** * ibus_engine_get_content_type: * @engine: An #IBusEngine. * @purpose: (out) (allow-none): Primary purpose of the input context. * @hints: (out) (allow-none): Hints that augument @purpose. * * Get content-type (primary purpose and hints) of the current input * context. * * See also: #IBusEngine::set-content-type */ void ibus_engine_get_content_type (IBusEngine *engine, guint *purpose, guint *hints); /** * ibus_engine_get_name: * @engine: An IBusEngine. * * Return the name of #IBusEngine. * * Returns: Name of #IBusEngine. */ const gchar *ibus_engine_get_name (IBusEngine *engine); G_END_DECLS #endif ibus-1.5.11/src/ibustext.c0000644000000000000000000001647112551654123012247 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibustext.h" /* functions prototype */ static void ibus_text_destroy (IBusText *text); static gboolean ibus_text_serialize (IBusText *text, GVariantBuilder *builder); static int ibus_text_deserialize (IBusText *text, GVariant *variant); static gboolean ibus_text_copy (IBusText *dest, const IBusText *src); G_DEFINE_TYPE (IBusText, ibus_text, IBUS_TYPE_SERIALIZABLE) static void ibus_text_class_init (IBusTextClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); ibus_text_parent_class = (IBusSerializableClass *) g_type_class_peek_parent (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_text_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_text_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_text_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_text_copy; } static void ibus_text_init (IBusText *text) { text->is_static = TRUE; text->text = ""; text->attrs = NULL; } static void ibus_text_destroy (IBusText *text) { if (text->text != NULL && text->is_static == FALSE) { g_free (text->text); text->text = NULL; } if (text->attrs) { g_object_unref (text->attrs); text->attrs = NULL; } IBUS_OBJECT_CLASS (ibus_text_parent_class)->destroy ((IBusObject *)text); } static gboolean ibus_text_serialize (IBusText *text, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_text_parent_class)->serialize ( (IBusSerializable *)text, builder); g_return_val_if_fail (retval, FALSE); g_variant_builder_add (builder, "s", text->text); if (text->attrs == NULL) { text->attrs = ibus_attr_list_new (); g_object_ref_sink (text->attrs); } g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)text->attrs)); return TRUE; } static gint ibus_text_deserialize (IBusText *text, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_text_parent_class)->deserialize ( (IBusSerializable *)text, variant); if (text->is_static == FALSE) g_free (text->text); g_variant_get_child (variant, retval++, "s", &text->text); text->is_static = FALSE; if (text->attrs) g_object_unref (text->attrs); GVariant *var = g_variant_get_child_value (variant, retval++); text->attrs = IBUS_ATTR_LIST (ibus_serializable_deserialize (var)); g_variant_unref (var); g_object_ref_sink (text->attrs); return retval; } static gboolean ibus_text_copy (IBusText *dest, const IBusText *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_text_parent_class)->copy ( (IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_TEXT (dest), FALSE); g_return_val_if_fail (IBUS_IS_TEXT (src), FALSE); dest->text = g_strdup (src->text); dest->is_static = FALSE; if (src->attrs) { dest->attrs = (IBusAttrList *)ibus_serializable_copy ((IBusSerializable *)src->attrs); g_object_ref_sink (dest->attrs); } return TRUE; } IBusText * ibus_text_new_from_string (const gchar *str) { g_assert (str); IBusText *text; text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = FALSE; text->text = g_strdup (str); return text; } IBusText * ibus_text_new_from_ucs4 (const gunichar *str) { g_assert (str); gchar *buf = g_ucs4_to_utf8 (str, -1, NULL, NULL, NULL); g_return_val_if_fail (buf != NULL, NULL); IBusText *text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = FALSE; text->text = buf; return text; } IBusText * ibus_text_new_from_static_string (const gchar *str) { g_assert (str); IBusText *text; text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = TRUE; text->text = (gchar *)str; return text; } IBusText * ibus_text_new_from_printf (const gchar *format, ...) { g_assert (format); gchar *str; IBusText *text; va_list args; va_start (args, format); str = g_strdup_vprintf (format, args); va_end (args); g_return_val_if_fail (str != NULL, NULL); text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = FALSE; text->text = (gchar *)str; return text; } IBusText * ibus_text_new_from_unichar (gunichar c) { IBusText *text; gint len; g_return_val_if_fail (g_unichar_validate (c), NULL); text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = FALSE; text->text = (gchar *)g_malloc (12); len = g_unichar_to_utf8 (c, text->text); text->text[len] = 0; return text; } void ibus_text_append_attribute (IBusText *text, guint type, guint value, guint start_index, gint end_index) { g_assert (IBUS_IS_TEXT (text)); IBusAttribute *attr; if (end_index < 0) { end_index += g_utf8_strlen(text->text, -1) + 1; } if (end_index <= 0) { return; } if (text->attrs == NULL) { text->attrs = ibus_attr_list_new (); } attr = ibus_attribute_new (type, value, start_index, end_index); ibus_attr_list_append (text->attrs, attr); } guint ibus_text_get_length (IBusText *text) { return g_utf8_strlen (text->text, -1); } gboolean ibus_text_get_is_static (IBusText *text) { return text->is_static; } const gchar * ibus_text_get_text (IBusText *text) { return text->text; } IBusAttrList * ibus_text_get_attributes (IBusText *text) { return text->attrs; } void ibus_text_set_attributes (IBusText *text, IBusAttrList *attrs) { if (text->attrs) g_object_unref (text->attrs); text->attrs = attrs; g_object_ref_sink (text->attrs); } ibus-1.5.11/src/ibusobject.c0000644000000000000000000001236412551654123012526 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusobject.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #define IBUS_OBJECT_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_OBJECT, IBusObjectPrivate)) enum { DESTROY, LAST_SIGNAL, }; struct _IBusObjectPrivate { gpointer pad; }; static guint object_signals[LAST_SIGNAL] = { 0 }; // #define DEBUG_MEMORY #ifdef DEBUG_MEMORY static GHashTable *_count_table; static guint _count = 0; #endif /* functions prototype */ static GObject *ibus_object_constructor (GType type, guint n, GObjectConstructParam *args); static void ibus_object_dispose (IBusObject *obj); static void ibus_object_finalize (IBusObject *obj); static void ibus_object_real_destroy (IBusObject *obj); G_DEFINE_TYPE (IBusObject, ibus_object, G_TYPE_INITIALLY_UNOWNED) static void ibus_object_class_init (IBusObjectClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); gobject_class->constructor = ibus_object_constructor; gobject_class->dispose = (GObjectFinalizeFunc) ibus_object_dispose; gobject_class->finalize = (GObjectFinalizeFunc) ibus_object_finalize; class->destroy = ibus_object_real_destroy; /* install signals */ /** * IBusObject::destroy: * @object: An IBusObject. * * Destroy and free an IBusObject * * See also: ibus_object_destroy(). * * Argument @user_data is ignored in this function. */ object_signals[DESTROY] = g_signal_new (I_("destroy"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusObjectClass, destroy), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); g_type_class_add_private (class, sizeof (IBusObjectPrivate)); #ifdef DEBUG_MEMORY _count_table = g_hash_table_new (g_direct_hash, g_direct_equal); #endif } static void ibus_object_init (IBusObject *obj) { obj->flags = 0; obj->priv = IBUS_OBJECT_GET_PRIVATE (obj); } static GObject * ibus_object_constructor (GType type, guint n, GObjectConstructParam *args) { GObject *object; object = G_OBJECT_CLASS (ibus_object_parent_class)->constructor (type, n ,args); #ifdef DEBUG_MEMORY if (object != NULL) { guint count; _count ++; count = GPOINTER_TO_UINT (g_hash_table_lookup (_count_table, (gpointer) type)); g_hash_table_replace (_count_table, (gpointer) type, GUINT_TO_POINTER (++count)); g_debug ("new %s, count = %d, all = %d", g_type_name (type), count, _count); } #endif return object; } static void ibus_object_dispose (IBusObject *obj) { if (! (IBUS_OBJECT_FLAGS (obj) & IBUS_IN_DESTRUCTION)) { IBUS_OBJECT_SET_FLAGS (obj, IBUS_IN_DESTRUCTION); if (! (IBUS_OBJECT_FLAGS (obj) & IBUS_DESTROYED)) { g_signal_emit (obj, object_signals[DESTROY], 0); IBUS_OBJECT_SET_FLAGS (obj, IBUS_DESTROYED); } IBUS_OBJECT_UNSET_FLAGS (obj, IBUS_IN_DESTRUCTION); } G_OBJECT_CLASS(ibus_object_parent_class)->dispose (G_OBJECT (obj)); } static void ibus_object_finalize (IBusObject *obj) { #ifdef DEBUG_MEMORY guint count; _count --; count = GPOINTER_TO_UINT (g_hash_table_lookup (_count_table, (gpointer)G_OBJECT_TYPE (obj))); g_hash_table_replace (_count_table, (gpointer)G_OBJECT_TYPE (obj), GUINT_TO_POINTER (--count)); g_debug ("Finalize %s, count = %d, all = %d", G_OBJECT_TYPE_NAME (obj), count, _count); #endif G_OBJECT_CLASS(ibus_object_parent_class)->finalize (G_OBJECT (obj)); } static void ibus_object_real_destroy (IBusObject *obj) { g_signal_handlers_destroy (obj); } IBusObject * ibus_object_new (void) { GObject *object = g_object_new (IBUS_TYPE_OBJECT, NULL); return IBUS_OBJECT (object); } void ibus_object_destroy (IBusObject *obj) { g_return_if_fail (IBUS_IS_OBJECT (obj)); if (! (IBUS_OBJECT_FLAGS (obj) & IBUS_IN_DESTRUCTION)) { g_object_run_dispose (G_OBJECT (obj)); } } ibus-1.5.11/src/ibusproperty.c0000644000000000000000000005500712551654123013145 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusinternal.h" #include "ibusproperty.h" #include "ibusproplist.h" #include "ibusenumtypes.h" enum { LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_KEY, PROP_ICON, PROP_LABEL, PROP_SYMBOL, PROP_TOOLTIP, PROP_SENSITIVE, PROP_VISIBLE, PROP_PROP_TYPE, PROP_STATE, PROP_SUB_PROPS, }; /* _IBusPropertyPrivate */ struct _IBusPropertyPrivate { gchar *key; gchar *icon; IBusText *label; IBusText *symbol; IBusText *tooltip; gboolean sensitive; gboolean visible; IBusPropType type; IBusPropState state; IBusPropList *sub_props; }; #define IBUS_PROPERTY_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_PROPERTY, IBusPropertyPrivate)) /* functions prototype */ static void ibus_property_set_property (IBusProperty *prop, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_property_get_property (IBusProperty *prop, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_property_destroy (IBusProperty *prop); static gboolean ibus_property_serialize (IBusProperty *prop, GVariantBuilder *builder); static gint ibus_property_deserialize (IBusProperty *prop, GVariant *variant); static gboolean ibus_property_copy (IBusProperty *dest, const IBusProperty *src); G_DEFINE_TYPE (IBusProperty, ibus_property, IBUS_TYPE_SERIALIZABLE) static void ibus_property_class_init (IBusPropertyClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); g_type_class_add_private (class, sizeof (IBusPropertyPrivate)); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_property_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_property_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_property_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_property_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_property_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_property_copy; /* install properties */ /** * IBusPropert:key: * * The key of property */ g_object_class_install_property (gobject_class, PROP_KEY, g_param_spec_string ("key", "key", "The key of property", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusPropert:icon: * * The icon of property */ g_object_class_install_property (gobject_class, PROP_ICON, g_param_spec_string ("icon", "icon", "The icon of property", "", G_PARAM_READWRITE)); /** * IBusPropert:label: * * The label of property */ g_object_class_install_property (gobject_class, PROP_LABEL, g_param_spec_object("label", "label", "The label of property", IBUS_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusPropert:symbol: * * The symbol of property */ g_object_class_install_property (gobject_class, PROP_SYMBOL, g_param_spec_object("symbol", "symbol", "The symbol of property", IBUS_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusPropert:tooltip: * * The tooltip of property */ g_object_class_install_property (gobject_class, PROP_TOOLTIP, g_param_spec_object("tooltip", "tooltip", "The tooltip of property", IBUS_TYPE_TEXT, G_PARAM_READWRITE)); /** * IBusPropert:sensitive: * * The sensitive of property */ g_object_class_install_property (gobject_class, PROP_SENSITIVE, g_param_spec_boolean("sensitive", "sensitive", "The sensitive of property", TRUE, G_PARAM_READWRITE)); /** * IBusPropert:visible: * * The visible of property */ g_object_class_install_property (gobject_class, PROP_VISIBLE, g_param_spec_boolean("visible", "visible", "The visible of property", TRUE, G_PARAM_READWRITE)); /** * IBusPropert:type: * * The type of property */ g_object_class_install_property (gobject_class, PROP_PROP_TYPE, g_param_spec_enum("prop-type", "prop-type", "The type of property", IBUS_TYPE_PROP_TYPE, PROP_TYPE_NORMAL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusPropert:state: * * The state of property */ g_object_class_install_property (gobject_class, PROP_STATE, g_param_spec_enum("state", "state", "The state of property", IBUS_TYPE_PROP_STATE, PROP_STATE_UNCHECKED, G_PARAM_READWRITE)); /** * IBusPropert:sub-props: * * The sub properties of property */ g_object_class_install_property (gobject_class, PROP_SUB_PROPS, g_param_spec_object("sub-props", "sub properties", "The sub properties of property", IBUS_TYPE_PROP_LIST, G_PARAM_READWRITE)); } static void ibus_property_init (IBusProperty *prop) { prop->priv = IBUS_PROPERTY_GET_PRIVATE (prop); ibus_property_set_label (prop, NULL); ibus_property_set_symbol (prop, NULL); ibus_property_set_tooltip (prop, NULL); ibus_property_set_sub_props (prop, NULL); } static void ibus_property_set_property (IBusProperty *prop, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_KEY: g_assert (prop->priv->key == NULL); prop->priv->key = g_value_dup_string (value); break; case PROP_ICON: ibus_property_set_icon (prop, g_value_get_string (value)); break; case PROP_LABEL: ibus_property_set_label (prop, g_value_get_object (value)); break; case PROP_SYMBOL: ibus_property_set_symbol (prop, g_value_get_object (value)); break; case PROP_TOOLTIP: ibus_property_set_tooltip (prop, g_value_get_object (value)); break; case PROP_SENSITIVE: ibus_property_set_sensitive (prop, g_value_get_boolean (value)); break; case PROP_VISIBLE: ibus_property_set_visible (prop, g_value_get_boolean (value)); break; case PROP_PROP_TYPE: prop->priv->type = g_value_get_enum (value); break; case PROP_STATE: ibus_property_set_state (prop, g_value_get_enum (value)); break; case PROP_SUB_PROPS: ibus_property_set_sub_props (prop, (IBusPropList *)g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (prop, prop_id, pspec); } } static void ibus_property_get_property (IBusProperty *prop, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_KEY: g_value_set_string (value, ibus_property_get_key (prop)); break; case PROP_ICON: g_value_set_string (value, ibus_property_get_icon (prop)); break; case PROP_LABEL: g_value_set_object (value, ibus_property_get_label (prop)); break; case PROP_SYMBOL: g_value_set_object (value, ibus_property_get_symbol (prop)); break; case PROP_TOOLTIP: g_value_set_object (value, ibus_property_get_tooltip (prop)); break; case PROP_SENSITIVE: g_value_set_boolean (value, ibus_property_get_sensitive (prop)); break; case PROP_VISIBLE: g_value_set_boolean (value, ibus_property_get_visible (prop)); break; case PROP_PROP_TYPE: g_value_set_enum (value, ibus_property_get_prop_type (prop)); break; case PROP_STATE: g_value_set_enum (value, ibus_property_get_state (prop)); break; case PROP_SUB_PROPS: g_value_set_object (value, ibus_property_get_sub_props (prop)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (prop, prop_id, pspec); } } static void ibus_property_destroy (IBusProperty *prop) { g_free (prop->priv->key); prop->priv->key = NULL; g_free (prop->priv->icon); prop->priv->icon = NULL; if (prop->priv->label) { g_object_unref (prop->priv->label); prop->priv->label = NULL; } if (prop->priv->symbol) { g_object_unref (prop->priv->symbol); prop->priv->symbol = NULL; } if (prop->priv->tooltip) { g_object_unref (prop->priv->tooltip); prop->priv->tooltip = NULL; } if (prop->priv->sub_props) { g_object_unref (prop->priv->sub_props); prop->priv->sub_props = NULL; } IBUS_OBJECT_CLASS (ibus_property_parent_class)->destroy ((IBusObject *)prop); } gboolean ibus_property_serialize (IBusProperty *prop, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->serialize ((IBusSerializable *) prop, builder); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_PROPERTY (prop), FALSE); g_variant_builder_add (builder, "s", prop->priv->key); g_variant_builder_add (builder, "u", prop->priv->type); g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->priv->label)); g_variant_builder_add (builder, "s", prop->priv->icon); g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->priv->tooltip)); g_variant_builder_add (builder, "b", prop->priv->sensitive); g_variant_builder_add (builder, "b", prop->priv->visible); g_variant_builder_add (builder, "u", prop->priv->state); g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->priv->sub_props)); /* Keep the serialized order for the compatibility when add new members. */ g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->priv->symbol)); return TRUE; } static gint ibus_property_deserialize (IBusProperty *prop, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, variant); g_return_val_if_fail (retval, 0); ibus_g_variant_get_child_string (variant, retval++, &prop->priv->key); g_variant_get_child (variant, retval++, "u", &prop->priv->type); GVariant *subvar = g_variant_get_child_value (variant, retval++); if (prop->priv->label != NULL) { g_object_unref (prop->priv->label); } prop->priv->label = IBUS_TEXT (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->label); g_variant_unref (subvar); ibus_g_variant_get_child_string (variant, retval++, &prop->priv->icon); subvar = g_variant_get_child_value (variant, retval++); if (prop->priv->tooltip != NULL) { g_object_unref (prop->priv->tooltip); } prop->priv->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->tooltip); g_variant_unref (subvar); g_variant_get_child (variant, retval++, "b", &prop->priv->sensitive); g_variant_get_child (variant, retval++, "b", &prop->priv->visible); g_variant_get_child (variant, retval++, "u", &prop->priv->state); subvar = g_variant_get_child_value (variant, retval++); if (prop->priv->sub_props != NULL) { g_object_unref (prop->priv->sub_props); } prop->priv->sub_props = IBUS_PROP_LIST (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->sub_props); g_variant_unref (subvar); /* Keep the serialized order for the compatibility when add new members. */ subvar = g_variant_get_child_value (variant, retval++); if (prop->priv->symbol != NULL) { g_object_unref (prop->priv->symbol); } prop->priv->symbol = IBUS_TEXT (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->symbol); g_variant_unref (subvar); return retval; } static gboolean ibus_property_copy (IBusProperty *dest, const IBusProperty *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->copy ((IBusSerializable *) dest, (IBusSerializable *) src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_PROPERTY (dest), FALSE); g_return_val_if_fail (IBUS_IS_PROPERTY (src), FALSE); dest->priv->key = g_strdup (src->priv->key); dest->priv->icon = g_strdup (src->priv->icon); if (src->priv->label) { dest->priv->label = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->priv->label); } else dest->priv->label = ibus_text_new_from_static_string (""); if (src->priv->symbol) { dest->priv->symbol = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->priv->symbol); } else dest->priv->symbol = ibus_text_new_from_static_string (""); if (src->priv->tooltip) { dest->priv->tooltip = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->priv->tooltip); } else dest->priv->tooltip = ibus_text_new_from_static_string (""); dest->priv->sensitive = src->priv->sensitive; dest->priv->visible = src->priv->visible; dest->priv->type = src->priv->type; dest->priv->state = src->priv->state; dest->priv->sub_props = (IBusPropList *) ibus_serializable_copy ((IBusSerializable *) src->priv->sub_props); return TRUE; } IBusProperty * ibus_property_new (const gchar *key, IBusPropType type, IBusText *label, const gchar *icon, IBusText *tooltip, gboolean sensitive, gboolean visible, IBusPropState state, IBusPropList *props) { g_return_val_if_fail (key != NULL, NULL); g_return_val_if_fail (type >= PROP_TYPE_NORMAL && type <= PROP_TYPE_SEPARATOR, NULL); return ibus_property_new_varargs ("key", key, "prop-type", type, "label", label, "icon", icon, "tooltip", tooltip, "sensitive", sensitive, "visible", visible, "state", state, "sub-props", props, NULL); } IBusProperty * ibus_property_new_varargs (const gchar *first_property_name, ...) { va_list var_args; IBusProperty *prop; g_assert (first_property_name); va_start (var_args, first_property_name); prop = (IBusProperty *) g_object_new_valist (IBUS_TYPE_PROPERTY, first_property_name, var_args); va_end (var_args); g_assert (prop->priv->key); g_assert (prop->priv->type >= PROP_TYPE_NORMAL && prop->priv->type <= PROP_TYPE_SEPARATOR); return prop; } #define IBUS_PROPERTY_GET_FIELD(field, return_type) \ return_type \ ibus_property_get_ ## field (IBusProperty *prop) \ { \ return prop->priv->field; \ } IBUS_PROPERTY_GET_FIELD (key, const gchar *) IBUS_PROPERTY_GET_FIELD (icon, const gchar *) IBUS_PROPERTY_GET_FIELD (label, IBusText *) IBUS_PROPERTY_GET_FIELD (symbol, IBusText *) IBUS_PROPERTY_GET_FIELD (tooltip, IBusText *) IBUS_PROPERTY_GET_FIELD (sensitive, gboolean) IBUS_PROPERTY_GET_FIELD (visible, gboolean) IBUS_PROPERTY_GET_FIELD (state, IBusPropState) IBUS_PROPERTY_GET_FIELD (sub_props, IBusPropList *) #undef IBUS_PROPERTY_GET_FIELD /* ibus_property_get_type() exists */ IBusPropType ibus_property_get_prop_type (IBusProperty *prop) { g_assert (IBUS_IS_PROPERTY (prop)); return prop->priv->type; } void ibus_property_set_label (IBusProperty *prop, IBusText *label) { g_assert (IBUS_IS_PROPERTY (prop)); g_return_if_fail (label == NULL || IBUS_IS_TEXT (label)); if (prop->priv->label) { g_object_unref (prop->priv->label); } if (label == NULL) { prop->priv->label = ibus_text_new_from_static_string (""); } else { prop->priv->label = g_object_ref_sink (label); } } void ibus_property_set_symbol (IBusProperty *prop, IBusText *symbol) { g_assert (IBUS_IS_PROPERTY (prop)); g_return_if_fail (symbol == NULL || IBUS_IS_TEXT (symbol)); if (prop->priv->symbol) { g_object_unref (prop->priv->symbol); } if (symbol == NULL) { prop->priv->symbol = ibus_text_new_from_static_string (""); } else { prop->priv->symbol = g_object_ref_sink (symbol); } } void ibus_property_set_icon (IBusProperty *prop, const gchar *icon) { g_assert (IBUS_IS_PROPERTY (prop)); g_free (prop->priv->icon); prop->priv->icon = g_strdup (icon != NULL ? icon : ""); } void ibus_property_set_tooltip (IBusProperty *prop, IBusText *tooltip) { g_assert (IBUS_IS_PROPERTY (prop)); g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); IBusPropertyPrivate *priv = prop->priv; if (priv->tooltip) { g_object_unref (priv->tooltip); } if (tooltip == NULL) { priv->tooltip = ibus_text_new_from_static_string (""); g_object_ref_sink (priv->tooltip); } else { priv->tooltip = tooltip; g_object_ref_sink (priv->tooltip); } } void ibus_property_set_sensitive (IBusProperty *prop, gboolean sensitive) { g_assert (IBUS_IS_PROPERTY (prop)); prop->priv->sensitive = sensitive; } void ibus_property_set_visible (IBusProperty *prop, gboolean visible) { g_assert (IBUS_IS_PROPERTY (prop)); prop->priv->visible = visible; } void ibus_property_set_state (IBusProperty *prop, IBusPropState state) { g_assert (IBUS_IS_PROPERTY (prop)); g_assert (state == PROP_STATE_UNCHECKED || state == PROP_STATE_CHECKED || state == PROP_STATE_INCONSISTENT); prop->priv->state = state; } void ibus_property_set_sub_props (IBusProperty *prop, IBusPropList *prop_list) { g_assert (IBUS_IS_PROPERTY (prop)); g_assert (IBUS_IS_PROP_LIST (prop_list) || prop_list == NULL); IBusPropertyPrivate *priv = prop->priv; if (priv->sub_props) { g_object_unref (priv->sub_props); } if (prop_list) { priv->sub_props = prop_list; g_object_ref_sink (prop_list); } else { priv->sub_props = ibus_prop_list_new (); g_object_ref_sink (priv->sub_props); } } gboolean ibus_property_update (IBusProperty *prop, IBusProperty *prop_update) { g_assert (IBUS_IS_PROPERTY (prop)); g_assert (IBUS_IS_PROPERTY (prop_update)); IBusPropertyPrivate *priv = prop->priv; IBusPropertyPrivate *priv_update = prop_update->priv; if (g_strcmp0 (priv->key, priv_update->key) != 0) { return ibus_prop_list_update_property (priv->sub_props, prop_update); } /* Do not support update prop type */ g_assert (priv->type == priv_update->type); ibus_property_set_icon (prop, ibus_property_get_icon (prop_update)); ibus_property_set_label (prop, ibus_property_get_label (prop_update)); ibus_property_set_symbol (prop, ibus_property_get_symbol (prop_update)); ibus_property_set_tooltip (prop, ibus_property_get_tooltip (prop_update)); ibus_property_set_visible (prop, ibus_property_get_visible (prop_update)); ibus_property_set_state (prop, ibus_property_get_state (prop_update)); ibus_property_set_sensitive (prop, ibus_property_get_sensitive (prop_update)); /* Do not support update sub props */ return TRUE; } ibus-1.5.11/src/ibuskeysyms.h0000644000000000000000000023022412551654123012766 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_KEYSYMS_H__ #define __IBUS_KEYSYMS_H__ #define IBUS_KEY_VoidSymbol 0xffffff #define IBUS_KEY_BackSpace 0xff08 #define IBUS_KEY_Tab 0xff09 #define IBUS_KEY_Linefeed 0xff0a #define IBUS_KEY_Clear 0xff0b #define IBUS_KEY_Return 0xff0d #define IBUS_KEY_Pause 0xff13 #define IBUS_KEY_Scroll_Lock 0xff14 #define IBUS_KEY_Sys_Req 0xff15 #define IBUS_KEY_Escape 0xff1b #define IBUS_KEY_Delete 0xffff #define IBUS_KEY_Multi_key 0xff20 #define IBUS_KEY_Codeinput 0xff37 #define IBUS_KEY_SingleCandidate 0xff3c #define IBUS_KEY_MultipleCandidate 0xff3d #define IBUS_KEY_PreviousCandidate 0xff3e #define IBUS_KEY_Kanji 0xff21 #define IBUS_KEY_Muhenkan 0xff22 #define IBUS_KEY_Henkan_Mode 0xff23 #define IBUS_KEY_Henkan 0xff23 #define IBUS_KEY_Romaji 0xff24 #define IBUS_KEY_Hiragana 0xff25 #define IBUS_KEY_Katakana 0xff26 #define IBUS_KEY_Hiragana_Katakana 0xff27 #define IBUS_KEY_Zenkaku 0xff28 #define IBUS_KEY_Hankaku 0xff29 #define IBUS_KEY_Zenkaku_Hankaku 0xff2a #define IBUS_KEY_Touroku 0xff2b #define IBUS_KEY_Massyo 0xff2c #define IBUS_KEY_Kana_Lock 0xff2d #define IBUS_KEY_Kana_Shift 0xff2e #define IBUS_KEY_Eisu_Shift 0xff2f #define IBUS_KEY_Eisu_toggle 0xff30 #define IBUS_KEY_Kanji_Bangou 0xff37 #define IBUS_KEY_Zen_Koho 0xff3d #define IBUS_KEY_Mae_Koho 0xff3e #define IBUS_KEY_Home 0xff50 #define IBUS_KEY_Left 0xff51 #define IBUS_KEY_Up 0xff52 #define IBUS_KEY_Right 0xff53 #define IBUS_KEY_Down 0xff54 #define IBUS_KEY_Prior 0xff55 #define IBUS_KEY_Page_Up 0xff55 #define IBUS_KEY_Next 0xff56 #define IBUS_KEY_Page_Down 0xff56 #define IBUS_KEY_End 0xff57 #define IBUS_KEY_Begin 0xff58 #define IBUS_KEY_Select 0xff60 #define IBUS_KEY_Print 0xff61 #define IBUS_KEY_Execute 0xff62 #define IBUS_KEY_Insert 0xff63 #define IBUS_KEY_Undo 0xff65 #define IBUS_KEY_Redo 0xff66 #define IBUS_KEY_Menu 0xff67 #define IBUS_KEY_Find 0xff68 #define IBUS_KEY_Cancel 0xff69 #define IBUS_KEY_Help 0xff6a #define IBUS_KEY_Break 0xff6b #define IBUS_KEY_Mode_switch 0xff7e #define IBUS_KEY_script_switch 0xff7e #define IBUS_KEY_Num_Lock 0xff7f #define IBUS_KEY_KP_Space 0xff80 #define IBUS_KEY_KP_Tab 0xff89 #define IBUS_KEY_KP_Enter 0xff8d #define IBUS_KEY_KP_F1 0xff91 #define IBUS_KEY_KP_F2 0xff92 #define IBUS_KEY_KP_F3 0xff93 #define IBUS_KEY_KP_F4 0xff94 #define IBUS_KEY_KP_Home 0xff95 #define IBUS_KEY_KP_Left 0xff96 #define IBUS_KEY_KP_Up 0xff97 #define IBUS_KEY_KP_Right 0xff98 #define IBUS_KEY_KP_Down 0xff99 #define IBUS_KEY_KP_Prior 0xff9a #define IBUS_KEY_KP_Page_Up 0xff9a #define IBUS_KEY_KP_Next 0xff9b #define IBUS_KEY_KP_Page_Down 0xff9b #define IBUS_KEY_KP_End 0xff9c #define IBUS_KEY_KP_Begin 0xff9d #define IBUS_KEY_KP_Insert 0xff9e #define IBUS_KEY_KP_Delete 0xff9f #define IBUS_KEY_KP_Equal 0xffbd #define IBUS_KEY_KP_Multiply 0xffaa #define IBUS_KEY_KP_Add 0xffab #define IBUS_KEY_KP_Separator 0xffac #define IBUS_KEY_KP_Subtract 0xffad #define IBUS_KEY_KP_Decimal 0xffae #define IBUS_KEY_KP_Divide 0xffaf #define IBUS_KEY_KP_0 0xffb0 #define IBUS_KEY_KP_1 0xffb1 #define IBUS_KEY_KP_2 0xffb2 #define IBUS_KEY_KP_3 0xffb3 #define IBUS_KEY_KP_4 0xffb4 #define IBUS_KEY_KP_5 0xffb5 #define IBUS_KEY_KP_6 0xffb6 #define IBUS_KEY_KP_7 0xffb7 #define IBUS_KEY_KP_8 0xffb8 #define IBUS_KEY_KP_9 0xffb9 #define IBUS_KEY_F1 0xffbe #define IBUS_KEY_F2 0xffbf #define IBUS_KEY_F3 0xffc0 #define IBUS_KEY_F4 0xffc1 #define IBUS_KEY_F5 0xffc2 #define IBUS_KEY_F6 0xffc3 #define IBUS_KEY_F7 0xffc4 #define IBUS_KEY_F8 0xffc5 #define IBUS_KEY_F9 0xffc6 #define IBUS_KEY_F10 0xffc7 #define IBUS_KEY_F11 0xffc8 #define IBUS_KEY_L1 0xffc8 #define IBUS_KEY_F12 0xffc9 #define IBUS_KEY_L2 0xffc9 #define IBUS_KEY_F13 0xffca #define IBUS_KEY_L3 0xffca #define IBUS_KEY_F14 0xffcb #define IBUS_KEY_L4 0xffcb #define IBUS_KEY_F15 0xffcc #define IBUS_KEY_L5 0xffcc #define IBUS_KEY_F16 0xffcd #define IBUS_KEY_L6 0xffcd #define IBUS_KEY_F17 0xffce #define IBUS_KEY_L7 0xffce #define IBUS_KEY_F18 0xffcf #define IBUS_KEY_L8 0xffcf #define IBUS_KEY_F19 0xffd0 #define IBUS_KEY_L9 0xffd0 #define IBUS_KEY_F20 0xffd1 #define IBUS_KEY_L10 0xffd1 #define IBUS_KEY_F21 0xffd2 #define IBUS_KEY_R1 0xffd2 #define IBUS_KEY_F22 0xffd3 #define IBUS_KEY_R2 0xffd3 #define IBUS_KEY_F23 0xffd4 #define IBUS_KEY_R3 0xffd4 #define IBUS_KEY_F24 0xffd5 #define IBUS_KEY_R4 0xffd5 #define IBUS_KEY_F25 0xffd6 #define IBUS_KEY_R5 0xffd6 #define IBUS_KEY_F26 0xffd7 #define IBUS_KEY_R6 0xffd7 #define IBUS_KEY_F27 0xffd8 #define IBUS_KEY_R7 0xffd8 #define IBUS_KEY_F28 0xffd9 #define IBUS_KEY_R8 0xffd9 #define IBUS_KEY_F29 0xffda #define IBUS_KEY_R9 0xffda #define IBUS_KEY_F30 0xffdb #define IBUS_KEY_R10 0xffdb #define IBUS_KEY_F31 0xffdc #define IBUS_KEY_R11 0xffdc #define IBUS_KEY_F32 0xffdd #define IBUS_KEY_R12 0xffdd #define IBUS_KEY_F33 0xffde #define IBUS_KEY_R13 0xffde #define IBUS_KEY_F34 0xffdf #define IBUS_KEY_R14 0xffdf #define IBUS_KEY_F35 0xffe0 #define IBUS_KEY_R15 0xffe0 #define IBUS_KEY_Shift_L 0xffe1 #define IBUS_KEY_Shift_R 0xffe2 #define IBUS_KEY_Control_L 0xffe3 #define IBUS_KEY_Control_R 0xffe4 #define IBUS_KEY_Caps_Lock 0xffe5 #define IBUS_KEY_Shift_Lock 0xffe6 #define IBUS_KEY_Meta_L 0xffe7 #define IBUS_KEY_Meta_R 0xffe8 #define IBUS_KEY_Alt_L 0xffe9 #define IBUS_KEY_Alt_R 0xffea #define IBUS_KEY_Super_L 0xffeb #define IBUS_KEY_Super_R 0xffec #define IBUS_KEY_Hyper_L 0xffed #define IBUS_KEY_Hyper_R 0xffee #define IBUS_KEY_ISO_Lock 0xfe01 #define IBUS_KEY_ISO_Level2_Latch 0xfe02 #define IBUS_KEY_ISO_Level3_Shift 0xfe03 #define IBUS_KEY_ISO_Level3_Latch 0xfe04 #define IBUS_KEY_ISO_Level3_Lock 0xfe05 #define IBUS_KEY_ISO_Level5_Shift 0xfe11 #define IBUS_KEY_ISO_Level5_Latch 0xfe12 #define IBUS_KEY_ISO_Level5_Lock 0xfe13 #define IBUS_KEY_ISO_Group_Shift 0xff7e #define IBUS_KEY_ISO_Group_Latch 0xfe06 #define IBUS_KEY_ISO_Group_Lock 0xfe07 #define IBUS_KEY_ISO_Next_Group 0xfe08 #define IBUS_KEY_ISO_Next_Group_Lock 0xfe09 #define IBUS_KEY_ISO_Prev_Group 0xfe0a #define IBUS_KEY_ISO_Prev_Group_Lock 0xfe0b #define IBUS_KEY_ISO_First_Group 0xfe0c #define IBUS_KEY_ISO_First_Group_Lock 0xfe0d #define IBUS_KEY_ISO_Last_Group 0xfe0e #define IBUS_KEY_ISO_Last_Group_Lock 0xfe0f #define IBUS_KEY_ISO_Left_Tab 0xfe20 #define IBUS_KEY_ISO_Move_Line_Up 0xfe21 #define IBUS_KEY_ISO_Move_Line_Down 0xfe22 #define IBUS_KEY_ISO_Partial_Line_Up 0xfe23 #define IBUS_KEY_ISO_Partial_Line_Down 0xfe24 #define IBUS_KEY_ISO_Partial_Space_Left 0xfe25 #define IBUS_KEY_ISO_Partial_Space_Right 0xfe26 #define IBUS_KEY_ISO_Set_Margin_Left 0xfe27 #define IBUS_KEY_ISO_Set_Margin_Right 0xfe28 #define IBUS_KEY_ISO_Release_Margin_Left 0xfe29 #define IBUS_KEY_ISO_Release_Margin_Right 0xfe2a #define IBUS_KEY_ISO_Release_Both_Margins 0xfe2b #define IBUS_KEY_ISO_Fast_Cursor_Left 0xfe2c #define IBUS_KEY_ISO_Fast_Cursor_Right 0xfe2d #define IBUS_KEY_ISO_Fast_Cursor_Up 0xfe2e #define IBUS_KEY_ISO_Fast_Cursor_Down 0xfe2f #define IBUS_KEY_ISO_Continuous_Underline 0xfe30 #define IBUS_KEY_ISO_Discontinuous_Underline 0xfe31 #define IBUS_KEY_ISO_Emphasize 0xfe32 #define IBUS_KEY_ISO_Center_Object 0xfe33 #define IBUS_KEY_ISO_Enter 0xfe34 #define IBUS_KEY_dead_grave 0xfe50 #define IBUS_KEY_dead_acute 0xfe51 #define IBUS_KEY_dead_circumflex 0xfe52 #define IBUS_KEY_dead_tilde 0xfe53 #define IBUS_KEY_dead_perispomeni 0xfe53 #define IBUS_KEY_dead_macron 0xfe54 #define IBUS_KEY_dead_breve 0xfe55 #define IBUS_KEY_dead_abovedot 0xfe56 #define IBUS_KEY_dead_diaeresis 0xfe57 #define IBUS_KEY_dead_abovering 0xfe58 #define IBUS_KEY_dead_doubleacute 0xfe59 #define IBUS_KEY_dead_caron 0xfe5a #define IBUS_KEY_dead_cedilla 0xfe5b #define IBUS_KEY_dead_ogonek 0xfe5c #define IBUS_KEY_dead_iota 0xfe5d #define IBUS_KEY_dead_voiced_sound 0xfe5e #define IBUS_KEY_dead_semivoiced_sound 0xfe5f #define IBUS_KEY_dead_belowdot 0xfe60 #define IBUS_KEY_dead_hook 0xfe61 #define IBUS_KEY_dead_horn 0xfe62 #define IBUS_KEY_dead_stroke 0xfe63 #define IBUS_KEY_dead_abovecomma 0xfe64 #define IBUS_KEY_dead_psili 0xfe64 #define IBUS_KEY_dead_abovereversedcomma 0xfe65 #define IBUS_KEY_dead_dasia 0xfe65 #define IBUS_KEY_dead_doublegrave 0xfe66 #define IBUS_KEY_dead_belowring 0xfe67 #define IBUS_KEY_dead_belowmacron 0xfe68 #define IBUS_KEY_dead_belowcircumflex 0xfe69 #define IBUS_KEY_dead_belowtilde 0xfe6a #define IBUS_KEY_dead_belowbreve 0xfe6b #define IBUS_KEY_dead_belowdiaeresis 0xfe6c #define IBUS_KEY_dead_invertedbreve 0xfe6d #define IBUS_KEY_dead_belowcomma 0xfe6e #define IBUS_KEY_dead_currency 0xfe6f #define IBUS_KEY_dead_a 0xfe80 #define IBUS_KEY_dead_A 0xfe81 #define IBUS_KEY_dead_e 0xfe82 #define IBUS_KEY_dead_E 0xfe83 #define IBUS_KEY_dead_i 0xfe84 #define IBUS_KEY_dead_I 0xfe85 #define IBUS_KEY_dead_o 0xfe86 #define IBUS_KEY_dead_O 0xfe87 #define IBUS_KEY_dead_u 0xfe88 #define IBUS_KEY_dead_U 0xfe89 #define IBUS_KEY_dead_small_schwa 0xfe8a #define IBUS_KEY_dead_capital_schwa 0xfe8b #define IBUS_KEY_dead_greek 0xfe8c #define IBUS_KEY_First_Virtual_Screen 0xfed0 #define IBUS_KEY_Prev_Virtual_Screen 0xfed1 #define IBUS_KEY_Next_Virtual_Screen 0xfed2 #define IBUS_KEY_Last_Virtual_Screen 0xfed4 #define IBUS_KEY_Terminate_Server 0xfed5 #define IBUS_KEY_AccessX_Enable 0xfe70 #define IBUS_KEY_AccessX_Feedback_Enable 0xfe71 #define IBUS_KEY_RepeatKeys_Enable 0xfe72 #define IBUS_KEY_SlowKeys_Enable 0xfe73 #define IBUS_KEY_BounceKeys_Enable 0xfe74 #define IBUS_KEY_StickyKeys_Enable 0xfe75 #define IBUS_KEY_MouseKeys_Enable 0xfe76 #define IBUS_KEY_MouseKeys_Accel_Enable 0xfe77 #define IBUS_KEY_Overlay1_Enable 0xfe78 #define IBUS_KEY_Overlay2_Enable 0xfe79 #define IBUS_KEY_AudibleBell_Enable 0xfe7a #define IBUS_KEY_Pointer_Left 0xfee0 #define IBUS_KEY_Pointer_Right 0xfee1 #define IBUS_KEY_Pointer_Up 0xfee2 #define IBUS_KEY_Pointer_Down 0xfee3 #define IBUS_KEY_Pointer_UpLeft 0xfee4 #define IBUS_KEY_Pointer_UpRight 0xfee5 #define IBUS_KEY_Pointer_DownLeft 0xfee6 #define IBUS_KEY_Pointer_DownRight 0xfee7 #define IBUS_KEY_Pointer_Button_Dflt 0xfee8 #define IBUS_KEY_Pointer_Button1 0xfee9 #define IBUS_KEY_Pointer_Button2 0xfeea #define IBUS_KEY_Pointer_Button3 0xfeeb #define IBUS_KEY_Pointer_Button4 0xfeec #define IBUS_KEY_Pointer_Button5 0xfeed #define IBUS_KEY_Pointer_DblClick_Dflt 0xfeee #define IBUS_KEY_Pointer_DblClick1 0xfeef #define IBUS_KEY_Pointer_DblClick2 0xfef0 #define IBUS_KEY_Pointer_DblClick3 0xfef1 #define IBUS_KEY_Pointer_DblClick4 0xfef2 #define IBUS_KEY_Pointer_DblClick5 0xfef3 #define IBUS_KEY_Pointer_Drag_Dflt 0xfef4 #define IBUS_KEY_Pointer_Drag1 0xfef5 #define IBUS_KEY_Pointer_Drag2 0xfef6 #define IBUS_KEY_Pointer_Drag3 0xfef7 #define IBUS_KEY_Pointer_Drag4 0xfef8 #define IBUS_KEY_Pointer_Drag5 0xfefd #define IBUS_KEY_Pointer_EnableKeys 0xfef9 #define IBUS_KEY_Pointer_Accelerate 0xfefa #define IBUS_KEY_Pointer_DfltBtnNext 0xfefb #define IBUS_KEY_Pointer_DfltBtnPrev 0xfefc #define IBUS_KEY_ch 0xfea0 #define IBUS_KEY_Ch 0xfea1 #define IBUS_KEY_CH 0xfea2 #define IBUS_KEY_c_h 0xfea3 #define IBUS_KEY_C_h 0xfea4 #define IBUS_KEY_C_H 0xfea5 #define IBUS_KEY_3270_Duplicate 0xfd01 #define IBUS_KEY_3270_FieldMark 0xfd02 #define IBUS_KEY_3270_Right2 0xfd03 #define IBUS_KEY_3270_Left2 0xfd04 #define IBUS_KEY_3270_BackTab 0xfd05 #define IBUS_KEY_3270_EraseEOF 0xfd06 #define IBUS_KEY_3270_EraseInput 0xfd07 #define IBUS_KEY_3270_Reset 0xfd08 #define IBUS_KEY_3270_Quit 0xfd09 #define IBUS_KEY_3270_PA1 0xfd0a #define IBUS_KEY_3270_PA2 0xfd0b #define IBUS_KEY_3270_PA3 0xfd0c #define IBUS_KEY_3270_Test 0xfd0d #define IBUS_KEY_3270_Attn 0xfd0e #define IBUS_KEY_3270_CursorBlink 0xfd0f #define IBUS_KEY_3270_AltCursor 0xfd10 #define IBUS_KEY_3270_KeyClick 0xfd11 #define IBUS_KEY_3270_Jump 0xfd12 #define IBUS_KEY_3270_Ident 0xfd13 #define IBUS_KEY_3270_Rule 0xfd14 #define IBUS_KEY_3270_Copy 0xfd15 #define IBUS_KEY_3270_Play 0xfd16 #define IBUS_KEY_3270_Setup 0xfd17 #define IBUS_KEY_3270_Record 0xfd18 #define IBUS_KEY_3270_ChangeScreen 0xfd19 #define IBUS_KEY_3270_DeleteWord 0xfd1a #define IBUS_KEY_3270_ExSelect 0xfd1b #define IBUS_KEY_3270_CursorSelect 0xfd1c #define IBUS_KEY_3270_PrintScreen 0xfd1d #define IBUS_KEY_3270_Enter 0xfd1e #define IBUS_KEY_space 0x020 #define IBUS_KEY_exclam 0x021 #define IBUS_KEY_quotedbl 0x022 #define IBUS_KEY_numbersign 0x023 #define IBUS_KEY_dollar 0x024 #define IBUS_KEY_percent 0x025 #define IBUS_KEY_ampersand 0x026 #define IBUS_KEY_apostrophe 0x027 #define IBUS_KEY_quoteright 0x027 #define IBUS_KEY_parenleft 0x028 #define IBUS_KEY_parenright 0x029 #define IBUS_KEY_asterisk 0x02a #define IBUS_KEY_plus 0x02b #define IBUS_KEY_comma 0x02c #define IBUS_KEY_minus 0x02d #define IBUS_KEY_period 0x02e #define IBUS_KEY_slash 0x02f #define IBUS_KEY_0 0x030 #define IBUS_KEY_1 0x031 #define IBUS_KEY_2 0x032 #define IBUS_KEY_3 0x033 #define IBUS_KEY_4 0x034 #define IBUS_KEY_5 0x035 #define IBUS_KEY_6 0x036 #define IBUS_KEY_7 0x037 #define IBUS_KEY_8 0x038 #define IBUS_KEY_9 0x039 #define IBUS_KEY_colon 0x03a #define IBUS_KEY_semicolon 0x03b #define IBUS_KEY_less 0x03c #define IBUS_KEY_equal 0x03d #define IBUS_KEY_greater 0x03e #define IBUS_KEY_question 0x03f #define IBUS_KEY_at 0x040 #define IBUS_KEY_A 0x041 #define IBUS_KEY_B 0x042 #define IBUS_KEY_C 0x043 #define IBUS_KEY_D 0x044 #define IBUS_KEY_E 0x045 #define IBUS_KEY_F 0x046 #define IBUS_KEY_G 0x047 #define IBUS_KEY_H 0x048 #define IBUS_KEY_I 0x049 #define IBUS_KEY_J 0x04a #define IBUS_KEY_K 0x04b #define IBUS_KEY_L 0x04c #define IBUS_KEY_M 0x04d #define IBUS_KEY_N 0x04e #define IBUS_KEY_O 0x04f #define IBUS_KEY_P 0x050 #define IBUS_KEY_Q 0x051 #define IBUS_KEY_R 0x052 #define IBUS_KEY_S 0x053 #define IBUS_KEY_T 0x054 #define IBUS_KEY_U 0x055 #define IBUS_KEY_V 0x056 #define IBUS_KEY_W 0x057 #define IBUS_KEY_X 0x058 #define IBUS_KEY_Y 0x059 #define IBUS_KEY_Z 0x05a #define IBUS_KEY_bracketleft 0x05b #define IBUS_KEY_backslash 0x05c #define IBUS_KEY_bracketright 0x05d #define IBUS_KEY_asciicircum 0x05e #define IBUS_KEY_underscore 0x05f #define IBUS_KEY_grave 0x060 #define IBUS_KEY_quoteleft 0x060 #define IBUS_KEY_a 0x061 #define IBUS_KEY_b 0x062 #define IBUS_KEY_c 0x063 #define IBUS_KEY_d 0x064 #define IBUS_KEY_e 0x065 #define IBUS_KEY_f 0x066 #define IBUS_KEY_g 0x067 #define IBUS_KEY_h 0x068 #define IBUS_KEY_i 0x069 #define IBUS_KEY_j 0x06a #define IBUS_KEY_k 0x06b #define IBUS_KEY_l 0x06c #define IBUS_KEY_m 0x06d #define IBUS_KEY_n 0x06e #define IBUS_KEY_o 0x06f #define IBUS_KEY_p 0x070 #define IBUS_KEY_q 0x071 #define IBUS_KEY_r 0x072 #define IBUS_KEY_s 0x073 #define IBUS_KEY_t 0x074 #define IBUS_KEY_u 0x075 #define IBUS_KEY_v 0x076 #define IBUS_KEY_w 0x077 #define IBUS_KEY_x 0x078 #define IBUS_KEY_y 0x079 #define IBUS_KEY_z 0x07a #define IBUS_KEY_braceleft 0x07b #define IBUS_KEY_bar 0x07c #define IBUS_KEY_braceright 0x07d #define IBUS_KEY_asciitilde 0x07e #define IBUS_KEY_nobreakspace 0x0a0 #define IBUS_KEY_exclamdown 0x0a1 #define IBUS_KEY_cent 0x0a2 #define IBUS_KEY_sterling 0x0a3 #define IBUS_KEY_currency 0x0a4 #define IBUS_KEY_yen 0x0a5 #define IBUS_KEY_brokenbar 0x0a6 #define IBUS_KEY_section 0x0a7 #define IBUS_KEY_diaeresis 0x0a8 #define IBUS_KEY_copyright 0x0a9 #define IBUS_KEY_ordfeminine 0x0aa #define IBUS_KEY_guillemotleft 0x0ab #define IBUS_KEY_notsign 0x0ac #define IBUS_KEY_hyphen 0x0ad #define IBUS_KEY_registered 0x0ae #define IBUS_KEY_macron 0x0af #define IBUS_KEY_degree 0x0b0 #define IBUS_KEY_plusminus 0x0b1 #define IBUS_KEY_twosuperior 0x0b2 #define IBUS_KEY_threesuperior 0x0b3 #define IBUS_KEY_acute 0x0b4 #define IBUS_KEY_mu 0x0b5 #define IBUS_KEY_paragraph 0x0b6 #define IBUS_KEY_periodcentered 0x0b7 #define IBUS_KEY_cedilla 0x0b8 #define IBUS_KEY_onesuperior 0x0b9 #define IBUS_KEY_masculine 0x0ba #define IBUS_KEY_guillemotright 0x0bb #define IBUS_KEY_onequarter 0x0bc #define IBUS_KEY_onehalf 0x0bd #define IBUS_KEY_threequarters 0x0be #define IBUS_KEY_questiondown 0x0bf #define IBUS_KEY_Agrave 0x0c0 #define IBUS_KEY_Aacute 0x0c1 #define IBUS_KEY_Acircumflex 0x0c2 #define IBUS_KEY_Atilde 0x0c3 #define IBUS_KEY_Adiaeresis 0x0c4 #define IBUS_KEY_Aring 0x0c5 #define IBUS_KEY_AE 0x0c6 #define IBUS_KEY_Ccedilla 0x0c7 #define IBUS_KEY_Egrave 0x0c8 #define IBUS_KEY_Eacute 0x0c9 #define IBUS_KEY_Ecircumflex 0x0ca #define IBUS_KEY_Ediaeresis 0x0cb #define IBUS_KEY_Igrave 0x0cc #define IBUS_KEY_Iacute 0x0cd #define IBUS_KEY_Icircumflex 0x0ce #define IBUS_KEY_Idiaeresis 0x0cf #define IBUS_KEY_ETH 0x0d0 #define IBUS_KEY_Eth 0x0d0 #define IBUS_KEY_Ntilde 0x0d1 #define IBUS_KEY_Ograve 0x0d2 #define IBUS_KEY_Oacute 0x0d3 #define IBUS_KEY_Ocircumflex 0x0d4 #define IBUS_KEY_Otilde 0x0d5 #define IBUS_KEY_Odiaeresis 0x0d6 #define IBUS_KEY_multiply 0x0d7 #define IBUS_KEY_Oslash 0x0d8 #define IBUS_KEY_Ooblique 0x0d8 #define IBUS_KEY_Ugrave 0x0d9 #define IBUS_KEY_Uacute 0x0da #define IBUS_KEY_Ucircumflex 0x0db #define IBUS_KEY_Udiaeresis 0x0dc #define IBUS_KEY_Yacute 0x0dd #define IBUS_KEY_THORN 0x0de #define IBUS_KEY_Thorn 0x0de #define IBUS_KEY_ssharp 0x0df #define IBUS_KEY_agrave 0x0e0 #define IBUS_KEY_aacute 0x0e1 #define IBUS_KEY_acircumflex 0x0e2 #define IBUS_KEY_atilde 0x0e3 #define IBUS_KEY_adiaeresis 0x0e4 #define IBUS_KEY_aring 0x0e5 #define IBUS_KEY_ae 0x0e6 #define IBUS_KEY_ccedilla 0x0e7 #define IBUS_KEY_egrave 0x0e8 #define IBUS_KEY_eacute 0x0e9 #define IBUS_KEY_ecircumflex 0x0ea #define IBUS_KEY_ediaeresis 0x0eb #define IBUS_KEY_igrave 0x0ec #define IBUS_KEY_iacute 0x0ed #define IBUS_KEY_icircumflex 0x0ee #define IBUS_KEY_idiaeresis 0x0ef #define IBUS_KEY_eth 0x0f0 #define IBUS_KEY_ntilde 0x0f1 #define IBUS_KEY_ograve 0x0f2 #define IBUS_KEY_oacute 0x0f3 #define IBUS_KEY_ocircumflex 0x0f4 #define IBUS_KEY_otilde 0x0f5 #define IBUS_KEY_odiaeresis 0x0f6 #define IBUS_KEY_division 0x0f7 #define IBUS_KEY_oslash 0x0f8 #define IBUS_KEY_ooblique 0x0f8 #define IBUS_KEY_ugrave 0x0f9 #define IBUS_KEY_uacute 0x0fa #define IBUS_KEY_ucircumflex 0x0fb #define IBUS_KEY_udiaeresis 0x0fc #define IBUS_KEY_yacute 0x0fd #define IBUS_KEY_thorn 0x0fe #define IBUS_KEY_ydiaeresis 0x0ff #define IBUS_KEY_Aogonek 0x1a1 #define IBUS_KEY_breve 0x1a2 #define IBUS_KEY_Lstroke 0x1a3 #define IBUS_KEY_Lcaron 0x1a5 #define IBUS_KEY_Sacute 0x1a6 #define IBUS_KEY_Scaron 0x1a9 #define IBUS_KEY_Scedilla 0x1aa #define IBUS_KEY_Tcaron 0x1ab #define IBUS_KEY_Zacute 0x1ac #define IBUS_KEY_Zcaron 0x1ae #define IBUS_KEY_Zabovedot 0x1af #define IBUS_KEY_aogonek 0x1b1 #define IBUS_KEY_ogonek 0x1b2 #define IBUS_KEY_lstroke 0x1b3 #define IBUS_KEY_lcaron 0x1b5 #define IBUS_KEY_sacute 0x1b6 #define IBUS_KEY_caron 0x1b7 #define IBUS_KEY_scaron 0x1b9 #define IBUS_KEY_scedilla 0x1ba #define IBUS_KEY_tcaron 0x1bb #define IBUS_KEY_zacute 0x1bc #define IBUS_KEY_doubleacute 0x1bd #define IBUS_KEY_zcaron 0x1be #define IBUS_KEY_zabovedot 0x1bf #define IBUS_KEY_Racute 0x1c0 #define IBUS_KEY_Abreve 0x1c3 #define IBUS_KEY_Lacute 0x1c5 #define IBUS_KEY_Cacute 0x1c6 #define IBUS_KEY_Ccaron 0x1c8 #define IBUS_KEY_Eogonek 0x1ca #define IBUS_KEY_Ecaron 0x1cc #define IBUS_KEY_Dcaron 0x1cf #define IBUS_KEY_Dstroke 0x1d0 #define IBUS_KEY_Nacute 0x1d1 #define IBUS_KEY_Ncaron 0x1d2 #define IBUS_KEY_Odoubleacute 0x1d5 #define IBUS_KEY_Rcaron 0x1d8 #define IBUS_KEY_Uring 0x1d9 #define IBUS_KEY_Udoubleacute 0x1db #define IBUS_KEY_Tcedilla 0x1de #define IBUS_KEY_racute 0x1e0 #define IBUS_KEY_abreve 0x1e3 #define IBUS_KEY_lacute 0x1e5 #define IBUS_KEY_cacute 0x1e6 #define IBUS_KEY_ccaron 0x1e8 #define IBUS_KEY_eogonek 0x1ea #define IBUS_KEY_ecaron 0x1ec #define IBUS_KEY_dcaron 0x1ef #define IBUS_KEY_dstroke 0x1f0 #define IBUS_KEY_nacute 0x1f1 #define IBUS_KEY_ncaron 0x1f2 #define IBUS_KEY_odoubleacute 0x1f5 #define IBUS_KEY_rcaron 0x1f8 #define IBUS_KEY_uring 0x1f9 #define IBUS_KEY_udoubleacute 0x1fb #define IBUS_KEY_tcedilla 0x1fe #define IBUS_KEY_abovedot 0x1ff #define IBUS_KEY_Hstroke 0x2a1 #define IBUS_KEY_Hcircumflex 0x2a6 #define IBUS_KEY_Iabovedot 0x2a9 #define IBUS_KEY_Gbreve 0x2ab #define IBUS_KEY_Jcircumflex 0x2ac #define IBUS_KEY_hstroke 0x2b1 #define IBUS_KEY_hcircumflex 0x2b6 #define IBUS_KEY_idotless 0x2b9 #define IBUS_KEY_gbreve 0x2bb #define IBUS_KEY_jcircumflex 0x2bc #define IBUS_KEY_Cabovedot 0x2c5 #define IBUS_KEY_Ccircumflex 0x2c6 #define IBUS_KEY_Gabovedot 0x2d5 #define IBUS_KEY_Gcircumflex 0x2d8 #define IBUS_KEY_Ubreve 0x2dd #define IBUS_KEY_Scircumflex 0x2de #define IBUS_KEY_cabovedot 0x2e5 #define IBUS_KEY_ccircumflex 0x2e6 #define IBUS_KEY_gabovedot 0x2f5 #define IBUS_KEY_gcircumflex 0x2f8 #define IBUS_KEY_ubreve 0x2fd #define IBUS_KEY_scircumflex 0x2fe #define IBUS_KEY_kra 0x3a2 #define IBUS_KEY_kappa 0x3a2 #define IBUS_KEY_Rcedilla 0x3a3 #define IBUS_KEY_Itilde 0x3a5 #define IBUS_KEY_Lcedilla 0x3a6 #define IBUS_KEY_Emacron 0x3aa #define IBUS_KEY_Gcedilla 0x3ab #define IBUS_KEY_Tslash 0x3ac #define IBUS_KEY_rcedilla 0x3b3 #define IBUS_KEY_itilde 0x3b5 #define IBUS_KEY_lcedilla 0x3b6 #define IBUS_KEY_emacron 0x3ba #define IBUS_KEY_gcedilla 0x3bb #define IBUS_KEY_tslash 0x3bc #define IBUS_KEY_ENG 0x3bd #define IBUS_KEY_eng 0x3bf #define IBUS_KEY_Amacron 0x3c0 #define IBUS_KEY_Iogonek 0x3c7 #define IBUS_KEY_Eabovedot 0x3cc #define IBUS_KEY_Imacron 0x3cf #define IBUS_KEY_Ncedilla 0x3d1 #define IBUS_KEY_Omacron 0x3d2 #define IBUS_KEY_Kcedilla 0x3d3 #define IBUS_KEY_Uogonek 0x3d9 #define IBUS_KEY_Utilde 0x3dd #define IBUS_KEY_Umacron 0x3de #define IBUS_KEY_amacron 0x3e0 #define IBUS_KEY_iogonek 0x3e7 #define IBUS_KEY_eabovedot 0x3ec #define IBUS_KEY_imacron 0x3ef #define IBUS_KEY_ncedilla 0x3f1 #define IBUS_KEY_omacron 0x3f2 #define IBUS_KEY_kcedilla 0x3f3 #define IBUS_KEY_uogonek 0x3f9 #define IBUS_KEY_utilde 0x3fd #define IBUS_KEY_umacron 0x3fe #define IBUS_KEY_Wcircumflex 0x1000174 #define IBUS_KEY_wcircumflex 0x1000175 #define IBUS_KEY_Ycircumflex 0x1000176 #define IBUS_KEY_ycircumflex 0x1000177 #define IBUS_KEY_Babovedot 0x1001e02 #define IBUS_KEY_babovedot 0x1001e03 #define IBUS_KEY_Dabovedot 0x1001e0a #define IBUS_KEY_dabovedot 0x1001e0b #define IBUS_KEY_Fabovedot 0x1001e1e #define IBUS_KEY_fabovedot 0x1001e1f #define IBUS_KEY_Mabovedot 0x1001e40 #define IBUS_KEY_mabovedot 0x1001e41 #define IBUS_KEY_Pabovedot 0x1001e56 #define IBUS_KEY_pabovedot 0x1001e57 #define IBUS_KEY_Sabovedot 0x1001e60 #define IBUS_KEY_sabovedot 0x1001e61 #define IBUS_KEY_Tabovedot 0x1001e6a #define IBUS_KEY_tabovedot 0x1001e6b #define IBUS_KEY_Wgrave 0x1001e80 #define IBUS_KEY_wgrave 0x1001e81 #define IBUS_KEY_Wacute 0x1001e82 #define IBUS_KEY_wacute 0x1001e83 #define IBUS_KEY_Wdiaeresis 0x1001e84 #define IBUS_KEY_wdiaeresis 0x1001e85 #define IBUS_KEY_Ygrave 0x1001ef2 #define IBUS_KEY_ygrave 0x1001ef3 #define IBUS_KEY_OE 0x13bc #define IBUS_KEY_oe 0x13bd #define IBUS_KEY_Ydiaeresis 0x13be #define IBUS_KEY_overline 0x47e #define IBUS_KEY_kana_fullstop 0x4a1 #define IBUS_KEY_kana_openingbracket 0x4a2 #define IBUS_KEY_kana_closingbracket 0x4a3 #define IBUS_KEY_kana_comma 0x4a4 #define IBUS_KEY_kana_conjunctive 0x4a5 #define IBUS_KEY_kana_middledot 0x4a5 #define IBUS_KEY_kana_WO 0x4a6 #define IBUS_KEY_kana_a 0x4a7 #define IBUS_KEY_kana_i 0x4a8 #define IBUS_KEY_kana_u 0x4a9 #define IBUS_KEY_kana_e 0x4aa #define IBUS_KEY_kana_o 0x4ab #define IBUS_KEY_kana_ya 0x4ac #define IBUS_KEY_kana_yu 0x4ad #define IBUS_KEY_kana_yo 0x4ae #define IBUS_KEY_kana_tsu 0x4af #define IBUS_KEY_kana_tu 0x4af #define IBUS_KEY_prolongedsound 0x4b0 #define IBUS_KEY_kana_A 0x4b1 #define IBUS_KEY_kana_I 0x4b2 #define IBUS_KEY_kana_U 0x4b3 #define IBUS_KEY_kana_E 0x4b4 #define IBUS_KEY_kana_O 0x4b5 #define IBUS_KEY_kana_KA 0x4b6 #define IBUS_KEY_kana_KI 0x4b7 #define IBUS_KEY_kana_KU 0x4b8 #define IBUS_KEY_kana_KE 0x4b9 #define IBUS_KEY_kana_KO 0x4ba #define IBUS_KEY_kana_SA 0x4bb #define IBUS_KEY_kana_SHI 0x4bc #define IBUS_KEY_kana_SU 0x4bd #define IBUS_KEY_kana_SE 0x4be #define IBUS_KEY_kana_SO 0x4bf #define IBUS_KEY_kana_TA 0x4c0 #define IBUS_KEY_kana_CHI 0x4c1 #define IBUS_KEY_kana_TI 0x4c1 #define IBUS_KEY_kana_TSU 0x4c2 #define IBUS_KEY_kana_TU 0x4c2 #define IBUS_KEY_kana_TE 0x4c3 #define IBUS_KEY_kana_TO 0x4c4 #define IBUS_KEY_kana_NA 0x4c5 #define IBUS_KEY_kana_NI 0x4c6 #define IBUS_KEY_kana_NU 0x4c7 #define IBUS_KEY_kana_NE 0x4c8 #define IBUS_KEY_kana_NO 0x4c9 #define IBUS_KEY_kana_HA 0x4ca #define IBUS_KEY_kana_HI 0x4cb #define IBUS_KEY_kana_FU 0x4cc #define IBUS_KEY_kana_HU 0x4cc #define IBUS_KEY_kana_HE 0x4cd #define IBUS_KEY_kana_HO 0x4ce #define IBUS_KEY_kana_MA 0x4cf #define IBUS_KEY_kana_MI 0x4d0 #define IBUS_KEY_kana_MU 0x4d1 #define IBUS_KEY_kana_ME 0x4d2 #define IBUS_KEY_kana_MO 0x4d3 #define IBUS_KEY_kana_YA 0x4d4 #define IBUS_KEY_kana_YU 0x4d5 #define IBUS_KEY_kana_YO 0x4d6 #define IBUS_KEY_kana_RA 0x4d7 #define IBUS_KEY_kana_RI 0x4d8 #define IBUS_KEY_kana_RU 0x4d9 #define IBUS_KEY_kana_RE 0x4da #define IBUS_KEY_kana_RO 0x4db #define IBUS_KEY_kana_WA 0x4dc #define IBUS_KEY_kana_N 0x4dd #define IBUS_KEY_voicedsound 0x4de #define IBUS_KEY_semivoicedsound 0x4df #define IBUS_KEY_kana_switch 0xff7e #define IBUS_KEY_Farsi_0 0x10006f0 #define IBUS_KEY_Farsi_1 0x10006f1 #define IBUS_KEY_Farsi_2 0x10006f2 #define IBUS_KEY_Farsi_3 0x10006f3 #define IBUS_KEY_Farsi_4 0x10006f4 #define IBUS_KEY_Farsi_5 0x10006f5 #define IBUS_KEY_Farsi_6 0x10006f6 #define IBUS_KEY_Farsi_7 0x10006f7 #define IBUS_KEY_Farsi_8 0x10006f8 #define IBUS_KEY_Farsi_9 0x10006f9 #define IBUS_KEY_Arabic_percent 0x100066a #define IBUS_KEY_Arabic_superscript_alef 0x1000670 #define IBUS_KEY_Arabic_tteh 0x1000679 #define IBUS_KEY_Arabic_peh 0x100067e #define IBUS_KEY_Arabic_tcheh 0x1000686 #define IBUS_KEY_Arabic_ddal 0x1000688 #define IBUS_KEY_Arabic_rreh 0x1000691 #define IBUS_KEY_Arabic_comma 0x5ac #define IBUS_KEY_Arabic_fullstop 0x10006d4 #define IBUS_KEY_Arabic_0 0x1000660 #define IBUS_KEY_Arabic_1 0x1000661 #define IBUS_KEY_Arabic_2 0x1000662 #define IBUS_KEY_Arabic_3 0x1000663 #define IBUS_KEY_Arabic_4 0x1000664 #define IBUS_KEY_Arabic_5 0x1000665 #define IBUS_KEY_Arabic_6 0x1000666 #define IBUS_KEY_Arabic_7 0x1000667 #define IBUS_KEY_Arabic_8 0x1000668 #define IBUS_KEY_Arabic_9 0x1000669 #define IBUS_KEY_Arabic_semicolon 0x5bb #define IBUS_KEY_Arabic_question_mark 0x5bf #define IBUS_KEY_Arabic_hamza 0x5c1 #define IBUS_KEY_Arabic_maddaonalef 0x5c2 #define IBUS_KEY_Arabic_hamzaonalef 0x5c3 #define IBUS_KEY_Arabic_hamzaonwaw 0x5c4 #define IBUS_KEY_Arabic_hamzaunderalef 0x5c5 #define IBUS_KEY_Arabic_hamzaonyeh 0x5c6 #define IBUS_KEY_Arabic_alef 0x5c7 #define IBUS_KEY_Arabic_beh 0x5c8 #define IBUS_KEY_Arabic_tehmarbuta 0x5c9 #define IBUS_KEY_Arabic_teh 0x5ca #define IBUS_KEY_Arabic_theh 0x5cb #define IBUS_KEY_Arabic_jeem 0x5cc #define IBUS_KEY_Arabic_hah 0x5cd #define IBUS_KEY_Arabic_khah 0x5ce #define IBUS_KEY_Arabic_dal 0x5cf #define IBUS_KEY_Arabic_thal 0x5d0 #define IBUS_KEY_Arabic_ra 0x5d1 #define IBUS_KEY_Arabic_zain 0x5d2 #define IBUS_KEY_Arabic_seen 0x5d3 #define IBUS_KEY_Arabic_sheen 0x5d4 #define IBUS_KEY_Arabic_sad 0x5d5 #define IBUS_KEY_Arabic_dad 0x5d6 #define IBUS_KEY_Arabic_tah 0x5d7 #define IBUS_KEY_Arabic_zah 0x5d8 #define IBUS_KEY_Arabic_ain 0x5d9 #define IBUS_KEY_Arabic_ghain 0x5da #define IBUS_KEY_Arabic_tatweel 0x5e0 #define IBUS_KEY_Arabic_feh 0x5e1 #define IBUS_KEY_Arabic_qaf 0x5e2 #define IBUS_KEY_Arabic_kaf 0x5e3 #define IBUS_KEY_Arabic_lam 0x5e4 #define IBUS_KEY_Arabic_meem 0x5e5 #define IBUS_KEY_Arabic_noon 0x5e6 #define IBUS_KEY_Arabic_ha 0x5e7 #define IBUS_KEY_Arabic_heh 0x5e7 #define IBUS_KEY_Arabic_waw 0x5e8 #define IBUS_KEY_Arabic_alefmaksura 0x5e9 #define IBUS_KEY_Arabic_yeh 0x5ea #define IBUS_KEY_Arabic_fathatan 0x5eb #define IBUS_KEY_Arabic_dammatan 0x5ec #define IBUS_KEY_Arabic_kasratan 0x5ed #define IBUS_KEY_Arabic_fatha 0x5ee #define IBUS_KEY_Arabic_damma 0x5ef #define IBUS_KEY_Arabic_kasra 0x5f0 #define IBUS_KEY_Arabic_shadda 0x5f1 #define IBUS_KEY_Arabic_sukun 0x5f2 #define IBUS_KEY_Arabic_madda_above 0x1000653 #define IBUS_KEY_Arabic_hamza_above 0x1000654 #define IBUS_KEY_Arabic_hamza_below 0x1000655 #define IBUS_KEY_Arabic_jeh 0x1000698 #define IBUS_KEY_Arabic_veh 0x10006a4 #define IBUS_KEY_Arabic_keheh 0x10006a9 #define IBUS_KEY_Arabic_gaf 0x10006af #define IBUS_KEY_Arabic_noon_ghunna 0x10006ba #define IBUS_KEY_Arabic_heh_doachashmee 0x10006be #define IBUS_KEY_Farsi_yeh 0x10006cc #define IBUS_KEY_Arabic_farsi_yeh 0x10006cc #define IBUS_KEY_Arabic_yeh_baree 0x10006d2 #define IBUS_KEY_Arabic_heh_goal 0x10006c1 #define IBUS_KEY_Arabic_switch 0xff7e #define IBUS_KEY_Cyrillic_GHE_bar 0x1000492 #define IBUS_KEY_Cyrillic_ghe_bar 0x1000493 #define IBUS_KEY_Cyrillic_ZHE_descender 0x1000496 #define IBUS_KEY_Cyrillic_zhe_descender 0x1000497 #define IBUS_KEY_Cyrillic_KA_descender 0x100049a #define IBUS_KEY_Cyrillic_ka_descender 0x100049b #define IBUS_KEY_Cyrillic_KA_vertstroke 0x100049c #define IBUS_KEY_Cyrillic_ka_vertstroke 0x100049d #define IBUS_KEY_Cyrillic_EN_descender 0x10004a2 #define IBUS_KEY_Cyrillic_en_descender 0x10004a3 #define IBUS_KEY_Cyrillic_U_straight 0x10004ae #define IBUS_KEY_Cyrillic_u_straight 0x10004af #define IBUS_KEY_Cyrillic_U_straight_bar 0x10004b0 #define IBUS_KEY_Cyrillic_u_straight_bar 0x10004b1 #define IBUS_KEY_Cyrillic_HA_descender 0x10004b2 #define IBUS_KEY_Cyrillic_ha_descender 0x10004b3 #define IBUS_KEY_Cyrillic_CHE_descender 0x10004b6 #define IBUS_KEY_Cyrillic_che_descender 0x10004b7 #define IBUS_KEY_Cyrillic_CHE_vertstroke 0x10004b8 #define IBUS_KEY_Cyrillic_che_vertstroke 0x10004b9 #define IBUS_KEY_Cyrillic_SHHA 0x10004ba #define IBUS_KEY_Cyrillic_shha 0x10004bb #define IBUS_KEY_Cyrillic_SCHWA 0x10004d8 #define IBUS_KEY_Cyrillic_schwa 0x10004d9 #define IBUS_KEY_Cyrillic_I_macron 0x10004e2 #define IBUS_KEY_Cyrillic_i_macron 0x10004e3 #define IBUS_KEY_Cyrillic_O_bar 0x10004e8 #define IBUS_KEY_Cyrillic_o_bar 0x10004e9 #define IBUS_KEY_Cyrillic_U_macron 0x10004ee #define IBUS_KEY_Cyrillic_u_macron 0x10004ef #define IBUS_KEY_Serbian_dje 0x6a1 #define IBUS_KEY_Macedonia_gje 0x6a2 #define IBUS_KEY_Cyrillic_io 0x6a3 #define IBUS_KEY_Ukrainian_ie 0x6a4 #define IBUS_KEY_Ukranian_je 0x6a4 #define IBUS_KEY_Macedonia_dse 0x6a5 #define IBUS_KEY_Ukrainian_i 0x6a6 #define IBUS_KEY_Ukranian_i 0x6a6 #define IBUS_KEY_Ukrainian_yi 0x6a7 #define IBUS_KEY_Ukranian_yi 0x6a7 #define IBUS_KEY_Cyrillic_je 0x6a8 #define IBUS_KEY_Serbian_je 0x6a8 #define IBUS_KEY_Cyrillic_lje 0x6a9 #define IBUS_KEY_Serbian_lje 0x6a9 #define IBUS_KEY_Cyrillic_nje 0x6aa #define IBUS_KEY_Serbian_nje 0x6aa #define IBUS_KEY_Serbian_tshe 0x6ab #define IBUS_KEY_Macedonia_kje 0x6ac #define IBUS_KEY_Ukrainian_ghe_with_upturn 0x6ad #define IBUS_KEY_Byelorussian_shortu 0x6ae #define IBUS_KEY_Cyrillic_dzhe 0x6af #define IBUS_KEY_Serbian_dze 0x6af #define IBUS_KEY_numerosign 0x6b0 #define IBUS_KEY_Serbian_DJE 0x6b1 #define IBUS_KEY_Macedonia_GJE 0x6b2 #define IBUS_KEY_Cyrillic_IO 0x6b3 #define IBUS_KEY_Ukrainian_IE 0x6b4 #define IBUS_KEY_Ukranian_JE 0x6b4 #define IBUS_KEY_Macedonia_DSE 0x6b5 #define IBUS_KEY_Ukrainian_I 0x6b6 #define IBUS_KEY_Ukranian_I 0x6b6 #define IBUS_KEY_Ukrainian_YI 0x6b7 #define IBUS_KEY_Ukranian_YI 0x6b7 #define IBUS_KEY_Cyrillic_JE 0x6b8 #define IBUS_KEY_Serbian_JE 0x6b8 #define IBUS_KEY_Cyrillic_LJE 0x6b9 #define IBUS_KEY_Serbian_LJE 0x6b9 #define IBUS_KEY_Cyrillic_NJE 0x6ba #define IBUS_KEY_Serbian_NJE 0x6ba #define IBUS_KEY_Serbian_TSHE 0x6bb #define IBUS_KEY_Macedonia_KJE 0x6bc #define IBUS_KEY_Ukrainian_GHE_WITH_UPTURN 0x6bd #define IBUS_KEY_Byelorussian_SHORTU 0x6be #define IBUS_KEY_Cyrillic_DZHE 0x6bf #define IBUS_KEY_Serbian_DZE 0x6bf #define IBUS_KEY_Cyrillic_yu 0x6c0 #define IBUS_KEY_Cyrillic_a 0x6c1 #define IBUS_KEY_Cyrillic_be 0x6c2 #define IBUS_KEY_Cyrillic_tse 0x6c3 #define IBUS_KEY_Cyrillic_de 0x6c4 #define IBUS_KEY_Cyrillic_ie 0x6c5 #define IBUS_KEY_Cyrillic_ef 0x6c6 #define IBUS_KEY_Cyrillic_ghe 0x6c7 #define IBUS_KEY_Cyrillic_ha 0x6c8 #define IBUS_KEY_Cyrillic_i 0x6c9 #define IBUS_KEY_Cyrillic_shorti 0x6ca #define IBUS_KEY_Cyrillic_ka 0x6cb #define IBUS_KEY_Cyrillic_el 0x6cc #define IBUS_KEY_Cyrillic_em 0x6cd #define IBUS_KEY_Cyrillic_en 0x6ce #define IBUS_KEY_Cyrillic_o 0x6cf #define IBUS_KEY_Cyrillic_pe 0x6d0 #define IBUS_KEY_Cyrillic_ya 0x6d1 #define IBUS_KEY_Cyrillic_er 0x6d2 #define IBUS_KEY_Cyrillic_es 0x6d3 #define IBUS_KEY_Cyrillic_te 0x6d4 #define IBUS_KEY_Cyrillic_u 0x6d5 #define IBUS_KEY_Cyrillic_zhe 0x6d6 #define IBUS_KEY_Cyrillic_ve 0x6d7 #define IBUS_KEY_Cyrillic_softsign 0x6d8 #define IBUS_KEY_Cyrillic_yeru 0x6d9 #define IBUS_KEY_Cyrillic_ze 0x6da #define IBUS_KEY_Cyrillic_sha 0x6db #define IBUS_KEY_Cyrillic_e 0x6dc #define IBUS_KEY_Cyrillic_shcha 0x6dd #define IBUS_KEY_Cyrillic_che 0x6de #define IBUS_KEY_Cyrillic_hardsign 0x6df #define IBUS_KEY_Cyrillic_YU 0x6e0 #define IBUS_KEY_Cyrillic_A 0x6e1 #define IBUS_KEY_Cyrillic_BE 0x6e2 #define IBUS_KEY_Cyrillic_TSE 0x6e3 #define IBUS_KEY_Cyrillic_DE 0x6e4 #define IBUS_KEY_Cyrillic_IE 0x6e5 #define IBUS_KEY_Cyrillic_EF 0x6e6 #define IBUS_KEY_Cyrillic_GHE 0x6e7 #define IBUS_KEY_Cyrillic_HA 0x6e8 #define IBUS_KEY_Cyrillic_I 0x6e9 #define IBUS_KEY_Cyrillic_SHORTI 0x6ea #define IBUS_KEY_Cyrillic_KA 0x6eb #define IBUS_KEY_Cyrillic_EL 0x6ec #define IBUS_KEY_Cyrillic_EM 0x6ed #define IBUS_KEY_Cyrillic_EN 0x6ee #define IBUS_KEY_Cyrillic_O 0x6ef #define IBUS_KEY_Cyrillic_PE 0x6f0 #define IBUS_KEY_Cyrillic_YA 0x6f1 #define IBUS_KEY_Cyrillic_ER 0x6f2 #define IBUS_KEY_Cyrillic_ES 0x6f3 #define IBUS_KEY_Cyrillic_TE 0x6f4 #define IBUS_KEY_Cyrillic_U 0x6f5 #define IBUS_KEY_Cyrillic_ZHE 0x6f6 #define IBUS_KEY_Cyrillic_VE 0x6f7 #define IBUS_KEY_Cyrillic_SOFTSIGN 0x6f8 #define IBUS_KEY_Cyrillic_YERU 0x6f9 #define IBUS_KEY_Cyrillic_ZE 0x6fa #define IBUS_KEY_Cyrillic_SHA 0x6fb #define IBUS_KEY_Cyrillic_E 0x6fc #define IBUS_KEY_Cyrillic_SHCHA 0x6fd #define IBUS_KEY_Cyrillic_CHE 0x6fe #define IBUS_KEY_Cyrillic_HARDSIGN 0x6ff #define IBUS_KEY_Greek_ALPHAaccent 0x7a1 #define IBUS_KEY_Greek_EPSILONaccent 0x7a2 #define IBUS_KEY_Greek_ETAaccent 0x7a3 #define IBUS_KEY_Greek_IOTAaccent 0x7a4 #define IBUS_KEY_Greek_IOTAdieresis 0x7a5 #define IBUS_KEY_Greek_IOTAdiaeresis 0x7a5 #define IBUS_KEY_Greek_OMICRONaccent 0x7a7 #define IBUS_KEY_Greek_UPSILONaccent 0x7a8 #define IBUS_KEY_Greek_UPSILONdieresis 0x7a9 #define IBUS_KEY_Greek_OMEGAaccent 0x7ab #define IBUS_KEY_Greek_accentdieresis 0x7ae #define IBUS_KEY_Greek_horizbar 0x7af #define IBUS_KEY_Greek_alphaaccent 0x7b1 #define IBUS_KEY_Greek_epsilonaccent 0x7b2 #define IBUS_KEY_Greek_etaaccent 0x7b3 #define IBUS_KEY_Greek_iotaaccent 0x7b4 #define IBUS_KEY_Greek_iotadieresis 0x7b5 #define IBUS_KEY_Greek_iotaaccentdieresis 0x7b6 #define IBUS_KEY_Greek_omicronaccent 0x7b7 #define IBUS_KEY_Greek_upsilonaccent 0x7b8 #define IBUS_KEY_Greek_upsilondieresis 0x7b9 #define IBUS_KEY_Greek_upsilonaccentdieresis 0x7ba #define IBUS_KEY_Greek_omegaaccent 0x7bb #define IBUS_KEY_Greek_ALPHA 0x7c1 #define IBUS_KEY_Greek_BETA 0x7c2 #define IBUS_KEY_Greek_GAMMA 0x7c3 #define IBUS_KEY_Greek_DELTA 0x7c4 #define IBUS_KEY_Greek_EPSILON 0x7c5 #define IBUS_KEY_Greek_ZETA 0x7c6 #define IBUS_KEY_Greek_ETA 0x7c7 #define IBUS_KEY_Greek_THETA 0x7c8 #define IBUS_KEY_Greek_IOTA 0x7c9 #define IBUS_KEY_Greek_KAPPA 0x7ca #define IBUS_KEY_Greek_LAMDA 0x7cb #define IBUS_KEY_Greek_LAMBDA 0x7cb #define IBUS_KEY_Greek_MU 0x7cc #define IBUS_KEY_Greek_NU 0x7cd #define IBUS_KEY_Greek_XI 0x7ce #define IBUS_KEY_Greek_OMICRON 0x7cf #define IBUS_KEY_Greek_PI 0x7d0 #define IBUS_KEY_Greek_RHO 0x7d1 #define IBUS_KEY_Greek_SIGMA 0x7d2 #define IBUS_KEY_Greek_TAU 0x7d4 #define IBUS_KEY_Greek_UPSILON 0x7d5 #define IBUS_KEY_Greek_PHI 0x7d6 #define IBUS_KEY_Greek_CHI 0x7d7 #define IBUS_KEY_Greek_PSI 0x7d8 #define IBUS_KEY_Greek_OMEGA 0x7d9 #define IBUS_KEY_Greek_alpha 0x7e1 #define IBUS_KEY_Greek_beta 0x7e2 #define IBUS_KEY_Greek_gamma 0x7e3 #define IBUS_KEY_Greek_delta 0x7e4 #define IBUS_KEY_Greek_epsilon 0x7e5 #define IBUS_KEY_Greek_zeta 0x7e6 #define IBUS_KEY_Greek_eta 0x7e7 #define IBUS_KEY_Greek_theta 0x7e8 #define IBUS_KEY_Greek_iota 0x7e9 #define IBUS_KEY_Greek_kappa 0x7ea #define IBUS_KEY_Greek_lamda 0x7eb #define IBUS_KEY_Greek_lambda 0x7eb #define IBUS_KEY_Greek_mu 0x7ec #define IBUS_KEY_Greek_nu 0x7ed #define IBUS_KEY_Greek_xi 0x7ee #define IBUS_KEY_Greek_omicron 0x7ef #define IBUS_KEY_Greek_pi 0x7f0 #define IBUS_KEY_Greek_rho 0x7f1 #define IBUS_KEY_Greek_sigma 0x7f2 #define IBUS_KEY_Greek_finalsmallsigma 0x7f3 #define IBUS_KEY_Greek_tau 0x7f4 #define IBUS_KEY_Greek_upsilon 0x7f5 #define IBUS_KEY_Greek_phi 0x7f6 #define IBUS_KEY_Greek_chi 0x7f7 #define IBUS_KEY_Greek_psi 0x7f8 #define IBUS_KEY_Greek_omega 0x7f9 #define IBUS_KEY_Greek_switch 0xff7e #define IBUS_KEY_leftradical 0x8a1 #define IBUS_KEY_topleftradical 0x8a2 #define IBUS_KEY_horizconnector 0x8a3 #define IBUS_KEY_topintegral 0x8a4 #define IBUS_KEY_botintegral 0x8a5 #define IBUS_KEY_vertconnector 0x8a6 #define IBUS_KEY_topleftsqbracket 0x8a7 #define IBUS_KEY_botleftsqbracket 0x8a8 #define IBUS_KEY_toprightsqbracket 0x8a9 #define IBUS_KEY_botrightsqbracket 0x8aa #define IBUS_KEY_topleftparens 0x8ab #define IBUS_KEY_botleftparens 0x8ac #define IBUS_KEY_toprightparens 0x8ad #define IBUS_KEY_botrightparens 0x8ae #define IBUS_KEY_leftmiddlecurlybrace 0x8af #define IBUS_KEY_rightmiddlecurlybrace 0x8b0 #define IBUS_KEY_topleftsummation 0x8b1 #define IBUS_KEY_botleftsummation 0x8b2 #define IBUS_KEY_topvertsummationconnector 0x8b3 #define IBUS_KEY_botvertsummationconnector 0x8b4 #define IBUS_KEY_toprightsummation 0x8b5 #define IBUS_KEY_botrightsummation 0x8b6 #define IBUS_KEY_rightmiddlesummation 0x8b7 #define IBUS_KEY_lessthanequal 0x8bc #define IBUS_KEY_notequal 0x8bd #define IBUS_KEY_greaterthanequal 0x8be #define IBUS_KEY_integral 0x8bf #define IBUS_KEY_therefore 0x8c0 #define IBUS_KEY_variation 0x8c1 #define IBUS_KEY_infinity 0x8c2 #define IBUS_KEY_nabla 0x8c5 #define IBUS_KEY_approximate 0x8c8 #define IBUS_KEY_similarequal 0x8c9 #define IBUS_KEY_ifonlyif 0x8cd #define IBUS_KEY_implies 0x8ce #define IBUS_KEY_identical 0x8cf #define IBUS_KEY_radical 0x8d6 #define IBUS_KEY_includedin 0x8da #define IBUS_KEY_includes 0x8db #define IBUS_KEY_intersection 0x8dc #define IBUS_KEY_union 0x8dd #define IBUS_KEY_logicaland 0x8de #define IBUS_KEY_logicalor 0x8df #define IBUS_KEY_partialderivative 0x8ef #define IBUS_KEY_function 0x8f6 #define IBUS_KEY_leftarrow 0x8fb #define IBUS_KEY_uparrow 0x8fc #define IBUS_KEY_rightarrow 0x8fd #define IBUS_KEY_downarrow 0x8fe #define IBUS_KEY_blank 0x9df #define IBUS_KEY_soliddiamond 0x9e0 #define IBUS_KEY_checkerboard 0x9e1 #define IBUS_KEY_ht 0x9e2 #define IBUS_KEY_ff 0x9e3 #define IBUS_KEY_cr 0x9e4 #define IBUS_KEY_lf 0x9e5 #define IBUS_KEY_nl 0x9e8 #define IBUS_KEY_vt 0x9e9 #define IBUS_KEY_lowrightcorner 0x9ea #define IBUS_KEY_uprightcorner 0x9eb #define IBUS_KEY_upleftcorner 0x9ec #define IBUS_KEY_lowleftcorner 0x9ed #define IBUS_KEY_crossinglines 0x9ee #define IBUS_KEY_horizlinescan1 0x9ef #define IBUS_KEY_horizlinescan3 0x9f0 #define IBUS_KEY_horizlinescan5 0x9f1 #define IBUS_KEY_horizlinescan7 0x9f2 #define IBUS_KEY_horizlinescan9 0x9f3 #define IBUS_KEY_leftt 0x9f4 #define IBUS_KEY_rightt 0x9f5 #define IBUS_KEY_bott 0x9f6 #define IBUS_KEY_topt 0x9f7 #define IBUS_KEY_vertbar 0x9f8 #define IBUS_KEY_emspace 0xaa1 #define IBUS_KEY_enspace 0xaa2 #define IBUS_KEY_em3space 0xaa3 #define IBUS_KEY_em4space 0xaa4 #define IBUS_KEY_digitspace 0xaa5 #define IBUS_KEY_punctspace 0xaa6 #define IBUS_KEY_thinspace 0xaa7 #define IBUS_KEY_hairspace 0xaa8 #define IBUS_KEY_emdash 0xaa9 #define IBUS_KEY_endash 0xaaa #define IBUS_KEY_signifblank 0xaac #define IBUS_KEY_ellipsis 0xaae #define IBUS_KEY_doubbaselinedot 0xaaf #define IBUS_KEY_onethird 0xab0 #define IBUS_KEY_twothirds 0xab1 #define IBUS_KEY_onefifth 0xab2 #define IBUS_KEY_twofifths 0xab3 #define IBUS_KEY_threefifths 0xab4 #define IBUS_KEY_fourfifths 0xab5 #define IBUS_KEY_onesixth 0xab6 #define IBUS_KEY_fivesixths 0xab7 #define IBUS_KEY_careof 0xab8 #define IBUS_KEY_figdash 0xabb #define IBUS_KEY_leftanglebracket 0xabc #define IBUS_KEY_decimalpoint 0xabd #define IBUS_KEY_rightanglebracket 0xabe #define IBUS_KEY_marker 0xabf #define IBUS_KEY_oneeighth 0xac3 #define IBUS_KEY_threeeighths 0xac4 #define IBUS_KEY_fiveeighths 0xac5 #define IBUS_KEY_seveneighths 0xac6 #define IBUS_KEY_trademark 0xac9 #define IBUS_KEY_signaturemark 0xaca #define IBUS_KEY_trademarkincircle 0xacb #define IBUS_KEY_leftopentriangle 0xacc #define IBUS_KEY_rightopentriangle 0xacd #define IBUS_KEY_emopencircle 0xace #define IBUS_KEY_emopenrectangle 0xacf #define IBUS_KEY_leftsinglequotemark 0xad0 #define IBUS_KEY_rightsinglequotemark 0xad1 #define IBUS_KEY_leftdoublequotemark 0xad2 #define IBUS_KEY_rightdoublequotemark 0xad3 #define IBUS_KEY_prescription 0xad4 #define IBUS_KEY_minutes 0xad6 #define IBUS_KEY_seconds 0xad7 #define IBUS_KEY_latincross 0xad9 #define IBUS_KEY_hexagram 0xada #define IBUS_KEY_filledrectbullet 0xadb #define IBUS_KEY_filledlefttribullet 0xadc #define IBUS_KEY_filledrighttribullet 0xadd #define IBUS_KEY_emfilledcircle 0xade #define IBUS_KEY_emfilledrect 0xadf #define IBUS_KEY_enopencircbullet 0xae0 #define IBUS_KEY_enopensquarebullet 0xae1 #define IBUS_KEY_openrectbullet 0xae2 #define IBUS_KEY_opentribulletup 0xae3 #define IBUS_KEY_opentribulletdown 0xae4 #define IBUS_KEY_openstar 0xae5 #define IBUS_KEY_enfilledcircbullet 0xae6 #define IBUS_KEY_enfilledsqbullet 0xae7 #define IBUS_KEY_filledtribulletup 0xae8 #define IBUS_KEY_filledtribulletdown 0xae9 #define IBUS_KEY_leftpointer 0xaea #define IBUS_KEY_rightpointer 0xaeb #define IBUS_KEY_club 0xaec #define IBUS_KEY_diamond 0xaed #define IBUS_KEY_heart 0xaee #define IBUS_KEY_maltesecross 0xaf0 #define IBUS_KEY_dagger 0xaf1 #define IBUS_KEY_doubledagger 0xaf2 #define IBUS_KEY_checkmark 0xaf3 #define IBUS_KEY_ballotcross 0xaf4 #define IBUS_KEY_musicalsharp 0xaf5 #define IBUS_KEY_musicalflat 0xaf6 #define IBUS_KEY_malesymbol 0xaf7 #define IBUS_KEY_femalesymbol 0xaf8 #define IBUS_KEY_telephone 0xaf9 #define IBUS_KEY_telephonerecorder 0xafa #define IBUS_KEY_phonographcopyright 0xafb #define IBUS_KEY_caret 0xafc #define IBUS_KEY_singlelowquotemark 0xafd #define IBUS_KEY_doublelowquotemark 0xafe #define IBUS_KEY_cursor 0xaff #define IBUS_KEY_leftcaret 0xba3 #define IBUS_KEY_rightcaret 0xba6 #define IBUS_KEY_downcaret 0xba8 #define IBUS_KEY_upcaret 0xba9 #define IBUS_KEY_overbar 0xbc0 #define IBUS_KEY_downtack 0xbc2 #define IBUS_KEY_upshoe 0xbc3 #define IBUS_KEY_downstile 0xbc4 #define IBUS_KEY_underbar 0xbc6 #define IBUS_KEY_jot 0xbca #define IBUS_KEY_quad 0xbcc #define IBUS_KEY_uptack 0xbce #define IBUS_KEY_circle 0xbcf #define IBUS_KEY_upstile 0xbd3 #define IBUS_KEY_downshoe 0xbd6 #define IBUS_KEY_rightshoe 0xbd8 #define IBUS_KEY_leftshoe 0xbda #define IBUS_KEY_lefttack 0xbdc #define IBUS_KEY_righttack 0xbfc #define IBUS_KEY_hebrew_doublelowline 0xcdf #define IBUS_KEY_hebrew_aleph 0xce0 #define IBUS_KEY_hebrew_bet 0xce1 #define IBUS_KEY_hebrew_beth 0xce1 #define IBUS_KEY_hebrew_gimel 0xce2 #define IBUS_KEY_hebrew_gimmel 0xce2 #define IBUS_KEY_hebrew_dalet 0xce3 #define IBUS_KEY_hebrew_daleth 0xce3 #define IBUS_KEY_hebrew_he 0xce4 #define IBUS_KEY_hebrew_waw 0xce5 #define IBUS_KEY_hebrew_zain 0xce6 #define IBUS_KEY_hebrew_zayin 0xce6 #define IBUS_KEY_hebrew_chet 0xce7 #define IBUS_KEY_hebrew_het 0xce7 #define IBUS_KEY_hebrew_tet 0xce8 #define IBUS_KEY_hebrew_teth 0xce8 #define IBUS_KEY_hebrew_yod 0xce9 #define IBUS_KEY_hebrew_finalkaph 0xcea #define IBUS_KEY_hebrew_kaph 0xceb #define IBUS_KEY_hebrew_lamed 0xcec #define IBUS_KEY_hebrew_finalmem 0xced #define IBUS_KEY_hebrew_mem 0xcee #define IBUS_KEY_hebrew_finalnun 0xcef #define IBUS_KEY_hebrew_nun 0xcf0 #define IBUS_KEY_hebrew_samech 0xcf1 #define IBUS_KEY_hebrew_samekh 0xcf1 #define IBUS_KEY_hebrew_ayin 0xcf2 #define IBUS_KEY_hebrew_finalpe 0xcf3 #define IBUS_KEY_hebrew_pe 0xcf4 #define IBUS_KEY_hebrew_finalzade 0xcf5 #define IBUS_KEY_hebrew_finalzadi 0xcf5 #define IBUS_KEY_hebrew_zade 0xcf6 #define IBUS_KEY_hebrew_zadi 0xcf6 #define IBUS_KEY_hebrew_qoph 0xcf7 #define IBUS_KEY_hebrew_kuf 0xcf7 #define IBUS_KEY_hebrew_resh 0xcf8 #define IBUS_KEY_hebrew_shin 0xcf9 #define IBUS_KEY_hebrew_taw 0xcfa #define IBUS_KEY_hebrew_taf 0xcfa #define IBUS_KEY_Hebrew_switch 0xff7e #define IBUS_KEY_Thai_kokai 0xda1 #define IBUS_KEY_Thai_khokhai 0xda2 #define IBUS_KEY_Thai_khokhuat 0xda3 #define IBUS_KEY_Thai_khokhwai 0xda4 #define IBUS_KEY_Thai_khokhon 0xda5 #define IBUS_KEY_Thai_khorakhang 0xda6 #define IBUS_KEY_Thai_ngongu 0xda7 #define IBUS_KEY_Thai_chochan 0xda8 #define IBUS_KEY_Thai_choching 0xda9 #define IBUS_KEY_Thai_chochang 0xdaa #define IBUS_KEY_Thai_soso 0xdab #define IBUS_KEY_Thai_chochoe 0xdac #define IBUS_KEY_Thai_yoying 0xdad #define IBUS_KEY_Thai_dochada 0xdae #define IBUS_KEY_Thai_topatak 0xdaf #define IBUS_KEY_Thai_thothan 0xdb0 #define IBUS_KEY_Thai_thonangmontho 0xdb1 #define IBUS_KEY_Thai_thophuthao 0xdb2 #define IBUS_KEY_Thai_nonen 0xdb3 #define IBUS_KEY_Thai_dodek 0xdb4 #define IBUS_KEY_Thai_totao 0xdb5 #define IBUS_KEY_Thai_thothung 0xdb6 #define IBUS_KEY_Thai_thothahan 0xdb7 #define IBUS_KEY_Thai_thothong 0xdb8 #define IBUS_KEY_Thai_nonu 0xdb9 #define IBUS_KEY_Thai_bobaimai 0xdba #define IBUS_KEY_Thai_popla 0xdbb #define IBUS_KEY_Thai_phophung 0xdbc #define IBUS_KEY_Thai_fofa 0xdbd #define IBUS_KEY_Thai_phophan 0xdbe #define IBUS_KEY_Thai_fofan 0xdbf #define IBUS_KEY_Thai_phosamphao 0xdc0 #define IBUS_KEY_Thai_moma 0xdc1 #define IBUS_KEY_Thai_yoyak 0xdc2 #define IBUS_KEY_Thai_rorua 0xdc3 #define IBUS_KEY_Thai_ru 0xdc4 #define IBUS_KEY_Thai_loling 0xdc5 #define IBUS_KEY_Thai_lu 0xdc6 #define IBUS_KEY_Thai_wowaen 0xdc7 #define IBUS_KEY_Thai_sosala 0xdc8 #define IBUS_KEY_Thai_sorusi 0xdc9 #define IBUS_KEY_Thai_sosua 0xdca #define IBUS_KEY_Thai_hohip 0xdcb #define IBUS_KEY_Thai_lochula 0xdcc #define IBUS_KEY_Thai_oang 0xdcd #define IBUS_KEY_Thai_honokhuk 0xdce #define IBUS_KEY_Thai_paiyannoi 0xdcf #define IBUS_KEY_Thai_saraa 0xdd0 #define IBUS_KEY_Thai_maihanakat 0xdd1 #define IBUS_KEY_Thai_saraaa 0xdd2 #define IBUS_KEY_Thai_saraam 0xdd3 #define IBUS_KEY_Thai_sarai 0xdd4 #define IBUS_KEY_Thai_saraii 0xdd5 #define IBUS_KEY_Thai_saraue 0xdd6 #define IBUS_KEY_Thai_sarauee 0xdd7 #define IBUS_KEY_Thai_sarau 0xdd8 #define IBUS_KEY_Thai_sarauu 0xdd9 #define IBUS_KEY_Thai_phinthu 0xdda #define IBUS_KEY_Thai_maihanakat_maitho 0xdde #define IBUS_KEY_Thai_baht 0xddf #define IBUS_KEY_Thai_sarae 0xde0 #define IBUS_KEY_Thai_saraae 0xde1 #define IBUS_KEY_Thai_sarao 0xde2 #define IBUS_KEY_Thai_saraaimaimuan 0xde3 #define IBUS_KEY_Thai_saraaimaimalai 0xde4 #define IBUS_KEY_Thai_lakkhangyao 0xde5 #define IBUS_KEY_Thai_maiyamok 0xde6 #define IBUS_KEY_Thai_maitaikhu 0xde7 #define IBUS_KEY_Thai_maiek 0xde8 #define IBUS_KEY_Thai_maitho 0xde9 #define IBUS_KEY_Thai_maitri 0xdea #define IBUS_KEY_Thai_maichattawa 0xdeb #define IBUS_KEY_Thai_thanthakhat 0xdec #define IBUS_KEY_Thai_nikhahit 0xded #define IBUS_KEY_Thai_leksun 0xdf0 #define IBUS_KEY_Thai_leknung 0xdf1 #define IBUS_KEY_Thai_leksong 0xdf2 #define IBUS_KEY_Thai_leksam 0xdf3 #define IBUS_KEY_Thai_leksi 0xdf4 #define IBUS_KEY_Thai_lekha 0xdf5 #define IBUS_KEY_Thai_lekhok 0xdf6 #define IBUS_KEY_Thai_lekchet 0xdf7 #define IBUS_KEY_Thai_lekpaet 0xdf8 #define IBUS_KEY_Thai_lekkao 0xdf9 #define IBUS_KEY_Hangul 0xff31 #define IBUS_KEY_Hangul_Start 0xff32 #define IBUS_KEY_Hangul_End 0xff33 #define IBUS_KEY_Hangul_Hanja 0xff34 #define IBUS_KEY_Hangul_Jamo 0xff35 #define IBUS_KEY_Hangul_Romaja 0xff36 #define IBUS_KEY_Hangul_Codeinput 0xff37 #define IBUS_KEY_Hangul_Jeonja 0xff38 #define IBUS_KEY_Hangul_Banja 0xff39 #define IBUS_KEY_Hangul_PreHanja 0xff3a #define IBUS_KEY_Hangul_PostHanja 0xff3b #define IBUS_KEY_Hangul_SingleCandidate 0xff3c #define IBUS_KEY_Hangul_MultipleCandidate 0xff3d #define IBUS_KEY_Hangul_PreviousCandidate 0xff3e #define IBUS_KEY_Hangul_Special 0xff3f #define IBUS_KEY_Hangul_switch 0xff7e #define IBUS_KEY_Hangul_Kiyeog 0xea1 #define IBUS_KEY_Hangul_SsangKiyeog 0xea2 #define IBUS_KEY_Hangul_KiyeogSios 0xea3 #define IBUS_KEY_Hangul_Nieun 0xea4 #define IBUS_KEY_Hangul_NieunJieuj 0xea5 #define IBUS_KEY_Hangul_NieunHieuh 0xea6 #define IBUS_KEY_Hangul_Dikeud 0xea7 #define IBUS_KEY_Hangul_SsangDikeud 0xea8 #define IBUS_KEY_Hangul_Rieul 0xea9 #define IBUS_KEY_Hangul_RieulKiyeog 0xeaa #define IBUS_KEY_Hangul_RieulMieum 0xeab #define IBUS_KEY_Hangul_RieulPieub 0xeac #define IBUS_KEY_Hangul_RieulSios 0xead #define IBUS_KEY_Hangul_RieulTieut 0xeae #define IBUS_KEY_Hangul_RieulPhieuf 0xeaf #define IBUS_KEY_Hangul_RieulHieuh 0xeb0 #define IBUS_KEY_Hangul_Mieum 0xeb1 #define IBUS_KEY_Hangul_Pieub 0xeb2 #define IBUS_KEY_Hangul_SsangPieub 0xeb3 #define IBUS_KEY_Hangul_PieubSios 0xeb4 #define IBUS_KEY_Hangul_Sios 0xeb5 #define IBUS_KEY_Hangul_SsangSios 0xeb6 #define IBUS_KEY_Hangul_Ieung 0xeb7 #define IBUS_KEY_Hangul_Jieuj 0xeb8 #define IBUS_KEY_Hangul_SsangJieuj 0xeb9 #define IBUS_KEY_Hangul_Cieuc 0xeba #define IBUS_KEY_Hangul_Khieuq 0xebb #define IBUS_KEY_Hangul_Tieut 0xebc #define IBUS_KEY_Hangul_Phieuf 0xebd #define IBUS_KEY_Hangul_Hieuh 0xebe #define IBUS_KEY_Hangul_A 0xebf #define IBUS_KEY_Hangul_AE 0xec0 #define IBUS_KEY_Hangul_YA 0xec1 #define IBUS_KEY_Hangul_YAE 0xec2 #define IBUS_KEY_Hangul_EO 0xec3 #define IBUS_KEY_Hangul_E 0xec4 #define IBUS_KEY_Hangul_YEO 0xec5 #define IBUS_KEY_Hangul_YE 0xec6 #define IBUS_KEY_Hangul_O 0xec7 #define IBUS_KEY_Hangul_WA 0xec8 #define IBUS_KEY_Hangul_WAE 0xec9 #define IBUS_KEY_Hangul_OE 0xeca #define IBUS_KEY_Hangul_YO 0xecb #define IBUS_KEY_Hangul_U 0xecc #define IBUS_KEY_Hangul_WEO 0xecd #define IBUS_KEY_Hangul_WE 0xece #define IBUS_KEY_Hangul_WI 0xecf #define IBUS_KEY_Hangul_YU 0xed0 #define IBUS_KEY_Hangul_EU 0xed1 #define IBUS_KEY_Hangul_YI 0xed2 #define IBUS_KEY_Hangul_I 0xed3 #define IBUS_KEY_Hangul_J_Kiyeog 0xed4 #define IBUS_KEY_Hangul_J_SsangKiyeog 0xed5 #define IBUS_KEY_Hangul_J_KiyeogSios 0xed6 #define IBUS_KEY_Hangul_J_Nieun 0xed7 #define IBUS_KEY_Hangul_J_NieunJieuj 0xed8 #define IBUS_KEY_Hangul_J_NieunHieuh 0xed9 #define IBUS_KEY_Hangul_J_Dikeud 0xeda #define IBUS_KEY_Hangul_J_Rieul 0xedb #define IBUS_KEY_Hangul_J_RieulKiyeog 0xedc #define IBUS_KEY_Hangul_J_RieulMieum 0xedd #define IBUS_KEY_Hangul_J_RieulPieub 0xede #define IBUS_KEY_Hangul_J_RieulSios 0xedf #define IBUS_KEY_Hangul_J_RieulTieut 0xee0 #define IBUS_KEY_Hangul_J_RieulPhieuf 0xee1 #define IBUS_KEY_Hangul_J_RieulHieuh 0xee2 #define IBUS_KEY_Hangul_J_Mieum 0xee3 #define IBUS_KEY_Hangul_J_Pieub 0xee4 #define IBUS_KEY_Hangul_J_PieubSios 0xee5 #define IBUS_KEY_Hangul_J_Sios 0xee6 #define IBUS_KEY_Hangul_J_SsangSios 0xee7 #define IBUS_KEY_Hangul_J_Ieung 0xee8 #define IBUS_KEY_Hangul_J_Jieuj 0xee9 #define IBUS_KEY_Hangul_J_Cieuc 0xeea #define IBUS_KEY_Hangul_J_Khieuq 0xeeb #define IBUS_KEY_Hangul_J_Tieut 0xeec #define IBUS_KEY_Hangul_J_Phieuf 0xeed #define IBUS_KEY_Hangul_J_Hieuh 0xeee #define IBUS_KEY_Hangul_RieulYeorinHieuh 0xeef #define IBUS_KEY_Hangul_SunkyeongeumMieum 0xef0 #define IBUS_KEY_Hangul_SunkyeongeumPieub 0xef1 #define IBUS_KEY_Hangul_PanSios 0xef2 #define IBUS_KEY_Hangul_KkogjiDalrinIeung 0xef3 #define IBUS_KEY_Hangul_SunkyeongeumPhieuf 0xef4 #define IBUS_KEY_Hangul_YeorinHieuh 0xef5 #define IBUS_KEY_Hangul_AraeA 0xef6 #define IBUS_KEY_Hangul_AraeAE 0xef7 #define IBUS_KEY_Hangul_J_PanSios 0xef8 #define IBUS_KEY_Hangul_J_KkogjiDalrinIeung 0xef9 #define IBUS_KEY_Hangul_J_YeorinHieuh 0xefa #define IBUS_KEY_Korean_Won 0xeff #define IBUS_KEY_Armenian_ligature_ew 0x1000587 #define IBUS_KEY_Armenian_full_stop 0x1000589 #define IBUS_KEY_Armenian_verjaket 0x1000589 #define IBUS_KEY_Armenian_separation_mark 0x100055d #define IBUS_KEY_Armenian_but 0x100055d #define IBUS_KEY_Armenian_hyphen 0x100058a #define IBUS_KEY_Armenian_yentamna 0x100058a #define IBUS_KEY_Armenian_exclam 0x100055c #define IBUS_KEY_Armenian_amanak 0x100055c #define IBUS_KEY_Armenian_accent 0x100055b #define IBUS_KEY_Armenian_shesht 0x100055b #define IBUS_KEY_Armenian_question 0x100055e #define IBUS_KEY_Armenian_paruyk 0x100055e #define IBUS_KEY_Armenian_AYB 0x1000531 #define IBUS_KEY_Armenian_ayb 0x1000561 #define IBUS_KEY_Armenian_BEN 0x1000532 #define IBUS_KEY_Armenian_ben 0x1000562 #define IBUS_KEY_Armenian_GIM 0x1000533 #define IBUS_KEY_Armenian_gim 0x1000563 #define IBUS_KEY_Armenian_DA 0x1000534 #define IBUS_KEY_Armenian_da 0x1000564 #define IBUS_KEY_Armenian_YECH 0x1000535 #define IBUS_KEY_Armenian_yech 0x1000565 #define IBUS_KEY_Armenian_ZA 0x1000536 #define IBUS_KEY_Armenian_za 0x1000566 #define IBUS_KEY_Armenian_E 0x1000537 #define IBUS_KEY_Armenian_e 0x1000567 #define IBUS_KEY_Armenian_AT 0x1000538 #define IBUS_KEY_Armenian_at 0x1000568 #define IBUS_KEY_Armenian_TO 0x1000539 #define IBUS_KEY_Armenian_to 0x1000569 #define IBUS_KEY_Armenian_ZHE 0x100053a #define IBUS_KEY_Armenian_zhe 0x100056a #define IBUS_KEY_Armenian_INI 0x100053b #define IBUS_KEY_Armenian_ini 0x100056b #define IBUS_KEY_Armenian_LYUN 0x100053c #define IBUS_KEY_Armenian_lyun 0x100056c #define IBUS_KEY_Armenian_KHE 0x100053d #define IBUS_KEY_Armenian_khe 0x100056d #define IBUS_KEY_Armenian_TSA 0x100053e #define IBUS_KEY_Armenian_tsa 0x100056e #define IBUS_KEY_Armenian_KEN 0x100053f #define IBUS_KEY_Armenian_ken 0x100056f #define IBUS_KEY_Armenian_HO 0x1000540 #define IBUS_KEY_Armenian_ho 0x1000570 #define IBUS_KEY_Armenian_DZA 0x1000541 #define IBUS_KEY_Armenian_dza 0x1000571 #define IBUS_KEY_Armenian_GHAT 0x1000542 #define IBUS_KEY_Armenian_ghat 0x1000572 #define IBUS_KEY_Armenian_TCHE 0x1000543 #define IBUS_KEY_Armenian_tche 0x1000573 #define IBUS_KEY_Armenian_MEN 0x1000544 #define IBUS_KEY_Armenian_men 0x1000574 #define IBUS_KEY_Armenian_HI 0x1000545 #define IBUS_KEY_Armenian_hi 0x1000575 #define IBUS_KEY_Armenian_NU 0x1000546 #define IBUS_KEY_Armenian_nu 0x1000576 #define IBUS_KEY_Armenian_SHA 0x1000547 #define IBUS_KEY_Armenian_sha 0x1000577 #define IBUS_KEY_Armenian_VO 0x1000548 #define IBUS_KEY_Armenian_vo 0x1000578 #define IBUS_KEY_Armenian_CHA 0x1000549 #define IBUS_KEY_Armenian_cha 0x1000579 #define IBUS_KEY_Armenian_PE 0x100054a #define IBUS_KEY_Armenian_pe 0x100057a #define IBUS_KEY_Armenian_JE 0x100054b #define IBUS_KEY_Armenian_je 0x100057b #define IBUS_KEY_Armenian_RA 0x100054c #define IBUS_KEY_Armenian_ra 0x100057c #define IBUS_KEY_Armenian_SE 0x100054d #define IBUS_KEY_Armenian_se 0x100057d #define IBUS_KEY_Armenian_VEV 0x100054e #define IBUS_KEY_Armenian_vev 0x100057e #define IBUS_KEY_Armenian_TYUN 0x100054f #define IBUS_KEY_Armenian_tyun 0x100057f #define IBUS_KEY_Armenian_RE 0x1000550 #define IBUS_KEY_Armenian_re 0x1000580 #define IBUS_KEY_Armenian_TSO 0x1000551 #define IBUS_KEY_Armenian_tso 0x1000581 #define IBUS_KEY_Armenian_VYUN 0x1000552 #define IBUS_KEY_Armenian_vyun 0x1000582 #define IBUS_KEY_Armenian_PYUR 0x1000553 #define IBUS_KEY_Armenian_pyur 0x1000583 #define IBUS_KEY_Armenian_KE 0x1000554 #define IBUS_KEY_Armenian_ke 0x1000584 #define IBUS_KEY_Armenian_O 0x1000555 #define IBUS_KEY_Armenian_o 0x1000585 #define IBUS_KEY_Armenian_FE 0x1000556 #define IBUS_KEY_Armenian_fe 0x1000586 #define IBUS_KEY_Armenian_apostrophe 0x100055a #define IBUS_KEY_Georgian_an 0x10010d0 #define IBUS_KEY_Georgian_ban 0x10010d1 #define IBUS_KEY_Georgian_gan 0x10010d2 #define IBUS_KEY_Georgian_don 0x10010d3 #define IBUS_KEY_Georgian_en 0x10010d4 #define IBUS_KEY_Georgian_vin 0x10010d5 #define IBUS_KEY_Georgian_zen 0x10010d6 #define IBUS_KEY_Georgian_tan 0x10010d7 #define IBUS_KEY_Georgian_in 0x10010d8 #define IBUS_KEY_Georgian_kan 0x10010d9 #define IBUS_KEY_Georgian_las 0x10010da #define IBUS_KEY_Georgian_man 0x10010db #define IBUS_KEY_Georgian_nar 0x10010dc #define IBUS_KEY_Georgian_on 0x10010dd #define IBUS_KEY_Georgian_par 0x10010de #define IBUS_KEY_Georgian_zhar 0x10010df #define IBUS_KEY_Georgian_rae 0x10010e0 #define IBUS_KEY_Georgian_san 0x10010e1 #define IBUS_KEY_Georgian_tar 0x10010e2 #define IBUS_KEY_Georgian_un 0x10010e3 #define IBUS_KEY_Georgian_phar 0x10010e4 #define IBUS_KEY_Georgian_khar 0x10010e5 #define IBUS_KEY_Georgian_ghan 0x10010e6 #define IBUS_KEY_Georgian_qar 0x10010e7 #define IBUS_KEY_Georgian_shin 0x10010e8 #define IBUS_KEY_Georgian_chin 0x10010e9 #define IBUS_KEY_Georgian_can 0x10010ea #define IBUS_KEY_Georgian_jil 0x10010eb #define IBUS_KEY_Georgian_cil 0x10010ec #define IBUS_KEY_Georgian_char 0x10010ed #define IBUS_KEY_Georgian_xan 0x10010ee #define IBUS_KEY_Georgian_jhan 0x10010ef #define IBUS_KEY_Georgian_hae 0x10010f0 #define IBUS_KEY_Georgian_he 0x10010f1 #define IBUS_KEY_Georgian_hie 0x10010f2 #define IBUS_KEY_Georgian_we 0x10010f3 #define IBUS_KEY_Georgian_har 0x10010f4 #define IBUS_KEY_Georgian_hoe 0x10010f5 #define IBUS_KEY_Georgian_fi 0x10010f6 #define IBUS_KEY_Xabovedot 0x1001e8a #define IBUS_KEY_Ibreve 0x100012c #define IBUS_KEY_Zstroke 0x10001b5 #define IBUS_KEY_Gcaron 0x10001e6 #define IBUS_KEY_Ocaron 0x10001d1 #define IBUS_KEY_Obarred 0x100019f #define IBUS_KEY_xabovedot 0x1001e8b #define IBUS_KEY_ibreve 0x100012d #define IBUS_KEY_zstroke 0x10001b6 #define IBUS_KEY_gcaron 0x10001e7 #define IBUS_KEY_ocaron 0x10001d2 #define IBUS_KEY_obarred 0x1000275 #define IBUS_KEY_SCHWA 0x100018f #define IBUS_KEY_EZH 0x10001b7 #define IBUS_KEY_schwa 0x1000259 #define IBUS_KEY_ezh 0x1000292 #define IBUS_KEY_Lbelowdot 0x1001e36 #define IBUS_KEY_lbelowdot 0x1001e37 #define IBUS_KEY_Abelowdot 0x1001ea0 #define IBUS_KEY_abelowdot 0x1001ea1 #define IBUS_KEY_Ahook 0x1001ea2 #define IBUS_KEY_ahook 0x1001ea3 #define IBUS_KEY_Acircumflexacute 0x1001ea4 #define IBUS_KEY_acircumflexacute 0x1001ea5 #define IBUS_KEY_Acircumflexgrave 0x1001ea6 #define IBUS_KEY_acircumflexgrave 0x1001ea7 #define IBUS_KEY_Acircumflexhook 0x1001ea8 #define IBUS_KEY_acircumflexhook 0x1001ea9 #define IBUS_KEY_Acircumflextilde 0x1001eaa #define IBUS_KEY_acircumflextilde 0x1001eab #define IBUS_KEY_Acircumflexbelowdot 0x1001eac #define IBUS_KEY_acircumflexbelowdot 0x1001ead #define IBUS_KEY_Abreveacute 0x1001eae #define IBUS_KEY_abreveacute 0x1001eaf #define IBUS_KEY_Abrevegrave 0x1001eb0 #define IBUS_KEY_abrevegrave 0x1001eb1 #define IBUS_KEY_Abrevehook 0x1001eb2 #define IBUS_KEY_abrevehook 0x1001eb3 #define IBUS_KEY_Abrevetilde 0x1001eb4 #define IBUS_KEY_abrevetilde 0x1001eb5 #define IBUS_KEY_Abrevebelowdot 0x1001eb6 #define IBUS_KEY_abrevebelowdot 0x1001eb7 #define IBUS_KEY_Ebelowdot 0x1001eb8 #define IBUS_KEY_ebelowdot 0x1001eb9 #define IBUS_KEY_Ehook 0x1001eba #define IBUS_KEY_ehook 0x1001ebb #define IBUS_KEY_Etilde 0x1001ebc #define IBUS_KEY_etilde 0x1001ebd #define IBUS_KEY_Ecircumflexacute 0x1001ebe #define IBUS_KEY_ecircumflexacute 0x1001ebf #define IBUS_KEY_Ecircumflexgrave 0x1001ec0 #define IBUS_KEY_ecircumflexgrave 0x1001ec1 #define IBUS_KEY_Ecircumflexhook 0x1001ec2 #define IBUS_KEY_ecircumflexhook 0x1001ec3 #define IBUS_KEY_Ecircumflextilde 0x1001ec4 #define IBUS_KEY_ecircumflextilde 0x1001ec5 #define IBUS_KEY_Ecircumflexbelowdot 0x1001ec6 #define IBUS_KEY_ecircumflexbelowdot 0x1001ec7 #define IBUS_KEY_Ihook 0x1001ec8 #define IBUS_KEY_ihook 0x1001ec9 #define IBUS_KEY_Ibelowdot 0x1001eca #define IBUS_KEY_ibelowdot 0x1001ecb #define IBUS_KEY_Obelowdot 0x1001ecc #define IBUS_KEY_obelowdot 0x1001ecd #define IBUS_KEY_Ohook 0x1001ece #define IBUS_KEY_ohook 0x1001ecf #define IBUS_KEY_Ocircumflexacute 0x1001ed0 #define IBUS_KEY_ocircumflexacute 0x1001ed1 #define IBUS_KEY_Ocircumflexgrave 0x1001ed2 #define IBUS_KEY_ocircumflexgrave 0x1001ed3 #define IBUS_KEY_Ocircumflexhook 0x1001ed4 #define IBUS_KEY_ocircumflexhook 0x1001ed5 #define IBUS_KEY_Ocircumflextilde 0x1001ed6 #define IBUS_KEY_ocircumflextilde 0x1001ed7 #define IBUS_KEY_Ocircumflexbelowdot 0x1001ed8 #define IBUS_KEY_ocircumflexbelowdot 0x1001ed9 #define IBUS_KEY_Ohornacute 0x1001eda #define IBUS_KEY_ohornacute 0x1001edb #define IBUS_KEY_Ohorngrave 0x1001edc #define IBUS_KEY_ohorngrave 0x1001edd #define IBUS_KEY_Ohornhook 0x1001ede #define IBUS_KEY_ohornhook 0x1001edf #define IBUS_KEY_Ohorntilde 0x1001ee0 #define IBUS_KEY_ohorntilde 0x1001ee1 #define IBUS_KEY_Ohornbelowdot 0x1001ee2 #define IBUS_KEY_ohornbelowdot 0x1001ee3 #define IBUS_KEY_Ubelowdot 0x1001ee4 #define IBUS_KEY_ubelowdot 0x1001ee5 #define IBUS_KEY_Uhook 0x1001ee6 #define IBUS_KEY_uhook 0x1001ee7 #define IBUS_KEY_Uhornacute 0x1001ee8 #define IBUS_KEY_uhornacute 0x1001ee9 #define IBUS_KEY_Uhorngrave 0x1001eea #define IBUS_KEY_uhorngrave 0x1001eeb #define IBUS_KEY_Uhornhook 0x1001eec #define IBUS_KEY_uhornhook 0x1001eed #define IBUS_KEY_Uhorntilde 0x1001eee #define IBUS_KEY_uhorntilde 0x1001eef #define IBUS_KEY_Uhornbelowdot 0x1001ef0 #define IBUS_KEY_uhornbelowdot 0x1001ef1 #define IBUS_KEY_Ybelowdot 0x1001ef4 #define IBUS_KEY_ybelowdot 0x1001ef5 #define IBUS_KEY_Yhook 0x1001ef6 #define IBUS_KEY_yhook 0x1001ef7 #define IBUS_KEY_Ytilde 0x1001ef8 #define IBUS_KEY_ytilde 0x1001ef9 #define IBUS_KEY_Ohorn 0x10001a0 #define IBUS_KEY_ohorn 0x10001a1 #define IBUS_KEY_Uhorn 0x10001af #define IBUS_KEY_uhorn 0x10001b0 #define IBUS_KEY_EcuSign 0x10020a0 #define IBUS_KEY_ColonSign 0x10020a1 #define IBUS_KEY_CruzeiroSign 0x10020a2 #define IBUS_KEY_FFrancSign 0x10020a3 #define IBUS_KEY_LiraSign 0x10020a4 #define IBUS_KEY_MillSign 0x10020a5 #define IBUS_KEY_NairaSign 0x10020a6 #define IBUS_KEY_PesetaSign 0x10020a7 #define IBUS_KEY_RupeeSign 0x10020a8 #define IBUS_KEY_WonSign 0x10020a9 #define IBUS_KEY_NewSheqelSign 0x10020aa #define IBUS_KEY_DongSign 0x10020ab #define IBUS_KEY_EuroSign 0x20ac #define IBUS_KEY_zerosuperior 0x1002070 #define IBUS_KEY_foursuperior 0x1002074 #define IBUS_KEY_fivesuperior 0x1002075 #define IBUS_KEY_sixsuperior 0x1002076 #define IBUS_KEY_sevensuperior 0x1002077 #define IBUS_KEY_eightsuperior 0x1002078 #define IBUS_KEY_ninesuperior 0x1002079 #define IBUS_KEY_zerosubscript 0x1002080 #define IBUS_KEY_onesubscript 0x1002081 #define IBUS_KEY_twosubscript 0x1002082 #define IBUS_KEY_threesubscript 0x1002083 #define IBUS_KEY_foursubscript 0x1002084 #define IBUS_KEY_fivesubscript 0x1002085 #define IBUS_KEY_sixsubscript 0x1002086 #define IBUS_KEY_sevensubscript 0x1002087 #define IBUS_KEY_eightsubscript 0x1002088 #define IBUS_KEY_ninesubscript 0x1002089 #define IBUS_KEY_partdifferential 0x1002202 #define IBUS_KEY_emptyset 0x1002205 #define IBUS_KEY_elementof 0x1002208 #define IBUS_KEY_notelementof 0x1002209 #define IBUS_KEY_containsas 0x100220b #define IBUS_KEY_squareroot 0x100221a #define IBUS_KEY_cuberoot 0x100221b #define IBUS_KEY_fourthroot 0x100221c #define IBUS_KEY_dintegral 0x100222c #define IBUS_KEY_tintegral 0x100222d #define IBUS_KEY_because 0x1002235 #define IBUS_KEY_approxeq 0x1002248 #define IBUS_KEY_notapproxeq 0x1002247 #define IBUS_KEY_notidentical 0x1002262 #define IBUS_KEY_stricteq 0x1002263 #define IBUS_KEY_braille_dot_1 0xfff1 #define IBUS_KEY_braille_dot_2 0xfff2 #define IBUS_KEY_braille_dot_3 0xfff3 #define IBUS_KEY_braille_dot_4 0xfff4 #define IBUS_KEY_braille_dot_5 0xfff5 #define IBUS_KEY_braille_dot_6 0xfff6 #define IBUS_KEY_braille_dot_7 0xfff7 #define IBUS_KEY_braille_dot_8 0xfff8 #define IBUS_KEY_braille_dot_9 0xfff9 #define IBUS_KEY_braille_dot_10 0xfffa #define IBUS_KEY_braille_blank 0x1002800 #define IBUS_KEY_braille_dots_1 0x1002801 #define IBUS_KEY_braille_dots_2 0x1002802 #define IBUS_KEY_braille_dots_12 0x1002803 #define IBUS_KEY_braille_dots_3 0x1002804 #define IBUS_KEY_braille_dots_13 0x1002805 #define IBUS_KEY_braille_dots_23 0x1002806 #define IBUS_KEY_braille_dots_123 0x1002807 #define IBUS_KEY_braille_dots_4 0x1002808 #define IBUS_KEY_braille_dots_14 0x1002809 #define IBUS_KEY_braille_dots_24 0x100280a #define IBUS_KEY_braille_dots_124 0x100280b #define IBUS_KEY_braille_dots_34 0x100280c #define IBUS_KEY_braille_dots_134 0x100280d #define IBUS_KEY_braille_dots_234 0x100280e #define IBUS_KEY_braille_dots_1234 0x100280f #define IBUS_KEY_braille_dots_5 0x1002810 #define IBUS_KEY_braille_dots_15 0x1002811 #define IBUS_KEY_braille_dots_25 0x1002812 #define IBUS_KEY_braille_dots_125 0x1002813 #define IBUS_KEY_braille_dots_35 0x1002814 #define IBUS_KEY_braille_dots_135 0x1002815 #define IBUS_KEY_braille_dots_235 0x1002816 #define IBUS_KEY_braille_dots_1235 0x1002817 #define IBUS_KEY_braille_dots_45 0x1002818 #define IBUS_KEY_braille_dots_145 0x1002819 #define IBUS_KEY_braille_dots_245 0x100281a #define IBUS_KEY_braille_dots_1245 0x100281b #define IBUS_KEY_braille_dots_345 0x100281c #define IBUS_KEY_braille_dots_1345 0x100281d #define IBUS_KEY_braille_dots_2345 0x100281e #define IBUS_KEY_braille_dots_12345 0x100281f #define IBUS_KEY_braille_dots_6 0x1002820 #define IBUS_KEY_braille_dots_16 0x1002821 #define IBUS_KEY_braille_dots_26 0x1002822 #define IBUS_KEY_braille_dots_126 0x1002823 #define IBUS_KEY_braille_dots_36 0x1002824 #define IBUS_KEY_braille_dots_136 0x1002825 #define IBUS_KEY_braille_dots_236 0x1002826 #define IBUS_KEY_braille_dots_1236 0x1002827 #define IBUS_KEY_braille_dots_46 0x1002828 #define IBUS_KEY_braille_dots_146 0x1002829 #define IBUS_KEY_braille_dots_246 0x100282a #define IBUS_KEY_braille_dots_1246 0x100282b #define IBUS_KEY_braille_dots_346 0x100282c #define IBUS_KEY_braille_dots_1346 0x100282d #define IBUS_KEY_braille_dots_2346 0x100282e #define IBUS_KEY_braille_dots_12346 0x100282f #define IBUS_KEY_braille_dots_56 0x1002830 #define IBUS_KEY_braille_dots_156 0x1002831 #define IBUS_KEY_braille_dots_256 0x1002832 #define IBUS_KEY_braille_dots_1256 0x1002833 #define IBUS_KEY_braille_dots_356 0x1002834 #define IBUS_KEY_braille_dots_1356 0x1002835 #define IBUS_KEY_braille_dots_2356 0x1002836 #define IBUS_KEY_braille_dots_12356 0x1002837 #define IBUS_KEY_braille_dots_456 0x1002838 #define IBUS_KEY_braille_dots_1456 0x1002839 #define IBUS_KEY_braille_dots_2456 0x100283a #define IBUS_KEY_braille_dots_12456 0x100283b #define IBUS_KEY_braille_dots_3456 0x100283c #define IBUS_KEY_braille_dots_13456 0x100283d #define IBUS_KEY_braille_dots_23456 0x100283e #define IBUS_KEY_braille_dots_123456 0x100283f #define IBUS_KEY_braille_dots_7 0x1002840 #define IBUS_KEY_braille_dots_17 0x1002841 #define IBUS_KEY_braille_dots_27 0x1002842 #define IBUS_KEY_braille_dots_127 0x1002843 #define IBUS_KEY_braille_dots_37 0x1002844 #define IBUS_KEY_braille_dots_137 0x1002845 #define IBUS_KEY_braille_dots_237 0x1002846 #define IBUS_KEY_braille_dots_1237 0x1002847 #define IBUS_KEY_braille_dots_47 0x1002848 #define IBUS_KEY_braille_dots_147 0x1002849 #define IBUS_KEY_braille_dots_247 0x100284a #define IBUS_KEY_braille_dots_1247 0x100284b #define IBUS_KEY_braille_dots_347 0x100284c #define IBUS_KEY_braille_dots_1347 0x100284d #define IBUS_KEY_braille_dots_2347 0x100284e #define IBUS_KEY_braille_dots_12347 0x100284f #define IBUS_KEY_braille_dots_57 0x1002850 #define IBUS_KEY_braille_dots_157 0x1002851 #define IBUS_KEY_braille_dots_257 0x1002852 #define IBUS_KEY_braille_dots_1257 0x1002853 #define IBUS_KEY_braille_dots_357 0x1002854 #define IBUS_KEY_braille_dots_1357 0x1002855 #define IBUS_KEY_braille_dots_2357 0x1002856 #define IBUS_KEY_braille_dots_12357 0x1002857 #define IBUS_KEY_braille_dots_457 0x1002858 #define IBUS_KEY_braille_dots_1457 0x1002859 #define IBUS_KEY_braille_dots_2457 0x100285a #define IBUS_KEY_braille_dots_12457 0x100285b #define IBUS_KEY_braille_dots_3457 0x100285c #define IBUS_KEY_braille_dots_13457 0x100285d #define IBUS_KEY_braille_dots_23457 0x100285e #define IBUS_KEY_braille_dots_123457 0x100285f #define IBUS_KEY_braille_dots_67 0x1002860 #define IBUS_KEY_braille_dots_167 0x1002861 #define IBUS_KEY_braille_dots_267 0x1002862 #define IBUS_KEY_braille_dots_1267 0x1002863 #define IBUS_KEY_braille_dots_367 0x1002864 #define IBUS_KEY_braille_dots_1367 0x1002865 #define IBUS_KEY_braille_dots_2367 0x1002866 #define IBUS_KEY_braille_dots_12367 0x1002867 #define IBUS_KEY_braille_dots_467 0x1002868 #define IBUS_KEY_braille_dots_1467 0x1002869 #define IBUS_KEY_braille_dots_2467 0x100286a #define IBUS_KEY_braille_dots_12467 0x100286b #define IBUS_KEY_braille_dots_3467 0x100286c #define IBUS_KEY_braille_dots_13467 0x100286d #define IBUS_KEY_braille_dots_23467 0x100286e #define IBUS_KEY_braille_dots_123467 0x100286f #define IBUS_KEY_braille_dots_567 0x1002870 #define IBUS_KEY_braille_dots_1567 0x1002871 #define IBUS_KEY_braille_dots_2567 0x1002872 #define IBUS_KEY_braille_dots_12567 0x1002873 #define IBUS_KEY_braille_dots_3567 0x1002874 #define IBUS_KEY_braille_dots_13567 0x1002875 #define IBUS_KEY_braille_dots_23567 0x1002876 #define IBUS_KEY_braille_dots_123567 0x1002877 #define IBUS_KEY_braille_dots_4567 0x1002878 #define IBUS_KEY_braille_dots_14567 0x1002879 #define IBUS_KEY_braille_dots_24567 0x100287a #define IBUS_KEY_braille_dots_124567 0x100287b #define IBUS_KEY_braille_dots_34567 0x100287c #define IBUS_KEY_braille_dots_134567 0x100287d #define IBUS_KEY_braille_dots_234567 0x100287e #define IBUS_KEY_braille_dots_1234567 0x100287f #define IBUS_KEY_braille_dots_8 0x1002880 #define IBUS_KEY_braille_dots_18 0x1002881 #define IBUS_KEY_braille_dots_28 0x1002882 #define IBUS_KEY_braille_dots_128 0x1002883 #define IBUS_KEY_braille_dots_38 0x1002884 #define IBUS_KEY_braille_dots_138 0x1002885 #define IBUS_KEY_braille_dots_238 0x1002886 #define IBUS_KEY_braille_dots_1238 0x1002887 #define IBUS_KEY_braille_dots_48 0x1002888 #define IBUS_KEY_braille_dots_148 0x1002889 #define IBUS_KEY_braille_dots_248 0x100288a #define IBUS_KEY_braille_dots_1248 0x100288b #define IBUS_KEY_braille_dots_348 0x100288c #define IBUS_KEY_braille_dots_1348 0x100288d #define IBUS_KEY_braille_dots_2348 0x100288e #define IBUS_KEY_braille_dots_12348 0x100288f #define IBUS_KEY_braille_dots_58 0x1002890 #define IBUS_KEY_braille_dots_158 0x1002891 #define IBUS_KEY_braille_dots_258 0x1002892 #define IBUS_KEY_braille_dots_1258 0x1002893 #define IBUS_KEY_braille_dots_358 0x1002894 #define IBUS_KEY_braille_dots_1358 0x1002895 #define IBUS_KEY_braille_dots_2358 0x1002896 #define IBUS_KEY_braille_dots_12358 0x1002897 #define IBUS_KEY_braille_dots_458 0x1002898 #define IBUS_KEY_braille_dots_1458 0x1002899 #define IBUS_KEY_braille_dots_2458 0x100289a #define IBUS_KEY_braille_dots_12458 0x100289b #define IBUS_KEY_braille_dots_3458 0x100289c #define IBUS_KEY_braille_dots_13458 0x100289d #define IBUS_KEY_braille_dots_23458 0x100289e #define IBUS_KEY_braille_dots_123458 0x100289f #define IBUS_KEY_braille_dots_68 0x10028a0 #define IBUS_KEY_braille_dots_168 0x10028a1 #define IBUS_KEY_braille_dots_268 0x10028a2 #define IBUS_KEY_braille_dots_1268 0x10028a3 #define IBUS_KEY_braille_dots_368 0x10028a4 #define IBUS_KEY_braille_dots_1368 0x10028a5 #define IBUS_KEY_braille_dots_2368 0x10028a6 #define IBUS_KEY_braille_dots_12368 0x10028a7 #define IBUS_KEY_braille_dots_468 0x10028a8 #define IBUS_KEY_braille_dots_1468 0x10028a9 #define IBUS_KEY_braille_dots_2468 0x10028aa #define IBUS_KEY_braille_dots_12468 0x10028ab #define IBUS_KEY_braille_dots_3468 0x10028ac #define IBUS_KEY_braille_dots_13468 0x10028ad #define IBUS_KEY_braille_dots_23468 0x10028ae #define IBUS_KEY_braille_dots_123468 0x10028af #define IBUS_KEY_braille_dots_568 0x10028b0 #define IBUS_KEY_braille_dots_1568 0x10028b1 #define IBUS_KEY_braille_dots_2568 0x10028b2 #define IBUS_KEY_braille_dots_12568 0x10028b3 #define IBUS_KEY_braille_dots_3568 0x10028b4 #define IBUS_KEY_braille_dots_13568 0x10028b5 #define IBUS_KEY_braille_dots_23568 0x10028b6 #define IBUS_KEY_braille_dots_123568 0x10028b7 #define IBUS_KEY_braille_dots_4568 0x10028b8 #define IBUS_KEY_braille_dots_14568 0x10028b9 #define IBUS_KEY_braille_dots_24568 0x10028ba #define IBUS_KEY_braille_dots_124568 0x10028bb #define IBUS_KEY_braille_dots_34568 0x10028bc #define IBUS_KEY_braille_dots_134568 0x10028bd #define IBUS_KEY_braille_dots_234568 0x10028be #define IBUS_KEY_braille_dots_1234568 0x10028bf #define IBUS_KEY_braille_dots_78 0x10028c0 #define IBUS_KEY_braille_dots_178 0x10028c1 #define IBUS_KEY_braille_dots_278 0x10028c2 #define IBUS_KEY_braille_dots_1278 0x10028c3 #define IBUS_KEY_braille_dots_378 0x10028c4 #define IBUS_KEY_braille_dots_1378 0x10028c5 #define IBUS_KEY_braille_dots_2378 0x10028c6 #define IBUS_KEY_braille_dots_12378 0x10028c7 #define IBUS_KEY_braille_dots_478 0x10028c8 #define IBUS_KEY_braille_dots_1478 0x10028c9 #define IBUS_KEY_braille_dots_2478 0x10028ca #define IBUS_KEY_braille_dots_12478 0x10028cb #define IBUS_KEY_braille_dots_3478 0x10028cc #define IBUS_KEY_braille_dots_13478 0x10028cd #define IBUS_KEY_braille_dots_23478 0x10028ce #define IBUS_KEY_braille_dots_123478 0x10028cf #define IBUS_KEY_braille_dots_578 0x10028d0 #define IBUS_KEY_braille_dots_1578 0x10028d1 #define IBUS_KEY_braille_dots_2578 0x10028d2 #define IBUS_KEY_braille_dots_12578 0x10028d3 #define IBUS_KEY_braille_dots_3578 0x10028d4 #define IBUS_KEY_braille_dots_13578 0x10028d5 #define IBUS_KEY_braille_dots_23578 0x10028d6 #define IBUS_KEY_braille_dots_123578 0x10028d7 #define IBUS_KEY_braille_dots_4578 0x10028d8 #define IBUS_KEY_braille_dots_14578 0x10028d9 #define IBUS_KEY_braille_dots_24578 0x10028da #define IBUS_KEY_braille_dots_124578 0x10028db #define IBUS_KEY_braille_dots_34578 0x10028dc #define IBUS_KEY_braille_dots_134578 0x10028dd #define IBUS_KEY_braille_dots_234578 0x10028de #define IBUS_KEY_braille_dots_1234578 0x10028df #define IBUS_KEY_braille_dots_678 0x10028e0 #define IBUS_KEY_braille_dots_1678 0x10028e1 #define IBUS_KEY_braille_dots_2678 0x10028e2 #define IBUS_KEY_braille_dots_12678 0x10028e3 #define IBUS_KEY_braille_dots_3678 0x10028e4 #define IBUS_KEY_braille_dots_13678 0x10028e5 #define IBUS_KEY_braille_dots_23678 0x10028e6 #define IBUS_KEY_braille_dots_123678 0x10028e7 #define IBUS_KEY_braille_dots_4678 0x10028e8 #define IBUS_KEY_braille_dots_14678 0x10028e9 #define IBUS_KEY_braille_dots_24678 0x10028ea #define IBUS_KEY_braille_dots_124678 0x10028eb #define IBUS_KEY_braille_dots_34678 0x10028ec #define IBUS_KEY_braille_dots_134678 0x10028ed #define IBUS_KEY_braille_dots_234678 0x10028ee #define IBUS_KEY_braille_dots_1234678 0x10028ef #define IBUS_KEY_braille_dots_5678 0x10028f0 #define IBUS_KEY_braille_dots_15678 0x10028f1 #define IBUS_KEY_braille_dots_25678 0x10028f2 #define IBUS_KEY_braille_dots_125678 0x10028f3 #define IBUS_KEY_braille_dots_35678 0x10028f4 #define IBUS_KEY_braille_dots_135678 0x10028f5 #define IBUS_KEY_braille_dots_235678 0x10028f6 #define IBUS_KEY_braille_dots_1235678 0x10028f7 #define IBUS_KEY_braille_dots_45678 0x10028f8 #define IBUS_KEY_braille_dots_145678 0x10028f9 #define IBUS_KEY_braille_dots_245678 0x10028fa #define IBUS_KEY_braille_dots_1245678 0x10028fb #define IBUS_KEY_braille_dots_345678 0x10028fc #define IBUS_KEY_braille_dots_1345678 0x10028fd #define IBUS_KEY_braille_dots_2345678 0x10028fe #define IBUS_KEY_braille_dots_12345678 0x10028ff #define IBUS_KEY_Sinh_ng 0x1000d82 #define IBUS_KEY_Sinh_h2 0x1000d83 #define IBUS_KEY_Sinh_a 0x1000d85 #define IBUS_KEY_Sinh_aa 0x1000d86 #define IBUS_KEY_Sinh_ae 0x1000d87 #define IBUS_KEY_Sinh_aee 0x1000d88 #define IBUS_KEY_Sinh_i 0x1000d89 #define IBUS_KEY_Sinh_ii 0x1000d8a #define IBUS_KEY_Sinh_u 0x1000d8b #define IBUS_KEY_Sinh_uu 0x1000d8c #define IBUS_KEY_Sinh_ri 0x1000d8d #define IBUS_KEY_Sinh_rii 0x1000d8e #define IBUS_KEY_Sinh_lu 0x1000d8f #define IBUS_KEY_Sinh_luu 0x1000d90 #define IBUS_KEY_Sinh_e 0x1000d91 #define IBUS_KEY_Sinh_ee 0x1000d92 #define IBUS_KEY_Sinh_ai 0x1000d93 #define IBUS_KEY_Sinh_o 0x1000d94 #define IBUS_KEY_Sinh_oo 0x1000d95 #define IBUS_KEY_Sinh_au 0x1000d96 #define IBUS_KEY_Sinh_ka 0x1000d9a #define IBUS_KEY_Sinh_kha 0x1000d9b #define IBUS_KEY_Sinh_ga 0x1000d9c #define IBUS_KEY_Sinh_gha 0x1000d9d #define IBUS_KEY_Sinh_ng2 0x1000d9e #define IBUS_KEY_Sinh_nga 0x1000d9f #define IBUS_KEY_Sinh_ca 0x1000da0 #define IBUS_KEY_Sinh_cha 0x1000da1 #define IBUS_KEY_Sinh_ja 0x1000da2 #define IBUS_KEY_Sinh_jha 0x1000da3 #define IBUS_KEY_Sinh_nya 0x1000da4 #define IBUS_KEY_Sinh_jnya 0x1000da5 #define IBUS_KEY_Sinh_nja 0x1000da6 #define IBUS_KEY_Sinh_tta 0x1000da7 #define IBUS_KEY_Sinh_ttha 0x1000da8 #define IBUS_KEY_Sinh_dda 0x1000da9 #define IBUS_KEY_Sinh_ddha 0x1000daa #define IBUS_KEY_Sinh_nna 0x1000dab #define IBUS_KEY_Sinh_ndda 0x1000dac #define IBUS_KEY_Sinh_tha 0x1000dad #define IBUS_KEY_Sinh_thha 0x1000dae #define IBUS_KEY_Sinh_dha 0x1000daf #define IBUS_KEY_Sinh_dhha 0x1000db0 #define IBUS_KEY_Sinh_na 0x1000db1 #define IBUS_KEY_Sinh_ndha 0x1000db3 #define IBUS_KEY_Sinh_pa 0x1000db4 #define IBUS_KEY_Sinh_pha 0x1000db5 #define IBUS_KEY_Sinh_ba 0x1000db6 #define IBUS_KEY_Sinh_bha 0x1000db7 #define IBUS_KEY_Sinh_ma 0x1000db8 #define IBUS_KEY_Sinh_mba 0x1000db9 #define IBUS_KEY_Sinh_ya 0x1000dba #define IBUS_KEY_Sinh_ra 0x1000dbb #define IBUS_KEY_Sinh_la 0x1000dbd #define IBUS_KEY_Sinh_va 0x1000dc0 #define IBUS_KEY_Sinh_sha 0x1000dc1 #define IBUS_KEY_Sinh_ssha 0x1000dc2 #define IBUS_KEY_Sinh_sa 0x1000dc3 #define IBUS_KEY_Sinh_ha 0x1000dc4 #define IBUS_KEY_Sinh_lla 0x1000dc5 #define IBUS_KEY_Sinh_fa 0x1000dc6 #define IBUS_KEY_Sinh_al 0x1000dca #define IBUS_KEY_Sinh_aa2 0x1000dcf #define IBUS_KEY_Sinh_ae2 0x1000dd0 #define IBUS_KEY_Sinh_aee2 0x1000dd1 #define IBUS_KEY_Sinh_i2 0x1000dd2 #define IBUS_KEY_Sinh_ii2 0x1000dd3 #define IBUS_KEY_Sinh_u2 0x1000dd4 #define IBUS_KEY_Sinh_uu2 0x1000dd6 #define IBUS_KEY_Sinh_ru2 0x1000dd8 #define IBUS_KEY_Sinh_e2 0x1000dd9 #define IBUS_KEY_Sinh_ee2 0x1000dda #define IBUS_KEY_Sinh_ai2 0x1000ddb #define IBUS_KEY_Sinh_o2 0x1000ddc #define IBUS_KEY_Sinh_oo2 0x1000ddd #define IBUS_KEY_Sinh_au2 0x1000dde #define IBUS_KEY_Sinh_lu2 0x1000ddf #define IBUS_KEY_Sinh_ruu2 0x1000df2 #define IBUS_KEY_Sinh_luu2 0x1000df3 #define IBUS_KEY_Sinh_kunddaliya 0x1000df4 #endif /* __IBUS_KEYSYMS_H__ */ ibus-1.5.11/src/ibusproplist.c0000644000000000000000000001402712551654123013132 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusproplist.h" /* functions prototype */ static void ibus_prop_list_destroy (IBusPropList *prop_list); static gboolean ibus_prop_list_serialize (IBusPropList *prop_list, GVariantBuilder *builder); static gint ibus_prop_list_deserialize (IBusPropList *prop_list, GVariant *variant); static gboolean ibus_prop_list_copy (IBusPropList *dest, const IBusPropList *src); G_DEFINE_TYPE (IBusPropList, ibus_prop_list, IBUS_TYPE_SERIALIZABLE) static void ibus_prop_list_class_init (IBusPropListClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_prop_list_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_prop_list_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_prop_list_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_prop_list_copy; } static void ibus_prop_list_init (IBusPropList *prop_list) { prop_list->properties = g_array_new (TRUE, TRUE, sizeof (IBusProperty *)); } static void ibus_prop_list_destroy (IBusPropList *prop_list) { IBusProperty **p; gint i; p = (IBusProperty **) g_array_free (prop_list->properties, FALSE); for (i = 0; p[i] != NULL; i++) { g_object_unref (p[i]); } g_free (p); IBUS_OBJECT_CLASS (ibus_prop_list_parent_class)->destroy ((IBusObject *) prop_list); } static gboolean ibus_prop_list_serialize (IBusPropList *prop_list, GVariantBuilder *builder) { gboolean retval; guint i; retval = IBUS_SERIALIZABLE_CLASS (ibus_prop_list_parent_class)->serialize ((IBusSerializable *) prop_list, builder); g_return_val_if_fail (retval, FALSE); GVariantBuilder array; g_variant_builder_init (&array, G_VARIANT_TYPE ("av")); for (i = 0;; i++) { IBusProperty *prop = ibus_prop_list_get (prop_list, i); if (prop == NULL) break; g_variant_builder_add (&array, "v", ibus_serializable_serialize ((IBusSerializable *)prop)); } g_variant_builder_add (builder, "av", &array); return TRUE; } gint ibus_prop_list_deserialize (IBusPropList *prop_list, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_prop_list_parent_class)->deserialize ((IBusSerializable *) prop_list, variant); g_return_val_if_fail (retval, 0); g_return_val_if_fail (IBUS_IS_PROP_LIST (prop_list), 0); GVariantIter *iter = NULL; g_variant_get_child (variant, retval++, "av", &iter); g_return_val_if_fail (iter != NULL, retval); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusProperty *prop = IBUS_PROPERTY (ibus_serializable_deserialize (var)); ibus_prop_list_append (prop_list, prop); } g_variant_iter_free (iter); return retval; } static gboolean ibus_prop_list_copy (IBusPropList *dest, const IBusPropList *src) { gboolean retval; IBusProperty *prop; guint i; retval = IBUS_SERIALIZABLE_CLASS (ibus_prop_list_parent_class)->copy ((IBusSerializable *) dest, (const IBusSerializable *) src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_PROP_LIST (dest), FALSE); g_return_val_if_fail (IBUS_IS_PROP_LIST (src), FALSE); i = 0; while ((prop = ibus_prop_list_get ((IBusPropList *)src, i)) != NULL) { prop = (IBusProperty *) ibus_serializable_copy ((IBusSerializable *) prop); ibus_prop_list_append (dest, prop); i ++; } return TRUE; } IBusPropList * ibus_prop_list_new () { IBusPropList *prop_list; prop_list = g_object_new (IBUS_TYPE_PROP_LIST, NULL); return prop_list; } void ibus_prop_list_append (IBusPropList *prop_list, IBusProperty *prop) { g_assert (IBUS_IS_PROP_LIST (prop_list)); g_assert (IBUS_IS_PROPERTY (prop)); g_object_ref_sink (prop); g_array_append_val (prop_list->properties, prop); } IBusProperty * ibus_prop_list_get (IBusPropList *prop_list, guint index) { g_assert (IBUS_IS_PROP_LIST (prop_list)); if (index >= prop_list->properties->len) return NULL; return g_array_index (prop_list->properties, IBusProperty *, index); } gboolean ibus_prop_list_update_property (IBusPropList *prop_list, IBusProperty *prop_update) { g_assert (IBUS_IS_PROP_LIST (prop_list)); g_assert (IBUS_IS_PROPERTY (prop_update)); gint i; for (i = 0; i < prop_list->properties->len; i ++) { IBusProperty *prop = g_array_index (prop_list->properties, IBusProperty *, i); if (ibus_property_update (prop, prop_update)) { return TRUE; } } return FALSE; } ibus-1.5.11/src/ibusproperty.h0000644000000000000000000002653212551654123013153 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_PROPERTY_H_ #define __IBUS_PROPERTY_H_ #include "ibusserializable.h" #include "ibustext.h" /** * SECTION: ibusproperty * @short_description: UI component for input method engine property. * @title: IBusProperty * @stability: Stable * * An IBusProperty is an UI component like a button or a menu item * which shows the status of corresponding input method engine property. * End user can operate and see the current status of IME through these components. * For example, ibus-chewing users change the English/Chinese input mode by * pressing ctrl-space or click on the Eng/Chi switch button. * And the IBusProperty shows the change correspondingly. * * see_also: #IBusPropList, #IBusEngine */ G_BEGIN_DECLS /* * Type macros. */ /* define IBusProperty macros */ #define IBUS_TYPE_PROPERTY \ (ibus_property_get_type ()) #define IBUS_PROPERTY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROPERTY, IBusProperty)) #define IBUS_PROPERTY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROPERTY, IBusPropertyClass)) #define IBUS_IS_PROPERTY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROPERTY)) #define IBUS_IS_PROPERTY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROPERTY)) #define IBUS_PROPERTY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROPERTY, IBusPropertyClass)) /** * IBusPropType: * @PROP_TYPE_NORMAL: Property is shown as normal text. * @PROP_TYPE_TOGGLE: Property is shown as a toggle button. * @PROP_TYPE_RADIO: Property is shown as a radio selection option. * @PROP_TYPE_MENU: Property is shown as a menu, usually imply it has sub menu * items. * @PROP_TYPE_SEPARATOR: A separator for menu. * * Type enumeration of IBusProperty. */ typedef enum { PROP_TYPE_NORMAL = 0, PROP_TYPE_TOGGLE = 1, PROP_TYPE_RADIO = 2, PROP_TYPE_MENU = 3, PROP_TYPE_SEPARATOR = 4, } IBusPropType; /** * IBusPropState: * @PROP_STATE_UNCHECKED: Property option is unchecked. * @PROP_STATE_CHECKED: Property option is checked. * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME * property. * * State of #IBusProperty. The actual effect depends on #IBusPropType of the * IBusProperty. * * * * PROP_TYPE_TOGGLE * Emphasized if PROP_STATE_CHECKED, normal otherwise. * * * PROP_TYPE_RADIO * Option checked if PROP_STATE_CHECKED, unchecked otherwise. * * * No effect on other types. */ typedef enum { PROP_STATE_UNCHECKED = 0, PROP_STATE_CHECKED = 1, PROP_STATE_INCONSISTENT = 2, } IBusPropState; typedef struct _IBusProperty IBusProperty; typedef struct _IBusPropertyClass IBusPropertyClass; typedef struct _IBusPropertyPrivate IBusPropertyPrivate; #ifndef __PROPLIST_DEFINED #define __PROPLIST_DEFINED typedef struct _IBusPropList IBusPropList; typedef struct _IBusPropListClass IBusPropListClass; #endif /** * IBusProperty: * UI component for input method engine property. */ struct _IBusProperty { /*< private >*/ IBusSerializable parent; IBusPropertyPrivate *priv; gpointer pdummy[7]; }; struct _IBusPropertyClass { IBusSerializableClass parent; }; GType ibus_property_get_type (); /** * ibus_property_new: * @key: Unique Identity for the #IBusProperty. * @type: #IBusPropType of #IBusProperty. * @label: Text shown in UI. * @icon: (allow-none): Icon file for the #IBusProperty. * @tooltip: Message shown if mouse hovered the #IBusProperty. * @sensitive: Whether the #IBusProperty is sensitive to keyboard and mouse event. * @visible: Whether the #IBusProperty is visible. * @state: IBusPropState of #IBusProperty. * @prop_list: (allow-none): #IBusPropList that contains sub IBusProperties. * * Creates a new #IBusProperty. * * Returns: A newly allocated #IBusProperty. */ IBusProperty *ibus_property_new (const gchar *key, IBusPropType type, IBusText *label, const gchar *icon, IBusText *tooltip, gboolean sensitive, gboolean visible, IBusPropState state, IBusPropList *prop_list); /** * ibus_property_new_varargs: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusProperty. * ibus_property_new_varargs() supports the va_list format. * name property is required. e.g. * ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL) * * Returns: A newly allocated #IBusProperty. */ IBusProperty *ibus_property_new_varargs (const gchar *first_property_name, ...); /** * ibus_property_get_key: * @prop: An #IBusProperty. * * Get the key of #IBusProperty. * * Returns: the key of #IBusProperty. Should not be freed. */ const gchar * ibus_property_get_key (IBusProperty *prop); /** * ibus_property_get_label: * @prop: An #IBusProperty. * * Get the label of #IBusProperty. * * Returns: (transfer none): the label of #IBusProperty. Should not be freed. */ IBusText * ibus_property_get_label (IBusProperty *prop); /** * ibus_property_set_label: * @prop: An #IBusProperty. * @label: Text shown in UI. * * Set the label of #IBusProperty. */ void ibus_property_set_label (IBusProperty *prop, IBusText *label); /** * ibus_property_get_symbol: * @prop: An #IBusProperty. * * Get the symbol of #IBusProperty. * * Returns: (transfer none): the symbol of #IBusProperty. Should not be freed. */ IBusText * ibus_property_get_symbol (IBusProperty *prop); /** * ibus_property_set_symbol: * @prop: An #IBusProperty. * @symbol: Text shown in UI. * * Set the symbol of #IBusProperty. */ void ibus_property_set_symbol (IBusProperty *prop, IBusText *symbol); /** * ibus_property_get_icon: * @prop: An #IBusProperty. * * Get the icon of #IBusProperty. * * Returns: the icon of #IBusProperty. Should not be freed. */ const gchar * ibus_property_get_icon (IBusProperty *prop); /** * ibus_property_set_icon: * @prop: An #IBusProperty. * @icon: Icon shown in UI. It could be a full path of an icon file or an icon name. * * Set the icon of #IBusProperty. */ void ibus_property_set_icon (IBusProperty *prop, const gchar *icon); /** * ibus_property_get_tooltip: * @prop: An #IBusProperty. * * Get the tooltip of #IBusProperty. * * Returns: (transfer none): the tooltip of #IBusProperty. Should not be freed. */ IBusText * ibus_property_get_tooltip (IBusProperty *prop); /** * ibus_property_set_tooltip: * @prop: An #IBusProperty. * @tooltip: Text of the tooltip. * * Set the tooltip of #IBusProperty. */ void ibus_property_set_tooltip (IBusProperty *prop, IBusText *tooltip); /** * ibus_property_get_sensitive: * @prop: An #IBusProperty. * * Get the sensitive of #IBusProperty. * * Returns: the sensitive of #IBusProperty. */ gboolean ibus_property_get_sensitive(IBusProperty *prop); /** * ibus_property_set_sensitive: * @prop: An #IBusProperty. * @sensitive: Whether the #IBusProperty is sensitive. * * Set whether the #IBusProperty is sensitive. */ void ibus_property_set_sensitive(IBusProperty *prop, gboolean sensitive); /** * ibus_property_get_visible: * @prop: An #IBusProperty. * * Get the visible of #IBusProperty. * * Returns: the visible of #IBusProperty. */ gboolean ibus_property_get_visible (IBusProperty *prop); /** * ibus_property_set_visible: * @prop: An #IBusProperty. * @visible: Whether the #IBusProperty is visible. * * Set whether the #IBusProperty is visible. */ void ibus_property_set_visible (IBusProperty *prop, gboolean visible); /** * ibus_property_get_property_type: * @prop: An #IBusProperty. * * Get the type of #IBusProperty. * * Returns: the type of #IBusProperty. */ IBusPropType ibus_property_get_prop_type(IBusProperty *prop); /** * ibus_property_get_state: * @prop: An #IBusProperty. * * Get the state of #IBusProperty. * * Returns: the state of #IBusProperty. */ IBusPropState ibus_property_get_state (IBusProperty *prop); /** * ibus_property_set_state: * @prop: An #IBusProperty. * @state: The state of the #IBusProperty. * * Set the state of the #IBusProperty. */ void ibus_property_set_state (IBusProperty *prop, IBusPropState state); /** * ibus_property_get_sub_props: * @prop: An #IBusProperty. * * Get the IBusPropList of #IBusProperty. * * Returns: (transfer none): the IBusPropList of #IBusProperty. * Should not be freed. */ IBusPropList * ibus_property_get_sub_props(IBusProperty *prop); /** * ibus_property_set_sub_props: * @prop: An #IBusProperty. * @prop_list: #IBusPropList that contains sub IBusProperties. * * Set the sub IBusProperties. */ void ibus_property_set_sub_props(IBusProperty *prop, IBusPropList *prop_list); /** * ibus_property_update: * @prop: An #IBusProperty. * @prop_update: #IBusPropList that contains sub IBusProperties. * * Update the content of an #IBusProperty. * #IBusProperty @prop_update can either be sub-property of @prop, * or holds new values for @prop. * * Returns: TRUE for update suceeded; FALSE otherwise. */ gboolean ibus_property_update (IBusProperty *prop, IBusProperty *prop_update); G_END_DECLS #endif ibus-1.5.11/src/ibustext.h0000644000000000000000000001456012551654123012251 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_TEXT_H_ #define __IBUS_TEXT_H_ /** * SECTION: ibustext * @short_description: Text with decorating information. * * An IBusText is the main text object in IBus. * The text is decorated according to associated IBusAttribute, * e.g. the foreground/background color, underline, and * applied scope. * * see_also: #IBusAttribute */ #include "ibusserializable.h" #include "ibusattrlist.h" /* * Type macros. */ /* define IBusText macros */ #define IBUS_TYPE_TEXT \ (ibus_text_get_type ()) #define IBUS_TEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_TEXT, IBusText)) #define IBUS_TEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_TEXT, IBusTextClass)) #define IBUS_IS_TEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_TEXT)) #define IBUS_IS_TEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_TEXT)) #define IBUS_TEXT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_TEXT, IBusTextClass)) G_BEGIN_DECLS typedef struct _IBusText IBusText; typedef struct _IBusTextClass IBusTextClass; /** * IBusText: * @is_static: Whether @text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string(). * @text: The string content of IBusText in UTF-8. * @attrs: Associated IBusAttributes. * * A text object in IBus. */ struct _IBusText { IBusSerializable parent; /* members */ /*< public >*/ gboolean is_static; gchar *text; IBusAttrList *attrs; }; struct _IBusTextClass { IBusSerializableClass parent; }; GType ibus_text_get_type (void); /** * ibus_text_new_from_string: * @str: An text string to be set. * * Creates a new #IBusText from a string. * @str will be duplicated in #IBusText, so feel free to free @str after this * function. * * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_string (const gchar *str); /** * ibus_text_new_from_ucs4: * @str: An text string to be set. * * Creates a new #IBusText from an UCS-4 encoded string. * @str will be duplicated in IBusText, so feel free to free @str after this * function. * * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_ucs4 (const gunichar *str); /** * ibus_text_new_from_static_string: (skip) * @str: An text string to be set. * * Creates a new #IBusText from a static string. * * Since @str is a static string which won't be freed. * This function will NOT duplicate @str. * * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_static_string (const gchar *str); /** * ibus_text_new_from_printf: * @fmt: printf format string. * @...: arguments for @fmt. * * Creates a new #IBusText from a printf expression. * * The result of printf expression is stored in the new IBusText instance. * * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_printf (const gchar *fmt, ...) G_GNUC_PRINTF (1, 2); /** * ibus_text_new_from_unichar: * @c: A single UCS4-encoded character. * * Creates a new #IBusText from a single UCS4-encoded character. * * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_unichar (gunichar c); /** * ibus_text_append_attribute: * @text: an IBusText * @type: IBusAttributeType for @text. * @value: Value for the type. * @start_index: The starting index, inclusive. * @end_index: The ending index, exclusive. * * Append an IBusAttribute for IBusText. */ void ibus_text_append_attribute (IBusText *text, guint type, guint value, guint start_index, gint end_index); /** * ibus_text_get_length: * @text: An #IBusText. * * Return number of characters in an #IBusText. * This function is based on g_utf8_strlen(), so unlike strlen(), * it does not count by bytes but characters instead. * * Returns: Number of character in @text, not counted by bytes. */ guint ibus_text_get_length (IBusText *text); /** * ibus_text_get_is_static: (skip) * @text: An #IBusText. * * Return the is_static in an #IBusText. * * Returns: the is_static in @text. */ gboolean ibus_text_get_is_static (IBusText *text); /** * ibus_text_get_text: * @text: An #IBusText. * * Return the text in an #IBusText. Should not be freed. * * Returns: the text in @text. */ const gchar * ibus_text_get_text (IBusText *text); /** * ibus_text_get_attributes: * @text: An #IBusText. * * Return the attributes in an #IBusText. Should not be freed. * * Returns: (transfer none): the attrs in @text. */ IBusAttrList * ibus_text_get_attributes (IBusText *text); /** * ibus_text_set_attributes: * @text: An IBusText. * @attrs: An IBusAttrList */ void ibus_text_set_attributes (IBusText *text, IBusAttrList *attrs); G_END_DECLS #endif ibus-1.5.11/src/ibusserializable.c0000644000000000000000000002260412551654123013724 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusinternal.h" #include "ibusserializable.h" #define IBUS_SERIALIZABLE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_SERIALIZABLE, IBusSerializablePrivate)) enum { LAST_SIGNAL, }; struct _IBusSerializablePrivate { GData *attachments; }; // static guint object_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_serializable_base_init (IBusSerializableClass *class); static void ibus_serializable_base_fini (IBusSerializableClass *class); static void ibus_serializable_class_init (IBusSerializableClass *class); static void ibus_serializable_init (IBusSerializable *object); static void ibus_serializable_destroy (IBusSerializable *object); static gboolean ibus_serializable_real_serialize (IBusSerializable *object, GVariantBuilder *builder); static gint ibus_serializable_real_deserialize (IBusSerializable *object, GVariant *variant); static gboolean ibus_serializable_real_copy (IBusSerializable *dest, const IBusSerializable *src); static IBusObjectClass *parent_class = NULL; GType ibus_serializable_get_type (void) { static GType type = 0; static const GTypeInfo type_info = { sizeof (IBusSerializableClass), (GBaseInitFunc) ibus_serializable_base_init, (GBaseFinalizeFunc) ibus_serializable_base_fini, (GClassInitFunc) ibus_serializable_class_init, NULL, /* class finialize */ NULL, /* class data */ sizeof (IBusSerializable), 0, (GInstanceInitFunc) ibus_serializable_init, }; if (type == 0) { type = g_type_register_static (IBUS_TYPE_OBJECT, "IBusSerializable", &type_info, 0); } return type; } IBusSerializable * ibus_serializable_new (void) { return IBUS_SERIALIZABLE (g_object_new (IBUS_TYPE_SERIALIZABLE, NULL)); } static void ibus_serializable_base_init (IBusSerializableClass *class) { } static void ibus_serializable_base_fini (IBusSerializableClass *class) { } static void ibus_serializable_class_init (IBusSerializableClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); parent_class = (IBusObjectClass *) g_type_class_peek_parent (class); g_type_class_add_private (class, sizeof (IBusSerializablePrivate)); object_class->destroy = (IBusObjectDestroyFunc) ibus_serializable_destroy; class->serialize = ibus_serializable_real_serialize; class->deserialize = ibus_serializable_real_deserialize; class->copy = ibus_serializable_real_copy; } static void ibus_serializable_init (IBusSerializable *serializable) { serializable->priv = IBUS_SERIALIZABLE_GET_PRIVATE (serializable); serializable->priv->attachments = NULL; g_datalist_init (&serializable->priv->attachments); } static void ibus_serializable_destroy (IBusSerializable *serializable) { g_datalist_clear (&serializable->priv->attachments); parent_class->destroy (IBUS_OBJECT (serializable)); } static void _serialize_cb (GQuark key, GVariant *value, GVariantBuilder *array) { g_variant_builder_add (array, "{sv}", g_quark_to_string (key), g_variant_new_variant (value)); } static gboolean ibus_serializable_real_serialize (IBusSerializable *serializable, GVariantBuilder *builder) { GVariantBuilder array; g_variant_builder_init (&array, G_VARIANT_TYPE ("a{sv}")); g_datalist_foreach (&serializable->priv->attachments, (GDataForeachFunc) _serialize_cb, &array); g_variant_builder_add (builder, "a{sv}", &array); return TRUE; } static gint ibus_serializable_real_deserialize (IBusSerializable *object, GVariant *variant) { const gchar *key; GVariant *value; GVariantIter *iter = NULL; g_variant_get_child (variant, 1, "a{sv}", &iter); while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) { GVariant *attachment = g_variant_get_variant (value); ibus_serializable_set_attachment (object, key, attachment); g_variant_unref (attachment); } g_variant_iter_free (iter); return 2; } static void _copy_cb (GQuark key, GVariant *value, GData **datalist) { g_datalist_id_set_data_full (datalist, key, g_variant_ref (value), (GDestroyNotify) g_variant_unref); } static gboolean ibus_serializable_real_copy (IBusSerializable *dest, const IBusSerializable *src) { IBusSerializablePrivate *src_priv; IBusSerializablePrivate *dest_priv; src_priv = IBUS_SERIALIZABLE_GET_PRIVATE (src); dest_priv = IBUS_SERIALIZABLE_GET_PRIVATE (dest); g_datalist_foreach (&src_priv->attachments, (GDataForeachFunc) _copy_cb, &dest_priv->attachments); return TRUE; } void ibus_serializable_set_qattachment (IBusSerializable *serializable, GQuark key, GVariant *value) { g_return_if_fail (IBUS_IS_SERIALIZABLE (serializable)); g_return_if_fail (key != 0); g_datalist_id_set_data_full (&serializable->priv->attachments, key, value ? g_variant_ref_sink (value) : NULL, (GDestroyNotify) g_variant_unref); } GVariant * ibus_serializable_get_qattachment (IBusSerializable *serializable, GQuark key) { g_return_val_if_fail (IBUS_IS_SERIALIZABLE (serializable), NULL); g_return_val_if_fail (key != 0, NULL); return (GVariant *) g_datalist_id_get_data ( &serializable->priv->attachments, key); } void ibus_serializable_remove_qattachment (IBusSerializable *serializable, GQuark key) { g_return_if_fail (IBUS_IS_SERIALIZABLE (serializable)); g_return_if_fail (key != 0); g_datalist_id_set_data (&serializable->priv->attachments, key, NULL); } IBusSerializable * ibus_serializable_copy (IBusSerializable *object) { g_return_val_if_fail (IBUS_IS_SERIALIZABLE (object), NULL); GType type; IBusSerializable *new_object; type = G_OBJECT_TYPE (object); new_object = g_object_new (type, NULL); g_return_val_if_fail (new_object != NULL, NULL); if (IBUS_SERIALIZABLE_GET_CLASS (new_object)->copy (new_object, object)) { return new_object; } g_object_unref (new_object); g_return_val_if_reached (NULL); } GVariant * ibus_serializable_serialize (IBusSerializable *object) { g_return_val_if_fail (IBUS_IS_SERIALIZABLE (object), FALSE); gboolean retval; GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE); g_variant_builder_add (&builder, "s", g_type_name (G_OBJECT_TYPE (object))); retval = IBUS_SERIALIZABLE_GET_CLASS (object)->serialize (object, &builder); g_assert (retval); return g_variant_builder_end (&builder); } IBusSerializable * ibus_serializable_deserialize (GVariant *variant) { g_return_val_if_fail (variant != NULL, NULL); GVariant *var = NULL; switch (g_variant_classify (variant)) { case G_VARIANT_CLASS_VARIANT: var = g_variant_get_variant (variant); break; case G_VARIANT_CLASS_TUPLE: var = g_variant_ref (variant); break; default: g_return_val_if_reached (NULL); } gchar *type_name = NULL; g_variant_get_child (var, 0, "&s", &type_name); GType type = g_type_from_name (type_name); g_return_val_if_fail (g_type_is_a (type, IBUS_TYPE_SERIALIZABLE), NULL); IBusSerializable *object = g_object_new (type, NULL); gint retval = IBUS_SERIALIZABLE_GET_CLASS (object)->deserialize (object, var); g_variant_unref (var); if (retval) return object; g_object_unref (object); g_return_val_if_reached (NULL); } ibus-1.5.11/src/ibusenginesimple.h0000644000000000000000000001171212551654123013740 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ENGINE_SIMPLE_H__ #define __IBUS_ENGINE_SIMPLE_H__ /** * SECTION: ibusenginesimple * @short_description: Input method engine supporting table-based input method * @title: IBusEngineSimple * @stability: Stable * * An IBusEngineSimple provides table-based input method logic. * * see_also: #IBusEngine */ #include "ibusengine.h" G_BEGIN_DECLS #define IBUS_MAX_COMPOSE_LEN 7 /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_ENGINE_SIMPLE \ (ibus_engine_simple_get_type ()) #define IBUS_ENGINE_SIMPLE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimple)) #define IBUS_ENGINE_SIMPLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimpleClass)) #define IBUS_IS_ENGINE_SIMPLE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ENGINE_SIMPLE)) #define IBUS_IS_ENGINE_SIMPLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ENGINE_SIMPLE)) #define IBUS_ENGINE_SIMPLE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimpleClass)) typedef struct _IBusEngineSimple IBusEngineSimple; typedef struct _IBusEngineSimpleClass IBusEngineSimpleClass; typedef struct _IBusEngineSimplePrivate IBusEngineSimplePrivate; /** * IBusEngineSimple: * * IBusEngineSimple properties. */ struct _IBusEngineSimple { /*< private >*/ IBusEngine parent; IBusEngineSimplePrivate *priv; /* instance members */ /*< public >*/ }; struct _IBusEngineSimpleClass { /*< private >*/ IBusEngineClass parent; /* class members */ /*< public >*/ /* signals */ /*< private >*/ /* padding */ gpointer pdummy[8]; }; GType ibus_engine_simple_get_type (void); /** * ibus_engine_simple_add_table: * @simple: An IBusEngineSimple. * @data: (element-type guint16) (array): The table which must be available * during the whole life of the simple engine. * @max_seq_len: Maximum length of a swquence in the table (cannot be greater * than %IBUS_MAX_COMPOSE_LEN) * @n_seqs: number of sequences in the table * * Adds an additional table to search to the engine. Each row of the table * consists of max_seq_len key symbols followed by two guint16 interpreted as * the high and low words of a gunicode value. Tables are searched starting from * the last added. * * The table must be sorted in dictionary order on the numeric value of the key * symbol fields. (Values beyond the length of the sequence should be zero.) */ void ibus_engine_simple_add_table (IBusEngineSimple *simple, const guint16 *data, gint max_seq_len, gint n_seqs); /** * ibus_engine_simple_add_table_by_locale: * @simple: An IBusEngineSimple. * @locale: (allow-none): The locale name. If the locale is %NULL, * the current locale is used. * * Call ibus_engine_simple_add_table() internally by locale. * * Returns: %TRUE if the @locale is matched to the table. */ gboolean ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, const gchar *locale); /** * ibus_engine_simple_add_compose_file: * @simple: An IBusEngineSimple. * @file: The compose file. If the @file is %NULL, * the current locale is used. * * Call ibus_engine_simple_add_table() internally by locale. * * Returns: %TRUE if the @file is loaded. */ gboolean ibus_engine_simple_add_compose_file (IBusEngineSimple *simple, const gchar *file); G_END_DECLS #endif // __IBUS_ENGINE_SIMPLE_H__ ibus-1.5.11/src/ibuscomponent.c0000644000000000000000000007132412551654123013263 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include "ibuscomponent.h" #include "ibusinternal.h" enum { LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_NAME, PROP_DESCRIPTION, PROP_VERSION, PROP_LICENSE, PROP_AUTHOR, PROP_HOMEPAGE, PROP_COMMAND_LINE, PROP_TEXTDOMAIN, }; /* IBusComponentPriv */ struct _IBusComponentPrivate { gchar *name; gchar *description; gchar *version; gchar *license; gchar *author; gchar *homepage; gchar *exec; gchar *textdomain; /* engines */ GList *engines; /* observed paths */ GList *observed_paths; }; #define IBUS_COMPONENT_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_COMPONENT, IBusComponentPrivate)) // static guint _signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_component_set_property (IBusComponent *component, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_component_get_property (IBusComponent *component, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_component_destroy (IBusComponent *component); static gboolean ibus_component_serialize (IBusComponent *component, GVariantBuilder *builder); static gint ibus_component_deserialize (IBusComponent *component, GVariant *variant); static gboolean ibus_component_copy (IBusComponent *dest, const IBusComponent *src); static gboolean ibus_component_parse_xml_node (IBusComponent *component, XMLNode *node, gboolean access_fs); static void ibus_component_parse_engines(IBusComponent *component, XMLNode *node); static void ibus_component_parse_observed_paths (IBusComponent *component, XMLNode *node, gboolean access_fs); G_DEFINE_TYPE (IBusComponent, ibus_component, IBUS_TYPE_SERIALIZABLE) static void ibus_component_class_init (IBusComponentClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); g_type_class_add_private (class, sizeof (IBusComponentPrivate)); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_component_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_component_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_component_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_component_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_component_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_component_copy; /* install properties */ /** * IBusComponent:name: * * The name of component */ g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "component name", "The name of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:description: * * The description of component */ g_object_class_install_property (gobject_class, PROP_DESCRIPTION, g_param_spec_string ("description", "component description", "The description of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:version: * * The version of component */ g_object_class_install_property (gobject_class, PROP_VERSION, g_param_spec_string ("version", "component version", "The version of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:license: * * The license of component */ g_object_class_install_property (gobject_class, PROP_LICENSE, g_param_spec_string ("license", "component license", "The license of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:author: * * The author of component */ g_object_class_install_property (gobject_class, PROP_AUTHOR, g_param_spec_string ("author", "component author", "The author of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:homepage: * * The homepage of component */ g_object_class_install_property (gobject_class, PROP_HOMEPAGE, g_param_spec_string ("homepage", "component homepage", "The homepage of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:command-line: * * The exec path of component */ g_object_class_install_property (gobject_class, PROP_COMMAND_LINE, g_param_spec_string ("command-line", "component command-line", "The command line of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusComponent:textdomain: * * The textdomain of component */ g_object_class_install_property (gobject_class, PROP_TEXTDOMAIN, g_param_spec_string ("textdomain", "component textdomain", "The textdomain path of component", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void ibus_component_init (IBusComponent *component) { component->priv = IBUS_COMPONENT_GET_PRIVATE (component); } static void ibus_component_destroy (IBusComponent *component) { GList *p; g_free (component->priv->name); g_free (component->priv->description); g_free (component->priv->version); g_free (component->priv->license); g_free (component->priv->author); g_free (component->priv->homepage); g_free (component->priv->exec); g_free (component->priv->textdomain); component->priv->name = NULL; component->priv->description = NULL; component->priv->version = NULL; component->priv->license = NULL; component->priv->author = NULL; component->priv->homepage = NULL; component->priv->exec = NULL; component->priv->textdomain = NULL; g_list_free_full (component->priv->observed_paths, g_object_unref); component->priv->observed_paths = NULL; for (p = component->priv->engines; p != NULL; p = p->next) { g_object_steal_data ((GObject *)p->data, "component"); ibus_object_destroy ((IBusObject *)p->data); g_object_unref (p->data); } g_list_free (component->priv->engines); component->priv->engines = NULL; IBUS_OBJECT_CLASS (ibus_component_parent_class)->destroy (IBUS_OBJECT (component)); } static void ibus_component_set_property (IBusComponent *component, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_NAME: g_assert (component->priv->name == NULL); component->priv->name = g_value_dup_string (value); break; case PROP_DESCRIPTION: g_assert (component->priv->description == NULL); component->priv->description = g_value_dup_string (value); break; case PROP_VERSION: g_assert (component->priv->version == NULL); component->priv->version = g_value_dup_string (value); break; case PROP_LICENSE: g_assert (component->priv->license == NULL); component->priv->license = g_value_dup_string (value); break; case PROP_AUTHOR: g_assert (component->priv->author == NULL); component->priv->author = g_value_dup_string (value); break; case PROP_HOMEPAGE: g_assert (component->priv->homepage == NULL); component->priv->homepage = g_value_dup_string (value); break; case PROP_COMMAND_LINE: g_assert (component->priv->exec == NULL); component->priv->exec = g_value_dup_string (value); break; case PROP_TEXTDOMAIN: g_assert (component->priv->textdomain == NULL); component->priv->textdomain = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (component, prop_id, pspec); } } static void ibus_component_get_property (IBusComponent *component, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_NAME: g_value_set_string (value, ibus_component_get_name (component)); break; case PROP_DESCRIPTION: g_value_set_string (value, ibus_component_get_description (component)); break; case PROP_VERSION: g_value_set_string (value, ibus_component_get_version (component)); break; case PROP_LICENSE: g_value_set_string (value, ibus_component_get_license (component)); break; case PROP_AUTHOR: g_value_set_string (value, ibus_component_get_author (component)); break; case PROP_HOMEPAGE: g_value_set_string (value, ibus_component_get_homepage (component)); break; case PROP_COMMAND_LINE: g_value_set_string (value, ibus_component_get_exec (component)); break; case PROP_TEXTDOMAIN: g_value_set_string (value, ibus_component_get_textdomain (component)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (component, prop_id, pspec); } } static gboolean ibus_component_serialize (IBusComponent *component, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_component_parent_class)->serialize ((IBusSerializable *)component, builder); g_return_val_if_fail (retval, FALSE); g_variant_builder_add (builder, "s", component->priv->name); g_variant_builder_add (builder, "s", component->priv->description); g_variant_builder_add (builder, "s", component->priv->version); g_variant_builder_add (builder, "s", component->priv->license); g_variant_builder_add (builder, "s", component->priv->author); g_variant_builder_add (builder, "s", component->priv->homepage); g_variant_builder_add (builder, "s", component->priv->exec); g_variant_builder_add (builder, "s", component->priv->textdomain); GList *p; GVariantBuilder *array; /* serialize observed paths */ array = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (p = component->priv->observed_paths; p != NULL; p = p->next) { g_variant_builder_add (array, "v", ibus_serializable_serialize ((IBusSerializable *)p->data)); } g_variant_builder_add (builder, "av", array); g_variant_builder_unref (array); /* serialize engine desc list */ array = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (p = component->priv->engines; p != NULL; p = p->next) { g_variant_builder_add (array, "v", ibus_serializable_serialize ((IBusSerializable *)p->data)); } g_variant_builder_add (builder, "av", array); g_variant_builder_unref (array); return TRUE; } static gint ibus_component_deserialize (IBusComponent *component, GVariant *variant) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_component_parent_class)->deserialize ((IBusSerializable *)component, variant); g_return_val_if_fail (retval, 0); ibus_g_variant_get_child_string (variant, retval++, &component->priv->name); ibus_g_variant_get_child_string (variant, retval++, &component->priv->description); ibus_g_variant_get_child_string (variant, retval++, &component->priv->version); ibus_g_variant_get_child_string (variant, retval++, &component->priv->license); ibus_g_variant_get_child_string (variant, retval++, &component->priv->author); ibus_g_variant_get_child_string (variant, retval++, &component->priv->homepage); ibus_g_variant_get_child_string (variant, retval++, &component->priv->exec); ibus_g_variant_get_child_string (variant, retval++, &component->priv->textdomain); GVariant *var; GVariantIter *iter = NULL; g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { component->priv->observed_paths = g_list_append (component->priv->observed_paths, IBUS_OBSERVED_PATH (ibus_serializable_deserialize (var))); } g_variant_iter_free (iter); g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { ibus_component_add_engine (component, IBUS_ENGINE_DESC (ibus_serializable_deserialize (var))); } g_variant_iter_free (iter); return retval; } static gboolean ibus_component_copy (IBusComponent *dest, const IBusComponent *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_component_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->name = g_strdup (src->priv->name); dest->priv->description = g_strdup (src->priv->description); dest->priv->version = g_strdup (src->priv->version); dest->priv->license = g_strdup (src->priv->license); dest->priv->author = g_strdup (src->priv->author); dest->priv->homepage = g_strdup (src->priv->homepage); dest->priv->exec = g_strdup (src->priv->exec); dest->priv->textdomain = g_strdup (src->priv->textdomain); dest->priv->observed_paths = g_list_copy (src->priv->observed_paths); g_list_foreach (dest->priv->observed_paths, (GFunc) g_object_ref, NULL); dest->priv->engines = g_list_copy (src->priv->engines); g_list_foreach (dest->priv->engines, (GFunc) g_object_ref, NULL); return TRUE; } #define g_string_append_indent(string, indent) \ { \ gint i; \ for (i = 0; i < (indent); i++) { \ g_string_append (string, " "); \ } \ } void ibus_component_output (IBusComponent *component, GString *output, gint indent) { g_assert (IBUS_IS_COMPONENT (component)); GList *p; g_string_append_indent (output, indent); g_string_append (output, "\n"); #define OUTPUT_ENTRY(field, element) \ { \ gchar *escape_text = \ g_markup_escape_text (component->priv->field ? \ component->priv->field : "", -1); \ g_string_append_indent (output, indent + 1); \ g_string_append_printf (output, "<"element">%s\n", \ escape_text); \ g_free (escape_text); \ } #define OUTPUT_ENTRY_1(name) OUTPUT_ENTRY(name, #name) OUTPUT_ENTRY_1 (name); OUTPUT_ENTRY_1 (description); OUTPUT_ENTRY_1 (version); OUTPUT_ENTRY_1 (license); OUTPUT_ENTRY_1 (author); OUTPUT_ENTRY_1 (homepage); OUTPUT_ENTRY_1 (exec); OUTPUT_ENTRY_1 (textdomain); #undef OUTPUT_ENTRY #undef OUTPUT_ENTRY_1 if (component->priv->observed_paths) { g_string_append_indent (output, indent + 1); g_string_append (output, "\n"); for (p = component->priv->observed_paths; p != NULL; p = p->next ) { IBusObservedPath *path = (IBusObservedPath *) p->data; g_string_append_indent (output, indent + 2); g_string_append_printf (output, "%s\n", path->mtime, path->path); } g_string_append_indent (output, indent + 1); g_string_append (output, "\n"); } ibus_component_output_engines (component, output, indent + 1); g_string_append_indent (output, indent); g_string_append (output, "\n"); } void ibus_component_output_engines (IBusComponent *component, GString *output, gint indent) { g_assert (IBUS_IS_COMPONENT (component)); g_assert (output); GList *p; g_string_append_indent (output, indent); g_string_append (output, "\n"); for (p = component->priv->engines; p != NULL; p = p->next) { ibus_engine_desc_output ((IBusEngineDesc *)p->data, output, indent + 2); } g_string_append_indent (output, indent); g_string_append (output, "\n"); } static gboolean ibus_component_parse_xml_node (IBusComponent *component, XMLNode *node, gboolean access_fs) { g_assert (component); g_assert (node); if (G_UNLIKELY (g_strcmp0 (node->name, "component") != 0)) { return FALSE; } GList *p; for (p = node->sub_nodes; p != NULL; p = p->next) { XMLNode *sub_node = (XMLNode *)p->data; #define PARSE_ENTRY(field_name, element_name) \ if (g_strcmp0 (sub_node->name, element_name) == 0) { \ if (component->priv->field_name != NULL) { \ g_free (component->priv->field_name); \ } \ component->priv->field_name = g_strdup (sub_node->text); \ continue; \ } #define PARSE_ENTRY_1(name) PARSE_ENTRY (name, #name) PARSE_ENTRY_1 (name); PARSE_ENTRY_1 (description); PARSE_ENTRY_1 (version); PARSE_ENTRY_1 (license); PARSE_ENTRY_1 (author); PARSE_ENTRY_1 (homepage); PARSE_ENTRY_1 (exec); PARSE_ENTRY_1 (textdomain); #undef PARSE_ENTRY #undef PARSE_ENTRY_1 if (g_strcmp0 (sub_node->name, "engines") == 0) { ibus_component_parse_engines (component, sub_node); continue; } if (g_strcmp0 (sub_node->name, "observed-paths") == 0) { ibus_component_parse_observed_paths (component, sub_node, access_fs); continue; } g_warning (" element contains invalidate element <%s>", sub_node->name); } return TRUE; } static void ibus_component_parse_engines (IBusComponent *component, XMLNode *node) { g_assert (IBUS_IS_COMPONENT (component)); g_assert (node); gchar *exec = NULL; gchar **p; XMLNode *engines_node = NULL; if (g_strcmp0 (node->name, "engines") != 0) { return; } for (p = node->attributes; *p != NULL; p += 2) { if (g_strcmp0 (*p, "exec") == 0) { exec = *(p + 1); break; } } if (exec != NULL) { gchar *output = NULL; if (g_spawn_command_line_sync (exec, &output, NULL, NULL, NULL)) { engines_node = ibus_xml_parse_buffer (output); g_free (output); if (engines_node) { if (g_strcmp0 (engines_node->name, "engines") == 0) { node = engines_node; } } } } GList *pl; for (pl = node->sub_nodes; pl != NULL; pl = pl->next) { IBusEngineDesc *engine; engine = ibus_engine_desc_new_from_xml_node ((XMLNode *)pl->data); if (G_UNLIKELY (engine == NULL)) continue; ibus_component_add_engine (component, engine); } if (engines_node) { ibus_xml_free (engines_node); } } static void ibus_component_parse_observed_paths (IBusComponent *component, XMLNode *node, gboolean access_fs) { g_assert (IBUS_IS_COMPONENT (component)); g_assert (node); if (g_strcmp0 (node->name, "observed-paths") != 0) { return; } GList *p; for (p = node->sub_nodes; p != NULL; p = p->next) { IBusObservedPath *path; path = ibus_observed_path_new_from_xml_node ((XMLNode *)p->data, access_fs); g_object_ref_sink (path); component->priv->observed_paths = g_list_append (component->priv->observed_paths, path); if (access_fs && path->is_dir && path->is_exist) { component->priv->observed_paths = g_list_concat (component->priv->observed_paths, ibus_observed_path_traverse (path, TRUE)); } } } #define IBUS_COMPONENT_GET_PROPERTY(property, return_type) \ return_type \ ibus_component_get_ ## property (IBusComponent *component) \ { \ return component->priv->property; \ } IBUS_COMPONENT_GET_PROPERTY (name, const gchar *) IBUS_COMPONENT_GET_PROPERTY (description, const gchar *) IBUS_COMPONENT_GET_PROPERTY (version, const gchar *) IBUS_COMPONENT_GET_PROPERTY (license, const gchar *) IBUS_COMPONENT_GET_PROPERTY (author, const gchar *) IBUS_COMPONENT_GET_PROPERTY (homepage, const gchar *) IBUS_COMPONENT_GET_PROPERTY (exec, const gchar *) IBUS_COMPONENT_GET_PROPERTY (textdomain, const gchar *) #undef IBUS_COMPONENT_GET_PROPERTY IBusComponent * ibus_component_new (const gchar *name, const gchar *description, const gchar *version, const gchar *license, const gchar *author, const gchar *homepage, const gchar *command_line, const gchar *textdomain) { return ibus_component_new_varargs ("name", name, "description", description, "version", version, "license", license, "author", author, "homepage", homepage, "command-line", command_line, "textdomain", textdomain, NULL); } IBusComponent * ibus_component_new_varargs (const gchar *first_property_name, ...) { va_list var_args; IBusComponent *component; IBusComponentPrivate *priv; g_assert (first_property_name); va_start (var_args, first_property_name); component = (IBusComponent *) g_object_new_valist (IBUS_TYPE_COMPONENT, first_property_name, var_args); va_end (var_args); priv = IBUS_COMPONENT_GET_PRIVATE (component); /* name is required. Other properties are set in class_init by default. */ g_assert (priv->name); return component; } IBusComponent * ibus_component_new_from_xml_node (XMLNode *node) { g_assert (node); IBusComponent *component; component = (IBusComponent *)g_object_new (IBUS_TYPE_COMPONENT, NULL); if (!ibus_component_parse_xml_node (component, node, FALSE)) { g_object_unref (component); component = NULL; } return component; } IBusComponent * ibus_component_new_from_file (const gchar *filename) { g_assert (filename); XMLNode *node; struct stat buf; IBusComponent *component; gboolean retval; if (g_stat (filename, &buf) != 0) { g_warning ("Can not get stat of file %s", filename); return NULL; } node = ibus_xml_parse_file (filename); if (!node) { return NULL; } component = (IBusComponent *)g_object_new (IBUS_TYPE_COMPONENT, NULL); retval = ibus_component_parse_xml_node (component, node, TRUE); ibus_xml_free (node); if (!retval) { g_object_unref (component); component = NULL; } else { IBusObservedPath *path; path = ibus_observed_path_new (filename, TRUE); component->priv->observed_paths = g_list_prepend(component->priv->observed_paths, path); } return component; } void ibus_component_add_observed_path (IBusComponent *component, const gchar *path, gboolean access_fs) { IBusObservedPath *p; p = ibus_observed_path_new (path, access_fs); g_object_ref_sink (p); component->priv->observed_paths = g_list_append (component->priv->observed_paths, p); if (access_fs && p->is_dir && p->is_exist) { component->priv->observed_paths = g_list_concat (component->priv->observed_paths, ibus_observed_path_traverse (p, TRUE)); } } void ibus_component_add_engine (IBusComponent *component, IBusEngineDesc *engine) { g_assert (IBUS_IS_COMPONENT (component)); g_assert (IBUS_IS_ENGINE_DESC (engine)); g_object_ref_sink (engine); component->priv->engines = g_list_append (component->priv->engines, engine); } GList * ibus_component_get_engines (IBusComponent *component) { return g_list_copy (component->priv->engines); } gboolean ibus_component_check_modification (IBusComponent *component) { g_assert (IBUS_IS_COMPONENT (component)); GList *p; for (p = component->priv->observed_paths; p != NULL; p = p->next) { if (ibus_observed_path_check_modification ((IBusObservedPath *)p->data)) return TRUE; } return FALSE; } GList * ibus_component_get_observed_paths (IBusComponent *component) { g_assert (IBUS_IS_COMPONENT (component)); return g_list_copy (component->priv->observed_paths); } ibus-1.5.11/src/gtkimcontextsimpleseqs.h0000644000000000000000000070775612551654123015250 00000000000000/* GTK - The GIMP Tool Kit * Copyright (C) 2007, 2008 GNOME Foundation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ /* * File auto-generated from script found at http://bugzilla.gnome.org/show_bug.cgi?id=321896 * using the input files * Input : http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre * Input : http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt * Input : http://www.unicode.org/Public/UNIDATA/UnicodeData.txt * * This table is optimised for space and requires special handling to access the content. * This table is used solely by http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimple.c * * The resulting file is placed at http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimpleseqs.h * This file is described in bug report http://bugzilla.gnome.org/show_bug.cgi?id=321896 */ /* * Modified by the GTK+ Team and others 2007, 2008. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #ifndef __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ #define __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ /* === These are the original comments of the file; we keep for historical purposes === * * The following table was generated from the X compose tables include with * XFree86 4.0 using a set of Perl scripts. Contact Owen Taylor * to obtain the relevant perl scripts. * * The following compose letter letter sequences confliced * Dstroke/dstroke and ETH/eth; resolved to Dstroke (Croation, Vietnamese, Lappish), over * ETH (Icelandic, Faroese, old English, IPA) [ D- -D d- -d ] * Amacron/amacron and ordfeminine; resolved to ordfeminine [ _A A_ a_ _a ] * Amacron/amacron and Atilde/atilde; resolved to atilde [ -A A- a- -a ] * Omacron/Omacron and masculine; resolved to masculine [ _O O_ o_ _o ] * Omacron/omacron and Otilde/atilde; resolved to otilde [ -O O- o- -o ] * * [ Amacron and Omacron are in Latin-4 (Baltic). ordfeminine and masculine are used for * spanish. atilde and otilde are used at least for Portuguese ] * * at and Aring; resolved to Aring [ AA ] * guillemotleft and caron; resolved to guillemotleft [ << ] * ogonek and cedilla; resolved to cedilla [ ,, ] * * This probably should be resolved by first checking an additional set of compose tables * that depend on the locale or selected input method. */ static const guint16 gtk_compose_seqs_compact[] = { IBUS_KEY_Greek_accentdieresis, 180, 184, 184, 184, 184, IBUS_KEY_dead_grave, 184, 246, 333, 545, 545, IBUS_KEY_dead_acute, 545, 609, 705, 981, 981, IBUS_KEY_dead_circumflex, 981, 1105, 1105, 1305, 1305, IBUS_KEY_dead_tilde, 1305, 1389, 1452, 1592, 1592, IBUS_KEY_dead_macron, 1592, 1638, 1656, 1728, 1728, IBUS_KEY_dead_breve, 1728, 1778, 1778, 1802, 1802, IBUS_KEY_dead_abovedot, 1802, 1832, 1835, 1871, 1871, IBUS_KEY_dead_diaeresis, 1871, 1959, 1971, 1995, 1995, IBUS_KEY_dead_abovering, 1995, 2005, 2005, 2005, 2005, IBUS_KEY_dead_doubleacute, 2005, 2015, 2015, 2015, 2015, IBUS_KEY_dead_caron, 2015, 2057, 2057, 2065, 2065, IBUS_KEY_dead_cedilla, 2065, 2077, 2083, 2083, 2083, IBUS_KEY_dead_ogonek, 2083, 2093, 2093, 2093, 2093, IBUS_KEY_dead_iota, 2093, 2115, 2214, 2646, 3306, IBUS_KEY_dead_voiced_sound, 3306, 3352, 3352, 3352, 3352, IBUS_KEY_dead_semivoiced_sound, 3352, 3362, 3362, 3362, 3362, IBUS_KEY_dead_belowdot, 3362, 3378, 3378, 3394, 3394, IBUS_KEY_dead_hook, 3394, 3472, 3475, 3531, 3531, IBUS_KEY_dead_horn, 3531, 3541, 3541, 3541, 3541, IBUS_KEY_dead_stroke, 3541, 3629, 3641, 3641, 3641, IBUS_KEY_dead_psili, 3641, 3669, 3669, 3669, 3669, IBUS_KEY_dead_dasia, 3669, 3701, 3701, 3701, 3701, IBUS_KEY_dead_belowring, 3701, 3703, 3703, 3703, 3703, IBUS_KEY_dead_belowtilde, 3703, 3705, 3705, 3705, 3705, IBUS_KEY_dead_belowdiaeresis, 3705, 3705, 3708, 3708, 3708, IBUS_KEY_dead_belowcomma, 3708, 3722, 3722, 3722, 3722, IBUS_KEY_dead_currency, 3722, 3820, 3826, 3826, 3826, IBUS_KEY_dead_greek, 3826, 3928, 3952, 3952, 3952, IBUS_KEY_Multi_key, 3952, 3952, 10348, 14044, 15919, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_space, 0x0060, IBUS_KEY_V, 0x01DB, IBUS_KEY_v, 0x01DC, IBUS_KEY_nobreakspace, 0x0300, IBUS_KEY_Abreve, 0x1EB0, IBUS_KEY_abreve, 0x1EB1, IBUS_KEY_Emacron, 0x1E14, IBUS_KEY_emacron, 0x1E15, IBUS_KEY_Omacron, 0x1E50, IBUS_KEY_omacron, 0x1E51, IBUS_KEY_Cyrillic_ie, 0x0450, IBUS_KEY_Cyrillic_i, 0x045D, IBUS_KEY_Cyrillic_IE, 0x0400, IBUS_KEY_Cyrillic_I, 0x040D, IBUS_KEY_Greek_iotadieresis, 0x1FD2, IBUS_KEY_Greek_upsilondieresis, 0x1FE2, IBUS_KEY_Greek_ALPHA, 0x1FBA, IBUS_KEY_Greek_EPSILON, 0x1FC8, IBUS_KEY_Greek_ETA, 0x1FCA, IBUS_KEY_Greek_IOTA, 0x1FDA, IBUS_KEY_Greek_OMICRON, 0x1FF8, IBUS_KEY_Greek_UPSILON, 0x1FEA, IBUS_KEY_Greek_OMEGA, 0x1FFA, IBUS_KEY_Greek_alpha, 0x1F70, IBUS_KEY_Greek_epsilon, 0x1F72, IBUS_KEY_Greek_eta, 0x1F74, IBUS_KEY_Greek_iota, 0x1F76, IBUS_KEY_Greek_omicron, 0x1F78, IBUS_KEY_Greek_upsilon, 0x1F7A, IBUS_KEY_Greek_omega, 0x1F7C, IBUS_KEY_dead_grave, 0x0060, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB0, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB1, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, IBUS_KEY_space, 0x0027, IBUS_KEY_V, 0x01D7, IBUS_KEY_v, 0x01D8, IBUS_KEY_nobreakspace, 0x0301, IBUS_KEY_Abreve, 0x1EAE, IBUS_KEY_abreve, 0x1EAF, IBUS_KEY_Emacron, 0x1E16, IBUS_KEY_emacron, 0x1E17, IBUS_KEY_Utilde, 0x1E78, IBUS_KEY_omacron, 0x1E53, IBUS_KEY_utilde, 0x1E79, IBUS_KEY_Cyrillic_ghe, 0x0453, IBUS_KEY_Cyrillic_ka, 0x045C, IBUS_KEY_Cyrillic_GHE, 0x0403, IBUS_KEY_Cyrillic_KA, 0x040C, IBUS_KEY_Greek_iotadieresis, 0x0390, IBUS_KEY_Greek_upsilondieresis, 0x03B0, IBUS_KEY_Greek_ALPHA, 0x0386, IBUS_KEY_Greek_EPSILON, 0x0388, IBUS_KEY_Greek_ETA, 0x0389, IBUS_KEY_Greek_IOTA, 0x038A, IBUS_KEY_Greek_OMICRON, 0x038C, IBUS_KEY_Greek_UPSILON, 0x038E, IBUS_KEY_Greek_OMEGA, 0x038F, IBUS_KEY_Greek_alpha, 0x03AC, IBUS_KEY_Greek_epsilon, 0x03AD, IBUS_KEY_Greek_eta, 0x03AE, IBUS_KEY_Greek_iota, 0x03AF, IBUS_KEY_Greek_omicron, 0x03CC, IBUS_KEY_Greek_upsilon, 0x03CD, IBUS_KEY_Greek_omega, 0x03CE, IBUS_KEY_dead_acute, 0x00B4, IBUS_KEY_dead_diaeresis, IBUS_KEY_space, 0x0385, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_dead_stroke, IBUS_KEY_O, 0x01FE, IBUS_KEY_dead_stroke, IBUS_KEY_o, 0x01FF, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EAE, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EAF, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_A, 0x01FA, IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_a, 0x01FB, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, IBUS_KEY_space, 0x005E, IBUS_KEY_parenleft, 0x207D, IBUS_KEY_parenright, 0x207E, IBUS_KEY_plus, 0x207A, IBUS_KEY_minus, 0x207B, IBUS_KEY_0, 0x2070, IBUS_KEY_1, 0x00B9, IBUS_KEY_2, 0x00B2, IBUS_KEY_3, 0x00B3, IBUS_KEY_4, 0x2074, IBUS_KEY_5, 0x2075, IBUS_KEY_6, 0x2076, IBUS_KEY_7, 0x2077, IBUS_KEY_8, 0x2078, IBUS_KEY_9, 0x2079, IBUS_KEY_equal, 0x207C, IBUS_KEY_nobreakspace, 0x0302, IBUS_KEY_Agrave, 0x1EA6, IBUS_KEY_Aacute, 0x1EA4, IBUS_KEY_Atilde, 0x1EAA, IBUS_KEY_Egrave, 0x1EC0, IBUS_KEY_Eacute, 0x1EBE, IBUS_KEY_Ograve, 0x1ED2, IBUS_KEY_Oacute, 0x1ED0, IBUS_KEY_Otilde, 0x1ED6, IBUS_KEY_agrave, 0x1EA7, IBUS_KEY_aacute, 0x1EA5, IBUS_KEY_atilde, 0x1EAB, IBUS_KEY_egrave, 0x1EC1, IBUS_KEY_eacute, 0x1EBF, IBUS_KEY_ograve, 0x1ED3, IBUS_KEY_oacute, 0x1ED1, IBUS_KEY_otilde, 0x1ED7, 0x2212, 0x207B, 0x4E00, 0x3192, 0x4E01, 0x319C, 0x4E09, 0x3194, 0x4E0A, 0x3196, 0x4E0B, 0x3198, 0x4E19, 0x319B, 0x4E2D, 0x3197, 0x4E59, 0x319A, 0x4E8C, 0x3193, 0x4EBA, 0x319F, 0x56DB, 0x3195, 0x5730, 0x319E, 0x5929, 0x319D, 0x7532, 0x3199, IBUS_KEY_dead_circumflex, 0x005E, IBUS_KEY_KP_Space, 0x00B2, IBUS_KEY_KP_Add, 0x207A, IBUS_KEY_KP_0, 0x2070, IBUS_KEY_KP_1, 0x00B9, IBUS_KEY_KP_2, 0x00B2, IBUS_KEY_KP_3, 0x00B3, IBUS_KEY_KP_4, 0x2074, IBUS_KEY_KP_5, 0x2075, IBUS_KEY_KP_6, 0x2076, IBUS_KEY_KP_7, 0x2077, IBUS_KEY_KP_8, 0x2078, IBUS_KEY_KP_9, 0x2079, IBUS_KEY_KP_Equal, 0x207C, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_M, 0x2120, IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_m, 0x2120, IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_M, 0x2122, IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_m, 0x2122, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0263, 0x02E0, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0266, 0x02B1, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0279, 0x02B4, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x027B, 0x02B5, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0281, 0x02B6, IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0295, 0x02E4, IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_M, 0x2120, IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_m, 0x2120, IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_M, 0x2122, IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_m, 0x2122, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0263, 0x02E0, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0266, 0x02B1, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0279, 0x02B4, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x027B, 0x02B5, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0281, 0x02B6, IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0295, 0x02E4, IBUS_KEY_space, 0x007E, IBUS_KEY_less, 0x2272, IBUS_KEY_equal, 0x2243, IBUS_KEY_greater, 0x2273, IBUS_KEY_nobreakspace, 0x0303, IBUS_KEY_Oacute, 0x1E4C, IBUS_KEY_Odiaeresis, 0x1E4E, IBUS_KEY_Uacute, 0x1E78, IBUS_KEY_oacute, 0x1E4D, IBUS_KEY_odiaeresis, 0x1E4F, IBUS_KEY_uacute, 0x1E79, IBUS_KEY_Abreve, 0x1EB4, IBUS_KEY_abreve, 0x1EB5, IBUS_KEY_Omacron, 0x022C, IBUS_KEY_omacron, 0x022D, IBUS_KEY_Greek_iotadieresis, 0x1FD7, IBUS_KEY_Greek_upsilondieresis, 0x1FE7, IBUS_KEY_Greek_alpha, 0x1FB6, IBUS_KEY_Greek_eta, 0x1FC6, IBUS_KEY_Greek_iota, 0x1FD6, IBUS_KEY_Greek_upsilon, 0x1FE6, IBUS_KEY_Greek_omega, 0x1FF6, 0x1F00, 0x1F06, 0x1F01, 0x1F07, 0x1F08, 0x1F0E, 0x1F09, 0x1F0F, 0x1F20, 0x1F26, 0x1F21, 0x1F27, 0x1F28, 0x1F2E, 0x1F29, 0x1F2F, 0x1F30, 0x1F36, 0x1F31, 0x1F37, 0x1F38, 0x1F3E, 0x1F39, 0x1F3F, 0x1F50, 0x1F56, 0x1F51, 0x1F57, 0x1F59, 0x1F5F, 0x1F60, 0x1F66, 0x1F61, 0x1F67, 0x1F68, 0x1F6E, 0x1F69, 0x1F6F, IBUS_KEY_dead_tilde, 0x007E, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB4, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB5, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, IBUS_KEY_space, 0x00AF, IBUS_KEY_V, 0x01D5, IBUS_KEY_v, 0x01D6, IBUS_KEY_nobreakspace, 0x0304, IBUS_KEY_Egrave, 0x1E14, IBUS_KEY_Eacute, 0x1E16, IBUS_KEY_Ograve, 0x1E50, IBUS_KEY_Oacute, 0x1E52, IBUS_KEY_egrave, 0x1E15, IBUS_KEY_eacute, 0x1E17, IBUS_KEY_ograve, 0x1E51, IBUS_KEY_oacute, 0x1E53, IBUS_KEY_Cyrillic_i, 0x04E3, IBUS_KEY_Cyrillic_u, 0x04EF, IBUS_KEY_Cyrillic_I, 0x04E2, IBUS_KEY_Cyrillic_U, 0x04EE, IBUS_KEY_Greek_ALPHA, 0x1FB9, IBUS_KEY_Greek_IOTA, 0x1FD9, IBUS_KEY_Greek_UPSILON, 0x1FE9, IBUS_KEY_Greek_alpha, 0x1FB1, IBUS_KEY_Greek_iota, 0x1FD1, IBUS_KEY_Greek_upsilon, 0x1FE1, IBUS_KEY_dead_macron, 0x00AF, IBUS_KEY_dead_greek, IBUS_KEY_A, 0x1FB9, IBUS_KEY_dead_greek, IBUS_KEY_I, 0x1FD9, IBUS_KEY_dead_greek, IBUS_KEY_U, 0x1FE9, IBUS_KEY_dead_greek, IBUS_KEY_a, 0x1FB1, IBUS_KEY_dead_greek, IBUS_KEY_i, 0x1FD1, IBUS_KEY_dead_greek, IBUS_KEY_u, 0x1FE1, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_O, 0x0230, IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_o, 0x0231, IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, IBUS_KEY_space, 0x02D8, IBUS_KEY_nobreakspace, 0x0306, IBUS_KEY_Agrave, 0x1EB0, IBUS_KEY_Aacute, 0x1EAE, IBUS_KEY_Atilde, 0x1EB4, IBUS_KEY_agrave, 0x1EB1, IBUS_KEY_aacute, 0x1EAF, IBUS_KEY_atilde, 0x1EB5, IBUS_KEY_Cyrillic_a, 0x04D1, IBUS_KEY_Cyrillic_ie, 0x04D7, IBUS_KEY_Cyrillic_i, 0x0439, IBUS_KEY_Cyrillic_u, 0x045E, IBUS_KEY_Cyrillic_zhe, 0x04C2, IBUS_KEY_Cyrillic_A, 0x04D0, IBUS_KEY_Cyrillic_IE, 0x04D6, IBUS_KEY_Cyrillic_I, 0x0419, IBUS_KEY_Cyrillic_U, 0x040E, IBUS_KEY_Cyrillic_ZHE, 0x04C1, IBUS_KEY_Greek_ALPHA, 0x1FB8, IBUS_KEY_Greek_IOTA, 0x1FD8, IBUS_KEY_Greek_UPSILON, 0x1FE8, IBUS_KEY_Greek_alpha, 0x1FB0, IBUS_KEY_Greek_iota, 0x1FD0, IBUS_KEY_Greek_upsilon, 0x1FE0, IBUS_KEY_dead_breve, 0x02D8, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, IBUS_KEY_space, 0x02D9, IBUS_KEY_L, 0x013F, IBUS_KEY_i, 0x0131, IBUS_KEY_j, 0x0237, IBUS_KEY_l, 0x0140, IBUS_KEY_nobreakspace, 0x0307, IBUS_KEY_Sacute, 0x1E64, IBUS_KEY_Scaron, 0x1E66, IBUS_KEY_sacute, 0x1E65, IBUS_KEY_scaron, 0x1E67, IBUS_KEY_Amacron, 0x01E0, IBUS_KEY_Omacron, 0x0230, IBUS_KEY_amacron, 0x01E1, IBUS_KEY_omacron, 0x0231, IBUS_KEY_dead_abovedot, 0x02D9, IBUS_KEY_dead_stroke, IBUS_KEY_j, 0x025F, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_S, 0x1E66, IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_s, 0x1E67, IBUS_KEY_Multi_key, IBUS_KEY_f, IBUS_KEY_s, 0x1E9B, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, IBUS_KEY_space, 0x0022, IBUS_KEY_apostrophe, 0x0344, IBUS_KEY_nobreakspace, 0x0308, IBUS_KEY_acute, 0x0344, IBUS_KEY_Iacute, 0x1E2E, IBUS_KEY_Ugrave, 0x01DB, IBUS_KEY_Uacute, 0x01D7, IBUS_KEY_iacute, 0x1E2F, IBUS_KEY_ugrave, 0x01DC, IBUS_KEY_uacute, 0x01D8, 0x01D3, 0x01D9, 0x01D4, 0x01DA, IBUS_KEY_Amacron, 0x01DE, IBUS_KEY_Umacron, 0x1E7A, IBUS_KEY_amacron, 0x01DF, IBUS_KEY_omacron, 0x022B, IBUS_KEY_umacron, 0x1E7B, IBUS_KEY_Ukrainian_i, 0x0457, IBUS_KEY_Ukrainian_I, 0x0407, IBUS_KEY_Cyrillic_a, 0x04D3, IBUS_KEY_Cyrillic_ie, 0x0451, IBUS_KEY_Cyrillic_i, 0x04E5, IBUS_KEY_Cyrillic_o, 0x04E7, IBUS_KEY_Cyrillic_u, 0x04F1, IBUS_KEY_Cyrillic_zhe, 0x04DD, IBUS_KEY_Cyrillic_yeru, 0x04F9, IBUS_KEY_Cyrillic_ze, 0x04DF, IBUS_KEY_Cyrillic_e, 0x04ED, IBUS_KEY_Cyrillic_che, 0x04F5, IBUS_KEY_Cyrillic_A, 0x04D2, IBUS_KEY_Cyrillic_IE, 0x0401, IBUS_KEY_Cyrillic_I, 0x04E4, IBUS_KEY_Cyrillic_O, 0x04E6, IBUS_KEY_Cyrillic_U, 0x04F0, IBUS_KEY_Cyrillic_ZHE, 0x04DC, IBUS_KEY_Cyrillic_YERU, 0x04F8, IBUS_KEY_Cyrillic_ZE, 0x04DE, IBUS_KEY_Cyrillic_E, 0x04EC, IBUS_KEY_Cyrillic_CHE, 0x04F4, IBUS_KEY_Greek_IOTA, 0x03AA, IBUS_KEY_Greek_UPSILON, 0x03AB, IBUS_KEY_Greek_iota, 0x03CA, IBUS_KEY_Greek_upsilon, 0x03CB, IBUS_KEY_dead_diaeresis, 0x00A8, IBUS_KEY_dead_acute, IBUS_KEY_space, 0x0385, IBUS_KEY_dead_acute, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_dead_acute, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_dead_belowdiaeresis, IBUS_KEY_equal, 0x2A77, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, IBUS_KEY_space, 0x00B0, IBUS_KEY_nobreakspace, 0x030A, IBUS_KEY_Aacute, 0x01FA, IBUS_KEY_aacute, 0x01FB, IBUS_KEY_dead_abovering, 0x00B0, IBUS_KEY_space, 0x02DD, IBUS_KEY_nobreakspace, 0x030B, IBUS_KEY_Cyrillic_u, 0x04F3, IBUS_KEY_Cyrillic_U, 0x04F2, IBUS_KEY_dead_doubleacute, 0x02DD, IBUS_KEY_space, 0x02C7, IBUS_KEY_parenleft, 0x208D, IBUS_KEY_parenright, 0x208E, IBUS_KEY_plus, 0x208A, IBUS_KEY_minus, 0x208B, IBUS_KEY_0, 0x2080, IBUS_KEY_1, 0x2081, IBUS_KEY_2, 0x2082, IBUS_KEY_3, 0x2083, IBUS_KEY_4, 0x2084, IBUS_KEY_5, 0x2085, IBUS_KEY_6, 0x2086, IBUS_KEY_7, 0x2087, IBUS_KEY_8, 0x2088, IBUS_KEY_9, 0x2089, IBUS_KEY_equal, 0x208C, IBUS_KEY_V, 0x01D9, IBUS_KEY_v, 0x01DA, IBUS_KEY_nobreakspace, 0x030C, 0x01F2, 0x01C5, IBUS_KEY_dead_caron, 0x02C7, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, IBUS_KEY_space, 0x00B8, IBUS_KEY_nobreakspace, 0x0327, IBUS_KEY_cent, 0x20B5, IBUS_KEY_Cacute, 0x1E08, IBUS_KEY_cacute, 0x1E09, IBUS_KEY_dead_cedilla, 0x00B8, IBUS_KEY_dead_currency, IBUS_KEY_C, 0x20B5, IBUS_KEY_dead_currency, IBUS_KEY_c, 0x20B5, IBUS_KEY_space, 0x02DB, IBUS_KEY_nobreakspace, 0x0328, IBUS_KEY_Omacron, 0x01EC, IBUS_KEY_omacron, 0x01ED, IBUS_KEY_dead_ogonek, 0x02DB, IBUS_KEY_space, 0x037A, IBUS_KEY_Greek_alphaaccent, 0x1FB4, IBUS_KEY_Greek_etaaccent, 0x1FC4, IBUS_KEY_Greek_omegaaccent, 0x1FF4, IBUS_KEY_Greek_ALPHA, 0x1FBC, IBUS_KEY_Greek_ETA, 0x1FCC, IBUS_KEY_Greek_OMEGA, 0x1FFC, IBUS_KEY_Greek_alpha, 0x1FB3, IBUS_KEY_Greek_eta, 0x1FC3, IBUS_KEY_Greek_omega, 0x1FF3, IBUS_KEY_dead_iota, 0x037A, IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F00, 0x1F82, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F01, 0x1F83, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F08, 0x1F8A, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F09, 0x1F8B, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F20, 0x1F92, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F21, 0x1F93, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F28, 0x1F9A, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F29, 0x1F9B, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F60, 0x1FA2, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F61, 0x1FA3, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F68, 0x1FAA, IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F69, 0x1FAB, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F00, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F01, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F08, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F09, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F20, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F21, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F28, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F29, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F60, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F61, 0x1FA5, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F68, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F69, 0x1FAD, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_kana_WO, 0x30FA, IBUS_KEY_kana_U, 0x30F4, IBUS_KEY_kana_KA, 0x30AC, IBUS_KEY_kana_KI, 0x30AE, IBUS_KEY_kana_KU, 0x30B0, IBUS_KEY_kana_KE, 0x30B2, IBUS_KEY_kana_KO, 0x30B4, IBUS_KEY_kana_SA, 0x30B6, IBUS_KEY_kana_SHI, 0x30B8, IBUS_KEY_kana_SU, 0x30BA, IBUS_KEY_kana_SE, 0x30BC, IBUS_KEY_kana_SO, 0x30BE, IBUS_KEY_kana_TA, 0x30C0, IBUS_KEY_kana_CHI, 0x30C2, IBUS_KEY_kana_TSU, 0x30C5, IBUS_KEY_kana_TE, 0x30C7, IBUS_KEY_kana_TO, 0x30C9, IBUS_KEY_kana_HA, 0x30D0, IBUS_KEY_kana_HI, 0x30D3, IBUS_KEY_kana_FU, 0x30D6, IBUS_KEY_kana_HE, 0x30D9, IBUS_KEY_kana_HO, 0x30DC, IBUS_KEY_kana_WA, 0x30F7, IBUS_KEY_kana_HA, 0x30D1, IBUS_KEY_kana_HI, 0x30D4, IBUS_KEY_kana_FU, 0x30D7, IBUS_KEY_kana_HE, 0x30DA, IBUS_KEY_kana_HO, 0x30DD, IBUS_KEY_space, 0x0323, IBUS_KEY_plus, 0x2A25, IBUS_KEY_minus, 0x2A2A, IBUS_KEY_equal, 0x2A66, IBUS_KEY_nobreakspace, 0x0323, IBUS_KEY_Abreve, 0x1EB6, IBUS_KEY_abreve, 0x1EB7, IBUS_KEY_dead_belowdot, 0x0323, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, IBUS_KEY_space, 0x0309, IBUS_KEY_B, 0x0181, IBUS_KEY_C, 0x0187, IBUS_KEY_D, 0x018A, IBUS_KEY_F, 0x0191, IBUS_KEY_G, 0x0193, IBUS_KEY_K, 0x0198, IBUS_KEY_M, 0x2C6E, IBUS_KEY_N, 0x019D, IBUS_KEY_P, 0x01A4, IBUS_KEY_T, 0x01AC, IBUS_KEY_V, 0x01B2, IBUS_KEY_W, 0x2C72, IBUS_KEY_Z, 0x0224, IBUS_KEY_b, 0x0253, IBUS_KEY_c, 0x0188, IBUS_KEY_d, 0x0257, IBUS_KEY_f, 0x0192, IBUS_KEY_g, 0x0260, IBUS_KEY_h, 0x0266, IBUS_KEY_k, 0x0199, IBUS_KEY_m, 0x0271, IBUS_KEY_n, 0x0272, IBUS_KEY_p, 0x01A5, IBUS_KEY_q, 0x02A0, IBUS_KEY_r, 0x027C, IBUS_KEY_s, 0x0282, IBUS_KEY_t, 0x01AD, IBUS_KEY_v, 0x028B, IBUS_KEY_w, 0x2C73, IBUS_KEY_z, 0x0225, IBUS_KEY_nobreakspace, 0x0309, IBUS_KEY_Abreve, 0x1EB2, IBUS_KEY_abreve, 0x1EB3, 0x0256, 0x1D91, 0x025C, 0x025D, 0x025F, 0x0284, 0x0279, 0x027B, IBUS_KEY_dead_hook, 0x0309, IBUS_KEY_dead_greek, IBUS_KEY_U, 0x03D2, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB2, IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB3, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, IBUS_KEY_space, 0x031B, IBUS_KEY_nobreakspace, 0x031B, IBUS_KEY_Utilde, 0x1EEE, IBUS_KEY_utilde, 0x1EEF, IBUS_KEY_dead_horn, 0x031B, IBUS_KEY_space, 0x002F, IBUS_KEY_2, 0x01BB, IBUS_KEY_A, 0x023A, IBUS_KEY_B, 0x0243, IBUS_KEY_C, 0x023B, IBUS_KEY_D, 0x0110, IBUS_KEY_E, 0x0246, IBUS_KEY_G, 0x01E4, IBUS_KEY_H, 0x0126, IBUS_KEY_I, 0x0197, IBUS_KEY_J, 0x0248, IBUS_KEY_L, 0x0141, IBUS_KEY_O, 0x00D8, IBUS_KEY_P, 0x2C63, IBUS_KEY_R, 0x024C, IBUS_KEY_T, 0x0166, IBUS_KEY_U, 0x0244, IBUS_KEY_Y, 0x024E, IBUS_KEY_Z, 0x01B5, IBUS_KEY_a, 0x2C65, IBUS_KEY_b, 0x0180, IBUS_KEY_c, 0x023C, IBUS_KEY_d, 0x0111, IBUS_KEY_e, 0x0247, IBUS_KEY_g, 0x01E5, IBUS_KEY_h, 0x0127, IBUS_KEY_i, 0x0268, IBUS_KEY_j, 0x0249, IBUS_KEY_l, 0x0142, IBUS_KEY_o, 0x00F8, IBUS_KEY_p, 0x1D7D, IBUS_KEY_r, 0x024D, IBUS_KEY_t, 0x0167, IBUS_KEY_u, 0x0289, IBUS_KEY_y, 0x024F, IBUS_KEY_z, 0x01B6, IBUS_KEY_nobreakspace, 0x0338, IBUS_KEY_Oacute, 0x01FE, IBUS_KEY_oacute, 0x01FF, 0x0237, 0x025F, 0x0269, 0x1D7C, IBUS_KEY_lessthanequal, 0x2270, IBUS_KEY_greaterthanequal, 0x2271, IBUS_KEY_dead_stroke, 0x002F, IBUS_KEY_dead_acute, IBUS_KEY_O, 0x01FE, IBUS_KEY_dead_acute, IBUS_KEY_o, 0x01FF, IBUS_KEY_dead_abovedot, IBUS_KEY_j, 0x025F, IBUS_KEY_dead_greek, IBUS_KEY_r, 0x03FC, IBUS_KEY_Greek_ALPHA, 0x1F08, IBUS_KEY_Greek_EPSILON, 0x1F18, IBUS_KEY_Greek_ETA, 0x1F28, IBUS_KEY_Greek_IOTA, 0x1F38, IBUS_KEY_Greek_OMICRON, 0x1F48, IBUS_KEY_Greek_OMEGA, 0x1F68, IBUS_KEY_Greek_alpha, 0x1F00, IBUS_KEY_Greek_epsilon, 0x1F10, IBUS_KEY_Greek_eta, 0x1F20, IBUS_KEY_Greek_iota, 0x1F30, IBUS_KEY_Greek_omicron, 0x1F40, IBUS_KEY_Greek_rho, 0x1FE4, IBUS_KEY_Greek_upsilon, 0x1F50, IBUS_KEY_Greek_omega, 0x1F60, IBUS_KEY_Greek_ALPHA, 0x1F09, IBUS_KEY_Greek_EPSILON, 0x1F19, IBUS_KEY_Greek_ETA, 0x1F29, IBUS_KEY_Greek_IOTA, 0x1F39, IBUS_KEY_Greek_OMICRON, 0x1F49, IBUS_KEY_Greek_RHO, 0x1FEC, IBUS_KEY_Greek_UPSILON, 0x1F59, IBUS_KEY_Greek_OMEGA, 0x1F69, IBUS_KEY_Greek_alpha, 0x1F01, IBUS_KEY_Greek_epsilon, 0x1F11, IBUS_KEY_Greek_eta, 0x1F21, IBUS_KEY_Greek_iota, 0x1F31, IBUS_KEY_Greek_omicron, 0x1F41, IBUS_KEY_Greek_rho, 0x1FE5, IBUS_KEY_Greek_upsilon, 0x1F51, IBUS_KEY_Greek_omega, 0x1F61, IBUS_KEY_bar, 0x2AF0, IBUS_KEY_plus, 0x2A26, IBUS_KEY_dead_diaeresis, IBUS_KEY_equal, 0x2A77, IBUS_KEY_space, 0x002C, IBUS_KEY_S, 0x0218, IBUS_KEY_T, 0x021A, IBUS_KEY_s, 0x0219, IBUS_KEY_t, 0x021B, IBUS_KEY_nobreakspace, 0x0326, IBUS_KEY_dead_belowcomma, 0x002C, IBUS_KEY_space, 0x00A4, IBUS_KEY_A, 0x20B3, IBUS_KEY_B, 0x20B1, IBUS_KEY_C, 0x20A1, IBUS_KEY_D, 0x20AF, IBUS_KEY_E, 0x20A0, IBUS_KEY_F, 0x20A3, IBUS_KEY_G, 0x20B2, IBUS_KEY_H, 0x20B4, IBUS_KEY_I, 0x17DB, IBUS_KEY_K, 0x20AD, IBUS_KEY_L, 0x20A4, IBUS_KEY_M, 0x2133, IBUS_KEY_N, 0x20A6, IBUS_KEY_O, 0x0AF1, IBUS_KEY_P, 0x20A7, IBUS_KEY_R, 0x20A8, IBUS_KEY_S, 0x0024, IBUS_KEY_T, 0x20AE, IBUS_KEY_U, 0x5713, IBUS_KEY_W, 0x20A9, IBUS_KEY_Y, 0x5186, IBUS_KEY_a, 0x060B, IBUS_KEY_b, 0x0E3F, IBUS_KEY_c, 0x00A2, IBUS_KEY_d, 0x20AB, IBUS_KEY_e, 0x20AC, IBUS_KEY_f, 0x0192, IBUS_KEY_g, 0x20B2, IBUS_KEY_h, 0x20B4, IBUS_KEY_i, 0xFDFC, IBUS_KEY_k, 0x20AD, IBUS_KEY_l, 0x00A3, IBUS_KEY_m, 0x20A5, IBUS_KEY_n, 0x20A6, IBUS_KEY_o, 0x0BF9, IBUS_KEY_p, 0x20B0, IBUS_KEY_r, 0x20A2, IBUS_KEY_s, 0x20AA, IBUS_KEY_t, 0x09F3, IBUS_KEY_u, 0x5143, IBUS_KEY_w, 0x20A9, IBUS_KEY_y, 0x00A5, IBUS_KEY_nobreakspace, 0x00A4, IBUS_KEY_Ccedilla, 0x20B5, IBUS_KEY_THORN, 0x09F2, IBUS_KEY_ccedilla, 0x20B5, IBUS_KEY_thorn, 0x09F2, IBUS_KEY_dead_currency, 0x00A4, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x20B5, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x20B5, IBUS_KEY_space, 0x00B5, IBUS_KEY_A, 0x0391, IBUS_KEY_B, 0x0392, IBUS_KEY_D, 0x0394, IBUS_KEY_E, 0x0395, IBUS_KEY_F, 0x03A6, IBUS_KEY_G, 0x0393, IBUS_KEY_H, 0x0397, IBUS_KEY_I, 0x0399, IBUS_KEY_J, 0x0398, IBUS_KEY_K, 0x039A, IBUS_KEY_L, 0x039B, IBUS_KEY_M, 0x039C, IBUS_KEY_N, 0x039D, IBUS_KEY_O, 0x039F, IBUS_KEY_P, 0x03A0, IBUS_KEY_Q, 0x03A7, IBUS_KEY_R, 0x03A1, IBUS_KEY_S, 0x03A3, IBUS_KEY_T, 0x03A4, IBUS_KEY_U, 0x03A5, IBUS_KEY_W, 0x03A9, IBUS_KEY_X, 0x039E, IBUS_KEY_Y, 0x03A8, IBUS_KEY_Z, 0x0396, IBUS_KEY_a, 0x03B1, IBUS_KEY_b, 0x03B2, IBUS_KEY_d, 0x03B4, IBUS_KEY_e, 0x03B5, IBUS_KEY_f, 0x03C6, IBUS_KEY_g, 0x03B3, IBUS_KEY_h, 0x03B7, IBUS_KEY_i, 0x03B9, IBUS_KEY_j, 0x03B8, IBUS_KEY_k, 0x03BA, IBUS_KEY_l, 0x03BB, IBUS_KEY_m, 0x03BC, IBUS_KEY_n, 0x03BD, IBUS_KEY_o, 0x03BF, IBUS_KEY_p, 0x03C0, IBUS_KEY_q, 0x03C7, IBUS_KEY_r, 0x03C1, IBUS_KEY_s, 0x03C3, IBUS_KEY_t, 0x03C4, IBUS_KEY_u, 0x03C5, IBUS_KEY_w, 0x03C9, IBUS_KEY_x, 0x03BE, IBUS_KEY_y, 0x03C8, IBUS_KEY_z, 0x03B6, IBUS_KEY_nobreakspace, 0x00B5, IBUS_KEY_dead_greek, 0x00B5, IBUS_KEY_dead_macron, IBUS_KEY_A, 0x1FB9, IBUS_KEY_dead_macron, IBUS_KEY_I, 0x1FD9, IBUS_KEY_dead_macron, IBUS_KEY_U, 0x1FE9, IBUS_KEY_dead_macron, IBUS_KEY_a, 0x1FB1, IBUS_KEY_dead_macron, IBUS_KEY_i, 0x1FD1, IBUS_KEY_dead_macron, IBUS_KEY_u, 0x1FE1, IBUS_KEY_dead_hook, IBUS_KEY_U, 0x03D2, IBUS_KEY_dead_stroke, IBUS_KEY_r, 0x03FC, IBUS_KEY_space, IBUS_KEY_space, 0x00A0, IBUS_KEY_space, IBUS_KEY_apostrophe, 0x0027, IBUS_KEY_space, IBUS_KEY_parenleft, 0x02D8, IBUS_KEY_space, IBUS_KEY_comma, 0x00B8, IBUS_KEY_space, IBUS_KEY_minus, 0x007E, IBUS_KEY_space, IBUS_KEY_period, 0x2008, IBUS_KEY_space, IBUS_KEY_less, 0x02C7, IBUS_KEY_space, IBUS_KEY_greater, 0x005E, IBUS_KEY_space, IBUS_KEY_asciicircum, 0x005E, IBUS_KEY_space, IBUS_KEY_grave, 0x0060, IBUS_KEY_space, IBUS_KEY_asciitilde, 0x007E, IBUS_KEY_exclam, IBUS_KEY_exclam, 0x00A1, IBUS_KEY_exclam, IBUS_KEY_question, 0x203D, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EA0, IBUS_KEY_exclam, IBUS_KEY_B, 0x1E04, IBUS_KEY_exclam, IBUS_KEY_D, 0x1E0C, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EB8, IBUS_KEY_exclam, IBUS_KEY_H, 0x1E24, IBUS_KEY_exclam, IBUS_KEY_I, 0x1ECA, IBUS_KEY_exclam, IBUS_KEY_K, 0x1E32, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E36, IBUS_KEY_exclam, IBUS_KEY_M, 0x1E42, IBUS_KEY_exclam, IBUS_KEY_N, 0x1E46, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ECC, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5A, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E62, IBUS_KEY_exclam, IBUS_KEY_T, 0x1E6C, IBUS_KEY_exclam, IBUS_KEY_U, 0x1EE4, IBUS_KEY_exclam, IBUS_KEY_V, 0x1E7E, IBUS_KEY_exclam, IBUS_KEY_W, 0x1E88, IBUS_KEY_exclam, IBUS_KEY_Y, 0x1EF4, IBUS_KEY_exclam, IBUS_KEY_Z, 0x1E92, IBUS_KEY_exclam, IBUS_KEY_asciicircum, 0x00A6, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EA1, IBUS_KEY_exclam, IBUS_KEY_b, 0x1E05, IBUS_KEY_exclam, IBUS_KEY_d, 0x1E0D, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EB9, IBUS_KEY_exclam, IBUS_KEY_h, 0x1E25, IBUS_KEY_exclam, IBUS_KEY_i, 0x1ECB, IBUS_KEY_exclam, IBUS_KEY_k, 0x1E33, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E37, IBUS_KEY_exclam, IBUS_KEY_m, 0x1E43, IBUS_KEY_exclam, IBUS_KEY_n, 0x1E47, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ECD, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5B, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E63, IBUS_KEY_exclam, IBUS_KEY_t, 0x1E6D, IBUS_KEY_exclam, IBUS_KEY_u, 0x1EE5, IBUS_KEY_exclam, IBUS_KEY_v, 0x1E7F, IBUS_KEY_exclam, IBUS_KEY_w, 0x1E89, IBUS_KEY_exclam, IBUS_KEY_y, 0x1EF5, IBUS_KEY_exclam, IBUS_KEY_z, 0x1E93, IBUS_KEY_quotedbl, IBUS_KEY_quotedbl, 0x00A8, IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, 0x0344, IBUS_KEY_quotedbl, IBUS_KEY_comma, 0x201E, IBUS_KEY_quotedbl, IBUS_KEY_less, 0x201C, IBUS_KEY_quotedbl, IBUS_KEY_greater, 0x201D, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x00C4, IBUS_KEY_quotedbl, IBUS_KEY_E, 0x00CB, IBUS_KEY_quotedbl, IBUS_KEY_H, 0x1E26, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x00CF, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x00D6, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x00DC, IBUS_KEY_quotedbl, IBUS_KEY_W, 0x1E84, IBUS_KEY_quotedbl, IBUS_KEY_X, 0x1E8C, IBUS_KEY_quotedbl, IBUS_KEY_Y, 0x0178, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x00E4, IBUS_KEY_quotedbl, IBUS_KEY_e, 0x00EB, IBUS_KEY_quotedbl, IBUS_KEY_h, 0x1E27, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x00EF, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x00F6, IBUS_KEY_quotedbl, IBUS_KEY_t, 0x1E97, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x00FC, IBUS_KEY_quotedbl, IBUS_KEY_w, 0x1E85, IBUS_KEY_quotedbl, IBUS_KEY_x, 0x1E8D, IBUS_KEY_quotedbl, IBUS_KEY_y, 0x00FF, IBUS_KEY_quotedbl, IBUS_KEY_acute, 0x0344, IBUS_KEY_quotedbl, IBUS_KEY_Otilde, 0x1E4E, IBUS_KEY_quotedbl, IBUS_KEY_otilde, 0x1E4F, IBUS_KEY_quotedbl, 0x03D2, 0x03D4, IBUS_KEY_quotedbl, IBUS_KEY_Umacron, 0x1E7A, IBUS_KEY_quotedbl, IBUS_KEY_umacron, 0x1E7B, IBUS_KEY_quotedbl, 0x04D8, 0x04DA, IBUS_KEY_quotedbl, 0x04D9, 0x04DB, IBUS_KEY_quotedbl, 0x04E8, 0x04EA, IBUS_KEY_quotedbl, 0x04E9, 0x04EB, IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_i, 0x0457, IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_I, 0x0407, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_a, 0x04D3, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ie, 0x0451, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_i, 0x04E5, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_o, 0x04E7, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_u, 0x04F1, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_zhe, 0x04DD, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_yeru, 0x04F9, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ze, 0x04DF, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_e, 0x04ED, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_che, 0x04F5, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_A, 0x04D2, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_IE, 0x0401, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_I, 0x04E4, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_O, 0x04E6, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_U, 0x04F0, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZHE, 0x04DC, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_YERU, 0x04F8, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZE, 0x04DE, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_E, 0x04EC, IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_CHE, 0x04F4, IBUS_KEY_quotedbl, IBUS_KEY_Greek_IOTA, 0x03AA, IBUS_KEY_quotedbl, IBUS_KEY_Greek_UPSILON, 0x03AB, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x03CA, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03CB, IBUS_KEY_quotedbl, IBUS_KEY_dead_acute, 0x0344, IBUS_KEY_numbersign, IBUS_KEY_numbersign, 0x266F, IBUS_KEY_numbersign, IBUS_KEY_E, 0x266B, IBUS_KEY_numbersign, IBUS_KEY_S, 0x266C, IBUS_KEY_numbersign, IBUS_KEY_b, 0x266D, IBUS_KEY_numbersign, IBUS_KEY_e, 0x266A, IBUS_KEY_numbersign, IBUS_KEY_f, 0x266E, IBUS_KEY_numbersign, IBUS_KEY_q, 0x2669, IBUS_KEY_percent, IBUS_KEY_o, 0x2030, IBUS_KEY_apostrophe, IBUS_KEY_space, 0x0027, IBUS_KEY_apostrophe, IBUS_KEY_apostrophe, 0x00B4, IBUS_KEY_apostrophe, IBUS_KEY_comma, 0x201A, IBUS_KEY_apostrophe, IBUS_KEY_less, 0x2018, IBUS_KEY_apostrophe, IBUS_KEY_greater, 0x2019, IBUS_KEY_apostrophe, IBUS_KEY_A, 0x00C1, IBUS_KEY_apostrophe, IBUS_KEY_C, 0x0106, IBUS_KEY_apostrophe, IBUS_KEY_E, 0x00C9, IBUS_KEY_apostrophe, IBUS_KEY_G, 0x01F4, IBUS_KEY_apostrophe, IBUS_KEY_I, 0x00CD, IBUS_KEY_apostrophe, IBUS_KEY_K, 0x1E30, IBUS_KEY_apostrophe, IBUS_KEY_L, 0x0139, IBUS_KEY_apostrophe, IBUS_KEY_M, 0x1E3E, IBUS_KEY_apostrophe, IBUS_KEY_N, 0x0143, IBUS_KEY_apostrophe, IBUS_KEY_O, 0x00D3, IBUS_KEY_apostrophe, IBUS_KEY_P, 0x1E54, IBUS_KEY_apostrophe, IBUS_KEY_R, 0x0154, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x015A, IBUS_KEY_apostrophe, IBUS_KEY_U, 0x00DA, IBUS_KEY_apostrophe, IBUS_KEY_W, 0x1E82, IBUS_KEY_apostrophe, IBUS_KEY_Y, 0x00DD, IBUS_KEY_apostrophe, IBUS_KEY_Z, 0x0179, IBUS_KEY_apostrophe, IBUS_KEY_a, 0x00E1, IBUS_KEY_apostrophe, IBUS_KEY_c, 0x0107, IBUS_KEY_apostrophe, IBUS_KEY_e, 0x00E9, IBUS_KEY_apostrophe, IBUS_KEY_g, 0x01F5, IBUS_KEY_apostrophe, IBUS_KEY_i, 0x00ED, IBUS_KEY_apostrophe, IBUS_KEY_k, 0x1E31, IBUS_KEY_apostrophe, IBUS_KEY_l, 0x013A, IBUS_KEY_apostrophe, IBUS_KEY_m, 0x1E3F, IBUS_KEY_apostrophe, IBUS_KEY_n, 0x0144, IBUS_KEY_apostrophe, IBUS_KEY_o, 0x00F3, IBUS_KEY_apostrophe, IBUS_KEY_p, 0x1E55, IBUS_KEY_apostrophe, IBUS_KEY_r, 0x0155, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x015B, IBUS_KEY_apostrophe, IBUS_KEY_u, 0x00FA, IBUS_KEY_apostrophe, IBUS_KEY_w, 0x1E83, IBUS_KEY_apostrophe, IBUS_KEY_y, 0x00FD, IBUS_KEY_apostrophe, IBUS_KEY_z, 0x017A, IBUS_KEY_apostrophe, IBUS_KEY_Acircumflex, 0x1EA4, IBUS_KEY_apostrophe, IBUS_KEY_Aring, 0x01FA, IBUS_KEY_apostrophe, IBUS_KEY_AE, 0x01FC, IBUS_KEY_apostrophe, IBUS_KEY_Ccedilla, 0x1E08, IBUS_KEY_apostrophe, IBUS_KEY_Ecircumflex, 0x1EBE, IBUS_KEY_apostrophe, IBUS_KEY_Idiaeresis, 0x1E2E, IBUS_KEY_apostrophe, IBUS_KEY_Ocircumflex, 0x1ED0, IBUS_KEY_apostrophe, IBUS_KEY_Otilde, 0x1E4C, IBUS_KEY_apostrophe, IBUS_KEY_Ooblique, 0x01FE, IBUS_KEY_apostrophe, IBUS_KEY_Udiaeresis, 0x01D7, IBUS_KEY_apostrophe, IBUS_KEY_acircumflex, 0x1EA5, IBUS_KEY_apostrophe, IBUS_KEY_aring, 0x01FB, IBUS_KEY_apostrophe, IBUS_KEY_ae, 0x01FD, IBUS_KEY_apostrophe, IBUS_KEY_ccedilla, 0x1E09, IBUS_KEY_apostrophe, IBUS_KEY_ecircumflex, 0x1EBF, IBUS_KEY_apostrophe, IBUS_KEY_idiaeresis, 0x1E2F, IBUS_KEY_apostrophe, IBUS_KEY_ocircumflex, 0x1ED1, IBUS_KEY_apostrophe, IBUS_KEY_otilde, 0x1E4D, IBUS_KEY_apostrophe, IBUS_KEY_oslash, 0x01FF, IBUS_KEY_apostrophe, IBUS_KEY_udiaeresis, 0x01D8, IBUS_KEY_apostrophe, IBUS_KEY_Abreve, 0x1EAE, IBUS_KEY_apostrophe, IBUS_KEY_abreve, 0x1EAF, IBUS_KEY_apostrophe, IBUS_KEY_Emacron, 0x1E16, IBUS_KEY_apostrophe, IBUS_KEY_emacron, 0x1E17, IBUS_KEY_apostrophe, IBUS_KEY_Omacron, 0x1E52, IBUS_KEY_apostrophe, IBUS_KEY_Utilde, 0x1E78, IBUS_KEY_apostrophe, IBUS_KEY_omacron, 0x1E53, IBUS_KEY_apostrophe, IBUS_KEY_utilde, 0x1E79, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ghe, 0x0453, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ka, 0x045C, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_GHE, 0x0403, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_KA, 0x040C, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iotadieresis, 0x0390, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilondieresis, 0x03B0, IBUS_KEY_apostrophe, IBUS_KEY_Greek_ALPHA, 0x0386, IBUS_KEY_apostrophe, IBUS_KEY_Greek_EPSILON, 0x0388, IBUS_KEY_apostrophe, IBUS_KEY_Greek_ETA, 0x0389, IBUS_KEY_apostrophe, IBUS_KEY_Greek_IOTA, 0x038A, IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMICRON, 0x038C, IBUS_KEY_apostrophe, IBUS_KEY_Greek_UPSILON, 0x038E, IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMEGA, 0x038F, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x03AC, IBUS_KEY_apostrophe, IBUS_KEY_Greek_epsilon, 0x03AD, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x03AE, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x03AF, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omicron, 0x03CC, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03CD, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x03CE, IBUS_KEY_apostrophe, 0x1F00, 0x1F04, IBUS_KEY_apostrophe, 0x1F01, 0x1F05, IBUS_KEY_apostrophe, 0x1F08, 0x1F0C, IBUS_KEY_apostrophe, 0x1F09, 0x1F0D, IBUS_KEY_apostrophe, 0x1F10, 0x1F14, IBUS_KEY_apostrophe, 0x1F11, 0x1F15, IBUS_KEY_apostrophe, 0x1F18, 0x1F1C, IBUS_KEY_apostrophe, 0x1F19, 0x1F1D, IBUS_KEY_apostrophe, 0x1F20, 0x1F24, IBUS_KEY_apostrophe, 0x1F21, 0x1F25, IBUS_KEY_apostrophe, 0x1F28, 0x1F2C, IBUS_KEY_apostrophe, 0x1F29, 0x1F2D, IBUS_KEY_apostrophe, 0x1F30, 0x1F34, IBUS_KEY_apostrophe, 0x1F31, 0x1F35, IBUS_KEY_apostrophe, 0x1F38, 0x1F3C, IBUS_KEY_apostrophe, 0x1F39, 0x1F3D, IBUS_KEY_apostrophe, 0x1F40, 0x1F44, IBUS_KEY_apostrophe, 0x1F41, 0x1F45, IBUS_KEY_apostrophe, 0x1F48, 0x1F4C, IBUS_KEY_apostrophe, 0x1F49, 0x1F4D, IBUS_KEY_apostrophe, 0x1F50, 0x1F54, IBUS_KEY_apostrophe, 0x1F51, 0x1F55, IBUS_KEY_apostrophe, 0x1F59, 0x1F5D, IBUS_KEY_apostrophe, 0x1F60, 0x1F64, IBUS_KEY_apostrophe, 0x1F61, 0x1F65, IBUS_KEY_apostrophe, 0x1F68, 0x1F6C, IBUS_KEY_apostrophe, 0x1F69, 0x1F6D, IBUS_KEY_apostrophe, 0x2395, 0x235E, IBUS_KEY_parenleft, IBUS_KEY_space, 0x02D8, IBUS_KEY_parenleft, IBUS_KEY_parenleft, 0x005B, IBUS_KEY_parenleft, IBUS_KEY_minus, 0x007B, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F09, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F19, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F29, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F39, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F49, IBUS_KEY_parenleft, IBUS_KEY_Greek_RHO, 0x1FEC, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F59, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F69, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F01, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F11, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F21, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F31, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F41, IBUS_KEY_parenleft, IBUS_KEY_Greek_rho, 0x1FE5, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F51, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F61, IBUS_KEY_parenright, IBUS_KEY_parenright, 0x005D, IBUS_KEY_parenright, IBUS_KEY_minus, 0x007D, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F08, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F18, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F28, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F38, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F48, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F68, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F00, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F10, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F20, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F30, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F40, IBUS_KEY_parenright, IBUS_KEY_Greek_rho, 0x1FE4, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F50, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F60, IBUS_KEY_asterisk, IBUS_KEY_0, 0x00B0, IBUS_KEY_asterisk, IBUS_KEY_A, 0x00C5, IBUS_KEY_asterisk, IBUS_KEY_U, 0x016E, IBUS_KEY_asterisk, IBUS_KEY_a, 0x00E5, IBUS_KEY_asterisk, IBUS_KEY_u, 0x016F, IBUS_KEY_asterisk, IBUS_KEY_diaeresis, 0x2363, IBUS_KEY_asterisk, IBUS_KEY_emopencircle, 0x235F, IBUS_KEY_plus, IBUS_KEY_plus, 0x0023, IBUS_KEY_plus, IBUS_KEY_minus, 0x00B1, IBUS_KEY_plus, IBUS_KEY_O, 0x01A0, IBUS_KEY_plus, IBUS_KEY_U, 0x01AF, IBUS_KEY_plus, IBUS_KEY_o, 0x01A1, IBUS_KEY_plus, IBUS_KEY_u, 0x01B0, IBUS_KEY_comma, IBUS_KEY_space, 0x00B8, IBUS_KEY_comma, IBUS_KEY_quotedbl, 0x201E, IBUS_KEY_comma, IBUS_KEY_apostrophe, 0x201A, IBUS_KEY_comma, IBUS_KEY_comma, 0x00B8, IBUS_KEY_comma, IBUS_KEY_minus, 0x00AC, IBUS_KEY_comma, IBUS_KEY_A, 0x0104, IBUS_KEY_comma, IBUS_KEY_C, 0x00C7, IBUS_KEY_comma, IBUS_KEY_D, 0x1E10, IBUS_KEY_comma, IBUS_KEY_E, 0x0118, IBUS_KEY_comma, IBUS_KEY_G, 0x0122, IBUS_KEY_comma, IBUS_KEY_H, 0x1E28, IBUS_KEY_comma, IBUS_KEY_I, 0x012E, IBUS_KEY_comma, IBUS_KEY_K, 0x0136, IBUS_KEY_comma, IBUS_KEY_L, 0x013B, IBUS_KEY_comma, IBUS_KEY_N, 0x0145, IBUS_KEY_comma, IBUS_KEY_O, 0x01EA, IBUS_KEY_comma, IBUS_KEY_R, 0x0156, IBUS_KEY_comma, IBUS_KEY_S, 0x015E, IBUS_KEY_comma, IBUS_KEY_T, 0x0162, IBUS_KEY_comma, IBUS_KEY_U, 0x0172, IBUS_KEY_comma, IBUS_KEY_a, 0x0105, IBUS_KEY_comma, IBUS_KEY_c, 0x00E7, IBUS_KEY_comma, IBUS_KEY_d, 0x1E11, IBUS_KEY_comma, IBUS_KEY_e, 0x0119, IBUS_KEY_comma, IBUS_KEY_g, 0x0123, IBUS_KEY_comma, IBUS_KEY_h, 0x1E29, IBUS_KEY_comma, IBUS_KEY_i, 0x012F, IBUS_KEY_comma, IBUS_KEY_k, 0x0137, IBUS_KEY_comma, IBUS_KEY_l, 0x013C, IBUS_KEY_comma, IBUS_KEY_n, 0x0146, IBUS_KEY_comma, IBUS_KEY_o, 0x01EB, IBUS_KEY_comma, IBUS_KEY_r, 0x0157, IBUS_KEY_comma, IBUS_KEY_s, 0x015F, IBUS_KEY_comma, IBUS_KEY_t, 0x0163, IBUS_KEY_comma, IBUS_KEY_u, 0x0173, IBUS_KEY_minus, IBUS_KEY_space, 0x007E, IBUS_KEY_minus, IBUS_KEY_parenleft, 0x007B, IBUS_KEY_minus, IBUS_KEY_parenright, 0x007D, IBUS_KEY_minus, IBUS_KEY_plus, 0x00B1, IBUS_KEY_minus, IBUS_KEY_comma, 0x00AC, IBUS_KEY_minus, IBUS_KEY_slash, 0x233F, IBUS_KEY_minus, IBUS_KEY_colon, 0x00F7, IBUS_KEY_minus, IBUS_KEY_greater, 0x2192, IBUS_KEY_minus, IBUS_KEY_A, 0x0100, IBUS_KEY_minus, IBUS_KEY_D, 0x0110, IBUS_KEY_minus, IBUS_KEY_E, 0x0112, IBUS_KEY_minus, IBUS_KEY_I, 0x012A, IBUS_KEY_minus, IBUS_KEY_L, 0x00A3, IBUS_KEY_minus, IBUS_KEY_O, 0x014C, IBUS_KEY_minus, IBUS_KEY_U, 0x016A, IBUS_KEY_minus, IBUS_KEY_Y, 0x00A5, IBUS_KEY_minus, IBUS_KEY_backslash, 0x2340, IBUS_KEY_minus, IBUS_KEY_asciicircum, 0x00AF, IBUS_KEY_minus, IBUS_KEY_a, 0x0101, IBUS_KEY_minus, IBUS_KEY_d, 0x0111, IBUS_KEY_minus, IBUS_KEY_e, 0x0113, IBUS_KEY_minus, IBUS_KEY_i, 0x012B, IBUS_KEY_minus, IBUS_KEY_l, 0x00A3, IBUS_KEY_minus, IBUS_KEY_o, 0x014D, IBUS_KEY_minus, IBUS_KEY_u, 0x016B, IBUS_KEY_minus, IBUS_KEY_y, 0x00A5, IBUS_KEY_minus, 0x2191, 0x234F, IBUS_KEY_minus, 0x2193, 0x2356, IBUS_KEY_minus, IBUS_KEY_emopencircle, 0x2296, IBUS_KEY_period, IBUS_KEY_minus, 0x00B7, IBUS_KEY_period, IBUS_KEY_period, 0x2026, IBUS_KEY_period, IBUS_KEY_colon, 0x2235, IBUS_KEY_period, IBUS_KEY_less, 0x2039, IBUS_KEY_period, IBUS_KEY_equal, 0x2022, IBUS_KEY_period, IBUS_KEY_greater, 0x203A, IBUS_KEY_period, IBUS_KEY_A, 0x0226, IBUS_KEY_period, IBUS_KEY_B, 0x1E02, IBUS_KEY_period, IBUS_KEY_C, 0x010A, IBUS_KEY_period, IBUS_KEY_D, 0x1E0A, IBUS_KEY_period, IBUS_KEY_E, 0x0116, IBUS_KEY_period, IBUS_KEY_F, 0x1E1E, IBUS_KEY_period, IBUS_KEY_G, 0x0120, IBUS_KEY_period, IBUS_KEY_H, 0x1E22, IBUS_KEY_period, IBUS_KEY_I, 0x0130, IBUS_KEY_period, IBUS_KEY_M, 0x1E40, IBUS_KEY_period, IBUS_KEY_N, 0x1E44, IBUS_KEY_period, IBUS_KEY_O, 0x022E, IBUS_KEY_period, IBUS_KEY_P, 0x1E56, IBUS_KEY_period, IBUS_KEY_R, 0x1E58, IBUS_KEY_period, IBUS_KEY_S, 0x1E60, IBUS_KEY_period, IBUS_KEY_T, 0x1E6A, IBUS_KEY_period, IBUS_KEY_W, 0x1E86, IBUS_KEY_period, IBUS_KEY_X, 0x1E8A, IBUS_KEY_period, IBUS_KEY_Y, 0x1E8E, IBUS_KEY_period, IBUS_KEY_Z, 0x017B, IBUS_KEY_period, IBUS_KEY_asciicircum, 0x00B7, IBUS_KEY_period, IBUS_KEY_a, 0x0227, IBUS_KEY_period, IBUS_KEY_b, 0x1E03, IBUS_KEY_period, IBUS_KEY_c, 0x010B, IBUS_KEY_period, IBUS_KEY_d, 0x1E0B, IBUS_KEY_period, IBUS_KEY_e, 0x0117, IBUS_KEY_period, IBUS_KEY_f, 0x1E1F, IBUS_KEY_period, IBUS_KEY_g, 0x0121, IBUS_KEY_period, IBUS_KEY_h, 0x1E23, IBUS_KEY_period, IBUS_KEY_i, 0x0131, IBUS_KEY_period, IBUS_KEY_m, 0x1E41, IBUS_KEY_period, IBUS_KEY_n, 0x1E45, IBUS_KEY_period, IBUS_KEY_o, 0x022F, IBUS_KEY_period, IBUS_KEY_p, 0x1E57, IBUS_KEY_period, IBUS_KEY_r, 0x1E59, IBUS_KEY_period, IBUS_KEY_s, 0x1E61, IBUS_KEY_period, IBUS_KEY_t, 0x1E6B, IBUS_KEY_period, IBUS_KEY_w, 0x1E87, IBUS_KEY_period, IBUS_KEY_x, 0x1E8B, IBUS_KEY_period, IBUS_KEY_y, 0x1E8F, IBUS_KEY_period, IBUS_KEY_z, 0x017C, IBUS_KEY_period, 0x017F, 0x1E9B, IBUS_KEY_period, IBUS_KEY_Sacute, 0x1E64, IBUS_KEY_period, IBUS_KEY_Scaron, 0x1E66, IBUS_KEY_period, IBUS_KEY_sacute, 0x1E65, IBUS_KEY_period, IBUS_KEY_scaron, 0x1E67, IBUS_KEY_period, 0x1E62, 0x1E68, IBUS_KEY_period, 0x1E63, 0x1E69, IBUS_KEY_period, IBUS_KEY_emopencircle, 0x2299, IBUS_KEY_slash, IBUS_KEY_minus, 0x233F, IBUS_KEY_slash, IBUS_KEY_slash, 0x005C, IBUS_KEY_slash, IBUS_KEY_less, 0x005C, IBUS_KEY_slash, IBUS_KEY_equal, 0x2260, IBUS_KEY_slash, IBUS_KEY_C, 0x20A1, IBUS_KEY_slash, IBUS_KEY_D, 0x0110, IBUS_KEY_slash, IBUS_KEY_G, 0x01E4, IBUS_KEY_slash, IBUS_KEY_H, 0x0126, IBUS_KEY_slash, IBUS_KEY_I, 0x0197, IBUS_KEY_slash, IBUS_KEY_L, 0x0141, IBUS_KEY_slash, IBUS_KEY_O, 0x00D8, IBUS_KEY_slash, IBUS_KEY_T, 0x0166, IBUS_KEY_slash, IBUS_KEY_Z, 0x01B5, IBUS_KEY_slash, IBUS_KEY_asciicircum, 0x007C, IBUS_KEY_slash, IBUS_KEY_b, 0x0180, IBUS_KEY_slash, IBUS_KEY_c, 0x00A2, IBUS_KEY_slash, IBUS_KEY_d, 0x0111, IBUS_KEY_slash, IBUS_KEY_g, 0x01E5, IBUS_KEY_slash, IBUS_KEY_h, 0x0127, IBUS_KEY_slash, IBUS_KEY_i, 0x0268, IBUS_KEY_slash, IBUS_KEY_l, 0x0142, IBUS_KEY_slash, IBUS_KEY_m, 0x20A5, IBUS_KEY_slash, IBUS_KEY_o, 0x00F8, IBUS_KEY_slash, IBUS_KEY_t, 0x0167, IBUS_KEY_slash, IBUS_KEY_u, 0x00B5, IBUS_KEY_slash, IBUS_KEY_v, 0x221A, IBUS_KEY_slash, IBUS_KEY_z, 0x01B6, IBUS_KEY_slash, 0x0294, 0x02A1, IBUS_KEY_slash, 0x04AE, 0x04B0, IBUS_KEY_slash, 0x04AF, 0x04B1, IBUS_KEY_slash, IBUS_KEY_Cyrillic_ghe, 0x0493, IBUS_KEY_slash, IBUS_KEY_Cyrillic_ka, 0x049F, IBUS_KEY_slash, IBUS_KEY_Cyrillic_GHE, 0x0492, IBUS_KEY_slash, IBUS_KEY_Cyrillic_KA, 0x049E, IBUS_KEY_slash, IBUS_KEY_leftarrow, 0x219A, IBUS_KEY_slash, IBUS_KEY_rightarrow, 0x219B, IBUS_KEY_slash, 0x2194, 0x21AE, IBUS_KEY_slash, 0x2395, 0x2341, IBUS_KEY_0, IBUS_KEY_asterisk, 0x00B0, IBUS_KEY_0, IBUS_KEY_3, 0x2189, IBUS_KEY_0, IBUS_KEY_asciitilde, 0x236C, IBUS_KEY_1, IBUS_KEY_2, 0x00BD, IBUS_KEY_1, IBUS_KEY_3, 0x2153, IBUS_KEY_1, IBUS_KEY_4, 0x00BC, IBUS_KEY_1, IBUS_KEY_5, 0x2155, IBUS_KEY_1, IBUS_KEY_6, 0x2159, IBUS_KEY_1, IBUS_KEY_7, 0x2150, IBUS_KEY_1, IBUS_KEY_8, 0x215B, IBUS_KEY_1, IBUS_KEY_9, 0x2151, IBUS_KEY_1, IBUS_KEY_asciicircum, 0x00B9, IBUS_KEY_2, IBUS_KEY_3, 0x2154, IBUS_KEY_2, IBUS_KEY_5, 0x2156, IBUS_KEY_2, IBUS_KEY_asciicircum, 0x00B2, IBUS_KEY_3, IBUS_KEY_4, 0x00BE, IBUS_KEY_3, IBUS_KEY_5, 0x2157, IBUS_KEY_3, IBUS_KEY_8, 0x215C, IBUS_KEY_3, IBUS_KEY_asciicircum, 0x00B3, IBUS_KEY_4, IBUS_KEY_5, 0x2158, IBUS_KEY_5, IBUS_KEY_6, 0x215A, IBUS_KEY_5, IBUS_KEY_8, 0x215D, IBUS_KEY_7, IBUS_KEY_8, 0x215E, IBUS_KEY_8, IBUS_KEY_8, 0x221E, IBUS_KEY_colon, IBUS_KEY_parenleft, 0x2639, IBUS_KEY_colon, IBUS_KEY_parenright, 0x263A, IBUS_KEY_colon, IBUS_KEY_minus, 0x00F7, IBUS_KEY_colon, IBUS_KEY_period, 0x2234, IBUS_KEY_colon, 0x2395, 0x2360, IBUS_KEY_semicolon, IBUS_KEY_A, 0x0104, IBUS_KEY_semicolon, IBUS_KEY_E, 0x0118, IBUS_KEY_semicolon, IBUS_KEY_I, 0x012E, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EA, IBUS_KEY_semicolon, IBUS_KEY_S, 0x0218, IBUS_KEY_semicolon, IBUS_KEY_T, 0x021A, IBUS_KEY_semicolon, IBUS_KEY_U, 0x0172, IBUS_KEY_semicolon, IBUS_KEY_underscore, 0x236E, IBUS_KEY_semicolon, IBUS_KEY_a, 0x0105, IBUS_KEY_semicolon, IBUS_KEY_e, 0x0119, IBUS_KEY_semicolon, IBUS_KEY_i, 0x012F, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01EB, IBUS_KEY_semicolon, IBUS_KEY_s, 0x0219, IBUS_KEY_semicolon, IBUS_KEY_t, 0x021B, IBUS_KEY_semicolon, IBUS_KEY_u, 0x0173, IBUS_KEY_less, IBUS_KEY_space, 0x02C7, IBUS_KEY_less, IBUS_KEY_quotedbl, 0x201C, IBUS_KEY_less, IBUS_KEY_apostrophe, 0x2018, IBUS_KEY_less, IBUS_KEY_minus, 0x2190, IBUS_KEY_less, IBUS_KEY_slash, 0x005C, IBUS_KEY_less, IBUS_KEY_3, 0x2665, IBUS_KEY_less, IBUS_KEY_less, 0x00AB, IBUS_KEY_less, IBUS_KEY_equal, 0x2264, IBUS_KEY_less, IBUS_KEY_greater, 0x22C4, IBUS_KEY_less, IBUS_KEY_C, 0x010C, IBUS_KEY_less, IBUS_KEY_D, 0x010E, IBUS_KEY_less, IBUS_KEY_E, 0x011A, IBUS_KEY_less, IBUS_KEY_L, 0x013D, IBUS_KEY_less, IBUS_KEY_N, 0x0147, IBUS_KEY_less, IBUS_KEY_R, 0x0158, IBUS_KEY_less, IBUS_KEY_S, 0x0160, IBUS_KEY_less, IBUS_KEY_T, 0x0164, IBUS_KEY_less, IBUS_KEY_Z, 0x017D, IBUS_KEY_less, IBUS_KEY_underscore, 0x2264, IBUS_KEY_less, IBUS_KEY_c, 0x010D, IBUS_KEY_less, IBUS_KEY_d, 0x010F, IBUS_KEY_less, IBUS_KEY_e, 0x011B, IBUS_KEY_less, IBUS_KEY_l, 0x013E, IBUS_KEY_less, IBUS_KEY_n, 0x0148, IBUS_KEY_less, IBUS_KEY_r, 0x0159, IBUS_KEY_less, IBUS_KEY_s, 0x0161, IBUS_KEY_less, IBUS_KEY_t, 0x0165, IBUS_KEY_less, IBUS_KEY_z, 0x017E, IBUS_KEY_less, 0x0338, 0x226E, IBUS_KEY_less, 0x2395, 0x2343, IBUS_KEY_equal, IBUS_KEY_slash, 0x2260, IBUS_KEY_equal, IBUS_KEY_greater, 0x21D2, IBUS_KEY_equal, IBUS_KEY_C, 0x20AC, IBUS_KEY_equal, IBUS_KEY_E, 0x20AC, IBUS_KEY_equal, IBUS_KEY_L, 0x20A4, IBUS_KEY_equal, IBUS_KEY_N, 0x20A6, IBUS_KEY_equal, IBUS_KEY_O, 0x0150, IBUS_KEY_equal, IBUS_KEY_U, 0x0170, IBUS_KEY_equal, IBUS_KEY_W, 0x20A9, IBUS_KEY_equal, IBUS_KEY_Y, 0x00A5, IBUS_KEY_equal, IBUS_KEY_underscore, 0x2261, IBUS_KEY_equal, IBUS_KEY_c, 0x20AC, IBUS_KEY_equal, IBUS_KEY_d, 0x20AB, IBUS_KEY_equal, IBUS_KEY_e, 0x20AC, IBUS_KEY_equal, IBUS_KEY_o, 0x0151, IBUS_KEY_equal, IBUS_KEY_u, 0x0171, IBUS_KEY_equal, IBUS_KEY_y, 0x00A5, IBUS_KEY_equal, 0x0338, 0x2260, IBUS_KEY_equal, IBUS_KEY_Cyrillic_u, 0x04F3, IBUS_KEY_equal, IBUS_KEY_Cyrillic_IE, 0x20AC, IBUS_KEY_equal, IBUS_KEY_Cyrillic_ES, 0x20AC, IBUS_KEY_equal, IBUS_KEY_Cyrillic_U, 0x04F2, IBUS_KEY_equal, 0x2395, 0x2338, IBUS_KEY_greater, IBUS_KEY_space, 0x005E, IBUS_KEY_greater, IBUS_KEY_quotedbl, 0x201D, IBUS_KEY_greater, IBUS_KEY_apostrophe, 0x2019, IBUS_KEY_greater, IBUS_KEY_less, 0x22C4, IBUS_KEY_greater, IBUS_KEY_equal, 0x2265, IBUS_KEY_greater, IBUS_KEY_greater, 0x00BB, IBUS_KEY_greater, IBUS_KEY_A, 0x00C2, IBUS_KEY_greater, IBUS_KEY_E, 0x00CA, IBUS_KEY_greater, IBUS_KEY_I, 0x00CE, IBUS_KEY_greater, IBUS_KEY_O, 0x00D4, IBUS_KEY_greater, IBUS_KEY_U, 0x00DB, IBUS_KEY_greater, IBUS_KEY_underscore, 0x2265, IBUS_KEY_greater, IBUS_KEY_a, 0x00E2, IBUS_KEY_greater, IBUS_KEY_e, 0x00EA, IBUS_KEY_greater, IBUS_KEY_i, 0x00EE, IBUS_KEY_greater, IBUS_KEY_o, 0x00F4, IBUS_KEY_greater, IBUS_KEY_u, 0x00FB, IBUS_KEY_greater, IBUS_KEY_diaeresis, 0x2369, IBUS_KEY_greater, 0x0338, 0x226F, IBUS_KEY_greater, 0x2395, 0x2344, IBUS_KEY_question, IBUS_KEY_exclam, 0x2E18, IBUS_KEY_question, IBUS_KEY_question, 0x00BF, IBUS_KEY_question, IBUS_KEY_A, 0x1EA2, IBUS_KEY_question, IBUS_KEY_E, 0x1EBA, IBUS_KEY_question, IBUS_KEY_I, 0x1EC8, IBUS_KEY_question, IBUS_KEY_O, 0x1ECE, IBUS_KEY_question, IBUS_KEY_U, 0x1EE6, IBUS_KEY_question, IBUS_KEY_Y, 0x1EF6, IBUS_KEY_question, IBUS_KEY_a, 0x1EA3, IBUS_KEY_question, IBUS_KEY_e, 0x1EBB, IBUS_KEY_question, IBUS_KEY_i, 0x1EC9, IBUS_KEY_question, IBUS_KEY_o, 0x1ECF, IBUS_KEY_question, IBUS_KEY_u, 0x1EE7, IBUS_KEY_question, IBUS_KEY_y, 0x1EF7, IBUS_KEY_question, IBUS_KEY_Acircumflex, 0x1EA8, IBUS_KEY_question, IBUS_KEY_Ecircumflex, 0x1EC2, IBUS_KEY_question, IBUS_KEY_Ocircumflex, 0x1ED4, IBUS_KEY_question, IBUS_KEY_acircumflex, 0x1EA9, IBUS_KEY_question, IBUS_KEY_ecircumflex, 0x1EC3, IBUS_KEY_question, IBUS_KEY_ocircumflex, 0x1ED5, IBUS_KEY_question, IBUS_KEY_Abreve, 0x1EB2, IBUS_KEY_question, IBUS_KEY_abreve, 0x1EB3, IBUS_KEY_question, 0x2395, 0x2370, IBUS_KEY_A, IBUS_KEY_quotedbl, 0x00C4, IBUS_KEY_A, IBUS_KEY_apostrophe, 0x00C1, IBUS_KEY_A, IBUS_KEY_parenleft, 0x0102, IBUS_KEY_A, IBUS_KEY_asterisk, 0x00C5, IBUS_KEY_A, IBUS_KEY_comma, 0x0104, IBUS_KEY_A, IBUS_KEY_minus, 0x0100, IBUS_KEY_A, IBUS_KEY_semicolon, 0x0104, IBUS_KEY_A, IBUS_KEY_greater, 0x00C2, IBUS_KEY_A, IBUS_KEY_A, 0x00C5, IBUS_KEY_A, IBUS_KEY_E, 0x00C6, IBUS_KEY_A, IBUS_KEY_T, 0x0040, IBUS_KEY_A, IBUS_KEY_asciicircum, 0x00C2, IBUS_KEY_A, IBUS_KEY_underscore, 0x0100, IBUS_KEY_A, IBUS_KEY_grave, 0x00C0, IBUS_KEY_A, IBUS_KEY_asciitilde, 0x00C3, IBUS_KEY_A, IBUS_KEY_diaeresis, 0x00C4, IBUS_KEY_A, IBUS_KEY_acute, 0x00C1, IBUS_KEY_B, IBUS_KEY_period, 0x1E02, IBUS_KEY_C, IBUS_KEY_apostrophe, 0x0106, IBUS_KEY_C, IBUS_KEY_comma, 0x00C7, IBUS_KEY_C, IBUS_KEY_period, 0x010A, IBUS_KEY_C, IBUS_KEY_slash, 0x20A1, IBUS_KEY_C, IBUS_KEY_less, 0x010C, IBUS_KEY_C, IBUS_KEY_equal, 0x20AC, IBUS_KEY_C, IBUS_KEY_E, 0x20A0, IBUS_KEY_C, IBUS_KEY_O, 0x00A9, IBUS_KEY_C, IBUS_KEY_o, 0x00A9, IBUS_KEY_C, IBUS_KEY_r, 0x20A2, IBUS_KEY_C, IBUS_KEY_bar, 0x00A2, IBUS_KEY_D, IBUS_KEY_comma, 0x1E10, IBUS_KEY_D, IBUS_KEY_minus, 0x0110, IBUS_KEY_D, IBUS_KEY_period, 0x1E0A, IBUS_KEY_D, IBUS_KEY_less, 0x010E, IBUS_KEY_D, IBUS_KEY_H, 0x00D0, IBUS_KEY_E, IBUS_KEY_quotedbl, 0x00CB, IBUS_KEY_E, IBUS_KEY_apostrophe, 0x00C9, IBUS_KEY_E, IBUS_KEY_comma, 0x0118, IBUS_KEY_E, IBUS_KEY_minus, 0x0112, IBUS_KEY_E, IBUS_KEY_period, 0x0116, IBUS_KEY_E, IBUS_KEY_semicolon, 0x0118, IBUS_KEY_E, IBUS_KEY_less, 0x011A, IBUS_KEY_E, IBUS_KEY_equal, 0x20AC, IBUS_KEY_E, IBUS_KEY_greater, 0x00CA, IBUS_KEY_E, IBUS_KEY_asciicircum, 0x00CA, IBUS_KEY_E, IBUS_KEY_underscore, 0x0112, IBUS_KEY_E, IBUS_KEY_grave, 0x00C8, IBUS_KEY_E, IBUS_KEY_diaeresis, 0x00CB, IBUS_KEY_E, IBUS_KEY_acute, 0x00C9, IBUS_KEY_F, IBUS_KEY_period, 0x1E1E, IBUS_KEY_F, IBUS_KEY_i, 0xFB03, IBUS_KEY_F, IBUS_KEY_l, 0xFB04, IBUS_KEY_F, IBUS_KEY_r, 0x20A3, IBUS_KEY_G, IBUS_KEY_parenleft, 0x011E, IBUS_KEY_G, IBUS_KEY_comma, 0x0122, IBUS_KEY_G, IBUS_KEY_period, 0x0120, IBUS_KEY_G, IBUS_KEY_U, 0x011E, IBUS_KEY_G, IBUS_KEY_breve, 0x011E, IBUS_KEY_H, IBUS_KEY_comma, 0x1E28, IBUS_KEY_I, IBUS_KEY_quotedbl, 0x00CF, IBUS_KEY_I, IBUS_KEY_apostrophe, 0x00CD, IBUS_KEY_I, IBUS_KEY_comma, 0x012E, IBUS_KEY_I, IBUS_KEY_minus, 0x012A, IBUS_KEY_I, IBUS_KEY_period, 0x0130, IBUS_KEY_I, IBUS_KEY_semicolon, 0x012E, IBUS_KEY_I, IBUS_KEY_greater, 0x00CE, IBUS_KEY_I, IBUS_KEY_J, 0x0132, IBUS_KEY_I, IBUS_KEY_asciicircum, 0x00CE, IBUS_KEY_I, IBUS_KEY_underscore, 0x012A, IBUS_KEY_I, IBUS_KEY_grave, 0x00CC, IBUS_KEY_I, IBUS_KEY_j, 0x0132, IBUS_KEY_I, IBUS_KEY_asciitilde, 0x0128, IBUS_KEY_I, IBUS_KEY_diaeresis, 0x00CF, IBUS_KEY_I, IBUS_KEY_acute, 0x00CD, IBUS_KEY_K, IBUS_KEY_comma, 0x0136, IBUS_KEY_L, IBUS_KEY_apostrophe, 0x0139, IBUS_KEY_L, IBUS_KEY_comma, 0x013B, IBUS_KEY_L, IBUS_KEY_minus, 0x00A3, IBUS_KEY_L, IBUS_KEY_slash, 0x0141, IBUS_KEY_L, IBUS_KEY_less, 0x013D, IBUS_KEY_L, IBUS_KEY_equal, 0x20A4, IBUS_KEY_L, IBUS_KEY_V, 0x007C, IBUS_KEY_M, IBUS_KEY_period, 0x1E40, IBUS_KEY_N, IBUS_KEY_apostrophe, 0x0143, IBUS_KEY_N, IBUS_KEY_comma, 0x0145, IBUS_KEY_N, IBUS_KEY_less, 0x0147, IBUS_KEY_N, IBUS_KEY_equal, 0x20A6, IBUS_KEY_N, IBUS_KEY_G, 0x014A, IBUS_KEY_N, IBUS_KEY_O, 0x2116, IBUS_KEY_N, IBUS_KEY_o, 0x2116, IBUS_KEY_N, IBUS_KEY_asciitilde, 0x00D1, IBUS_KEY_O, IBUS_KEY_quotedbl, 0x00D6, IBUS_KEY_O, IBUS_KEY_apostrophe, 0x00D3, IBUS_KEY_O, IBUS_KEY_comma, 0x01EA, IBUS_KEY_O, IBUS_KEY_minus, 0x014C, IBUS_KEY_O, IBUS_KEY_slash, 0x00D8, IBUS_KEY_O, IBUS_KEY_semicolon, 0x01EA, IBUS_KEY_O, IBUS_KEY_greater, 0x00D4, IBUS_KEY_O, IBUS_KEY_A, 0x24B6, IBUS_KEY_O, IBUS_KEY_C, 0x00A9, IBUS_KEY_O, IBUS_KEY_E, 0x0152, IBUS_KEY_O, IBUS_KEY_R, 0x00AE, IBUS_KEY_O, IBUS_KEY_S, 0x00A7, IBUS_KEY_O, IBUS_KEY_X, 0x00A4, IBUS_KEY_O, IBUS_KEY_asciicircum, 0x00D4, IBUS_KEY_O, IBUS_KEY_underscore, 0x014C, IBUS_KEY_O, IBUS_KEY_grave, 0x00D2, IBUS_KEY_O, IBUS_KEY_c, 0x00A9, IBUS_KEY_O, IBUS_KEY_r, 0x00AE, IBUS_KEY_O, IBUS_KEY_x, 0x00A4, IBUS_KEY_O, IBUS_KEY_asciitilde, 0x00D5, IBUS_KEY_O, IBUS_KEY_diaeresis, 0x00D6, IBUS_KEY_O, IBUS_KEY_acute, 0x00D3, IBUS_KEY_P, IBUS_KEY_exclam, 0x00B6, IBUS_KEY_P, IBUS_KEY_period, 0x1E56, IBUS_KEY_P, IBUS_KEY_P, 0x00B6, IBUS_KEY_P, IBUS_KEY_t, 0x20A7, IBUS_KEY_R, IBUS_KEY_apostrophe, 0x0154, IBUS_KEY_R, IBUS_KEY_comma, 0x0156, IBUS_KEY_R, IBUS_KEY_less, 0x0158, IBUS_KEY_R, IBUS_KEY_O, 0x00AE, IBUS_KEY_R, IBUS_KEY_s, 0x20A8, IBUS_KEY_S, IBUS_KEY_exclam, 0x00A7, IBUS_KEY_S, IBUS_KEY_apostrophe, 0x015A, IBUS_KEY_S, IBUS_KEY_comma, 0x015E, IBUS_KEY_S, IBUS_KEY_period, 0x1E60, IBUS_KEY_S, IBUS_KEY_semicolon, 0x0218, IBUS_KEY_S, IBUS_KEY_less, 0x0160, IBUS_KEY_S, IBUS_KEY_M, 0x2120, IBUS_KEY_S, IBUS_KEY_O, 0x00A7, IBUS_KEY_S, IBUS_KEY_S, 0x1E9E, IBUS_KEY_S, IBUS_KEY_m, 0x2120, IBUS_KEY_T, IBUS_KEY_comma, 0x0162, IBUS_KEY_T, IBUS_KEY_minus, 0x0166, IBUS_KEY_T, IBUS_KEY_period, 0x1E6A, IBUS_KEY_T, IBUS_KEY_slash, 0x0166, IBUS_KEY_T, IBUS_KEY_semicolon, 0x021A, IBUS_KEY_T, IBUS_KEY_less, 0x0164, IBUS_KEY_T, IBUS_KEY_H, 0x00DE, IBUS_KEY_T, IBUS_KEY_M, 0x2122, IBUS_KEY_T, IBUS_KEY_m, 0x2122, IBUS_KEY_U, IBUS_KEY_quotedbl, 0x00DC, IBUS_KEY_U, IBUS_KEY_apostrophe, 0x00DA, IBUS_KEY_U, IBUS_KEY_asterisk, 0x016E, IBUS_KEY_U, IBUS_KEY_comma, 0x0172, IBUS_KEY_U, IBUS_KEY_minus, 0x016A, IBUS_KEY_U, IBUS_KEY_semicolon, 0x0172, IBUS_KEY_U, IBUS_KEY_greater, 0x00DB, IBUS_KEY_U, IBUS_KEY_A, 0x0102, IBUS_KEY_U, IBUS_KEY_E, 0x0114, IBUS_KEY_U, IBUS_KEY_G, 0x011E, IBUS_KEY_U, IBUS_KEY_I, 0x012C, IBUS_KEY_U, IBUS_KEY_O, 0x014E, IBUS_KEY_U, IBUS_KEY_U, 0x016C, IBUS_KEY_U, IBUS_KEY_asciicircum, 0x00DB, IBUS_KEY_U, IBUS_KEY_underscore, 0x016A, IBUS_KEY_U, IBUS_KEY_grave, 0x00D9, IBUS_KEY_U, IBUS_KEY_a, 0x0103, IBUS_KEY_U, IBUS_KEY_e, 0x0115, IBUS_KEY_U, IBUS_KEY_g, 0x011F, IBUS_KEY_U, IBUS_KEY_i, 0x012D, IBUS_KEY_U, IBUS_KEY_o, 0x014F, IBUS_KEY_U, IBUS_KEY_u, 0x016D, IBUS_KEY_U, IBUS_KEY_asciitilde, 0x0168, IBUS_KEY_U, IBUS_KEY_diaeresis, 0x00DC, IBUS_KEY_U, IBUS_KEY_acute, 0x00DA, IBUS_KEY_U, 0x0228, 0x1E1C, IBUS_KEY_U, 0x0229, 0x1E1D, IBUS_KEY_U, IBUS_KEY_Cyrillic_a, 0x04D1, IBUS_KEY_U, IBUS_KEY_Cyrillic_ie, 0x04D7, IBUS_KEY_U, IBUS_KEY_Cyrillic_i, 0x0439, IBUS_KEY_U, IBUS_KEY_Cyrillic_u, 0x045E, IBUS_KEY_U, IBUS_KEY_Cyrillic_zhe, 0x04C2, IBUS_KEY_U, IBUS_KEY_Cyrillic_A, 0x04D0, IBUS_KEY_U, IBUS_KEY_Cyrillic_IE, 0x04D6, IBUS_KEY_U, IBUS_KEY_Cyrillic_I, 0x0419, IBUS_KEY_U, IBUS_KEY_Cyrillic_U, 0x040E, IBUS_KEY_U, IBUS_KEY_Cyrillic_ZHE, 0x04C1, IBUS_KEY_U, IBUS_KEY_Greek_ALPHA, 0x1FB8, IBUS_KEY_U, IBUS_KEY_Greek_IOTA, 0x1FD8, IBUS_KEY_U, IBUS_KEY_Greek_UPSILON, 0x1FE8, IBUS_KEY_U, IBUS_KEY_Greek_alpha, 0x1FB0, IBUS_KEY_U, IBUS_KEY_Greek_iota, 0x1FD0, IBUS_KEY_U, IBUS_KEY_Greek_upsilon, 0x1FE0, IBUS_KEY_U, 0x1EA0, 0x1EB6, IBUS_KEY_U, 0x1EA1, 0x1EB7, IBUS_KEY_V, IBUS_KEY_L, 0x007C, IBUS_KEY_W, IBUS_KEY_equal, 0x20A9, IBUS_KEY_W, IBUS_KEY_asciicircum, 0x0174, IBUS_KEY_X, IBUS_KEY_O, 0x00A4, IBUS_KEY_X, IBUS_KEY_o, 0x00A4, IBUS_KEY_Y, IBUS_KEY_quotedbl, 0x0178, IBUS_KEY_Y, IBUS_KEY_apostrophe, 0x00DD, IBUS_KEY_Y, IBUS_KEY_minus, 0x00A5, IBUS_KEY_Y, IBUS_KEY_equal, 0x00A5, IBUS_KEY_Y, IBUS_KEY_asciicircum, 0x0176, IBUS_KEY_Y, IBUS_KEY_diaeresis, 0x0178, IBUS_KEY_Y, IBUS_KEY_acute, 0x00DD, IBUS_KEY_Z, IBUS_KEY_apostrophe, 0x0179, IBUS_KEY_Z, IBUS_KEY_period, 0x017B, IBUS_KEY_Z, IBUS_KEY_less, 0x017D, IBUS_KEY_bracketleft, IBUS_KEY_bracketright, 0x2337, IBUS_KEY_backslash, IBUS_KEY_minus, 0x2340, IBUS_KEY_backslash, 0x2395, 0x2342, IBUS_KEY_backslash, IBUS_KEY_emopencircle, 0x2349, IBUS_KEY_bracketright, IBUS_KEY_bracketleft, 0x2337, IBUS_KEY_asciicircum, IBUS_KEY_space, 0x005E, IBUS_KEY_asciicircum, IBUS_KEY_parenleft, 0x207D, IBUS_KEY_asciicircum, IBUS_KEY_parenright, 0x207E, IBUS_KEY_asciicircum, IBUS_KEY_plus, 0x207A, IBUS_KEY_asciicircum, IBUS_KEY_minus, 0x00AF, IBUS_KEY_asciicircum, IBUS_KEY_period, 0x00B7, IBUS_KEY_asciicircum, IBUS_KEY_slash, 0x007C, IBUS_KEY_asciicircum, IBUS_KEY_0, 0x2070, IBUS_KEY_asciicircum, IBUS_KEY_1, 0x00B9, IBUS_KEY_asciicircum, IBUS_KEY_2, 0x00B2, IBUS_KEY_asciicircum, IBUS_KEY_3, 0x00B3, IBUS_KEY_asciicircum, IBUS_KEY_4, 0x2074, IBUS_KEY_asciicircum, IBUS_KEY_5, 0x2075, IBUS_KEY_asciicircum, IBUS_KEY_6, 0x2076, IBUS_KEY_asciicircum, IBUS_KEY_7, 0x2077, IBUS_KEY_asciicircum, IBUS_KEY_8, 0x2078, IBUS_KEY_asciicircum, IBUS_KEY_9, 0x2079, IBUS_KEY_asciicircum, IBUS_KEY_equal, 0x207C, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x00C2, IBUS_KEY_asciicircum, IBUS_KEY_C, 0x0108, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x00CA, IBUS_KEY_asciicircum, IBUS_KEY_G, 0x011C, IBUS_KEY_asciicircum, IBUS_KEY_H, 0x0124, IBUS_KEY_asciicircum, IBUS_KEY_I, 0x00CE, IBUS_KEY_asciicircum, IBUS_KEY_J, 0x0134, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x00D4, IBUS_KEY_asciicircum, IBUS_KEY_S, 0x015C, IBUS_KEY_asciicircum, IBUS_KEY_U, 0x00DB, IBUS_KEY_asciicircum, IBUS_KEY_W, 0x0174, IBUS_KEY_asciicircum, IBUS_KEY_Y, 0x0176, IBUS_KEY_asciicircum, IBUS_KEY_Z, 0x1E90, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x00E2, IBUS_KEY_asciicircum, IBUS_KEY_c, 0x0109, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x00EA, IBUS_KEY_asciicircum, IBUS_KEY_g, 0x011D, IBUS_KEY_asciicircum, IBUS_KEY_h, 0x0125, IBUS_KEY_asciicircum, IBUS_KEY_i, 0x00EE, IBUS_KEY_asciicircum, IBUS_KEY_j, 0x0135, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x00F4, IBUS_KEY_asciicircum, IBUS_KEY_s, 0x015D, IBUS_KEY_asciicircum, IBUS_KEY_u, 0x00FB, IBUS_KEY_asciicircum, IBUS_KEY_w, 0x0175, IBUS_KEY_asciicircum, IBUS_KEY_y, 0x0177, IBUS_KEY_asciicircum, IBUS_KEY_z, 0x1E91, IBUS_KEY_asciicircum, 0x1EA0, 0x1EAC, IBUS_KEY_asciicircum, 0x1EA1, 0x1EAD, IBUS_KEY_asciicircum, 0x1EB8, 0x1EC6, IBUS_KEY_asciicircum, 0x1EB9, 0x1EC7, IBUS_KEY_asciicircum, 0x1ECC, 0x1ED8, IBUS_KEY_asciicircum, 0x1ECD, 0x1ED9, IBUS_KEY_asciicircum, 0x2212, 0x207B, IBUS_KEY_asciicircum, 0x4E00, 0x3192, IBUS_KEY_asciicircum, 0x4E01, 0x319C, IBUS_KEY_asciicircum, 0x4E09, 0x3194, IBUS_KEY_asciicircum, 0x4E0A, 0x3196, IBUS_KEY_asciicircum, 0x4E0B, 0x3198, IBUS_KEY_asciicircum, 0x4E19, 0x319B, IBUS_KEY_asciicircum, 0x4E2D, 0x3197, IBUS_KEY_asciicircum, 0x4E59, 0x319A, IBUS_KEY_asciicircum, 0x4E8C, 0x3193, IBUS_KEY_asciicircum, 0x4EBA, 0x319F, IBUS_KEY_asciicircum, 0x56DB, 0x3195, IBUS_KEY_asciicircum, 0x5730, 0x319E, IBUS_KEY_asciicircum, 0x5929, 0x319D, IBUS_KEY_asciicircum, 0x7532, 0x3199, IBUS_KEY_asciicircum, IBUS_KEY_KP_Space, 0x00B2, IBUS_KEY_asciicircum, IBUS_KEY_KP_Add, 0x207A, IBUS_KEY_asciicircum, IBUS_KEY_KP_0, 0x2070, IBUS_KEY_asciicircum, IBUS_KEY_KP_1, 0x00B9, IBUS_KEY_asciicircum, IBUS_KEY_KP_2, 0x00B2, IBUS_KEY_asciicircum, IBUS_KEY_KP_3, 0x00B3, IBUS_KEY_asciicircum, IBUS_KEY_KP_4, 0x2074, IBUS_KEY_asciicircum, IBUS_KEY_KP_5, 0x2075, IBUS_KEY_asciicircum, IBUS_KEY_KP_6, 0x2076, IBUS_KEY_asciicircum, IBUS_KEY_KP_7, 0x2077, IBUS_KEY_asciicircum, IBUS_KEY_KP_8, 0x2078, IBUS_KEY_asciicircum, IBUS_KEY_KP_9, 0x2079, IBUS_KEY_asciicircum, IBUS_KEY_KP_Equal, 0x207C, IBUS_KEY_underscore, IBUS_KEY_apostrophe, 0x2358, IBUS_KEY_underscore, IBUS_KEY_parenleft, 0x208D, IBUS_KEY_underscore, IBUS_KEY_parenright, 0x208E, IBUS_KEY_underscore, IBUS_KEY_plus, 0x208A, IBUS_KEY_underscore, IBUS_KEY_0, 0x2080, IBUS_KEY_underscore, IBUS_KEY_1, 0x2081, IBUS_KEY_underscore, IBUS_KEY_2, 0x2082, IBUS_KEY_underscore, IBUS_KEY_3, 0x2083, IBUS_KEY_underscore, IBUS_KEY_4, 0x2084, IBUS_KEY_underscore, IBUS_KEY_5, 0x2085, IBUS_KEY_underscore, IBUS_KEY_6, 0x2086, IBUS_KEY_underscore, IBUS_KEY_7, 0x2087, IBUS_KEY_underscore, IBUS_KEY_8, 0x2088, IBUS_KEY_underscore, IBUS_KEY_9, 0x2089, IBUS_KEY_underscore, IBUS_KEY_less, 0x2264, IBUS_KEY_underscore, IBUS_KEY_equal, 0x208C, IBUS_KEY_underscore, IBUS_KEY_greater, 0x2265, IBUS_KEY_underscore, IBUS_KEY_A, 0x0100, IBUS_KEY_underscore, IBUS_KEY_E, 0x0112, IBUS_KEY_underscore, IBUS_KEY_G, 0x1E20, IBUS_KEY_underscore, IBUS_KEY_I, 0x012A, IBUS_KEY_underscore, IBUS_KEY_O, 0x014C, IBUS_KEY_underscore, IBUS_KEY_U, 0x016A, IBUS_KEY_underscore, IBUS_KEY_Y, 0x0232, IBUS_KEY_underscore, IBUS_KEY_asciicircum, 0x00AF, IBUS_KEY_underscore, IBUS_KEY_underscore, 0x00AF, IBUS_KEY_underscore, IBUS_KEY_a, 0x0101, IBUS_KEY_underscore, IBUS_KEY_e, 0x0113, IBUS_KEY_underscore, IBUS_KEY_g, 0x1E21, IBUS_KEY_underscore, IBUS_KEY_i, 0x012B, IBUS_KEY_underscore, IBUS_KEY_o, 0x014D, IBUS_KEY_underscore, IBUS_KEY_u, 0x016B, IBUS_KEY_underscore, IBUS_KEY_y, 0x0233, IBUS_KEY_underscore, IBUS_KEY_Adiaeresis, 0x01DE, IBUS_KEY_underscore, IBUS_KEY_AE, 0x01E2, IBUS_KEY_underscore, IBUS_KEY_Otilde, 0x022C, IBUS_KEY_underscore, IBUS_KEY_Odiaeresis, 0x022A, IBUS_KEY_underscore, IBUS_KEY_Udiaeresis, 0x01D5, IBUS_KEY_underscore, IBUS_KEY_adiaeresis, 0x01DF, IBUS_KEY_underscore, IBUS_KEY_ae, 0x01E3, IBUS_KEY_underscore, IBUS_KEY_otilde, 0x022D, IBUS_KEY_underscore, IBUS_KEY_odiaeresis, 0x022B, IBUS_KEY_underscore, IBUS_KEY_udiaeresis, 0x01D6, IBUS_KEY_underscore, 0x01EA, 0x01EC, IBUS_KEY_underscore, 0x01EB, 0x01ED, IBUS_KEY_underscore, 0x0226, 0x01E0, IBUS_KEY_underscore, 0x0227, 0x01E1, IBUS_KEY_underscore, 0x022E, 0x0230, IBUS_KEY_underscore, 0x022F, 0x0231, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_i, 0x04E3, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_u, 0x04EF, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_I, 0x04E2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_U, 0x04EE, IBUS_KEY_underscore, IBUS_KEY_Greek_ALPHA, 0x1FB9, IBUS_KEY_underscore, IBUS_KEY_Greek_IOTA, 0x1FD9, IBUS_KEY_underscore, IBUS_KEY_Greek_UPSILON, 0x1FE9, IBUS_KEY_underscore, IBUS_KEY_Greek_alpha, 0x1FB1, IBUS_KEY_underscore, IBUS_KEY_Greek_iota, 0x1FD1, IBUS_KEY_underscore, IBUS_KEY_Greek_upsilon, 0x1FE1, IBUS_KEY_underscore, 0x1E36, 0x1E38, IBUS_KEY_underscore, 0x1E37, 0x1E39, IBUS_KEY_underscore, 0x1E5A, 0x1E5C, IBUS_KEY_underscore, 0x1E5B, 0x1E5D, IBUS_KEY_underscore, 0x2206, 0x2359, IBUS_KEY_underscore, 0x220A, 0x2377, IBUS_KEY_underscore, 0x2212, 0x208B, IBUS_KEY_underscore, 0x2218, 0x235B, IBUS_KEY_underscore, 0x2260, 0x2262, IBUS_KEY_underscore, 0x2282, 0x2286, IBUS_KEY_underscore, 0x2283, 0x2287, IBUS_KEY_underscore, IBUS_KEY_downtack, 0x234A, IBUS_KEY_underscore, 0x22C4, 0x235A, IBUS_KEY_underscore, 0x2373, 0x2378, IBUS_KEY_underscore, 0x2375, 0x2379, IBUS_KEY_underscore, 0x237A, 0x2376, IBUS_KEY_underscore, IBUS_KEY_emopencircle, 0x235C, IBUS_KEY_underscore, IBUS_KEY_KP_Space, 0x2082, IBUS_KEY_underscore, IBUS_KEY_KP_Add, 0x208A, IBUS_KEY_underscore, IBUS_KEY_KP_0, 0x2080, IBUS_KEY_underscore, IBUS_KEY_KP_1, 0x2081, IBUS_KEY_underscore, IBUS_KEY_KP_2, 0x2082, IBUS_KEY_underscore, IBUS_KEY_KP_3, 0x2083, IBUS_KEY_underscore, IBUS_KEY_KP_4, 0x2084, IBUS_KEY_underscore, IBUS_KEY_KP_5, 0x2085, IBUS_KEY_underscore, IBUS_KEY_KP_6, 0x2086, IBUS_KEY_underscore, IBUS_KEY_KP_7, 0x2087, IBUS_KEY_underscore, IBUS_KEY_KP_8, 0x2088, IBUS_KEY_underscore, IBUS_KEY_KP_9, 0x2089, IBUS_KEY_underscore, IBUS_KEY_KP_Equal, 0x208C, IBUS_KEY_grave, IBUS_KEY_space, 0x0060, IBUS_KEY_grave, IBUS_KEY_A, 0x00C0, IBUS_KEY_grave, IBUS_KEY_E, 0x00C8, IBUS_KEY_grave, IBUS_KEY_I, 0x00CC, IBUS_KEY_grave, IBUS_KEY_N, 0x01F8, IBUS_KEY_grave, IBUS_KEY_O, 0x00D2, IBUS_KEY_grave, IBUS_KEY_U, 0x00D9, IBUS_KEY_grave, IBUS_KEY_W, 0x1E80, IBUS_KEY_grave, IBUS_KEY_Y, 0x1EF2, IBUS_KEY_grave, IBUS_KEY_a, 0x00E0, IBUS_KEY_grave, IBUS_KEY_e, 0x00E8, IBUS_KEY_grave, IBUS_KEY_i, 0x00EC, IBUS_KEY_grave, IBUS_KEY_n, 0x01F9, IBUS_KEY_grave, IBUS_KEY_o, 0x00F2, IBUS_KEY_grave, IBUS_KEY_u, 0x00F9, IBUS_KEY_grave, IBUS_KEY_w, 0x1E81, IBUS_KEY_grave, IBUS_KEY_y, 0x1EF3, IBUS_KEY_grave, IBUS_KEY_Acircumflex, 0x1EA6, IBUS_KEY_grave, IBUS_KEY_Ecircumflex, 0x1EC0, IBUS_KEY_grave, IBUS_KEY_Ocircumflex, 0x1ED2, IBUS_KEY_grave, IBUS_KEY_Udiaeresis, 0x01DB, IBUS_KEY_grave, IBUS_KEY_acircumflex, 0x1EA7, IBUS_KEY_grave, IBUS_KEY_ecircumflex, 0x1EC1, IBUS_KEY_grave, IBUS_KEY_ocircumflex, 0x1ED3, IBUS_KEY_grave, IBUS_KEY_udiaeresis, 0x01DC, IBUS_KEY_grave, IBUS_KEY_Abreve, 0x1EB0, IBUS_KEY_grave, IBUS_KEY_abreve, 0x1EB1, IBUS_KEY_grave, IBUS_KEY_Emacron, 0x1E14, IBUS_KEY_grave, IBUS_KEY_emacron, 0x1E15, IBUS_KEY_grave, IBUS_KEY_Omacron, 0x1E50, IBUS_KEY_grave, IBUS_KEY_omacron, 0x1E51, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie, 0x0450, IBUS_KEY_grave, IBUS_KEY_Cyrillic_i, 0x045D, IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE, 0x0400, IBUS_KEY_grave, IBUS_KEY_Cyrillic_I, 0x040D, IBUS_KEY_grave, IBUS_KEY_Greek_iotadieresis, 0x1FD2, IBUS_KEY_grave, IBUS_KEY_Greek_upsilondieresis, 0x1FE2, IBUS_KEY_grave, IBUS_KEY_Greek_ALPHA, 0x1FBA, IBUS_KEY_grave, IBUS_KEY_Greek_EPSILON, 0x1FC8, IBUS_KEY_grave, IBUS_KEY_Greek_ETA, 0x1FCA, IBUS_KEY_grave, IBUS_KEY_Greek_IOTA, 0x1FDA, IBUS_KEY_grave, IBUS_KEY_Greek_OMICRON, 0x1FF8, IBUS_KEY_grave, IBUS_KEY_Greek_UPSILON, 0x1FEA, IBUS_KEY_grave, IBUS_KEY_Greek_OMEGA, 0x1FFA, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1F70, IBUS_KEY_grave, IBUS_KEY_Greek_epsilon, 0x1F72, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1F74, IBUS_KEY_grave, IBUS_KEY_Greek_iota, 0x1F76, IBUS_KEY_grave, IBUS_KEY_Greek_omicron, 0x1F78, IBUS_KEY_grave, IBUS_KEY_Greek_upsilon, 0x1F7A, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1F7C, IBUS_KEY_grave, 0x1F00, 0x1F02, IBUS_KEY_grave, 0x1F01, 0x1F03, IBUS_KEY_grave, 0x1F08, 0x1F0A, IBUS_KEY_grave, 0x1F09, 0x1F0B, IBUS_KEY_grave, 0x1F10, 0x1F12, IBUS_KEY_grave, 0x1F11, 0x1F13, IBUS_KEY_grave, 0x1F18, 0x1F1A, IBUS_KEY_grave, 0x1F19, 0x1F1B, IBUS_KEY_grave, 0x1F20, 0x1F22, IBUS_KEY_grave, 0x1F21, 0x1F23, IBUS_KEY_grave, 0x1F28, 0x1F2A, IBUS_KEY_grave, 0x1F29, 0x1F2B, IBUS_KEY_grave, 0x1F30, 0x1F32, IBUS_KEY_grave, 0x1F31, 0x1F33, IBUS_KEY_grave, 0x1F38, 0x1F3A, IBUS_KEY_grave, 0x1F39, 0x1F3B, IBUS_KEY_grave, 0x1F40, 0x1F42, IBUS_KEY_grave, 0x1F41, 0x1F43, IBUS_KEY_grave, 0x1F48, 0x1F4A, IBUS_KEY_grave, 0x1F49, 0x1F4B, IBUS_KEY_grave, 0x1F50, 0x1F52, IBUS_KEY_grave, 0x1F51, 0x1F53, IBUS_KEY_grave, 0x1F59, 0x1F5B, IBUS_KEY_grave, 0x1F60, 0x1F62, IBUS_KEY_grave, 0x1F61, 0x1F63, IBUS_KEY_grave, 0x1F68, 0x1F6A, IBUS_KEY_grave, 0x1F69, 0x1F6B, IBUS_KEY_a, IBUS_KEY_quotedbl, 0x00E4, IBUS_KEY_a, IBUS_KEY_apostrophe, 0x00E1, IBUS_KEY_a, IBUS_KEY_parenleft, 0x0103, IBUS_KEY_a, IBUS_KEY_asterisk, 0x00E5, IBUS_KEY_a, IBUS_KEY_comma, 0x0105, IBUS_KEY_a, IBUS_KEY_minus, 0x0101, IBUS_KEY_a, IBUS_KEY_semicolon, 0x0105, IBUS_KEY_a, IBUS_KEY_greater, 0x00E2, IBUS_KEY_a, IBUS_KEY_asciicircum, 0x00E2, IBUS_KEY_a, IBUS_KEY_underscore, 0x0101, IBUS_KEY_a, IBUS_KEY_grave, 0x00E0, IBUS_KEY_a, IBUS_KEY_a, 0x00E5, IBUS_KEY_a, IBUS_KEY_e, 0x00E6, IBUS_KEY_a, IBUS_KEY_asciitilde, 0x00E3, IBUS_KEY_a, IBUS_KEY_diaeresis, 0x00E4, IBUS_KEY_a, IBUS_KEY_acute, 0x00E1, IBUS_KEY_b, IBUS_KEY_period, 0x1E03, IBUS_KEY_b, IBUS_KEY_A, 0x0102, IBUS_KEY_b, IBUS_KEY_E, 0x0114, IBUS_KEY_b, IBUS_KEY_G, 0x011E, IBUS_KEY_b, IBUS_KEY_I, 0x012C, IBUS_KEY_b, IBUS_KEY_O, 0x014E, IBUS_KEY_b, IBUS_KEY_U, 0x016C, IBUS_KEY_b, IBUS_KEY_a, 0x0103, IBUS_KEY_b, IBUS_KEY_e, 0x0115, IBUS_KEY_b, IBUS_KEY_g, 0x011F, IBUS_KEY_b, IBUS_KEY_i, 0x012D, IBUS_KEY_b, IBUS_KEY_o, 0x014F, IBUS_KEY_b, IBUS_KEY_u, 0x016D, IBUS_KEY_b, 0x0228, 0x1E1C, IBUS_KEY_b, 0x0229, 0x1E1D, IBUS_KEY_b, IBUS_KEY_Cyrillic_a, 0x04D1, IBUS_KEY_b, IBUS_KEY_Cyrillic_ie, 0x04D7, IBUS_KEY_b, IBUS_KEY_Cyrillic_i, 0x0439, IBUS_KEY_b, IBUS_KEY_Cyrillic_u, 0x045E, IBUS_KEY_b, IBUS_KEY_Cyrillic_zhe, 0x04C2, IBUS_KEY_b, IBUS_KEY_Cyrillic_A, 0x04D0, IBUS_KEY_b, IBUS_KEY_Cyrillic_IE, 0x04D6, IBUS_KEY_b, IBUS_KEY_Cyrillic_I, 0x0419, IBUS_KEY_b, IBUS_KEY_Cyrillic_U, 0x040E, IBUS_KEY_b, IBUS_KEY_Cyrillic_ZHE, 0x04C1, IBUS_KEY_b, IBUS_KEY_Greek_ALPHA, 0x1FB8, IBUS_KEY_b, IBUS_KEY_Greek_IOTA, 0x1FD8, IBUS_KEY_b, IBUS_KEY_Greek_UPSILON, 0x1FE8, IBUS_KEY_b, IBUS_KEY_Greek_alpha, 0x1FB0, IBUS_KEY_b, IBUS_KEY_Greek_iota, 0x1FD0, IBUS_KEY_b, IBUS_KEY_Greek_upsilon, 0x1FE0, IBUS_KEY_b, 0x1EA0, 0x1EB6, IBUS_KEY_b, 0x1EA1, 0x1EB7, IBUS_KEY_c, IBUS_KEY_apostrophe, 0x0107, IBUS_KEY_c, IBUS_KEY_comma, 0x00E7, IBUS_KEY_c, IBUS_KEY_period, 0x010B, IBUS_KEY_c, IBUS_KEY_slash, 0x00A2, IBUS_KEY_c, IBUS_KEY_less, 0x010D, IBUS_KEY_c, IBUS_KEY_equal, 0x20AC, IBUS_KEY_c, IBUS_KEY_A, 0x01CD, IBUS_KEY_c, IBUS_KEY_C, 0x010C, IBUS_KEY_c, IBUS_KEY_D, 0x010E, IBUS_KEY_c, IBUS_KEY_E, 0x011A, IBUS_KEY_c, IBUS_KEY_G, 0x01E6, IBUS_KEY_c, IBUS_KEY_H, 0x021E, IBUS_KEY_c, IBUS_KEY_I, 0x01CF, IBUS_KEY_c, IBUS_KEY_K, 0x01E8, IBUS_KEY_c, IBUS_KEY_L, 0x013D, IBUS_KEY_c, IBUS_KEY_N, 0x0147, IBUS_KEY_c, IBUS_KEY_O, 0x01D1, IBUS_KEY_c, IBUS_KEY_R, 0x0158, IBUS_KEY_c, IBUS_KEY_S, 0x0160, IBUS_KEY_c, IBUS_KEY_T, 0x0164, IBUS_KEY_c, IBUS_KEY_U, 0x01D3, IBUS_KEY_c, IBUS_KEY_Z, 0x017D, IBUS_KEY_c, IBUS_KEY_a, 0x01CE, IBUS_KEY_c, IBUS_KEY_c, 0x010D, IBUS_KEY_c, IBUS_KEY_d, 0x010F, IBUS_KEY_c, IBUS_KEY_e, 0x011B, IBUS_KEY_c, IBUS_KEY_g, 0x01E7, IBUS_KEY_c, IBUS_KEY_h, 0x021F, IBUS_KEY_c, IBUS_KEY_i, 0x01D0, IBUS_KEY_c, IBUS_KEY_j, 0x01F0, IBUS_KEY_c, IBUS_KEY_k, 0x01E9, IBUS_KEY_c, IBUS_KEY_l, 0x013E, IBUS_KEY_c, IBUS_KEY_n, 0x0148, IBUS_KEY_c, IBUS_KEY_o, 0x01D2, IBUS_KEY_c, IBUS_KEY_r, 0x0159, IBUS_KEY_c, IBUS_KEY_s, 0x0161, IBUS_KEY_c, IBUS_KEY_t, 0x0165, IBUS_KEY_c, IBUS_KEY_u, 0x01D4, IBUS_KEY_c, IBUS_KEY_z, 0x017E, IBUS_KEY_c, IBUS_KEY_bar, 0x00A2, IBUS_KEY_c, IBUS_KEY_Udiaeresis, 0x01D9, IBUS_KEY_c, IBUS_KEY_udiaeresis, 0x01DA, IBUS_KEY_d, IBUS_KEY_comma, 0x1E11, IBUS_KEY_d, IBUS_KEY_minus, 0x0111, IBUS_KEY_d, IBUS_KEY_period, 0x1E0B, IBUS_KEY_d, IBUS_KEY_less, 0x010F, IBUS_KEY_d, IBUS_KEY_equal, 0x20AB, IBUS_KEY_d, IBUS_KEY_h, 0x00F0, IBUS_KEY_d, IBUS_KEY_i, 0x2300, IBUS_KEY_e, IBUS_KEY_quotedbl, 0x00EB, IBUS_KEY_e, IBUS_KEY_apostrophe, 0x00E9, IBUS_KEY_e, IBUS_KEY_comma, 0x0119, IBUS_KEY_e, IBUS_KEY_minus, 0x0113, IBUS_KEY_e, IBUS_KEY_period, 0x0117, IBUS_KEY_e, IBUS_KEY_semicolon, 0x0119, IBUS_KEY_e, IBUS_KEY_less, 0x011B, IBUS_KEY_e, IBUS_KEY_equal, 0x20AC, IBUS_KEY_e, IBUS_KEY_greater, 0x00EA, IBUS_KEY_e, IBUS_KEY_asciicircum, 0x00EA, IBUS_KEY_e, IBUS_KEY_underscore, 0x0113, IBUS_KEY_e, IBUS_KEY_grave, 0x00E8, IBUS_KEY_e, IBUS_KEY_e, 0x0259, IBUS_KEY_e, IBUS_KEY_diaeresis, 0x00EB, IBUS_KEY_e, IBUS_KEY_acute, 0x00E9, IBUS_KEY_f, IBUS_KEY_period, 0x1E1F, IBUS_KEY_f, IBUS_KEY_S, 0x017F, IBUS_KEY_f, IBUS_KEY_f, 0xFB00, IBUS_KEY_f, IBUS_KEY_i, 0xFB01, IBUS_KEY_f, IBUS_KEY_l, 0xFB02, IBUS_KEY_f, IBUS_KEY_s, 0x017F, IBUS_KEY_g, IBUS_KEY_parenleft, 0x011F, IBUS_KEY_g, IBUS_KEY_comma, 0x0123, IBUS_KEY_g, IBUS_KEY_period, 0x0121, IBUS_KEY_g, IBUS_KEY_U, 0x011F, IBUS_KEY_g, IBUS_KEY_breve, 0x011F, IBUS_KEY_h, IBUS_KEY_comma, 0x1E29, IBUS_KEY_i, IBUS_KEY_quotedbl, 0x00EF, IBUS_KEY_i, IBUS_KEY_apostrophe, 0x00ED, IBUS_KEY_i, IBUS_KEY_comma, 0x012F, IBUS_KEY_i, IBUS_KEY_minus, 0x012B, IBUS_KEY_i, IBUS_KEY_period, 0x0131, IBUS_KEY_i, IBUS_KEY_semicolon, 0x012F, IBUS_KEY_i, IBUS_KEY_greater, 0x00EE, IBUS_KEY_i, IBUS_KEY_asciicircum, 0x00EE, IBUS_KEY_i, IBUS_KEY_underscore, 0x012B, IBUS_KEY_i, IBUS_KEY_grave, 0x00EC, IBUS_KEY_i, IBUS_KEY_j, 0x0133, IBUS_KEY_i, IBUS_KEY_asciitilde, 0x0129, IBUS_KEY_i, IBUS_KEY_diaeresis, 0x00EF, IBUS_KEY_i, IBUS_KEY_acute, 0x00ED, IBUS_KEY_k, IBUS_KEY_comma, 0x0137, IBUS_KEY_k, IBUS_KEY_k, 0x0138, IBUS_KEY_l, IBUS_KEY_apostrophe, 0x013A, IBUS_KEY_l, IBUS_KEY_comma, 0x013C, IBUS_KEY_l, IBUS_KEY_minus, 0x00A3, IBUS_KEY_l, IBUS_KEY_slash, 0x0142, IBUS_KEY_l, IBUS_KEY_less, 0x013E, IBUS_KEY_l, IBUS_KEY_v, 0x007C, IBUS_KEY_m, IBUS_KEY_period, 0x1E41, IBUS_KEY_m, IBUS_KEY_slash, 0x20A5, IBUS_KEY_m, IBUS_KEY_u, 0x00B5, IBUS_KEY_n, IBUS_KEY_apostrophe, 0x0144, IBUS_KEY_n, IBUS_KEY_comma, 0x0146, IBUS_KEY_n, IBUS_KEY_less, 0x0148, IBUS_KEY_n, IBUS_KEY_g, 0x014B, IBUS_KEY_n, IBUS_KEY_asciitilde, 0x00F1, IBUS_KEY_o, IBUS_KEY_quotedbl, 0x00F6, IBUS_KEY_o, IBUS_KEY_apostrophe, 0x00F3, IBUS_KEY_o, IBUS_KEY_comma, 0x01EB, IBUS_KEY_o, IBUS_KEY_minus, 0x014D, IBUS_KEY_o, IBUS_KEY_slash, 0x00F8, IBUS_KEY_o, IBUS_KEY_semicolon, 0x01EB, IBUS_KEY_o, IBUS_KEY_greater, 0x00F4, IBUS_KEY_o, IBUS_KEY_A, 0x00C5, IBUS_KEY_o, IBUS_KEY_C, 0x00A9, IBUS_KEY_o, IBUS_KEY_R, 0x00AE, IBUS_KEY_o, IBUS_KEY_U, 0x016E, IBUS_KEY_o, IBUS_KEY_X, 0x00A4, IBUS_KEY_o, IBUS_KEY_asciicircum, 0x00F4, IBUS_KEY_o, IBUS_KEY_underscore, 0x014D, IBUS_KEY_o, IBUS_KEY_grave, 0x00F2, IBUS_KEY_o, IBUS_KEY_a, 0x00E5, IBUS_KEY_o, IBUS_KEY_c, 0x00A9, IBUS_KEY_o, IBUS_KEY_e, 0x0153, IBUS_KEY_o, IBUS_KEY_o, 0x00B0, IBUS_KEY_o, IBUS_KEY_r, 0x00AE, IBUS_KEY_o, IBUS_KEY_s, 0x00A7, IBUS_KEY_o, IBUS_KEY_u, 0x016F, IBUS_KEY_o, IBUS_KEY_w, 0x1E98, IBUS_KEY_o, IBUS_KEY_x, 0x00A4, IBUS_KEY_o, IBUS_KEY_y, 0x1E99, IBUS_KEY_o, IBUS_KEY_asciitilde, 0x00F5, IBUS_KEY_o, IBUS_KEY_diaeresis, 0x00F6, IBUS_KEY_o, IBUS_KEY_acute, 0x00F3, IBUS_KEY_p, IBUS_KEY_exclam, 0x00B6, IBUS_KEY_p, IBUS_KEY_period, 0x1E57, IBUS_KEY_r, IBUS_KEY_apostrophe, 0x0155, IBUS_KEY_r, IBUS_KEY_comma, 0x0157, IBUS_KEY_r, IBUS_KEY_less, 0x0159, IBUS_KEY_s, IBUS_KEY_exclam, 0x00A7, IBUS_KEY_s, IBUS_KEY_apostrophe, 0x015B, IBUS_KEY_s, IBUS_KEY_comma, 0x015F, IBUS_KEY_s, IBUS_KEY_period, 0x1E61, IBUS_KEY_s, IBUS_KEY_semicolon, 0x0219, IBUS_KEY_s, IBUS_KEY_less, 0x0161, IBUS_KEY_s, IBUS_KEY_M, 0x2120, IBUS_KEY_s, IBUS_KEY_m, 0x2120, IBUS_KEY_s, IBUS_KEY_o, 0x00A7, IBUS_KEY_s, IBUS_KEY_s, 0x00DF, IBUS_KEY_s, IBUS_KEY_cedilla, 0x015F, IBUS_KEY_t, IBUS_KEY_comma, 0x0163, IBUS_KEY_t, IBUS_KEY_minus, 0x0167, IBUS_KEY_t, IBUS_KEY_period, 0x1E6B, IBUS_KEY_t, IBUS_KEY_slash, 0x0167, IBUS_KEY_t, IBUS_KEY_semicolon, 0x021B, IBUS_KEY_t, IBUS_KEY_less, 0x0165, IBUS_KEY_t, IBUS_KEY_M, 0x2122, IBUS_KEY_t, IBUS_KEY_h, 0x00FE, IBUS_KEY_t, IBUS_KEY_m, 0x2122, IBUS_KEY_u, IBUS_KEY_quotedbl, 0x00FC, IBUS_KEY_u, IBUS_KEY_apostrophe, 0x00FA, IBUS_KEY_u, IBUS_KEY_asterisk, 0x016F, IBUS_KEY_u, IBUS_KEY_comma, 0x0173, IBUS_KEY_u, IBUS_KEY_minus, 0x016B, IBUS_KEY_u, IBUS_KEY_slash, 0x00B5, IBUS_KEY_u, IBUS_KEY_semicolon, 0x0173, IBUS_KEY_u, IBUS_KEY_greater, 0x00FB, IBUS_KEY_u, IBUS_KEY_A, 0x0102, IBUS_KEY_u, IBUS_KEY_U, 0x016C, IBUS_KEY_u, IBUS_KEY_asciicircum, 0x00FB, IBUS_KEY_u, IBUS_KEY_underscore, 0x016B, IBUS_KEY_u, IBUS_KEY_grave, 0x00F9, IBUS_KEY_u, IBUS_KEY_a, 0x0103, IBUS_KEY_u, IBUS_KEY_u, 0x016D, IBUS_KEY_u, IBUS_KEY_asciitilde, 0x0169, IBUS_KEY_u, IBUS_KEY_diaeresis, 0x00FC, IBUS_KEY_u, IBUS_KEY_acute, 0x00FA, IBUS_KEY_v, IBUS_KEY_slash, 0x221A, IBUS_KEY_v, IBUS_KEY_Z, 0x017D, IBUS_KEY_v, IBUS_KEY_l, 0x007C, IBUS_KEY_v, IBUS_KEY_z, 0x017E, IBUS_KEY_w, IBUS_KEY_asciicircum, 0x0175, IBUS_KEY_x, IBUS_KEY_O, 0x00A4, IBUS_KEY_x, IBUS_KEY_o, 0x00A4, IBUS_KEY_x, IBUS_KEY_x, 0x00D7, IBUS_KEY_y, IBUS_KEY_quotedbl, 0x00FF, IBUS_KEY_y, IBUS_KEY_apostrophe, 0x00FD, IBUS_KEY_y, IBUS_KEY_minus, 0x00A5, IBUS_KEY_y, IBUS_KEY_equal, 0x00A5, IBUS_KEY_y, IBUS_KEY_asciicircum, 0x0177, IBUS_KEY_y, IBUS_KEY_diaeresis, 0x00FF, IBUS_KEY_y, IBUS_KEY_acute, 0x00FD, IBUS_KEY_z, IBUS_KEY_apostrophe, 0x017A, IBUS_KEY_z, IBUS_KEY_period, 0x017C, IBUS_KEY_z, IBUS_KEY_less, 0x017E, IBUS_KEY_braceleft, IBUS_KEY_braceright, 0x2205, IBUS_KEY_bar, IBUS_KEY_C, 0x00A2, IBUS_KEY_bar, IBUS_KEY_c, 0x00A2, IBUS_KEY_bar, IBUS_KEY_asciitilde, 0x236D, IBUS_KEY_bar, 0x2190, 0x2345, IBUS_KEY_bar, 0x2192, 0x2346, IBUS_KEY_bar, 0x2206, 0x234B, IBUS_KEY_bar, 0x2207, 0x2352, IBUS_KEY_bar, IBUS_KEY_union, 0x2366, IBUS_KEY_bar, 0x2282, 0x2367, IBUS_KEY_bar, IBUS_KEY_emopencircle, 0x233D, IBUS_KEY_asciitilde, IBUS_KEY_space, 0x007E, IBUS_KEY_asciitilde, IBUS_KEY_0, 0x236C, IBUS_KEY_asciitilde, IBUS_KEY_A, 0x00C3, IBUS_KEY_asciitilde, IBUS_KEY_E, 0x1EBC, IBUS_KEY_asciitilde, IBUS_KEY_I, 0x0128, IBUS_KEY_asciitilde, IBUS_KEY_N, 0x00D1, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x00D5, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x0168, IBUS_KEY_asciitilde, IBUS_KEY_V, 0x1E7C, IBUS_KEY_asciitilde, IBUS_KEY_Y, 0x1EF8, IBUS_KEY_asciitilde, IBUS_KEY_a, 0x00E3, IBUS_KEY_asciitilde, IBUS_KEY_e, 0x1EBD, IBUS_KEY_asciitilde, IBUS_KEY_i, 0x0129, IBUS_KEY_asciitilde, IBUS_KEY_n, 0x00F1, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x00F5, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x0169, IBUS_KEY_asciitilde, IBUS_KEY_v, 0x1E7D, IBUS_KEY_asciitilde, IBUS_KEY_y, 0x1EF9, IBUS_KEY_asciitilde, IBUS_KEY_bar, 0x236D, IBUS_KEY_asciitilde, IBUS_KEY_diaeresis, 0x2368, IBUS_KEY_asciitilde, IBUS_KEY_Acircumflex, 0x1EAA, IBUS_KEY_asciitilde, IBUS_KEY_Ecircumflex, 0x1EC4, IBUS_KEY_asciitilde, IBUS_KEY_Ocircumflex, 0x1ED6, IBUS_KEY_asciitilde, IBUS_KEY_acircumflex, 0x1EAB, IBUS_KEY_asciitilde, IBUS_KEY_ecircumflex, 0x1EC5, IBUS_KEY_asciitilde, IBUS_KEY_ocircumflex, 0x1ED7, IBUS_KEY_asciitilde, IBUS_KEY_Abreve, 0x1EB4, IBUS_KEY_asciitilde, IBUS_KEY_abreve, 0x1EB5, IBUS_KEY_asciitilde, IBUS_KEY_Greek_iotadieresis, 0x1FD7, IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilondieresis, 0x1FE7, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB6, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC6, IBUS_KEY_asciitilde, IBUS_KEY_Greek_iota, 0x1FD6, IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilon, 0x1FE6, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF6, IBUS_KEY_asciitilde, 0x1F00, 0x1F06, IBUS_KEY_asciitilde, 0x1F01, 0x1F07, IBUS_KEY_asciitilde, 0x1F08, 0x1F0E, IBUS_KEY_asciitilde, 0x1F09, 0x1F0F, IBUS_KEY_asciitilde, 0x1F20, 0x1F26, IBUS_KEY_asciitilde, 0x1F21, 0x1F27, IBUS_KEY_asciitilde, 0x1F28, 0x1F2E, IBUS_KEY_asciitilde, 0x1F29, 0x1F2F, IBUS_KEY_asciitilde, 0x1F30, 0x1F36, IBUS_KEY_asciitilde, 0x1F31, 0x1F37, IBUS_KEY_asciitilde, 0x1F38, 0x1F3E, IBUS_KEY_asciitilde, 0x1F39, 0x1F3F, IBUS_KEY_asciitilde, 0x1F50, 0x1F56, IBUS_KEY_asciitilde, 0x1F51, 0x1F57, IBUS_KEY_asciitilde, 0x1F59, 0x1F5F, IBUS_KEY_asciitilde, 0x1F60, 0x1F66, IBUS_KEY_asciitilde, 0x1F61, 0x1F67, IBUS_KEY_asciitilde, 0x1F68, 0x1F6E, IBUS_KEY_asciitilde, 0x1F69, 0x1F6F, IBUS_KEY_asciitilde, 0x2207, 0x236B, IBUS_KEY_asciitilde, 0x2227, 0x2372, IBUS_KEY_asciitilde, 0x2228, 0x2371, IBUS_KEY_diaeresis, IBUS_KEY_apostrophe, 0x0385, IBUS_KEY_diaeresis, IBUS_KEY_asterisk, 0x2363, IBUS_KEY_diaeresis, IBUS_KEY_greater, 0x2369, IBUS_KEY_diaeresis, IBUS_KEY_A, 0x00C4, IBUS_KEY_diaeresis, IBUS_KEY_E, 0x00CB, IBUS_KEY_diaeresis, IBUS_KEY_I, 0x00CF, IBUS_KEY_diaeresis, IBUS_KEY_O, 0x00D6, IBUS_KEY_diaeresis, IBUS_KEY_U, 0x00DC, IBUS_KEY_diaeresis, IBUS_KEY_Y, 0x0178, IBUS_KEY_diaeresis, IBUS_KEY_grave, 0x1FED, IBUS_KEY_diaeresis, IBUS_KEY_a, 0x00E4, IBUS_KEY_diaeresis, IBUS_KEY_e, 0x00EB, IBUS_KEY_diaeresis, IBUS_KEY_i, 0x00EF, IBUS_KEY_diaeresis, IBUS_KEY_o, 0x00F6, IBUS_KEY_diaeresis, IBUS_KEY_u, 0x00FC, IBUS_KEY_diaeresis, IBUS_KEY_y, 0x00FF, IBUS_KEY_diaeresis, IBUS_KEY_asciitilde, 0x1FC1, IBUS_KEY_diaeresis, IBUS_KEY_acute, 0x0385, IBUS_KEY_diaeresis, 0x2207, 0x2362, IBUS_KEY_diaeresis, 0x2218, 0x2364, IBUS_KEY_diaeresis, IBUS_KEY_uptack, 0x2361, IBUS_KEY_diaeresis, IBUS_KEY_emopencircle, 0x2365, IBUS_KEY_diaeresis, IBUS_KEY_dead_grave, 0x1FED, IBUS_KEY_diaeresis, IBUS_KEY_dead_acute, 0x0385, IBUS_KEY_diaeresis, IBUS_KEY_dead_tilde, 0x1FC1, IBUS_KEY_macron, IBUS_KEY_A, 0x0100, IBUS_KEY_macron, IBUS_KEY_E, 0x0112, IBUS_KEY_macron, IBUS_KEY_G, 0x1E20, IBUS_KEY_macron, IBUS_KEY_I, 0x012A, IBUS_KEY_macron, IBUS_KEY_O, 0x014C, IBUS_KEY_macron, IBUS_KEY_U, 0x016A, IBUS_KEY_macron, IBUS_KEY_Y, 0x0232, IBUS_KEY_macron, IBUS_KEY_a, 0x0101, IBUS_KEY_macron, IBUS_KEY_e, 0x0113, IBUS_KEY_macron, IBUS_KEY_g, 0x1E21, IBUS_KEY_macron, IBUS_KEY_i, 0x012B, IBUS_KEY_macron, IBUS_KEY_o, 0x014D, IBUS_KEY_macron, IBUS_KEY_u, 0x016B, IBUS_KEY_macron, IBUS_KEY_y, 0x0233, IBUS_KEY_macron, IBUS_KEY_Adiaeresis, 0x01DE, IBUS_KEY_macron, IBUS_KEY_AE, 0x01E2, IBUS_KEY_macron, IBUS_KEY_Otilde, 0x022C, IBUS_KEY_macron, IBUS_KEY_Odiaeresis, 0x022A, IBUS_KEY_macron, IBUS_KEY_Udiaeresis, 0x01D5, IBUS_KEY_macron, IBUS_KEY_adiaeresis, 0x01DF, IBUS_KEY_macron, IBUS_KEY_ae, 0x01E3, IBUS_KEY_macron, IBUS_KEY_otilde, 0x022D, IBUS_KEY_macron, IBUS_KEY_odiaeresis, 0x022B, IBUS_KEY_macron, IBUS_KEY_udiaeresis, 0x01D6, IBUS_KEY_macron, 0x01EA, 0x01EC, IBUS_KEY_macron, 0x01EB, 0x01ED, IBUS_KEY_macron, 0x0226, 0x01E0, IBUS_KEY_macron, 0x0227, 0x01E1, IBUS_KEY_macron, 0x022E, 0x0230, IBUS_KEY_macron, 0x022F, 0x0231, IBUS_KEY_macron, IBUS_KEY_Cyrillic_i, 0x04E3, IBUS_KEY_macron, IBUS_KEY_Cyrillic_u, 0x04EF, IBUS_KEY_macron, IBUS_KEY_Cyrillic_I, 0x04E2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_U, 0x04EE, IBUS_KEY_macron, IBUS_KEY_Greek_ALPHA, 0x1FB9, IBUS_KEY_macron, IBUS_KEY_Greek_IOTA, 0x1FD9, IBUS_KEY_macron, IBUS_KEY_Greek_UPSILON, 0x1FE9, IBUS_KEY_macron, IBUS_KEY_Greek_alpha, 0x1FB1, IBUS_KEY_macron, IBUS_KEY_Greek_iota, 0x1FD1, IBUS_KEY_macron, IBUS_KEY_Greek_upsilon, 0x1FE1, IBUS_KEY_macron, 0x1E36, 0x1E38, IBUS_KEY_macron, 0x1E37, 0x1E39, IBUS_KEY_macron, 0x1E5A, 0x1E5C, IBUS_KEY_macron, 0x1E5B, 0x1E5D, IBUS_KEY_macron, IBUS_KEY_uptack, 0x2351, IBUS_KEY_acute, IBUS_KEY_A, 0x00C1, IBUS_KEY_acute, IBUS_KEY_C, 0x0106, IBUS_KEY_acute, IBUS_KEY_E, 0x00C9, IBUS_KEY_acute, IBUS_KEY_G, 0x01F4, IBUS_KEY_acute, IBUS_KEY_I, 0x00CD, IBUS_KEY_acute, IBUS_KEY_K, 0x1E30, IBUS_KEY_acute, IBUS_KEY_L, 0x0139, IBUS_KEY_acute, IBUS_KEY_M, 0x1E3E, IBUS_KEY_acute, IBUS_KEY_N, 0x0143, IBUS_KEY_acute, IBUS_KEY_O, 0x00D3, IBUS_KEY_acute, IBUS_KEY_P, 0x1E54, IBUS_KEY_acute, IBUS_KEY_R, 0x0154, IBUS_KEY_acute, IBUS_KEY_S, 0x015A, IBUS_KEY_acute, IBUS_KEY_U, 0x00DA, IBUS_KEY_acute, IBUS_KEY_W, 0x1E82, IBUS_KEY_acute, IBUS_KEY_Y, 0x00DD, IBUS_KEY_acute, IBUS_KEY_Z, 0x0179, IBUS_KEY_acute, IBUS_KEY_a, 0x00E1, IBUS_KEY_acute, IBUS_KEY_c, 0x0107, IBUS_KEY_acute, IBUS_KEY_e, 0x00E9, IBUS_KEY_acute, IBUS_KEY_g, 0x01F5, IBUS_KEY_acute, IBUS_KEY_i, 0x00ED, IBUS_KEY_acute, IBUS_KEY_k, 0x1E31, IBUS_KEY_acute, IBUS_KEY_l, 0x013A, IBUS_KEY_acute, IBUS_KEY_m, 0x1E3F, IBUS_KEY_acute, IBUS_KEY_n, 0x0144, IBUS_KEY_acute, IBUS_KEY_o, 0x00F3, IBUS_KEY_acute, IBUS_KEY_p, 0x1E55, IBUS_KEY_acute, IBUS_KEY_r, 0x0155, IBUS_KEY_acute, IBUS_KEY_s, 0x015B, IBUS_KEY_acute, IBUS_KEY_u, 0x00FA, IBUS_KEY_acute, IBUS_KEY_w, 0x1E83, IBUS_KEY_acute, IBUS_KEY_y, 0x00FD, IBUS_KEY_acute, IBUS_KEY_z, 0x017A, IBUS_KEY_acute, IBUS_KEY_Acircumflex, 0x1EA4, IBUS_KEY_acute, IBUS_KEY_Aring, 0x01FA, IBUS_KEY_acute, IBUS_KEY_AE, 0x01FC, IBUS_KEY_acute, IBUS_KEY_Ccedilla, 0x1E08, IBUS_KEY_acute, IBUS_KEY_Ecircumflex, 0x1EBE, IBUS_KEY_acute, IBUS_KEY_Idiaeresis, 0x1E2E, IBUS_KEY_acute, IBUS_KEY_Ocircumflex, 0x1ED0, IBUS_KEY_acute, IBUS_KEY_Otilde, 0x1E4C, IBUS_KEY_acute, IBUS_KEY_Ooblique, 0x01FE, IBUS_KEY_acute, IBUS_KEY_Udiaeresis, 0x01D7, IBUS_KEY_acute, IBUS_KEY_acircumflex, 0x1EA5, IBUS_KEY_acute, IBUS_KEY_aring, 0x01FB, IBUS_KEY_acute, IBUS_KEY_ae, 0x01FD, IBUS_KEY_acute, IBUS_KEY_ccedilla, 0x1E09, IBUS_KEY_acute, IBUS_KEY_ecircumflex, 0x1EBF, IBUS_KEY_acute, IBUS_KEY_idiaeresis, 0x1E2F, IBUS_KEY_acute, IBUS_KEY_ocircumflex, 0x1ED1, IBUS_KEY_acute, IBUS_KEY_otilde, 0x1E4D, IBUS_KEY_acute, IBUS_KEY_oslash, 0x01FF, IBUS_KEY_acute, IBUS_KEY_udiaeresis, 0x01D8, IBUS_KEY_acute, IBUS_KEY_Abreve, 0x1EAE, IBUS_KEY_acute, IBUS_KEY_abreve, 0x1EAF, IBUS_KEY_acute, IBUS_KEY_Emacron, 0x1E16, IBUS_KEY_acute, IBUS_KEY_emacron, 0x1E17, IBUS_KEY_acute, IBUS_KEY_Omacron, 0x1E52, IBUS_KEY_acute, IBUS_KEY_Utilde, 0x1E78, IBUS_KEY_acute, IBUS_KEY_omacron, 0x1E53, IBUS_KEY_acute, IBUS_KEY_utilde, 0x1E79, IBUS_KEY_acute, IBUS_KEY_Cyrillic_ghe, 0x0453, IBUS_KEY_acute, IBUS_KEY_Cyrillic_ka, 0x045C, IBUS_KEY_acute, IBUS_KEY_Cyrillic_GHE, 0x0403, IBUS_KEY_acute, IBUS_KEY_Cyrillic_KA, 0x040C, IBUS_KEY_acute, IBUS_KEY_Greek_iotadieresis, 0x0390, IBUS_KEY_acute, IBUS_KEY_Greek_upsilondieresis, 0x03B0, IBUS_KEY_acute, IBUS_KEY_Greek_ALPHA, 0x0386, IBUS_KEY_acute, IBUS_KEY_Greek_EPSILON, 0x0388, IBUS_KEY_acute, IBUS_KEY_Greek_ETA, 0x0389, IBUS_KEY_acute, IBUS_KEY_Greek_IOTA, 0x038A, IBUS_KEY_acute, IBUS_KEY_Greek_OMICRON, 0x038C, IBUS_KEY_acute, IBUS_KEY_Greek_UPSILON, 0x038E, IBUS_KEY_acute, IBUS_KEY_Greek_OMEGA, 0x038F, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x03AC, IBUS_KEY_acute, IBUS_KEY_Greek_epsilon, 0x03AD, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x03AE, IBUS_KEY_acute, IBUS_KEY_Greek_iota, 0x03AF, IBUS_KEY_acute, IBUS_KEY_Greek_omicron, 0x03CC, IBUS_KEY_acute, IBUS_KEY_Greek_upsilon, 0x03CD, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x03CE, IBUS_KEY_acute, 0x1F00, 0x1F04, IBUS_KEY_acute, 0x1F01, 0x1F05, IBUS_KEY_acute, 0x1F08, 0x1F0C, IBUS_KEY_acute, 0x1F09, 0x1F0D, IBUS_KEY_acute, 0x1F10, 0x1F14, IBUS_KEY_acute, 0x1F11, 0x1F15, IBUS_KEY_acute, 0x1F18, 0x1F1C, IBUS_KEY_acute, 0x1F19, 0x1F1D, IBUS_KEY_acute, 0x1F20, 0x1F24, IBUS_KEY_acute, 0x1F21, 0x1F25, IBUS_KEY_acute, 0x1F28, 0x1F2C, IBUS_KEY_acute, 0x1F29, 0x1F2D, IBUS_KEY_acute, 0x1F30, 0x1F34, IBUS_KEY_acute, 0x1F31, 0x1F35, IBUS_KEY_acute, 0x1F38, 0x1F3C, IBUS_KEY_acute, 0x1F39, 0x1F3D, IBUS_KEY_acute, 0x1F40, 0x1F44, IBUS_KEY_acute, 0x1F41, 0x1F45, IBUS_KEY_acute, 0x1F48, 0x1F4C, IBUS_KEY_acute, 0x1F49, 0x1F4D, IBUS_KEY_acute, 0x1F50, 0x1F54, IBUS_KEY_acute, 0x1F51, 0x1F55, IBUS_KEY_acute, 0x1F59, 0x1F5D, IBUS_KEY_acute, 0x1F60, 0x1F64, IBUS_KEY_acute, 0x1F61, 0x1F65, IBUS_KEY_acute, 0x1F68, 0x1F6C, IBUS_KEY_acute, 0x1F69, 0x1F6D, IBUS_KEY_cedilla, IBUS_KEY_C, 0x00C7, IBUS_KEY_cedilla, IBUS_KEY_D, 0x1E10, IBUS_KEY_cedilla, IBUS_KEY_E, 0x0228, IBUS_KEY_cedilla, IBUS_KEY_G, 0x0122, IBUS_KEY_cedilla, IBUS_KEY_H, 0x1E28, IBUS_KEY_cedilla, IBUS_KEY_K, 0x0136, IBUS_KEY_cedilla, IBUS_KEY_L, 0x013B, IBUS_KEY_cedilla, IBUS_KEY_N, 0x0145, IBUS_KEY_cedilla, IBUS_KEY_R, 0x0156, IBUS_KEY_cedilla, IBUS_KEY_S, 0x015E, IBUS_KEY_cedilla, IBUS_KEY_T, 0x0162, IBUS_KEY_cedilla, IBUS_KEY_c, 0x00E7, IBUS_KEY_cedilla, IBUS_KEY_d, 0x1E11, IBUS_KEY_cedilla, IBUS_KEY_e, 0x0229, IBUS_KEY_cedilla, IBUS_KEY_g, 0x0123, IBUS_KEY_cedilla, IBUS_KEY_h, 0x1E29, IBUS_KEY_cedilla, IBUS_KEY_k, 0x0137, IBUS_KEY_cedilla, IBUS_KEY_l, 0x013C, IBUS_KEY_cedilla, IBUS_KEY_n, 0x0146, IBUS_KEY_cedilla, IBUS_KEY_r, 0x0157, IBUS_KEY_cedilla, IBUS_KEY_s, 0x015F, IBUS_KEY_cedilla, IBUS_KEY_t, 0x0163, IBUS_KEY_division, 0x2395, 0x2339, IBUS_KEY_breve, IBUS_KEY_G, 0x011E, IBUS_KEY_breve, IBUS_KEY_g, 0x011F, 0x05B4, IBUS_KEY_hebrew_yod, 0xFB1D, 0x05B7, 0x05F2, 0xFB1F, 0x05B7, IBUS_KEY_hebrew_aleph, 0xFB2E, 0x05B8, IBUS_KEY_hebrew_aleph, 0xFB2F, 0x05B9, IBUS_KEY_hebrew_waw, 0xFB4B, 0x05BC, IBUS_KEY_hebrew_aleph, 0xFB30, 0x05BC, IBUS_KEY_hebrew_beth, 0xFB31, 0x05BC, IBUS_KEY_hebrew_gimmel, 0xFB32, 0x05BC, IBUS_KEY_hebrew_daleth, 0xFB33, 0x05BC, IBUS_KEY_hebrew_he, 0xFB34, 0x05BC, IBUS_KEY_hebrew_waw, 0xFB35, 0x05BC, IBUS_KEY_hebrew_zayin, 0xFB36, 0x05BC, IBUS_KEY_hebrew_teth, 0xFB38, 0x05BC, IBUS_KEY_hebrew_yod, 0xFB39, 0x05BC, IBUS_KEY_hebrew_finalkaph, 0xFB3A, 0x05BC, IBUS_KEY_hebrew_kaph, 0xFB3B, 0x05BC, IBUS_KEY_hebrew_lamed, 0xFB3C, 0x05BC, IBUS_KEY_hebrew_mem, 0xFB3E, 0x05BC, IBUS_KEY_hebrew_nun, 0xFB40, 0x05BC, IBUS_KEY_hebrew_samekh, 0xFB41, 0x05BC, IBUS_KEY_hebrew_finalpe, 0xFB43, 0x05BC, IBUS_KEY_hebrew_pe, 0xFB44, 0x05BC, IBUS_KEY_hebrew_zadi, 0xFB46, 0x05BC, IBUS_KEY_hebrew_qoph, 0xFB47, 0x05BC, IBUS_KEY_hebrew_resh, 0xFB48, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB49, 0x05BC, IBUS_KEY_hebrew_taw, 0xFB4A, 0x05BF, IBUS_KEY_hebrew_beth, 0xFB4C, 0x05BF, IBUS_KEY_hebrew_kaph, 0xFB4D, 0x05BF, IBUS_KEY_hebrew_pe, 0xFB4E, 0x05C1, IBUS_KEY_hebrew_shin, 0xFB2A, 0x05C1, 0xFB49, 0xFB2C, 0x05C2, IBUS_KEY_hebrew_shin, 0xFB2B, 0x05C2, 0xFB49, 0xFB2D, 0x0653, IBUS_KEY_Arabic_alef, 0x0622, 0x0654, IBUS_KEY_Arabic_alef, 0x0623, 0x0654, IBUS_KEY_Arabic_waw, 0x0624, 0x0654, IBUS_KEY_Arabic_yeh, 0x0626, 0x0654, 0x06C1, 0x06C2, 0x0654, 0x06D2, 0x06D3, 0x0654, 0x06D5, 0x06C0, 0x0655, IBUS_KEY_Arabic_alef, 0x0625, IBUS_KEY_Cyrillic_pe, IBUS_KEY_Cyrillic_a, 0x00A7, IBUS_KEY_Cyrillic_IE, IBUS_KEY_equal, 0x20AC, IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_o, 0x2116, IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_O, 0x2116, IBUS_KEY_Cyrillic_ES, IBUS_KEY_equal, 0x20AC, IBUS_KEY_Greek_ALPHA, IBUS_KEY_apostrophe, 0x0386, IBUS_KEY_Greek_EPSILON, IBUS_KEY_apostrophe, 0x0388, IBUS_KEY_Greek_ETA, IBUS_KEY_apostrophe, 0x0389, IBUS_KEY_Greek_IOTA, IBUS_KEY_quotedbl, 0x03AA, IBUS_KEY_Greek_IOTA, IBUS_KEY_apostrophe, 0x038A, IBUS_KEY_Greek_OMICRON, IBUS_KEY_apostrophe, 0x038C, IBUS_KEY_Greek_UPSILON, IBUS_KEY_quotedbl, 0x03AB, IBUS_KEY_Greek_UPSILON, IBUS_KEY_apostrophe, 0x038E, IBUS_KEY_Greek_OMEGA, IBUS_KEY_apostrophe, 0x038F, IBUS_KEY_Greek_alpha, IBUS_KEY_apostrophe, 0x03AC, IBUS_KEY_Greek_epsilon, IBUS_KEY_apostrophe, 0x03AD, IBUS_KEY_Greek_eta, IBUS_KEY_apostrophe, 0x03AE, IBUS_KEY_Greek_iota, IBUS_KEY_quotedbl, 0x03CA, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alphaaccent, 0x1FB4, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_etaaccent, 0x1FC4, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omegaaccent, 0x1FF4, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ALPHA, 0x1FBC, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ETA, 0x1FCC, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_OMEGA, 0x1FFC, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alpha, 0x1FB3, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_eta, 0x1FC3, IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omega, 0x1FF3, IBUS_KEY_Greek_iota, 0x1F00, 0x1F80, IBUS_KEY_Greek_iota, 0x1F01, 0x1F81, IBUS_KEY_Greek_iota, 0x1F02, 0x1F82, IBUS_KEY_Greek_iota, 0x1F03, 0x1F83, IBUS_KEY_Greek_iota, 0x1F04, 0x1F84, IBUS_KEY_Greek_iota, 0x1F05, 0x1F85, IBUS_KEY_Greek_iota, 0x1F06, 0x1F86, IBUS_KEY_Greek_iota, 0x1F07, 0x1F87, IBUS_KEY_Greek_iota, 0x1F08, 0x1F88, IBUS_KEY_Greek_iota, 0x1F09, 0x1F89, IBUS_KEY_Greek_iota, 0x1F0A, 0x1F8A, IBUS_KEY_Greek_iota, 0x1F0B, 0x1F8B, IBUS_KEY_Greek_iota, 0x1F0C, 0x1F8C, IBUS_KEY_Greek_iota, 0x1F0D, 0x1F8D, IBUS_KEY_Greek_iota, 0x1F0E, 0x1F8E, IBUS_KEY_Greek_iota, 0x1F0F, 0x1F8F, IBUS_KEY_Greek_iota, 0x1F20, 0x1F90, IBUS_KEY_Greek_iota, 0x1F21, 0x1F91, IBUS_KEY_Greek_iota, 0x1F22, 0x1F92, IBUS_KEY_Greek_iota, 0x1F23, 0x1F93, IBUS_KEY_Greek_iota, 0x1F24, 0x1F94, IBUS_KEY_Greek_iota, 0x1F25, 0x1F95, IBUS_KEY_Greek_iota, 0x1F26, 0x1F96, IBUS_KEY_Greek_iota, 0x1F27, 0x1F97, IBUS_KEY_Greek_iota, 0x1F28, 0x1F98, IBUS_KEY_Greek_iota, 0x1F29, 0x1F99, IBUS_KEY_Greek_iota, 0x1F2A, 0x1F9A, IBUS_KEY_Greek_iota, 0x1F2B, 0x1F9B, IBUS_KEY_Greek_iota, 0x1F2C, 0x1F9C, IBUS_KEY_Greek_iota, 0x1F2D, 0x1F9D, IBUS_KEY_Greek_iota, 0x1F2E, 0x1F9E, IBUS_KEY_Greek_iota, 0x1F2F, 0x1F9F, IBUS_KEY_Greek_iota, 0x1F60, 0x1FA0, IBUS_KEY_Greek_iota, 0x1F61, 0x1FA1, IBUS_KEY_Greek_iota, 0x1F62, 0x1FA2, IBUS_KEY_Greek_iota, 0x1F63, 0x1FA3, IBUS_KEY_Greek_iota, 0x1F64, 0x1FA4, IBUS_KEY_Greek_iota, 0x1F65, 0x1FA5, IBUS_KEY_Greek_iota, 0x1F66, 0x1FA6, IBUS_KEY_Greek_iota, 0x1F67, 0x1FA7, IBUS_KEY_Greek_iota, 0x1F68, 0x1FA8, IBUS_KEY_Greek_iota, 0x1F69, 0x1FA9, IBUS_KEY_Greek_iota, 0x1F6A, 0x1FAA, IBUS_KEY_Greek_iota, 0x1F6B, 0x1FAB, IBUS_KEY_Greek_iota, 0x1F6C, 0x1FAC, IBUS_KEY_Greek_iota, 0x1F6D, 0x1FAD, IBUS_KEY_Greek_iota, 0x1F6E, 0x1FAE, IBUS_KEY_Greek_iota, 0x1F6F, 0x1FAF, IBUS_KEY_Greek_iota, 0x1F70, 0x1FB2, IBUS_KEY_Greek_iota, 0x1F74, 0x1FC2, IBUS_KEY_Greek_iota, 0x1F7C, 0x1FF2, IBUS_KEY_Greek_iota, 0x1FB6, 0x1FB7, IBUS_KEY_Greek_iota, 0x1FC6, 0x1FC7, IBUS_KEY_Greek_iota, 0x1FF6, 0x1FF7, IBUS_KEY_Greek_omicron, IBUS_KEY_apostrophe, 0x03CC, IBUS_KEY_Greek_upsilon, IBUS_KEY_quotedbl, 0x03CB, IBUS_KEY_Greek_upsilon, IBUS_KEY_apostrophe, 0x03CD, IBUS_KEY_Greek_omega, IBUS_KEY_apostrophe, 0x03CE, IBUS_KEY_lessthanequal, 0x0338, 0x2270, IBUS_KEY_greaterthanequal, 0x0338, 0x2271, IBUS_KEY_approximate, 0x0338, 0x2247, IBUS_KEY_identical, 0x0338, 0x2262, IBUS_KEY_includedin, 0x0338, 0x2284, IBUS_KEY_includes, 0x0338, 0x2285, 0x093C, 0x0915, 0x0958, 0x093C, 0x0916, 0x0959, 0x093C, 0x0917, 0x095A, 0x093C, 0x091C, 0x095B, 0x093C, 0x0921, 0x095C, 0x093C, 0x0922, 0x095D, 0x093C, 0x0928, 0x0929, 0x093C, 0x092B, 0x095E, 0x093C, 0x092F, 0x095F, 0x093C, 0x0930, 0x0931, 0x093C, 0x0933, 0x0934, 0x09BC, 0x09A1, 0x09DC, 0x09BC, 0x09A2, 0x09DD, 0x09BC, 0x09AF, 0x09DF, 0x09C7, 0x09BE, 0x09CB, 0x09C7, 0x09D7, 0x09CC, 0x0A3C, 0x0A16, 0x0A59, 0x0A3C, 0x0A17, 0x0A5A, 0x0A3C, 0x0A1C, 0x0A5B, 0x0A3C, 0x0A2B, 0x0A5E, 0x0A3C, 0x0A32, 0x0A33, 0x0A3C, 0x0A38, 0x0A36, 0x0B3C, 0x0B21, 0x0B5C, 0x0B3C, 0x0B22, 0x0B5D, 0x0B47, 0x0B3E, 0x0B4B, 0x0B47, 0x0B56, 0x0B48, 0x0B47, 0x0B57, 0x0B4C, IBUS_KEY_leftcaret, 0x0338, 0x226E, IBUS_KEY_rightcaret, 0x0338, 0x226F, IBUS_KEY_underbar, IBUS_KEY_parenleft, 0x208D, IBUS_KEY_underbar, IBUS_KEY_parenright, 0x208E, IBUS_KEY_underbar, IBUS_KEY_plus, 0x208A, IBUS_KEY_underbar, IBUS_KEY_0, 0x2080, IBUS_KEY_underbar, IBUS_KEY_1, 0x2081, IBUS_KEY_underbar, IBUS_KEY_2, 0x2082, IBUS_KEY_underbar, IBUS_KEY_3, 0x2083, IBUS_KEY_underbar, IBUS_KEY_4, 0x2084, IBUS_KEY_underbar, IBUS_KEY_5, 0x2085, IBUS_KEY_underbar, IBUS_KEY_6, 0x2086, IBUS_KEY_underbar, IBUS_KEY_7, 0x2087, IBUS_KEY_underbar, IBUS_KEY_8, 0x2088, IBUS_KEY_underbar, IBUS_KEY_9, 0x2089, IBUS_KEY_underbar, IBUS_KEY_equal, 0x208C, 0x0BC6, 0x0BBE, 0x0BCA, 0x0BC6, 0x0BD7, 0x0BCC, IBUS_KEY_underbar, 0x2212, 0x208B, IBUS_KEY_underbar, IBUS_KEY_KP_Space, 0x2082, IBUS_KEY_underbar, IBUS_KEY_KP_Add, 0x208A, IBUS_KEY_underbar, IBUS_KEY_KP_0, 0x2080, IBUS_KEY_underbar, IBUS_KEY_KP_1, 0x2081, IBUS_KEY_underbar, IBUS_KEY_KP_2, 0x2082, IBUS_KEY_underbar, IBUS_KEY_KP_3, 0x2083, IBUS_KEY_underbar, IBUS_KEY_KP_4, 0x2084, IBUS_KEY_underbar, IBUS_KEY_KP_5, 0x2085, IBUS_KEY_underbar, IBUS_KEY_KP_6, 0x2086, IBUS_KEY_underbar, IBUS_KEY_KP_7, 0x2087, IBUS_KEY_underbar, IBUS_KEY_KP_8, 0x2088, IBUS_KEY_underbar, IBUS_KEY_KP_9, 0x2089, IBUS_KEY_underbar, IBUS_KEY_KP_Equal, 0x208C, 0x0BC7, 0x0BBE, 0x0BCB, 0x0BD7, 0x0B92, 0x0B94, IBUS_KEY_rightshoe, 0x0338, 0x2285, IBUS_KEY_leftshoe, 0x0338, 0x2284, IBUS_KEY_righttack, 0x0338, 0x22AC, 0x0C46, 0x0C56, 0x0C48, 0x0CBF, 0x0CD5, 0x0CC0, 0x0CC6, 0x0CC2, 0x0CCA, 0x0CC6, 0x0CD5, 0x0CC7, 0x0CC6, 0x0CD6, 0x0CC8, 0x0CCA, 0x0CD5, 0x0CCB, 0x0D46, 0x0D3E, 0x0D4A, 0x0D46, 0x0D57, 0x0D4C, 0x0D47, 0x0D3E, 0x0D4B, 0x0DD9, 0x0DCA, 0x0DDA, 0x0DD9, 0x0DCF, 0x0DDC, 0x0DD9, 0x0DDF, 0x0DDE, 0x0DDC, 0x0DCA, 0x0DDD, 0x0F71, 0x0F72, 0x0F73, 0x0F71, 0x0F74, 0x0F75, 0x0F71, 0x0F80, 0x0F81, 0x0F90, 0x0FB5, 0x0FB9, 0x0F92, 0x0FB7, 0x0F93, 0x0F9C, 0x0FB7, 0x0F9D, 0x0FA1, 0x0FB7, 0x0FA2, 0x0FA6, 0x0FB7, 0x0FA7, 0x0FAB, 0x0FB7, 0x0FAC, 0x0FB2, 0x0F80, 0x0F76, 0x0FB3, 0x0F80, 0x0F78, 0x0FB5, 0x0F40, 0x0F69, 0x0FB7, 0x0F42, 0x0F43, 0x0FB7, 0x0F4C, 0x0F4D, 0x0FB7, 0x0F51, 0x0F52, 0x0FB7, 0x0F56, 0x0F57, 0x0FB7, 0x0F5B, 0x0F5C, 0x102E, 0x1025, 0x1026, 0x1100, 0x1100, 0x1101, 0x1102, 0x1100, 0x1113, 0x1102, 0x1102, 0x1114, 0x1102, 0x1103, 0x1115, 0x1102, 0x1107, 0x1116, 0x1103, 0x1100, 0x1117, 0x1103, 0x1103, 0x1104, 0x1105, 0x1102, 0x1118, 0x1105, 0x1105, 0x1119, 0x1105, 0x110B, 0x111B, 0x1105, 0x1112, 0x111A, 0x1106, 0x1107, 0x111C, 0x1106, 0x110B, 0x111D, 0x1107, 0x1100, 0x111E, 0x1107, 0x1102, 0x111F, 0x1107, 0x1103, 0x1120, 0x1107, 0x1107, 0x1108, 0x1107, 0x1109, 0x1121, 0x1107, 0x110A, 0x1125, 0x1107, 0x110B, 0x112B, 0x1107, 0x110C, 0x1127, 0x1107, 0x110E, 0x1128, 0x1107, 0x1110, 0x1129, 0x1107, 0x1111, 0x112A, 0x1107, 0x112B, 0x112C, 0x1107, 0x112D, 0x1122, 0x1107, 0x112F, 0x1123, 0x1107, 0x1132, 0x1124, 0x1107, 0x1136, 0x1126, 0x1108, 0x110B, 0x112C, 0x1109, 0x1100, 0x112D, 0x1109, 0x1102, 0x112E, 0x1109, 0x1103, 0x112F, 0x1109, 0x1105, 0x1130, 0x1109, 0x1106, 0x1131, 0x1109, 0x1107, 0x1132, 0x1109, 0x1109, 0x110A, 0x1109, 0x110A, 0x1134, 0x1109, 0x110B, 0x1135, 0x1109, 0x110C, 0x1136, 0x1109, 0x110E, 0x1137, 0x1109, 0x110F, 0x1138, 0x1109, 0x1110, 0x1139, 0x1109, 0x1111, 0x113A, 0x1109, 0x1112, 0x113B, 0x1109, 0x111E, 0x1133, 0x110A, 0x1109, 0x1134, 0x110B, 0x1100, 0x1141, 0x110B, 0x1103, 0x1142, 0x110B, 0x1106, 0x1143, 0x110B, 0x1107, 0x1144, 0x110B, 0x1109, 0x1145, 0x110B, 0x110B, 0x1147, 0x110B, 0x110C, 0x1148, 0x110B, 0x110E, 0x1149, 0x110B, 0x1110, 0x114A, 0x110B, 0x1111, 0x114B, 0x110B, 0x1140, 0x1146, 0x110C, 0x110B, 0x114D, 0x110C, 0x110C, 0x110D, 0x110E, 0x110F, 0x1152, 0x110E, 0x1112, 0x1153, 0x1111, 0x1107, 0x1156, 0x1111, 0x110B, 0x1157, 0x1112, 0x1112, 0x1158, 0x1121, 0x1100, 0x1122, 0x1121, 0x1103, 0x1123, 0x1121, 0x1107, 0x1124, 0x1121, 0x1109, 0x1125, 0x1121, 0x110C, 0x1126, 0x1132, 0x1100, 0x1133, 0x113C, 0x113C, 0x113D, 0x113E, 0x113E, 0x113F, 0x114E, 0x114E, 0x114F, 0x1150, 0x1150, 0x1151, 0x1161, 0x1169, 0x1176, 0x1161, 0x116E, 0x1177, 0x1161, 0x1175, 0x1162, 0x1163, 0x1169, 0x1178, 0x1163, 0x116D, 0x1179, 0x1163, 0x1175, 0x1164, 0x1165, 0x1169, 0x117A, 0x1165, 0x116E, 0x117B, 0x1165, 0x1173, 0x117C, 0x1165, 0x1175, 0x1166, 0x1167, 0x1169, 0x117D, 0x1167, 0x116E, 0x117E, 0x1167, 0x1175, 0x1168, 0x1169, 0x1161, 0x116A, 0x1169, 0x1162, 0x116B, 0x1169, 0x1165, 0x117F, 0x1169, 0x1166, 0x1180, 0x1169, 0x1168, 0x1181, 0x1169, 0x1169, 0x1182, 0x1169, 0x116E, 0x1183, 0x1169, 0x1175, 0x116C, 0x116A, 0x1175, 0x116B, 0x116D, 0x1163, 0x1184, 0x116D, 0x1164, 0x1185, 0x116D, 0x1167, 0x1186, 0x116D, 0x1169, 0x1187, 0x116D, 0x1175, 0x1188, 0x116E, 0x1161, 0x1189, 0x116E, 0x1162, 0x118A, 0x116E, 0x1165, 0x116F, 0x116E, 0x1166, 0x1170, 0x116E, 0x1168, 0x118C, 0x116E, 0x116E, 0x118D, 0x116E, 0x1175, 0x1171, 0x116E, 0x117C, 0x118B, 0x116F, 0x1173, 0x118B, 0x116F, 0x1175, 0x1170, 0x1172, 0x1161, 0x118E, 0x1172, 0x1165, 0x118F, 0x1172, 0x1166, 0x1190, 0x1172, 0x1167, 0x1191, 0x1172, 0x1168, 0x1192, 0x1172, 0x116E, 0x1193, 0x1172, 0x1175, 0x1194, 0x1173, 0x116E, 0x1195, 0x1173, 0x1173, 0x1196, 0x1173, 0x1175, 0x1174, 0x1174, 0x116E, 0x1197, 0x1175, 0x1161, 0x1198, 0x1175, 0x1163, 0x1199, 0x1175, 0x1169, 0x119A, 0x1175, 0x116E, 0x119B, 0x1175, 0x1173, 0x119C, 0x1175, 0x119E, 0x119D, 0x119E, 0x1165, 0x119F, 0x119E, 0x116E, 0x11A0, 0x119E, 0x1175, 0x11A1, 0x119E, 0x119E, 0x11A2, 0x11A8, 0x11A8, 0x11A9, 0x11A8, 0x11AF, 0x11C3, 0x11A8, 0x11BA, 0x11AA, 0x11A8, 0x11E7, 0x11C4, 0x11AA, 0x11A8, 0x11C4, 0x11AB, 0x11A8, 0x11C5, 0x11AB, 0x11AE, 0x11C6, 0x11AB, 0x11BA, 0x11C7, 0x11AB, 0x11BD, 0x11AC, 0x11AB, 0x11C0, 0x11C9, 0x11AB, 0x11C2, 0x11AD, 0x11AB, 0x11EB, 0x11C8, 0x11AE, 0x11A8, 0x11CA, 0x11AE, 0x11AF, 0x11CB, 0x11AF, 0x11A8, 0x11B0, 0x11AF, 0x11AA, 0x11CC, 0x11AF, 0x11AB, 0x11CD, 0x11AF, 0x11AE, 0x11CE, 0x11AF, 0x11AF, 0x11D0, 0x11AF, 0x11B7, 0x11B1, 0x11AF, 0x11B8, 0x11B2, 0x11AF, 0x11B9, 0x11D3, 0x11AF, 0x11BA, 0x11B3, 0x11AF, 0x11BB, 0x11D6, 0x11AF, 0x11BF, 0x11D8, 0x11AF, 0x11C0, 0x11B4, 0x11AF, 0x11C1, 0x11B5, 0x11AF, 0x11C2, 0x11B6, 0x11AF, 0x11DA, 0x11D1, 0x11AF, 0x11DD, 0x11D2, 0x11AF, 0x11E5, 0x11D4, 0x11AF, 0x11E6, 0x11D5, 0x11AF, 0x11EB, 0x11D7, 0x11AF, 0x11F9, 0x11D9, 0x11B0, 0x11BA, 0x11CC, 0x11B1, 0x11A8, 0x11D1, 0x11B1, 0x11BA, 0x11D2, 0x11B2, 0x11BA, 0x11D3, 0x11B2, 0x11BC, 0x11D5, 0x11B2, 0x11C2, 0x11D4, 0x11B3, 0x11BA, 0x11D6, 0x11B7, 0x11A8, 0x11DA, 0x11B7, 0x11AF, 0x11DB, 0x11B7, 0x11B8, 0x11DC, 0x11B7, 0x11BA, 0x11DD, 0x11B7, 0x11BB, 0x11DE, 0x11B7, 0x11BC, 0x11E2, 0x11B7, 0x11BE, 0x11E0, 0x11B7, 0x11C2, 0x11E1, 0x11B7, 0x11EB, 0x11DF, 0x11B8, 0x11AF, 0x11E3, 0x11B8, 0x11BA, 0x11B9, 0x11B8, 0x11BC, 0x11E6, 0x11B8, 0x11C1, 0x11E4, 0x11B8, 0x11C2, 0x11E5, 0x11BA, 0x11A8, 0x11E7, 0x11BA, 0x11AE, 0x11E8, 0x11BA, 0x11AF, 0x11E9, 0x11BA, 0x11B8, 0x11EA, 0x11BA, 0x11BA, 0x11BB, 0x11BC, 0x11A8, 0x11EC, 0x11BC, 0x11A9, 0x11ED, 0x11BC, 0x11BC, 0x11EE, 0x11BC, 0x11BF, 0x11EF, 0x11C1, 0x11B8, 0x11F3, 0x11C1, 0x11BC, 0x11F4, 0x11C2, 0x11AB, 0x11F5, 0x11C2, 0x11AF, 0x11F6, 0x11C2, 0x11B7, 0x11F7, 0x11C2, 0x11B8, 0x11F8, 0x11CE, 0x11C2, 0x11CF, 0x11DD, 0x11BA, 0x11DE, 0x11EC, 0x11A8, 0x11ED, 0x11F0, 0x11BA, 0x11F1, 0x11F0, 0x11EB, 0x11F2, 0x1FBF, IBUS_KEY_apostrophe, 0x1FCE, 0x1FBF, IBUS_KEY_grave, 0x1FCD, 0x1FBF, IBUS_KEY_asciitilde, 0x1FCF, 0x1FBF, IBUS_KEY_acute, 0x1FCE, 0x1FBF, IBUS_KEY_dead_grave, 0x1FCD, 0x1FBF, IBUS_KEY_dead_acute, 0x1FCE, 0x1FBF, IBUS_KEY_dead_tilde, 0x1FCF, 0x1FFE, IBUS_KEY_apostrophe, 0x1FDE, 0x1FFE, IBUS_KEY_grave, 0x1FDD, 0x1FFE, IBUS_KEY_asciitilde, 0x1FDF, 0x1FFE, IBUS_KEY_acute, 0x1FDE, 0x1FFE, IBUS_KEY_dead_grave, 0x1FDD, 0x1FFE, IBUS_KEY_dead_acute, 0x1FDE, 0x1FFE, IBUS_KEY_dead_tilde, 0x1FDF, 0x2190, IBUS_KEY_bar, 0x2345, 0x2190, 0x2395, 0x2347, 0x2191, IBUS_KEY_minus, 0x234F, 0x2191, 0x2395, 0x2350, 0x2192, IBUS_KEY_bar, 0x2346, 0x2192, 0x2395, 0x2348, 0x2193, IBUS_KEY_minus, 0x2356, 0x2193, 0x2395, 0x2357, 0x2203, 0x0338, 0x2204, 0x2206, IBUS_KEY_underscore, 0x2359, 0x2206, IBUS_KEY_bar, 0x234B, 0x2206, 0x2395, 0x234D, 0x2207, IBUS_KEY_bar, 0x2352, 0x2207, IBUS_KEY_asciitilde, 0x236B, 0x2207, IBUS_KEY_diaeresis, 0x2362, 0x2207, 0x2395, 0x2354, 0x2208, 0x0338, 0x2209, 0x220A, IBUS_KEY_underscore, 0x2377, 0x220B, 0x0338, 0x220C, 0x2218, IBUS_KEY_underscore, 0x235B, 0x2218, IBUS_KEY_diaeresis, 0x2364, 0x2218, 0x2229, 0x235D, 0x2218, IBUS_KEY_uptack, 0x2355, 0x2218, IBUS_KEY_downtack, 0x234E, 0x2218, 0x2395, 0x233B, 0x2218, IBUS_KEY_emopencircle, 0x233E, 0x2223, 0x0338, 0x2224, 0x2225, 0x0338, 0x2226, 0x2227, IBUS_KEY_asciitilde, 0x2372, 0x2227, 0x2228, 0x22C4, 0x2227, 0x2395, 0x2353, 0x2228, IBUS_KEY_asciitilde, 0x2371, 0x2228, 0x2227, 0x22C4, 0x2228, 0x2395, 0x234C, 0x2229, 0x2218, 0x235D, IBUS_KEY_union, IBUS_KEY_bar, 0x2366, 0x223C, 0x0338, 0x2241, 0x2243, 0x0338, 0x2244, 0x2248, 0x0338, 0x2249, 0x224D, 0x0338, 0x226D, 0x2260, IBUS_KEY_underscore, 0x2262, 0x2260, 0x2395, 0x236F, 0x2272, 0x0338, 0x2274, 0x2273, 0x0338, 0x2275, 0x2276, 0x0338, 0x2278, 0x2277, 0x0338, 0x2279, 0x227A, 0x0338, 0x2280, 0x227B, 0x0338, 0x2281, 0x227C, 0x0338, 0x22E0, 0x227D, 0x0338, 0x22E1, 0x2282, IBUS_KEY_underscore, 0x2286, 0x2282, IBUS_KEY_bar, 0x2367, 0x2283, IBUS_KEY_underscore, 0x2287, 0x2286, 0x0338, 0x2288, 0x2287, 0x0338, 0x2289, 0x2291, 0x0338, 0x22E2, 0x2292, 0x0338, 0x22E3, IBUS_KEY_uptack, IBUS_KEY_diaeresis, 0x2361, IBUS_KEY_uptack, IBUS_KEY_macron, 0x2351, IBUS_KEY_uptack, 0x2218, 0x2355, IBUS_KEY_uptack, IBUS_KEY_downtack, 0x2336, IBUS_KEY_downtack, IBUS_KEY_underscore, 0x234A, IBUS_KEY_downtack, 0x2218, 0x234E, IBUS_KEY_downtack, IBUS_KEY_uptack, 0x2336, 0x22A8, 0x0338, 0x22AD, 0x22A9, 0x0338, 0x22AE, 0x22AB, 0x0338, 0x22AF, 0x22B2, 0x0338, 0x22EA, 0x22B3, 0x0338, 0x22EB, 0x22B4, 0x0338, 0x22EC, 0x22B5, 0x0338, 0x22ED, 0x22C4, IBUS_KEY_underscore, 0x235A, 0x22C4, 0x2395, 0x233A, 0x2373, IBUS_KEY_underscore, 0x2378, 0x2375, IBUS_KEY_underscore, 0x2379, 0x237A, IBUS_KEY_underscore, 0x2376, 0x2395, IBUS_KEY_apostrophe, 0x235E, 0x2395, IBUS_KEY_slash, 0x2341, 0x2395, IBUS_KEY_colon, 0x2360, 0x2395, IBUS_KEY_less, 0x2343, 0x2395, IBUS_KEY_equal, 0x2338, 0x2395, IBUS_KEY_greater, 0x2344, 0x2395, IBUS_KEY_question, 0x2370, 0x2395, IBUS_KEY_backslash, 0x2342, 0x2395, IBUS_KEY_division, 0x2339, 0x2395, 0x2190, 0x2347, 0x2395, 0x2191, 0x2350, 0x2395, 0x2192, 0x2348, 0x2395, 0x2193, 0x2357, 0x2395, 0x2206, 0x234D, 0x2395, 0x2207, 0x2354, 0x2395, 0x2218, 0x233B, 0x2395, 0x2227, 0x2353, 0x2395, 0x2228, 0x234C, 0x2395, 0x2260, 0x236F, 0x2395, 0x22C4, 0x233A, 0x2395, IBUS_KEY_emopencircle, 0x233C, IBUS_KEY_emopencircle, IBUS_KEY_asterisk, 0x235F, IBUS_KEY_emopencircle, IBUS_KEY_minus, 0x2296, IBUS_KEY_emopencircle, IBUS_KEY_period, 0x2299, IBUS_KEY_emopencircle, IBUS_KEY_backslash, 0x2349, IBUS_KEY_emopencircle, IBUS_KEY_underscore, 0x235C, IBUS_KEY_emopencircle, IBUS_KEY_bar, 0x233D, IBUS_KEY_emopencircle, IBUS_KEY_diaeresis, 0x2365, IBUS_KEY_emopencircle, 0x2218, 0x233E, IBUS_KEY_emopencircle, 0x2395, 0x233C, 0x2ADD, 0x0338, 0x2ADC, IBUS_KEY_KP_Divide, IBUS_KEY_D, 0x0110, IBUS_KEY_KP_Divide, IBUS_KEY_G, 0x01E4, IBUS_KEY_KP_Divide, IBUS_KEY_H, 0x0126, IBUS_KEY_KP_Divide, IBUS_KEY_I, 0x0197, IBUS_KEY_KP_Divide, IBUS_KEY_L, 0x0141, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x00D8, IBUS_KEY_KP_Divide, IBUS_KEY_T, 0x0166, IBUS_KEY_KP_Divide, IBUS_KEY_Z, 0x01B5, IBUS_KEY_KP_Divide, IBUS_KEY_b, 0x0180, IBUS_KEY_KP_Divide, IBUS_KEY_d, 0x0111, IBUS_KEY_KP_Divide, IBUS_KEY_g, 0x01E5, IBUS_KEY_KP_Divide, IBUS_KEY_h, 0x0127, IBUS_KEY_KP_Divide, IBUS_KEY_i, 0x0268, IBUS_KEY_KP_Divide, IBUS_KEY_l, 0x0142, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x00F8, IBUS_KEY_KP_Divide, IBUS_KEY_t, 0x0167, IBUS_KEY_KP_Divide, IBUS_KEY_z, 0x01B6, IBUS_KEY_KP_Divide, 0x0294, 0x02A1, IBUS_KEY_KP_Divide, 0x04AE, 0x04B0, IBUS_KEY_KP_Divide, 0x04AF, 0x04B1, IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ghe, 0x0493, IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ka, 0x049F, IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_GHE, 0x0492, IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_KA, 0x049E, IBUS_KEY_KP_Divide, IBUS_KEY_leftarrow, 0x219A, IBUS_KEY_KP_Divide, IBUS_KEY_rightarrow, 0x219B, IBUS_KEY_KP_Divide, 0x2194, 0x21AE, IBUS_KEY_KP_Equal, 0x0338, 0x2260, IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE2, IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EF0, IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE3, IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EF1, IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4E, IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4F, IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_U, 0x1E7A, IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_u, 0x1E7B, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_space, 0x0385, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, IBUS_KEY_parenleft, IBUS_KEY_0, IBUS_KEY_parenright, 0x24EA, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_parenright, 0x2460, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_parenright, 0x2461, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_parenright, 0x2462, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_parenright, 0x2463, IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_parenright, 0x2464, IBUS_KEY_parenleft, IBUS_KEY_6, IBUS_KEY_parenright, 0x2465, IBUS_KEY_parenleft, IBUS_KEY_7, IBUS_KEY_parenright, 0x2466, IBUS_KEY_parenleft, IBUS_KEY_8, IBUS_KEY_parenright, 0x2467, IBUS_KEY_parenleft, IBUS_KEY_9, IBUS_KEY_parenright, 0x2468, IBUS_KEY_parenleft, IBUS_KEY_A, IBUS_KEY_parenright, 0x24B6, IBUS_KEY_parenleft, IBUS_KEY_B, IBUS_KEY_parenright, 0x24B7, IBUS_KEY_parenleft, IBUS_KEY_C, IBUS_KEY_parenright, 0x24B8, IBUS_KEY_parenleft, IBUS_KEY_D, IBUS_KEY_parenright, 0x24B9, IBUS_KEY_parenleft, IBUS_KEY_E, IBUS_KEY_parenright, 0x24BA, IBUS_KEY_parenleft, IBUS_KEY_F, IBUS_KEY_parenright, 0x24BB, IBUS_KEY_parenleft, IBUS_KEY_G, IBUS_KEY_parenright, 0x24BC, IBUS_KEY_parenleft, IBUS_KEY_H, IBUS_KEY_parenright, 0x24BD, IBUS_KEY_parenleft, IBUS_KEY_I, IBUS_KEY_parenright, 0x24BE, IBUS_KEY_parenleft, IBUS_KEY_J, IBUS_KEY_parenright, 0x24BF, IBUS_KEY_parenleft, IBUS_KEY_K, IBUS_KEY_parenright, 0x24C0, IBUS_KEY_parenleft, IBUS_KEY_L, IBUS_KEY_parenright, 0x24C1, IBUS_KEY_parenleft, IBUS_KEY_M, IBUS_KEY_parenright, 0x24C2, IBUS_KEY_parenleft, IBUS_KEY_N, IBUS_KEY_parenright, 0x24C3, IBUS_KEY_parenleft, IBUS_KEY_O, IBUS_KEY_parenright, 0x24C4, IBUS_KEY_parenleft, IBUS_KEY_P, IBUS_KEY_parenright, 0x24C5, IBUS_KEY_parenleft, IBUS_KEY_Q, IBUS_KEY_parenright, 0x24C6, IBUS_KEY_parenleft, IBUS_KEY_R, IBUS_KEY_parenright, 0x24C7, IBUS_KEY_parenleft, IBUS_KEY_S, IBUS_KEY_parenright, 0x24C8, IBUS_KEY_parenleft, IBUS_KEY_T, IBUS_KEY_parenright, 0x24C9, IBUS_KEY_parenleft, IBUS_KEY_U, IBUS_KEY_parenright, 0x24CA, IBUS_KEY_parenleft, IBUS_KEY_V, IBUS_KEY_parenright, 0x24CB, IBUS_KEY_parenleft, IBUS_KEY_W, IBUS_KEY_parenright, 0x24CC, IBUS_KEY_parenleft, IBUS_KEY_X, IBUS_KEY_parenright, 0x24CD, IBUS_KEY_parenleft, IBUS_KEY_Y, IBUS_KEY_parenright, 0x24CE, IBUS_KEY_parenleft, IBUS_KEY_Z, IBUS_KEY_parenright, 0x24CF, IBUS_KEY_parenleft, IBUS_KEY_a, IBUS_KEY_parenright, 0x24D0, IBUS_KEY_parenleft, IBUS_KEY_b, IBUS_KEY_parenright, 0x24D1, IBUS_KEY_parenleft, IBUS_KEY_c, IBUS_KEY_parenright, 0x24D2, IBUS_KEY_parenleft, IBUS_KEY_d, IBUS_KEY_parenright, 0x24D3, IBUS_KEY_parenleft, IBUS_KEY_e, IBUS_KEY_parenright, 0x24D4, IBUS_KEY_parenleft, IBUS_KEY_f, IBUS_KEY_parenright, 0x24D5, IBUS_KEY_parenleft, IBUS_KEY_g, IBUS_KEY_parenright, 0x24D6, IBUS_KEY_parenleft, IBUS_KEY_h, IBUS_KEY_parenright, 0x24D7, IBUS_KEY_parenleft, IBUS_KEY_i, IBUS_KEY_parenright, 0x24D8, IBUS_KEY_parenleft, IBUS_KEY_j, IBUS_KEY_parenright, 0x24D9, IBUS_KEY_parenleft, IBUS_KEY_k, IBUS_KEY_parenright, 0x24DA, IBUS_KEY_parenleft, IBUS_KEY_l, IBUS_KEY_parenright, 0x24DB, IBUS_KEY_parenleft, IBUS_KEY_m, IBUS_KEY_parenright, 0x24DC, IBUS_KEY_parenleft, IBUS_KEY_n, IBUS_KEY_parenright, 0x24DD, IBUS_KEY_parenleft, IBUS_KEY_o, IBUS_KEY_parenright, 0x24DE, IBUS_KEY_parenleft, IBUS_KEY_p, IBUS_KEY_parenright, 0x24DF, IBUS_KEY_parenleft, IBUS_KEY_q, IBUS_KEY_parenright, 0x24E0, IBUS_KEY_parenleft, IBUS_KEY_r, IBUS_KEY_parenright, 0x24E1, IBUS_KEY_parenleft, IBUS_KEY_s, IBUS_KEY_parenright, 0x24E2, IBUS_KEY_parenleft, IBUS_KEY_t, IBUS_KEY_parenright, 0x24E3, IBUS_KEY_parenleft, IBUS_KEY_u, IBUS_KEY_parenright, 0x24E4, IBUS_KEY_parenleft, IBUS_KEY_v, IBUS_KEY_parenright, 0x24E5, IBUS_KEY_parenleft, IBUS_KEY_w, IBUS_KEY_parenright, 0x24E6, IBUS_KEY_parenleft, IBUS_KEY_x, IBUS_KEY_parenright, 0x24E7, IBUS_KEY_parenleft, IBUS_KEY_y, IBUS_KEY_parenright, 0x24E8, IBUS_KEY_parenleft, IBUS_KEY_z, IBUS_KEY_parenright, 0x24E9, IBUS_KEY_parenleft, IBUS_KEY_kana_WO, IBUS_KEY_parenright, 0x32FE, IBUS_KEY_parenleft, IBUS_KEY_kana_A, IBUS_KEY_parenright, 0x32D0, IBUS_KEY_parenleft, IBUS_KEY_kana_I, IBUS_KEY_parenright, 0x32D1, IBUS_KEY_parenleft, IBUS_KEY_kana_U, IBUS_KEY_parenright, 0x32D2, IBUS_KEY_parenleft, IBUS_KEY_kana_E, IBUS_KEY_parenright, 0x32D3, IBUS_KEY_parenleft, IBUS_KEY_kana_O, IBUS_KEY_parenright, 0x32D4, IBUS_KEY_parenleft, IBUS_KEY_kana_KA, IBUS_KEY_parenright, 0x32D5, IBUS_KEY_parenleft, IBUS_KEY_kana_KI, IBUS_KEY_parenright, 0x32D6, IBUS_KEY_parenleft, IBUS_KEY_kana_KU, IBUS_KEY_parenright, 0x32D7, IBUS_KEY_parenleft, IBUS_KEY_kana_KE, IBUS_KEY_parenright, 0x32D8, IBUS_KEY_parenleft, IBUS_KEY_kana_KO, IBUS_KEY_parenright, 0x32D9, IBUS_KEY_parenleft, IBUS_KEY_kana_SA, IBUS_KEY_parenright, 0x32DA, IBUS_KEY_parenleft, IBUS_KEY_kana_SHI, IBUS_KEY_parenright, 0x32DB, IBUS_KEY_parenleft, IBUS_KEY_kana_SU, IBUS_KEY_parenright, 0x32DC, IBUS_KEY_parenleft, IBUS_KEY_kana_SE, IBUS_KEY_parenright, 0x32DD, IBUS_KEY_parenleft, IBUS_KEY_kana_SO, IBUS_KEY_parenright, 0x32DE, IBUS_KEY_parenleft, IBUS_KEY_kana_TA, IBUS_KEY_parenright, 0x32DF, IBUS_KEY_parenleft, IBUS_KEY_kana_CHI, IBUS_KEY_parenright, 0x32E0, IBUS_KEY_parenleft, IBUS_KEY_kana_TSU, IBUS_KEY_parenright, 0x32E1, IBUS_KEY_parenleft, IBUS_KEY_kana_TE, IBUS_KEY_parenright, 0x32E2, IBUS_KEY_parenleft, IBUS_KEY_kana_TO, IBUS_KEY_parenright, 0x32E3, IBUS_KEY_parenleft, IBUS_KEY_kana_NA, IBUS_KEY_parenright, 0x32E4, IBUS_KEY_parenleft, IBUS_KEY_kana_NI, IBUS_KEY_parenright, 0x32E5, IBUS_KEY_parenleft, IBUS_KEY_kana_NU, IBUS_KEY_parenright, 0x32E6, IBUS_KEY_parenleft, IBUS_KEY_kana_NE, IBUS_KEY_parenright, 0x32E7, IBUS_KEY_parenleft, IBUS_KEY_kana_NO, IBUS_KEY_parenright, 0x32E8, IBUS_KEY_parenleft, IBUS_KEY_kana_HA, IBUS_KEY_parenright, 0x32E9, IBUS_KEY_parenleft, IBUS_KEY_kana_HI, IBUS_KEY_parenright, 0x32EA, IBUS_KEY_parenleft, IBUS_KEY_kana_FU, IBUS_KEY_parenright, 0x32EB, IBUS_KEY_parenleft, IBUS_KEY_kana_HE, IBUS_KEY_parenright, 0x32EC, IBUS_KEY_parenleft, IBUS_KEY_kana_HO, IBUS_KEY_parenright, 0x32ED, IBUS_KEY_parenleft, IBUS_KEY_kana_MA, IBUS_KEY_parenright, 0x32EE, IBUS_KEY_parenleft, IBUS_KEY_kana_MI, IBUS_KEY_parenright, 0x32EF, IBUS_KEY_parenleft, IBUS_KEY_kana_MU, IBUS_KEY_parenright, 0x32F0, IBUS_KEY_parenleft, IBUS_KEY_kana_ME, IBUS_KEY_parenright, 0x32F1, IBUS_KEY_parenleft, IBUS_KEY_kana_MO, IBUS_KEY_parenright, 0x32F2, IBUS_KEY_parenleft, IBUS_KEY_kana_YA, IBUS_KEY_parenright, 0x32F3, IBUS_KEY_parenleft, IBUS_KEY_kana_YU, IBUS_KEY_parenright, 0x32F4, IBUS_KEY_parenleft, IBUS_KEY_kana_YO, IBUS_KEY_parenright, 0x32F5, IBUS_KEY_parenleft, IBUS_KEY_kana_RA, IBUS_KEY_parenright, 0x32F6, IBUS_KEY_parenleft, IBUS_KEY_kana_RI, IBUS_KEY_parenright, 0x32F7, IBUS_KEY_parenleft, IBUS_KEY_kana_RU, IBUS_KEY_parenright, 0x32F8, IBUS_KEY_parenleft, IBUS_KEY_kana_RE, IBUS_KEY_parenright, 0x32F9, IBUS_KEY_parenleft, IBUS_KEY_kana_RO, IBUS_KEY_parenright, 0x32FA, IBUS_KEY_parenleft, IBUS_KEY_kana_WA, IBUS_KEY_parenright, 0x32FB, IBUS_KEY_parenleft, 0x1100, IBUS_KEY_parenright, 0x3260, IBUS_KEY_parenleft, 0x1102, IBUS_KEY_parenright, 0x3261, IBUS_KEY_parenleft, 0x1103, IBUS_KEY_parenright, 0x3262, IBUS_KEY_parenleft, 0x1105, IBUS_KEY_parenright, 0x3263, IBUS_KEY_parenleft, 0x1106, IBUS_KEY_parenright, 0x3264, IBUS_KEY_parenleft, 0x1107, IBUS_KEY_parenright, 0x3265, IBUS_KEY_parenleft, 0x1109, IBUS_KEY_parenright, 0x3266, IBUS_KEY_parenleft, 0x110B, IBUS_KEY_parenright, 0x3267, IBUS_KEY_parenleft, 0x110C, IBUS_KEY_parenright, 0x3268, IBUS_KEY_parenleft, 0x110E, IBUS_KEY_parenright, 0x3269, IBUS_KEY_parenleft, 0x110F, IBUS_KEY_parenright, 0x326A, IBUS_KEY_parenleft, 0x1110, IBUS_KEY_parenright, 0x326B, IBUS_KEY_parenleft, 0x1111, IBUS_KEY_parenright, 0x326C, IBUS_KEY_parenleft, 0x1112, IBUS_KEY_parenright, 0x326D, IBUS_KEY_parenleft, 0x30F0, IBUS_KEY_parenright, 0x32FC, IBUS_KEY_parenleft, 0x30F1, IBUS_KEY_parenright, 0x32FD, IBUS_KEY_parenleft, 0x4E00, IBUS_KEY_parenright, 0x3280, IBUS_KEY_parenleft, 0x4E03, IBUS_KEY_parenright, 0x3286, IBUS_KEY_parenleft, 0x4E09, IBUS_KEY_parenright, 0x3282, IBUS_KEY_parenleft, 0x4E0A, IBUS_KEY_parenright, 0x32A4, IBUS_KEY_parenleft, 0x4E0B, IBUS_KEY_parenright, 0x32A6, IBUS_KEY_parenleft, 0x4E2D, IBUS_KEY_parenright, 0x32A5, IBUS_KEY_parenleft, 0x4E5D, IBUS_KEY_parenright, 0x3288, IBUS_KEY_parenleft, 0x4E8C, IBUS_KEY_parenright, 0x3281, IBUS_KEY_parenleft, 0x4E94, IBUS_KEY_parenright, 0x3284, IBUS_KEY_parenleft, 0x4F01, IBUS_KEY_parenright, 0x32AD, IBUS_KEY_parenleft, 0x4F11, IBUS_KEY_parenright, 0x32A1, IBUS_KEY_parenleft, 0x512A, IBUS_KEY_parenright, 0x329D, IBUS_KEY_parenleft, 0x516B, IBUS_KEY_parenright, 0x3287, IBUS_KEY_parenleft, 0x516D, IBUS_KEY_parenright, 0x3285, IBUS_KEY_parenleft, 0x5199, IBUS_KEY_parenright, 0x32A2, IBUS_KEY_parenleft, 0x52B4, IBUS_KEY_parenright, 0x3298, IBUS_KEY_parenleft, 0x533B, IBUS_KEY_parenright, 0x32A9, IBUS_KEY_parenleft, 0x5341, IBUS_KEY_parenright, 0x3289, IBUS_KEY_parenleft, 0x5354, IBUS_KEY_parenright, 0x32AF, IBUS_KEY_parenleft, 0x5370, IBUS_KEY_parenright, 0x329E, IBUS_KEY_parenleft, 0x53F3, IBUS_KEY_parenright, 0x32A8, IBUS_KEY_parenleft, 0x540D, IBUS_KEY_parenright, 0x3294, IBUS_KEY_parenleft, 0x56DB, IBUS_KEY_parenright, 0x3283, IBUS_KEY_parenleft, 0x571F, IBUS_KEY_parenright, 0x328F, IBUS_KEY_parenleft, 0x591C, IBUS_KEY_parenright, 0x32B0, IBUS_KEY_parenleft, 0x5973, IBUS_KEY_parenright, 0x329B, IBUS_KEY_parenleft, 0x5B66, IBUS_KEY_parenright, 0x32AB, IBUS_KEY_parenleft, 0x5B97, IBUS_KEY_parenright, 0x32AA, IBUS_KEY_parenleft, 0x5DE6, IBUS_KEY_parenright, 0x32A7, IBUS_KEY_parenleft, 0x65E5, IBUS_KEY_parenright, 0x3290, IBUS_KEY_parenleft, 0x6708, IBUS_KEY_parenright, 0x328A, IBUS_KEY_parenleft, 0x6709, IBUS_KEY_parenright, 0x3292, IBUS_KEY_parenleft, 0x6728, IBUS_KEY_parenright, 0x328D, IBUS_KEY_parenleft, 0x682A, IBUS_KEY_parenright, 0x3291, IBUS_KEY_parenleft, 0x6B63, IBUS_KEY_parenright, 0x32A3, IBUS_KEY_parenleft, 0x6C34, IBUS_KEY_parenright, 0x328C, IBUS_KEY_parenleft, 0x6CE8, IBUS_KEY_parenright, 0x329F, IBUS_KEY_parenleft, 0x706B, IBUS_KEY_parenright, 0x328B, IBUS_KEY_parenleft, 0x7279, IBUS_KEY_parenright, 0x3295, IBUS_KEY_parenleft, 0x7537, IBUS_KEY_parenright, 0x329A, IBUS_KEY_parenleft, 0x76E3, IBUS_KEY_parenright, 0x32AC, IBUS_KEY_parenleft, 0x793E, IBUS_KEY_parenright, 0x3293, IBUS_KEY_parenleft, 0x795D, IBUS_KEY_parenright, 0x3297, IBUS_KEY_parenleft, 0x79D8, IBUS_KEY_parenright, 0x3299, IBUS_KEY_parenleft, 0x8CA1, IBUS_KEY_parenright, 0x3296, IBUS_KEY_parenleft, 0x8CC7, IBUS_KEY_parenright, 0x32AE, IBUS_KEY_parenleft, 0x9069, IBUS_KEY_parenright, 0x329C, IBUS_KEY_parenleft, 0x91D1, IBUS_KEY_parenright, 0x328E, IBUS_KEY_parenleft, 0x9805, IBUS_KEY_parenright, 0x32A0, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x2461, IBUS_KEY_parenleft, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x24EA, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x2460, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x2461, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x2462, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x2463, IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x2464, IBUS_KEY_parenleft, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x2465, IBUS_KEY_parenleft, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2466, IBUS_KEY_parenleft, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2467, IBUS_KEY_parenleft, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2468, IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_A, 0x01FA, IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_a, 0x01FB, IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_space, 0x00AD, IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_minus, 0x2014, IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_period, 0x2013, IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_S, 0x1E64, IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_s, 0x1E65, IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_S, 0x1E66, IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_s, 0x1E67, IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_S, 0x1E68, IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_s, 0x1E69, IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_0, 0x2152, IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA8, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC2, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED4, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA9, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC3, IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED5, IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB2, IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB3, IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDE, IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEC, IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDF, IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EED, IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0263, 0x02E0, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0266, 0x02B1, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0279, 0x02B4, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x027B, 0x02B5, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0281, 0x02B6, IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0295, 0x02E4, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0263, 0x02E0, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0266, 0x02B1, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0279, 0x02B4, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x027B, 0x02B5, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0281, 0x02B6, IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0295, 0x02E4, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EAC, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_E, 0x1EC6, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_O, 0x1ED8, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EAD, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_e, 0x1EC7, IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_o, 0x1ED9, IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_O, 0x0230, IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_o, 0x0231, IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA6, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC0, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED2, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA7, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC1, IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED3, IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E14, IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E50, IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E15, IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E51, IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB0, IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB1, IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01DB, IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DC, IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDC, IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEA, IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDD, IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEB, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D9, IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DA, IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EAA, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC4, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED6, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EAB, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC5, IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED7, IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB4, IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB5, IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE0, IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEE, IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE1, IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEF, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_O, 0x0230, IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_o, 0x0231, IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, 0x05C1, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2C, 0x05C2, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F00, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F01, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F08, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F09, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F20, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F21, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F28, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F29, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F60, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F61, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F68, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F69, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F00, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F01, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F08, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F09, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F20, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F21, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F28, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F29, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F60, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F61, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F68, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F69, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F00, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F01, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F08, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F09, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F20, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F21, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F28, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F29, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F60, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F61, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F68, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F69, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F00, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F01, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F08, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F09, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F20, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F21, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F28, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F29, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F60, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F61, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F68, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F69, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, IBUS_KEY_dead_abovedot, IBUS_KEY_f, IBUS_KEY_s, 0x1E9B, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32BF, IBUS_KEY_parenleft, 0x1100, 0x1161, IBUS_KEY_parenright, 0x326E, IBUS_KEY_parenleft, 0x1102, 0x1161, IBUS_KEY_parenright, 0x326F, IBUS_KEY_parenleft, 0x1103, 0x1161, IBUS_KEY_parenright, 0x3270, IBUS_KEY_parenleft, 0x1105, 0x1161, IBUS_KEY_parenright, 0x3271, IBUS_KEY_parenleft, 0x1106, 0x1161, IBUS_KEY_parenright, 0x3272, IBUS_KEY_parenleft, 0x1107, 0x1161, IBUS_KEY_parenright, 0x3273, IBUS_KEY_parenleft, 0x1109, 0x1161, IBUS_KEY_parenright, 0x3274, IBUS_KEY_parenleft, 0x110B, 0x1161, IBUS_KEY_parenright, 0x3275, IBUS_KEY_parenleft, 0x110C, 0x1161, IBUS_KEY_parenright, 0x3276, IBUS_KEY_parenleft, 0x110E, 0x1161, IBUS_KEY_parenright, 0x3277, IBUS_KEY_parenleft, 0x110F, 0x1161, IBUS_KEY_parenright, 0x3278, IBUS_KEY_parenleft, 0x1110, 0x1161, IBUS_KEY_parenright, 0x3279, IBUS_KEY_parenleft, 0x1111, 0x1161, IBUS_KEY_parenright, 0x327A, IBUS_KEY_parenleft, 0x1112, 0x1161, IBUS_KEY_parenright, 0x327B, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32BF, IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_P, 0x262D, IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, }; #endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */ ibus-1.5.11/src/ibusutil.c0000644000000000000000000001132112551654123012225 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2010-2015 Takao Fujiwara * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "ibusxml.h" #ifdef ENABLE_NLS #include #endif /* gettext macro */ #define N_(t) t static GHashTable *__languages_dict; static gboolean _iso_codes_parse_xml_node (XMLNode *node) { GList *p; g_assert (node); if (G_UNLIKELY (g_strcmp0 (node->name, "iso_639_entries") != 0)) { return FALSE; } for (p = node->sub_nodes; p != NULL; p = p->next) { XMLNode *sub_node = (XMLNode *)p->data; gchar **attributes = NULL; int i, j; struct { const gchar *key; gchar *value; } entries[] = { { "iso_639_2B_code", NULL }, { "iso_639_2T_code", NULL }, { "iso_639_1_code", NULL }, }; if (sub_node->attributes == NULL) { continue; } attributes = sub_node->attributes; for (i = 0; attributes[i]; i += 2) { if (g_strcmp0 (attributes[i], "name") == 0) { for (j = 0; j < G_N_ELEMENTS (entries); j++) { if (entries[j].value == NULL) continue; g_hash_table_insert (__languages_dict, (gpointer) g_strdup (entries[j].value), (gpointer) g_strdup (attributes[i + 1])); entries[j].value = NULL; } } else { for (j = 0; j < G_N_ELEMENTS (entries); j++) { if (g_strcmp0 (attributes[i], entries[j].key) == 0 && attributes[i + 1] != NULL) { entries[j].value = attributes[i + 1]; } } } } } return TRUE; } void _load_lang() { gchar *filename; XMLNode *node; struct stat buf; #ifdef ENABLE_NLS bindtextdomain ("iso_639", GLIB_LOCALE_DIR); bind_textdomain_codeset ("iso_639", "UTF-8"); #endif __languages_dict = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); filename = g_build_filename (ISOCODES_PREFIX, "share/xml/iso-codes/iso_639.xml", NULL); if (g_stat (filename, &buf) != 0) { g_warning ("Can not get stat of file %s", filename); g_free (filename); return; } node = ibus_xml_parse_file (filename); g_free (filename); if (!node) { return; } _iso_codes_parse_xml_node (node); ibus_xml_free (node); } const gchar * ibus_get_untranslated_language_name (const gchar *_locale) { const gchar *retval; gchar *p = NULL; gchar *lang = NULL; if (__languages_dict == NULL ) _load_lang(); if ((p = strchr (_locale, '_')) != NULL) p = g_strndup (_locale, p - _locale); else p = g_strdup (_locale); lang = g_ascii_strdown (p, -1); g_free (p); retval = (const gchar *) g_hash_table_lookup (__languages_dict, lang); g_free (lang); if (retval != NULL) return retval; else return "Other"; } const gchar * ibus_get_language_name (const gchar *_locale) { const gchar *retval = ibus_get_untranslated_language_name (_locale); #ifdef ENABLE_NLS if (g_strcmp0 (retval, "Other") == 0) return dgettext (GETTEXT_PACKAGE, N_("Other")); else return dgettext ("iso_639", retval); #else return retval; #endif } void ibus_g_variant_get_child_string (GVariant *variant, gsize index, char **str) { g_return_if_fail (str != NULL); g_free (*str); g_variant_get_child (variant, index, "s", str); } ibus-1.5.11/src/ibusobject.h0000644000000000000000000001042312551654123012525 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_OBJECT_H_ #define __IBUS_OBJECT_H_ /** * SECTION: ibusobject * @short_description: Base object of IBus. * @title: IBusObject * @stability: Stable * * IBusObject is the base object for all objects in IBus. */ #include #include "ibustypes.h" #include "ibusdebug.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_OBJECT \ (ibus_object_get_type ()) #define IBUS_OBJECT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_OBJECT, IBusObject)) #define IBUS_OBJECT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_OBJECT, IBusObjectClass)) #define IBUS_IS_OBJECT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_OBJECT)) #define IBUS_IS_OBJECT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_OBJECT)) #define IBUS_OBJECT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_OBJECT, IBusObjectClass)) /** * IBusObjectFlags: * @IBUS_IN_DESTRUCTION: Used in GObjectClass::dispose * @IBUS_DESTROYED: Used during emitting IBusObject::destroy signal. * @IBUS_RESERVED_1: Reserved. * @IBUS_RESERVED_2: Reserved. * * The flags are used internally. */ typedef enum { IBUS_IN_DESTRUCTION = (1 << 0), IBUS_DESTROYED = (1 << 1), IBUS_RESERVED_1 = (1 << 2), IBUS_RESERVED_2 = (1 << 3), } IBusObjectFlags; #define IBUS_OBJECT_FLAGS(obj) (IBUS_OBJECT (obj)->flags) #define IBUS_OBJECT_SET_FLAGS(obj,flag) G_STMT_START{ (IBUS_OBJECT_FLAGS (obj) |= (flag)); }G_STMT_END #define IBUS_OBJECT_UNSET_FLAGS(obj,flag) G_STMT_START{ (IBUS_OBJECT_FLAGS (obj) &= ~(flag)); }G_STMT_END #define IBUS_OBJECT_IN_DESTRUCTION(obj) (IBUS_OBJECT_FLAGS (obj) & IBUS_IN_DESTRUCTION) #define IBUS_OBJECT_DESTROYED(obj) (IBUS_OBJECT_FLAGS (obj) & IBUS_DESTROYED) G_BEGIN_DECLS typedef struct _IBusObject IBusObject; typedef struct _IBusObjectClass IBusObjectClass; typedef struct _IBusObjectPrivate IBusObjectPrivate; /** * IBusObject: * * All the fields in the IBusObject structure are * private to the #IBusObject and should never be accessed directly. */ struct _IBusObject { GInitiallyUnowned parent; /* instance members */ guint32 flags; IBusObjectPrivate *priv; }; typedef void ( *IBusObjectDestroyFunc) (IBusObject *object); struct _IBusObjectClass { GInitiallyUnownedClass parent; /* signals */ void (* destroy) (IBusObject *object); /*< private >*/ /* padding */ gpointer pdummy[7]; }; GType ibus_object_get_type (void); /** * ibus_object_new: * * Creates a new #IBusObject. * * Returns: A newly allocated #IBusObject */ IBusObject *ibus_object_new (void); /** * ibus_object_destroy: * @object: an #IBusObject to destroy. * * Emit the "destory" signal notifying all reference holders that they should * release the #IBusObject. * * The memory for the object itself won't be deleted until its reference count * actually drops to 0; ibus_object_destroy merely asks reference holders to * release their references. It does not free the object. */ void ibus_object_destroy (IBusObject *object); G_END_DECLS #endif ibus-1.5.11/src/ibusattribute.h0000644000000000000000000001600012551654123013257 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ATTRIBUTE_H_ #define __IBUS_ATTRIBUTE_H_ /** * SECTION: ibusattribute * @short_description: Attributes of IBusText. * @see_also: #IBusText * @stability: Stable * * An IBusAttribute represents an attribute that associate to IBusText. * It decorates preedit buffer and auxiliary text with underline, foreground * and background colors. */ #include "ibusserializable.h" G_BEGIN_DECLS /* * Type macros. */ /* define IBusAttribute macros */ #define IBUS_TYPE_ATTRIBUTE \ (ibus_attribute_get_type ()) #define IBUS_ATTRIBUTE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ATTRIBUTE, IBusAttribute)) #define IBUS_ATTRIBUTE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ATTRIBUTE, IBusAttributeClass)) #define IBUS_IS_ATTRIBUTE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ATTRIBUTE)) #define IBUS_IS_ATTRIBUTE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ATTRIBUTE)) #define IBUS_ATTRIBUTE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTRIBUTE, IBusAttributeClass)) /** * IBusAttrType: * @IBUS_ATTR_TYPE_UNDERLINE: Decorate with underline. * @IBUS_ATTR_TYPE_FOREGROUND: Foreground color. * @IBUS_ATTR_TYPE_BACKGROUND: Background color. * * Type enumeration of IBusText attribute. */ typedef enum { IBUS_ATTR_TYPE_UNDERLINE = 1, IBUS_ATTR_TYPE_FOREGROUND = 2, IBUS_ATTR_TYPE_BACKGROUND = 3, } IBusAttrType; /** * IBusAttrUnderline: * @IBUS_ATTR_UNDERLINE_NONE: No underline. * @IBUS_ATTR_UNDERLINE_SINGLE: Single underline. * @IBUS_ATTR_UNDERLINE_DOUBLE: Double underline. * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? FIXME * @IBUS_ATTR_UNDERLINE_ERROR: Error underline * * Type of IBusText attribute. */ typedef enum { IBUS_ATTR_UNDERLINE_NONE = 0, IBUS_ATTR_UNDERLINE_SINGLE = 1, IBUS_ATTR_UNDERLINE_DOUBLE = 2, IBUS_ATTR_UNDERLINE_LOW = 3, IBUS_ATTR_UNDERLINE_ERROR = 4, } IBusAttrUnderline; typedef struct _IBusAttribute IBusAttribute; typedef struct _IBusAttributeClass IBusAttributeClass; /** * IBusAttribute: * @type: IBusAttributeType * @value: Value for the type. * @start_index: The starting index, inclusive. * @end_index: The ending index, exclusive. * * Signify the type, value and scope of the attribute. * The scope starts from @start_index till the @end_index-1. */ struct _IBusAttribute { IBusSerializable parent; /*< public >*/ guint type; guint value; guint start_index; guint end_index; }; struct _IBusAttributeClass { IBusSerializableClass parent; }; /** * ibus_attribute_get_type: * @returns: GType of IBusAttribute. * * Returns GType of IBusAttribute. */ GType ibus_attribute_get_type (); /** * ibus_attribute_new: * @type: Type of the attribute. * @value: Value of the attribute. * @start_index: Where attribute starts. * @end_index: Where attribute ends. * * Creates a new IBusAttribute. * * Returns: (transfer none): A newly allocated IBusAttribute. */ IBusAttribute *ibus_attribute_new (guint type, guint value, guint start_index, guint end_index); /** * ibus_attribute_get_attr_type: * @attr: An #IBusAttribute * * Gets an enum of #IBusAttrType. * * Returns: An enum of #IBusAttrType. */ guint ibus_attribute_get_attr_type (IBusAttribute *attr); /** * ibus_attribute_get_value: * @attr: An #IBusAttribute * * Gets an unsigned int value relative with #IBusAttrType. * If the type is %IBUS_ATTR_TYPE_UNDERLINE, the return value is * #IBusAttrUnderline. If the type is %IBUS_ATTR_TYPE_FOREGROUND, * the return value is the color RGB. * * Returns: An unsigned int value relative with #IBusAttrType. */ guint ibus_attribute_get_value (IBusAttribute *attr); /** * ibus_attribute_get_start_index: * @attr: An #IBusAttribute * * Gets a start unsigned index * * Returns: A start unsigned index */ guint ibus_attribute_get_start_index (IBusAttribute *attr); /** * ibus_attribute_get_end_index: * @attr: An #IBusAttribute * * Gets an end unsigned index * * Returns: A end unsigned index */ guint ibus_attribute_get_end_index (IBusAttribute *attr); /** * ibus_attr_underline_new: * @underline_type: Type of underline. * @start_index: Where attribute starts. * @end_index: Where attribute ends. * * Creates a new underline #IBusAttribute. * * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_underline_new (guint underline_type, guint start_index, guint end_index); /** * ibus_attr_foreground_new: * @color: Color in RGB. * @start_index: Where attribute starts. * @end_index: Where attribute ends. * * Creates a new foreground #IBusAttribute. * * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_foreground_new (guint color, guint start_index, guint end_index); /** * ibus_attr_background_new: * @color: Color in RGB. * @start_index: Where attribute starts. * @end_index: Where attribute ends. * * Creates a new background #IBusAttribute. * * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_background_new (guint color, guint start_index, guint end_index); G_END_DECLS #endif ibus-1.5.11/src/ibushotkey.h0000644000000000000000000001535612551654123012574 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_HOTKEY_H_ #define __IBUS_HOTKEY_H_ /** * SECTION: ibushotkey * @short_description: Hotkeys and associated events. * @stability: Stable * * An IBusHotkeyProfile associates a hotkey and an event. */ #include "ibusserializable.h" /* * Type macros. */ /* define IBusHotkeyProfile macros */ #define IBUS_TYPE_HOTKEY_PROFILE \ (ibus_hotkey_profile_get_type ()) #define IBUS_HOTKEY_PROFILE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_HOTKEY_PROFILE, IBusHotkeyProfile)) #define IBUS_HOTKEY_PROFILE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_HOTKEY_PROFILE, IBusHotkeyProfileClass)) #define IBUS_IS_HOTKEY_PROFILE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_HOTKEY_PROFILE)) #define IBUS_IS_HOTKEY_PROFILE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_HOTKEY_PROFILE)) #define IBUS_HOTKEY_PROFILE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_HOTKEY_PROFILE, IBusHotkeyProfileClass)) G_BEGIN_DECLS typedef struct _IBusHotkeyProfile IBusHotkeyProfile; typedef struct _IBusHotkeyProfileClass IBusHotkeyProfileClass; /** * IBusHotkeyProfile: * * An opaque data type representing an IBusHotkeyProfile. */ struct _IBusHotkeyProfile { IBusSerializable parent; /* members */ }; struct _IBusHotkeyProfileClass { IBusSerializableClass parent; void (* trigger) (IBusHotkeyProfile *profile, GQuark event, gpointer user_data); }; /* hotkey profile functions */ GType ibus_hotkey_profile_get_type (void); /** * ibus_hotkey_profile_new: * * Creates a new #IBusHotkeyProfile. * * Returns: A newly allocated #IBusHotkeyProfile. */ IBusHotkeyProfile *ibus_hotkey_profile_new (void); /** * ibus_hotkey_profile_add_hotkey : * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. * @event: The event to be associated. * * Adds a hotkey and its associated event to an #IBusHotkeyProfile. * * Returns: Always %TRUE. */ gboolean ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers, GQuark event); /** * ibus_hotkey_profile_add_hotkey_from_string: * @profile: An IBusHotkeyProfile. * @str: Key in string representation. '+' is the separator. * @event: The event to be associated. * * Adds a hotkey and its associated event to an #IBusHotkeyProfile. * The hotkey is in string format, such like * Control+Shift+A. * * Returns: FALSE if @str contains invalid symbol; TRUE otherwise. */ gboolean ibus_hotkey_profile_add_hotkey_from_string (IBusHotkeyProfile *profile, const gchar *str, GQuark event); /** * ibus_hotkey_profile_remove_hotkey: * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. * * Removes the hotkey for an #IBusHotkeyProfile. * * Returns: %FALSE if the key is not in @profile, %TRUE otherwise. */ gboolean ibus_hotkey_profile_remove_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers); /** * ibus_hotkey_profile_remove_hotkey_by_event: * @profile: An IBusHotkeyProfile. * @event: The associated event. * * Removes the hotkey for an #IBusHotkeyProfile by event. * * Returns: %FALSE if no such event in @profile, %TRUE otherwise. */ gboolean ibus_hotkey_profile_remove_hotkey_by_event (IBusHotkeyProfile *profile, GQuark event); /** * ibus_hotkey_profile_filter_key_event: * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. * @prev_keyval: Keycode of the hotkey. * @prev_modifiers: Modifiers of the hotkey. * @user_data: user data for signal "trigger". * * Emits a ::trigger signal when a hotkey is in a profile. * * Returns: 0 if releasing a hotkey and the hotkey is not in the profile; * an associated event otherwise. * * See also: ::trigger */ GQuark ibus_hotkey_profile_filter_key_event (IBusHotkeyProfile *profile, guint keyval, guint modifiers, guint prev_keyval, guint prev_modifiers, gpointer user_data); /** * ibus_hotkey_profile_lookup_hotkey: * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. * * Returns: The event associated to the hotkey or 0 if the hotkey is not in the * profile. */ GQuark ibus_hotkey_profile_lookup_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers); G_END_DECLS #endif ibus-1.5.11/src/ibuslookuptable.c0000644000000000000000000003352612551654123013604 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibuslookuptable.h" /* functions prototype */ static void ibus_lookup_table_destroy (IBusLookupTable *table); static gboolean ibus_lookup_table_serialize (IBusLookupTable *table, GVariantBuilder *builder); static gint ibus_lookup_table_deserialize (IBusLookupTable *table, GVariant *variant); static gboolean ibus_lookup_table_copy (IBusLookupTable *dest, IBusLookupTable *src); G_DEFINE_TYPE (IBusLookupTable, ibus_lookup_table, IBUS_TYPE_SERIALIZABLE) static void ibus_lookup_table_class_init (IBusLookupTableClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_lookup_table_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_lookup_table_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_lookup_table_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_lookup_table_copy; } static void ibus_lookup_table_init (IBusLookupTable *table) { table->candidates = g_array_new (TRUE, TRUE, sizeof (IBusText *)); table->labels = g_array_new (TRUE, TRUE, sizeof (IBusText *)); } static void ibus_lookup_table_destroy (IBusLookupTable *table) { IBusText **p; gint i; if (table->candidates != NULL) { p = (IBusText **) g_array_free (table->candidates, FALSE); table->candidates = NULL; for (i = 0; p[i] != NULL; i++) { g_object_unref (p[i]); } g_free (p); } if (table->labels != NULL) { p = (IBusText **) g_array_free (table->labels, FALSE); table->labels = NULL; for (i = 0; p[i] != NULL; i++) { g_object_unref (p[i]); } g_free (p); } IBUS_OBJECT_CLASS (ibus_lookup_table_parent_class)->destroy ((IBusObject *) table); } static gboolean ibus_lookup_table_serialize (IBusLookupTable *table, GVariantBuilder *builder) { gboolean retval; guint i; retval = IBUS_SERIALIZABLE_CLASS (ibus_lookup_table_parent_class)->serialize ((IBusSerializable *)table, builder); g_return_val_if_fail (retval, 0); g_return_val_if_fail (IBUS_IS_LOOKUP_TABLE (table), 0); g_variant_builder_add (builder, "u", table->page_size); g_variant_builder_add (builder, "u", table->cursor_pos); g_variant_builder_add (builder, "b", table->cursor_visible); g_variant_builder_add (builder, "b", table->round); g_variant_builder_add (builder, "i", table->orientation); GVariantBuilder array; /* append candidates */ g_variant_builder_init (&array, G_VARIANT_TYPE ("av")); for (i = 0;; i++) { IBusText *text = ibus_lookup_table_get_candidate (table, i); if (text == NULL) break; g_variant_builder_add (&array, "v", ibus_serializable_serialize ((IBusSerializable *)text)); } g_variant_builder_add (builder, "av", &array); /* append labels */ g_variant_builder_init (&array, G_VARIANT_TYPE ("av")); for (i = 0;; i++) { IBusText *text = ibus_lookup_table_get_label (table, i); if (text == NULL) break; g_variant_builder_add (&array, "v", ibus_serializable_serialize ((IBusSerializable *)text)); } g_variant_builder_add (builder, "av", &array); return TRUE; } static gint ibus_lookup_table_deserialize (IBusLookupTable *table, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_lookup_table_parent_class)->deserialize ((IBusSerializable *)table, variant); g_return_val_if_fail (retval, 0); g_return_val_if_fail (IBUS_IS_LOOKUP_TABLE (table), 0); g_variant_get_child (variant, retval++, "u", &table->page_size); g_variant_get_child (variant, retval++, "u", &table->cursor_pos); g_variant_get_child (variant, retval++, "b", &table->cursor_visible); g_variant_get_child (variant, retval++, "b", &table->round); g_variant_get_child (variant, retval++, "i", &table->orientation); GVariant *var; // deserialize candidates GVariantIter *iter = NULL; g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { ibus_lookup_table_append_candidate (table, IBUS_TEXT (ibus_serializable_deserialize (var))); } g_variant_iter_free (iter); // deserialize labels iter = NULL; g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { ibus_lookup_table_append_label (table, IBUS_TEXT (ibus_serializable_deserialize (var))); } g_variant_iter_free (iter); return retval; } static gboolean ibus_lookup_table_copy (IBusLookupTable *dest, IBusLookupTable *src) { gboolean retval; guint i; retval = IBUS_SERIALIZABLE_CLASS (ibus_lookup_table_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_LOOKUP_TABLE (dest), FALSE); g_return_val_if_fail (IBUS_IS_LOOKUP_TABLE (src), FALSE); // copy candidates for (i = 0;; i++) { IBusText *text; text = ibus_lookup_table_get_candidate (src, i); if (text == NULL) break; text = (IBusText *) ibus_serializable_copy ((IBusSerializable *) text); ibus_lookup_table_append_candidate (dest, text); } // copy labels for (i = 0;; i++) { IBusText *text; text = ibus_lookup_table_get_label (src, i); if (text == NULL) break; text = (IBusText *) ibus_serializable_copy ((IBusSerializable *) text); ibus_lookup_table_append_label (dest, text); } return TRUE; } IBusLookupTable * ibus_lookup_table_new (guint page_size, guint cursor_pos, gboolean cursor_visible, gboolean round) { g_assert (page_size > 0); g_assert (page_size <= 16); IBusLookupTable *table; table= g_object_new (IBUS_TYPE_LOOKUP_TABLE, NULL); table->page_size = page_size; table->cursor_pos = cursor_pos; table->cursor_visible = cursor_visible; table->round = round; table->orientation = IBUS_ORIENTATION_SYSTEM; return table; } guint ibus_lookup_table_get_number_of_candidates (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->candidates->len; } void ibus_lookup_table_append_candidate (IBusLookupTable *table, IBusText *text) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (IBUS_IS_TEXT (text)); g_object_ref_sink (text); g_array_append_val (table->candidates, text); } IBusText * ibus_lookup_table_get_candidate (IBusLookupTable *table, guint index) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); if (index >= table->candidates->len) return NULL; return g_array_index (table->candidates, IBusText *, index); } void ibus_lookup_table_append_label (IBusLookupTable *table, IBusText *text) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (IBUS_IS_TEXT (text)); g_object_ref_sink (text); g_array_append_val (table->labels, text); } void ibus_lookup_table_set_label (IBusLookupTable *table, guint index, IBusText *text) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (IBUS_IS_TEXT (text)); if (table->labels->len <= index) { g_array_set_size (table->labels, index + 1); } IBusText *old = ibus_lookup_table_get_label (table, index); if (old != NULL) { g_object_unref (old); } g_object_ref_sink (text); g_array_index (table->labels, IBusText *, index) = text; } IBusText * ibus_lookup_table_get_label (IBusLookupTable *table, guint index) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); if (index >= table->labels->len) return NULL; return g_array_index (table->labels, IBusText *, index); } void ibus_lookup_table_clear (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); gint index; for (index = 0; index < table->candidates->len; index ++) { g_object_unref (g_array_index (table->candidates, IBusText *, index)); } g_array_set_size (table->candidates, 0); table->cursor_pos = 0; } void ibus_lookup_table_set_cursor_pos (IBusLookupTable *table, guint cursor_pos) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (cursor_pos < table->candidates->len); table->cursor_pos = cursor_pos; } guint ibus_lookup_table_get_cursor_pos (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->cursor_pos; } guint ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->cursor_pos % table->page_size; } void ibus_lookup_table_set_cursor_visible (IBusLookupTable *table, gboolean visible) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); table->cursor_visible = visible; } gboolean ibus_lookup_table_is_cursor_visible (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->cursor_visible; } void ibus_lookup_table_set_page_size (IBusLookupTable *table, guint page_size) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (page_size > 0); table->page_size = page_size; } guint ibus_lookup_table_get_page_size (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->page_size; } void ibus_lookup_table_set_round (IBusLookupTable *table, gboolean round) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); table->round = round ? TRUE: FALSE; } gboolean ibus_lookup_table_is_round (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->round; } void ibus_lookup_table_set_orientation (IBusLookupTable *table, gint orientation) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); g_assert (orientation == IBUS_ORIENTATION_HORIZONTAL || orientation == IBUS_ORIENTATION_VERTICAL || orientation == IBUS_ORIENTATION_SYSTEM); table->orientation = orientation; } gint ibus_lookup_table_get_orientation (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); return table->orientation; } gboolean ibus_lookup_table_page_up (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); if (table->cursor_pos < table->page_size) { gint i; gint page_nr; if (!table->round) { return FALSE; } /* cursor index in page */ i = table->cursor_pos % table->page_size; page_nr = (table->candidates->len + table->page_size - 1) / table->page_size; table->cursor_pos = page_nr * table->page_size + i; if (table->cursor_pos >= table->candidates->len) { table->cursor_pos = table->candidates->len - 1; } return TRUE; } table->cursor_pos -= table->page_size; return TRUE; } gboolean ibus_lookup_table_page_down (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); gint i; gint page; gint page_nr; /* cursor index in page */ i = table->cursor_pos % table->page_size; page = table->cursor_pos / table->page_size; page_nr = (table->candidates->len + table->page_size - 1) / table->page_size; if (page == page_nr - 1) { if (!table->round) return FALSE; table->cursor_pos = i; return TRUE; } table->cursor_pos += table->page_size; if (table->cursor_pos > table->candidates->len - 1) { table->cursor_pos = table->candidates->len - 1; } return TRUE; } gboolean ibus_lookup_table_cursor_up (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); if (table->cursor_pos == 0) { if (!table->round) return FALSE; table->cursor_pos = table->candidates->len - 1; return TRUE; } table->cursor_pos --; return TRUE; } gboolean ibus_lookup_table_cursor_down (IBusLookupTable *table) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); if (table->cursor_pos == table->candidates->len - 1) { if (!table->round) return FALSE; table->cursor_pos = 0; return TRUE; } table->cursor_pos ++; return TRUE; } ibus-1.5.11/src/ibusversion.h0000644000000000000000000000361312551654342012752 00000000000000/* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_VERSION_H_ #define __IBUS_VERSION_H_ /** * SECTION: ibusversion * @short_description: Current version of IBus. * @stability: Stable * * IBusVersion shows the current IBus version. */ /* compile time version */ /** * IBUS_MAJOR_VERSION: * * IBus major version. */ #define IBUS_MAJOR_VERSION (1) /** * IBUS_MINOR_VERSION: * * IBus minor version. */ #define IBUS_MINOR_VERSION (5) /** * IBUS_MICRO_VERSION: * * IBus micro version. */ #define IBUS_MICRO_VERSION (11) /** * IBUS_CHECK_VERSION: * @major: Major version of ibus. * @minor: Minor version of ibus. * @micro: Micro version of ibus. * * Check whether the current IBus version is equal to or greater than * given major.minor.micro. */ #define IBUS_CHECK_VERSION(major,minor,micro) \ (IBUS_MAJOR_VERSION > (major) || \ (IBUS_MAJOR_VERSION == (major) && IBUS_MINOR_VERSION > (minor)) || \ (IBUS_MAJOR_VERSION == (major) && IBUS_MINOR_VERSION == (minor) && \ IBUS_MICRO_VERSION >= (micro))) #endif ibus-1.5.11/src/ibusinputcontext.c0000644000000000000000000012640012551654123014021 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusinputcontext.h" #include #include "ibusshare.h" #include "ibusinternal.h" #include "ibusmarshalers.h" #include "ibusattribute.h" #include "ibuslookuptable.h" #include "ibusproplist.h" #include "ibuserror.h" #define IBUS_INPUT_CONTEXT_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_INPUT_CONTEXT, IBusInputContextPrivate)) enum { ENABLED, DISABLED, COMMIT_TEXT, FORWARD_KEY_EVENT, DELETE_SURROUNDING_TEXT, UPDATE_PREEDIT_TEXT, SHOW_PREEDIT_TEXT, HIDE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, SHOW_AUXILIARY_TEXT, HIDE_AUXILIARY_TEXT, UPDATE_LOOKUP_TABLE, SHOW_LOOKUP_TABLE, HIDE_LOOKUP_TABLE, PAGE_UP_LOOKUP_TABLE, PAGE_DOWN_LOOKUP_TABLE, CURSOR_UP_LOOKUP_TABLE, CURSOR_DOWN_LOOKUP_TABLE, REGISTER_PROPERTIES, UPDATE_PROPERTY, LAST_SIGNAL, }; /* IBusInputContextPrivate */ struct _IBusInputContextPrivate { /* TRUE if the current engine needs surrounding text; FALSE otherwise */ gboolean needs_surrounding_text; /* cached surrounding text (see also IBusEnginePrivate and BusEngineProxy) */ IBusText *surrounding_text; guint surrounding_cursor_pos; guint selection_anchor_pos; }; typedef struct _IBusInputContextPrivate IBusInputContextPrivate; static guint context_signals[LAST_SIGNAL] = { 0 }; static IBusText *text_empty = NULL; /* functions prototype */ static void ibus_input_context_real_destroy (IBusProxy *context); static void ibus_input_context_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters); G_DEFINE_TYPE (IBusInputContext, ibus_input_context, IBUS_TYPE_PROXY) static void ibus_input_context_class_init (IBusInputContextClass *class) { IBusProxyClass *ibus_proxy_class = IBUS_PROXY_CLASS (class); GDBusProxyClass *g_dbus_proxy_class = G_DBUS_PROXY_CLASS (class); g_type_class_add_private (class, sizeof (IBusInputContextPrivate)); ibus_proxy_class->destroy = ibus_input_context_real_destroy; g_dbus_proxy_class->g_signal = ibus_input_context_g_signal; /* install signals */ /** * IBusInputContext::enabled: * @context: An IBusInputContext. * * Emitted when an IME is enabled. */ context_signals[ENABLED] = g_signal_new (I_("enabled"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::disabled: * @context: An IBusInputContext. * * Emitted when an IME is disabled. */ context_signals[DISABLED] = g_signal_new (I_("disabled"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::commit-text: * @context: An IBusInputContext. * @text: Text to be committed. * * Emitted when the text is going to be committed. * * (Note: The text object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[COMMIT_TEXT] = g_signal_new (I_("commit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_TEXT); /** * IBusInputContext::forward-key-event: * @context: An IBusInputContext. * @keyval: Key symbol of the keyboard event. * @keycode: Key symbol of the keyboard event. * @modifiers: Key modifier flags. * * Emitted to forward key event from IME to client of IME. */ context_signals[FORWARD_KEY_EVENT] = g_signal_new (I_("forward-key-event"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusInputContext::delete-surrounding-text: * @context: An IBusInputContext. * @offset: the character offset from the cursor position of the text to be deleted. * A negative value indicates a position before the cursor. * @n_chars: the number of characters to be deleted. * * Emitted to delete surrounding text event from IME to client of IME. */ context_signals[DELETE_SURROUNDING_TEXT] = g_signal_new (I_("delete-surrounding-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__INT_UINT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_UINT); /** * IBusInputContext::update-preedit-text: * @context: An IBusInputContext. * @text: Text to be updated. * @cursor_pos: Cursor position. * @visible: Whether the update is visible. * * Emitted to update preedit text. * * (Note: The text object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN, G_TYPE_NONE, 3, IBUS_TYPE_TEXT, G_TYPE_UINT, G_TYPE_BOOLEAN); /** * IBusInputContext::show-preedit-text: * @context: An IBusInputContext. * * Emitted to show preedit text. */ context_signals[SHOW_PREEDIT_TEXT] = g_signal_new (I_("show-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::hide-preedit-text: * @context: An IBusInputContext. * * Emitted to hide preedit text. */ context_signals[HIDE_PREEDIT_TEXT] = g_signal_new (I_("hide-preedit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::update-auxiliary-text: * @context: An IBusInputContext. * @text: An auxiliary text * @visible: The visibility of @text * * Emitted to hide auxilary text. * * (Note: The text object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_TEXT, G_TYPE_BOOLEAN); /** * IBusInputContext::show-auxiliary-text: * @context: An IBusInputContext. * * Emitted to show auxiliary text. */ context_signals[SHOW_AUXILIARY_TEXT] = g_signal_new (I_("show-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::hide-auxiliary-text: * @context: An IBusInputContext. * * Emitted to hide auxiliary text. */ context_signals[HIDE_AUXILIARY_TEXT] = g_signal_new (I_("hide-auxiliary-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::update-lookup-table: * @context: An IBusInputContext. * @table: An IBusLookupTable to be updated. * @visible: Whether the table should be visible. * * Emitted to update lookup table. * * (Note: The table object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_LOOKUP_TABLE, G_TYPE_BOOLEAN); /** * IBusInputContext::show-lookup-table: * @context: An IBusInputContext. * * Emitted to show lookup table. */ context_signals[SHOW_LOOKUP_TABLE] = g_signal_new (I_("show-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::hide-lookup-table: * @context: An IBusInputContext. * * Emitted to hide lookup table. */ context_signals[HIDE_LOOKUP_TABLE] = g_signal_new (I_("hide-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::page-up-lookup-table: * @context: An IBusInputContext. * * Emitted to view the previous page of lookup table. */ context_signals[PAGE_UP_LOOKUP_TABLE] = g_signal_new (I_("page-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::page-down-lookup-table: * @context: An IBusInputContext. * * Emitted to view the next page of lookup table. */ context_signals[PAGE_DOWN_LOOKUP_TABLE] = g_signal_new (I_("page-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::cursor-up-lookup-table: * @context: An IBusInputContext. * * Emitted to select previous candidate of lookup table. */ context_signals[CURSOR_UP_LOOKUP_TABLE] = g_signal_new (I_("cursor-up-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::cursor-down-lookup-table: * @context: An IBusInputContext. * * Emitted to select next candidate of lookup table. */ context_signals[CURSOR_DOWN_LOOKUP_TABLE] = g_signal_new (I_("cursor-down-lookup-table"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusInputContext::register-properties: * @context: An IBusInputContext. * @props: An IBusPropList that contains properties. * * Emitted to register the properties in @props. * * (Note: The props object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROP_LIST); /** * IBusInputContext::update-property: * @context: An IBusInputContext. * @prop: The IBusProperty to be updated. * * Emitted to update the property @prop. * * (Note: The prop object is floating, and it will be released after the * signal. If signal handler wants to keep the object, the handler should * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROPERTY); text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); } static void ibus_input_context_init (IBusInputContext *context) { IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (context); priv->surrounding_text = g_object_ref_sink (text_empty); } static void ibus_input_context_real_destroy (IBusProxy *context) { IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (IBUS_INPUT_CONTEXT (context)); if (priv->surrounding_text) { g_object_unref (priv->surrounding_text); priv->surrounding_text = NULL; } IBUS_PROXY_CLASS(ibus_input_context_parent_class)->destroy (context); } static void ibus_input_context_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters) { g_assert (IBUS_IS_INPUT_CONTEXT (proxy)); IBusInputContext *context; context = IBUS_INPUT_CONTEXT (proxy); static const struct { const gchar *signal_name; guint signal_id; } signals [] = { { "ShowPreeditText", SHOW_PREEDIT_TEXT }, { "HidePreeditText", HIDE_PREEDIT_TEXT }, { "ShowAuxiliaryText", SHOW_AUXILIARY_TEXT }, { "HideAuxiliaryText", HIDE_AUXILIARY_TEXT }, { "ShowLookupTable", SHOW_LOOKUP_TABLE }, { "HideLookupTable", HIDE_LOOKUP_TABLE }, { "PageUpLookupTable", PAGE_UP_LOOKUP_TABLE }, { "PageDownLookupTable", PAGE_DOWN_LOOKUP_TABLE }, { "CursorUpLookupTable", CURSOR_UP_LOOKUP_TABLE }, { "CursorDownLookupTable", CURSOR_DOWN_LOOKUP_TABLE }, }; if (g_strcmp0 (signal_name, "CommitText") == 0) { GVariant *variant = NULL; g_variant_get (parameters, "(v)", &variant); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[COMMIT_TEXT], 0, text); if (g_object_is_floating (text)) g_object_unref (text); return; } if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { GVariant *variant = NULL; gint32 cursor_pos; gboolean visible; g_variant_get (parameters, "(vub)", &variant, &cursor_pos, &visible); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[UPDATE_PREEDIT_TEXT], 0, text, cursor_pos, visible); if (g_object_is_floating (text)) g_object_unref (text); return; } /* lookup signal in table */ gint i; for (i = 0; i < G_N_ELEMENTS (signals) && g_strcmp0 (signal_name, signals[i].signal_name) != 0; i++); if (i < G_N_ELEMENTS (signals)) { g_signal_emit (context, context_signals[signals[i].signal_id], 0); return; } if (g_strcmp0 (signal_name, "UpdateAuxiliaryText") == 0) { GVariant *variant = NULL; gboolean visible; g_variant_get (parameters, "(vb)", &variant, &visible); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[UPDATE_AUXILIARY_TEXT], 0, text, visible); if (g_object_is_floating (text)) g_object_unref (text); return; } if (g_strcmp0 (signal_name, "UpdateLookupTable") == 0) { GVariant *variant = NULL; gboolean visible; g_variant_get (parameters, "(vb)", &variant, &visible); IBusLookupTable *table = IBUS_LOOKUP_TABLE (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[UPDATE_LOOKUP_TABLE], 0, table, visible); if (g_object_is_floating (table)) g_object_unref (table); return; } if (g_strcmp0 (signal_name, "RegisterProperties") == 0) { GVariant *variant = NULL; g_variant_get (parameters, "(v)", &variant); IBusPropList *prop_list = IBUS_PROP_LIST (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[REGISTER_PROPERTIES], 0, prop_list); if (g_object_is_floating (prop_list)) g_object_unref (prop_list); return; } if (g_strcmp0 (signal_name, "UpdateProperty") == 0) { GVariant *variant = NULL; g_variant_get (parameters, "(v)", &variant); IBusProperty *prop = IBUS_PROPERTY (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); if (g_object_is_floating (prop)) g_object_unref (prop); return; } if (g_strcmp0 (signal_name, "ForwardKeyEvent") == 0) { guint32 keyval; guint32 keycode; guint32 state; g_variant_get (parameters, "(uuu)", &keyval, &keycode, &state); /* Forward key event back with IBUS_FORWARD_MASK. And process_key_event will * not process key event with IBUS_FORWARD_MASK again. */ g_signal_emit (context, context_signals[FORWARD_KEY_EVENT], 0, keyval, keycode, state | IBUS_FORWARD_MASK); return; } if (g_strcmp0 (signal_name, "DeleteSurroundingText") == 0) { gint offset_from_cursor; guint nchars; g_variant_get (parameters, "(iu)", &offset_from_cursor, &nchars); g_signal_emit (context, context_signals[DELETE_SURROUNDING_TEXT], 0, offset_from_cursor, nchars); return; } IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (IBUS_INPUT_CONTEXT (context)); if (g_strcmp0 (signal_name, "Enabled") == 0) { priv->needs_surrounding_text = FALSE; g_signal_emit (context, context_signals[ENABLED], 0); return; } if (g_strcmp0 (signal_name, "Disabled") == 0) { priv->needs_surrounding_text = FALSE; g_signal_emit (context, context_signals[DISABLED], 0); return; } if (g_strcmp0 (signal_name, "RequireSurroundingText") == 0) { priv->needs_surrounding_text = TRUE; return; } G_DBUS_PROXY_CLASS (ibus_input_context_parent_class)->g_signal ( proxy, sender_name, signal_name, parameters); } IBusInputContext * ibus_input_context_new (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GError **error) { g_assert (path != NULL); g_assert (G_IS_DBUS_CONNECTION (connection)); GInitable *initable; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; initable = g_initable_new (IBUS_TYPE_INPUT_CONTEXT, cancellable, error, "g-connection", connection, "g-name", IBUS_SERVICE_IBUS, "g-flags", flags, "g-interface-name", IBUS_INTERFACE_INPUT_CONTEXT, "g-object-path", path, "g-default-timeout", ibus_get_timeout (), NULL); if (initable != NULL) return IBUS_INPUT_CONTEXT (initable); return NULL; } void ibus_input_context_new_async (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (path != NULL); g_assert (G_IS_DBUS_CONNECTION (connection)); g_assert (callback != NULL); GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; g_async_initable_new_async (IBUS_TYPE_INPUT_CONTEXT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-connection", connection, "g-name", IBUS_SERVICE_IBUS, "g-flags", flags, "g-interface-name", IBUS_INTERFACE_INPUT_CONTEXT, "g-object-path", path, "g-default-timeout", ibus_get_timeout (), NULL); } IBusInputContext * ibus_input_context_new_async_finish (GAsyncResult *res, GError **error) { GObject *object = NULL; GObject *source_object = NULL; source_object = g_async_result_get_source_object (res); g_assert (source_object != NULL); object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (object != NULL) { return IBUS_INPUT_CONTEXT (object); } else { return NULL; } } IBusInputContext * ibus_input_context_get_input_context (const gchar *path, GDBusConnection *connection) { IBusInputContext *context = NULL; GError *error = NULL; context = ibus_input_context_new (path, connection, NULL, &error); if (context == NULL) { g_warning ("ibus_input_context_get_input_context: %s", error->message); g_error_free (error); return NULL; } /* Do not call "org.freedesktop.IBus.Service.Destroy" when the input * context object is disposed. */ IBUS_PROXY (context)->own = FALSE; return context; } void ibus_input_context_get_input_context_async (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { ibus_input_context_new_async (path, connection, cancellable, callback, user_data); } IBusInputContext * ibus_input_context_get_input_context_async_finish (GAsyncResult *res, GError **error) { IBusInputContext *context = NULL; context = ibus_input_context_new_async_finish (res, error); if (context == NULL) { return NULL; } /* Do not call "org.freedesktop.IBus.Service.Destroy" when the input * context object is disposed. */ IBUS_PROXY (context)->own = FALSE; return context; } void ibus_input_context_process_hand_writing_event (IBusInputContext *context, const gdouble *coordinates, guint coordinates_len) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_return_if_fail (coordinates != NULL); g_return_if_fail (coordinates_len >= 4); /* The array should contain at least one line. */ g_return_if_fail ((coordinates_len & 1) == 0); guint i; GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("ad")); for (i = 0; i < coordinates_len; i++) { g_variant_builder_add (&builder, "d", coordinates[i]); } g_dbus_proxy_call ((GDBusProxy *) context, "ProcessHandWritingEvent", /* method_name */ g_variant_new ("(ad)", &builder), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_cancel_hand_writing (IBusInputContext *context, guint n_strokes) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "CancelHandWriting", /* method_name */ g_variant_new ("(u)", n_strokes), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_process_key_event_async (IBusInputContext *context, guint32 keyval, guint32 keycode, guint32 state, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "ProcessKeyEvent", /* method_name */ g_variant_new ("(uuu)", keyval, keycode, state), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ timeout_msec, /* timeout */ cancellable, /* cancellable */ callback, /* callback */ user_data /* user_data */ ); } gboolean ibus_input_context_process_key_event_async_finish (IBusInputContext *context, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (G_IS_ASYNC_RESULT (res)); g_assert (error == NULL || *error == NULL); gboolean processed = FALSE; GVariant *variant = g_dbus_proxy_call_finish ((GDBusProxy *) context, res, error); if (variant != NULL) { g_variant_get (variant, "(b)", &processed); g_variant_unref (variant); } return processed; } gboolean ibus_input_context_process_key_event (IBusInputContext *context, guint32 keyval, guint32 keycode, guint32 state) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); GVariant *result = g_dbus_proxy_call_sync ((GDBusProxy *) context, "ProcessKeyEvent", /* method_name */ g_variant_new ("(uuu)", keyval, keycode, state), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL); if (result != NULL) { gboolean processed = FALSE; g_variant_get (result, "(b)", &processed); g_variant_unref (result); return processed; } return FALSE; } void ibus_input_context_set_cursor_location (IBusInputContext *context, gint32 x, gint32 y, gint32 w, gint32 h) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "SetCursorLocation", /* method_name */ g_variant_new ("(iiii)", x, y, w, h),/* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_set_capabilities (IBusInputContext *context, guint32 capabilites) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "SetCapabilities", /* method_name */ g_variant_new ("(u)", capabilites), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_property_activate (IBusInputContext *context, const gchar *prop_name, guint32 state) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "PropertyActivate", /* method_name */ g_variant_new ("(su)", prop_name, state), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_property_show (IBusInputContext *context, const gchar *prop_name) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "PropertyShow", /* method_name */ g_variant_new ("(s)", prop_name), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_property_hide (IBusInputContext *context, const gchar *prop_name) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "PropertyHide", /* method_name */ g_variant_new ("(s)", prop_name), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } void ibus_input_context_set_surrounding_text (IBusInputContext *context, IBusText *text, guint32 cursor_pos, guint32 anchor_pos) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_TEXT (text)); IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (context); if (cursor_pos != priv->surrounding_cursor_pos || anchor_pos != priv->selection_anchor_pos || priv->surrounding_text == NULL || g_strcmp0 (text->text, priv->surrounding_text->text) != 0) { if (priv->surrounding_text) g_object_unref (priv->surrounding_text); priv->surrounding_text = (IBusText *) g_object_ref_sink (text); priv->surrounding_cursor_pos = cursor_pos; priv->selection_anchor_pos = anchor_pos; if (priv->needs_surrounding_text) { GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); g_dbus_proxy_call ((GDBusProxy *) context, "SetSurroundingText", /* method_name */ g_variant_new ("(vuu)", variant, cursor_pos, anchor_pos), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } } } gboolean ibus_input_context_needs_surrounding_text (IBusInputContext *context) { IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (IBUS_INPUT_CONTEXT (context)); return priv->needs_surrounding_text; } void ibus_input_context_set_content_type (IBusInputContext *context, guint purpose, guint hints) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); GVariant *cached_content_type = g_dbus_proxy_get_cached_property ((GDBusProxy *) context, "ContentType"); GVariant *content_type = g_variant_new ("(uu)", purpose, hints); g_variant_ref_sink (content_type); if (cached_content_type == NULL || !g_variant_equal (content_type, cached_content_type)) { g_dbus_proxy_call ((GDBusProxy *) context, "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", IBUS_INTERFACE_INPUT_CONTEXT, "ContentType", content_type), G_DBUS_CALL_FLAGS_NONE, -1, NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } if (cached_content_type != NULL) g_variant_unref (cached_content_type); g_variant_unref (content_type); } void ibus_input_context_get_engine_async (IBusInputContext *context, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "GetEngine", /* method_name */ NULL, /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ timeout_msec, cancellable, callback, user_data); } IBusEngineDesc * ibus_input_context_get_engine_async_finish (IBusInputContext *context, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (G_IS_ASYNC_RESULT (res)); g_assert (error == NULL || *error == NULL); GVariant *variant = g_dbus_proxy_call_finish ((GDBusProxy *) context, res, error); if (variant == NULL) { return NULL; } GVariant *engine_desc_variant = g_variant_get_child_value (variant, 0); IBusEngineDesc *desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (engine_desc_variant)); g_variant_unref (engine_desc_variant); g_variant_unref (variant); return desc; } IBusEngineDesc * ibus_input_context_get_engine (IBusInputContext *context) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); GVariant *result = NULL; GError *error = NULL; result = g_dbus_proxy_call_sync ((GDBusProxy *) context, "GetEngine", /* method_name */ NULL, /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ &error /* error */ ); if (result == NULL) { if (g_error_matches (error, IBUS_ERROR, IBUS_ERROR_NO_ENGINE)) { g_debug ("%s.GetEngine: %s", IBUS_INTERFACE_INPUT_CONTEXT, error->message); } else { g_warning ("%s.GetEngine: %s", IBUS_INTERFACE_INPUT_CONTEXT, error->message); } g_error_free (error); return NULL; } GVariant *engine_desc_variant = g_variant_get_child_value (result, 0); IBusEngineDesc *desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (engine_desc_variant)); g_variant_unref (engine_desc_variant); g_variant_unref (result); return desc; } void ibus_input_context_set_engine (IBusInputContext *context, const gchar *name) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (name); g_dbus_proxy_call ((GDBusProxy *) context, "SetEngine", /* method_name */ g_variant_new ("(s)", name), /* parameters */ G_DBUS_CALL_FLAGS_NONE, /* flags */ -1, /* timeout */ NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); } #define DEFINE_FUNC(name, Name) \ void \ ibus_input_context_##name (IBusInputContext *context) \ { \ g_assert (IBUS_IS_INPUT_CONTEXT (context)); \ g_dbus_proxy_call ((GDBusProxy *) context, \ #Name, /* method_name */ \ NULL, /* parameters */ \ G_DBUS_CALL_FLAGS_NONE, /* flags */ \ -1, /* timeout */ \ NULL, /* cancellable */ \ NULL, /* callback */ \ NULL /* user_data */ \ ); \ } DEFINE_FUNC(focus_in, FocusIn); DEFINE_FUNC(focus_out, FocusOut); DEFINE_FUNC(reset, Reset); DEFINE_FUNC(page_up, PageUp); DEFINE_FUNC(page_down, PageDown); DEFINE_FUNC(cursor_up, CursorUp); DEFINE_FUNC(cursor_down, CursorDown); #undef DEFINE_FUNC ibus-1.5.11/src/ibusobservedpath.h0000644000000000000000000001216012551654123013745 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input IBus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_OBSERVED_PATH_H_ #define __IBUS_OBSERVED_PATH_H_ /** * SECTION: ibusobservedpath * @short_description: Path object of IBus. * @stability: Stable * * IBusObservedPath provides methods for file path manipulation, * such as monitor modification, directory tree traversal. */ #include "ibusserializable.h" #include "ibusxml.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_OBSERVED_PATH \ (ibus_observed_path_get_type ()) #define IBUS_OBSERVED_PATH(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_OBSERVED_PATH, IBusObservedPath)) #define IBUS_OBSERVED_PATH_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_OBSERVED_PATH, IBusObservedPathClass)) #define IBUS_IS_OBSERVED_PATH(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_OBSERVED_PATH)) #define IBUS_IS_OBSERVED_PATH_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_OBSERVED_PATH)) #define IBUS_OBSERVED_PATH_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_OBSERVED_PATH, IBusObservedPathClass)) G_BEGIN_DECLS typedef struct _IBusObservedPath IBusObservedPath; typedef struct _IBusObservedPathClass IBusObservedPathClass; /** * IBusObservedPath: * @path: Path to be handled. * @mtime: Modified time. * @is_dir: Whether the file is the path directory. * @is_exist: Whether the file exists. * * Data structure of IBusObservedPath. */ struct _IBusObservedPath { IBusSerializable parent; /* instance members */ /*< public >*/ gchar *path; glong mtime; gboolean is_dir; gboolean is_exist; }; struct _IBusObservedPathClass { IBusSerializableClass parent; /* class members */ }; GType ibus_observed_path_get_type (void); /** * ibus_observed_path_new_from_xml_node: * @node: An XML node that contain path. * @fill_stat: Auto-fill the path status. * * Creates an new #IBusObservedPath from an XML node. * * Returns: A newly allocated #IBusObservedPath. */ IBusObservedPath *ibus_observed_path_new_from_xml_node (XMLNode *node, gboolean fill_stat); /** * ibus_observed_path_new: * @path: The path string. * @fill_stat: Auto-fill the path status. * * Creates a new #IBusObservedPath from an XML node. * * Returns: A newly allocated #IBusObservedPath. */ IBusObservedPath *ibus_observed_path_new (const gchar *path, gboolean fill_stat); /** * ibus_observed_path_traverse: * @path: An IBusObservedPath. * @dir_only: Only looks for subdirs, not files * * Recursively traverse the path and put the files and subdirectory in to * a newly allocated * GLists, if the @path is a directory. Otherwise returns NULL. * * Returns: (transfer full) (element-type IBusObservedPath): A newly allocate * GList which holds content in path; NULL if @path is not directory. */ GList *ibus_observed_path_traverse (IBusObservedPath *path, gboolean dir_only); /** * ibus_observed_path_check_modification: * @path: An IBusObservedPath. * * Checks whether the path is modified by comparing the mtime in object and * mtime in file system. * * Returns: %TRUE if imtime is changed, otherwise %FALSE. */ gboolean ibus_observed_path_check_modification (IBusObservedPath *path); /** * ibus_observed_path_output: * @path: An IBusObservedPath. * @output: Path is appended to. * @indent: number of indent. * * Append the observed path to a string with following format: * <path mtime="<i>modified time</i>" ><i>path</i></path> */ void ibus_observed_path_output (IBusObservedPath *path, GString *output, gint indent); G_END_DECLS #endif ibus-1.5.11/src/ibuskeys.h0000644000000000000000000000661612551654123012243 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2011 Peng Huang * Copyright (C) 2011 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_KEYS_H_ #define __IBUS_KEYS_H_ #include G_BEGIN_DECLS /** * ibus_keyval_name: * @keyval: Key symbol. * * Return the name of a key symbol. * * Note that the returned string is used internally, so don't free it. * * Returns: Corresponding key name. %NULL if no such key symbol. */ const gchar *ibus_keyval_name (guint keyval); /** * ibus_keyval_from_name: * @keyval_name: Key name in #gdk_keys_by_name. * * Return the key symbol that associate with the key name. * * Returns: Corresponding key symbol. */ guint ibus_keyval_from_name (const gchar *keyval_name); /** * ibus_unicode_to_keyval: * @wc: a ISO10646 encoded character * * Convert from a ISO10646 character to a key symbol. * * Returns: the corresponding IBus key symbol, if one exists. * or, if there is no corresponding symbol, * wc | 0x01000000 **/ guint ibus_unicode_to_keyval (gunichar wc); /** * ibus_keyval_to_unicode: * @keyval: an IBus key symbol * * Convert from an IBus key symbol to the corresponding ISO10646 (Unicode) * character. * * Returns: the corresponding unicode character, or 0 if there * is no corresponding character. **/ gunichar ibus_keyval_to_unicode (guint keyval); /** * ibus_keyval_to_upper: * @keyval: a key value. * * Converts a key value to upper case, if applicable. * * Returns: the upper case form of @keyval, or @keyval itself if it is already * in upper case or it is not subject to case conversion. */ guint ibus_keyval_to_upper (guint keyval); /** * ibus_keyval_to_lower: * @keyval: a key value. * * Converts a key value to lower case, if applicable. * * Returns: the lower case form of @keyval, or @keyval itself if it is already * in lower case or it is not subject to case conversion. */ guint ibus_keyval_to_lower (guint keyval); /** * ibus_keyval_convert_case: * @symbol: a keyval * @lower: (out): return location for lowercase version of @symbol * @upper: (out): return location for uppercase version of @symbol * * Obtains the upper- and lower-case versions of the keyval @symbol. * Examples of keyvals are #IBUS_KEY_a, #IBUS_KEY_Return, #IBUS_KEY_F1, etc. */ void ibus_keyval_convert_case (guint symbol, guint *lower, guint *upper); G_END_DECLS #endif // __IBUS_KEYS_H_ ibus-1.5.11/src/ibusserializable.h0000644000000000000000000002321412551654123013727 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_SERIALIZABLE_H_ #define __IBUS_SERIALIZABLE_H_ /** * SECTION: ibusserializable * @short_description: A serializable object. * @stability: Stable * * An #IBusSerializable is an IBus object which can be serialized, that is, * to be to and from a #GVariant. * * This class is to be extended by other class that requires serialization. * An extended class should overrides following methods: * * * serialize(object,iter): for serialize. * * * deserialize(object,iter): for deserialize. * * * copy(desc,src): for copy between IBusSerializable. * * * See IBusSerializableSerializeFunc(), IBusSerializableDeserializeFunc(), IBusSerializableCopyFunc() * for function prototype. */ #include "ibusobject.h" /* * Type macros. */ /* define IBusSerializable macros */ #define IBUS_TYPE_SERIALIZABLE \ (ibus_serializable_get_type ()) #define IBUS_SERIALIZABLE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_SERIALIZABLE, IBusSerializable)) #define IBUS_SERIALIZABLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_SERIALIZABLE, IBusSerializableClass)) #define IBUS_IS_SERIALIZABLE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_SERIALIZABLE)) #define IBUS_IS_SERIALIZABLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_SERIALIZABLE)) #define IBUS_SERIALIZABLE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_SERIALIZABLE, IBusSerializableClass)) /** * ibus_serializable_set_attachment: * @o: An IBusSerializable. * @k: String formatted key for indexing value. * @v: Value to be attached. Should be also serializable. * * Attach a value to an IBusSerializable. * This macro is an convenient wrapper of ibus_serializable_set_qattachment(). */ #define ibus_serializable_set_attachment(o, k, v) \ ibus_serializable_set_qattachment (o, g_quark_from_string (k), v) /** * ibus_serializable_get_attachment: * @o: An #IBusSerializable. * @k: String formatted key for indexing value. * * Get a value from attachment of an #IBusSerializable. * This macro is an convenient wrapper of ibus_serializable_get_qattachment(). */ #define ibus_serializable_get_attachment(o, k) \ ibus_serializable_get_qattachment (o, g_quark_from_string (k)) /** * ibus_serializable_remove_attachment: * @o: An #IBusSerializable. * @k: String formatted key for indexing value. * * Remove a value from attachment of an #IBusSerializable. * This macro is an convenient wrapper of ibus_serializable_remove_qattachment(). */ #define ibus_serializable_remove_attachment(o, k) \ ibus_serializable_remove_qattachment (o, g_quark_from_string (k)) G_BEGIN_DECLS typedef struct _IBusSerializable IBusSerializable; typedef struct _IBusSerializableClass IBusSerializableClass; typedef struct _IBusSerializablePrivate IBusSerializablePrivate; /** * IBusSerializable: * * All the fields in the IBusSerializable structure are * private to the #IBusSerializable and should never be accessed directly. */ struct _IBusSerializable { /*< private >*/ IBusObject parent; IBusSerializablePrivate *priv; /* instance members */ }; /** * IBusSerializableSerializeFunc: * @serializable: An #IBusSerializable. * @builder: A #GVariantBuilder. * * Prototype of serialize function. * Serialize function convert an #IBusSerializable to #GVariantBuilder. * Returns a gboolean value which indicates whether the conversion is success. * Return %TRUE if succeed. * * Returns: %TRUE if succeed; %FALSE otherwise. */ typedef gboolean (* IBusSerializableSerializeFunc) (IBusSerializable *serializable, GVariantBuilder *builder); /** * IBusSerializableDeserializeFunc: * @serializable: An #IBusSerializable. * @variant: A #GVariant contains a tuple. * * Prototype of deserialize function. * Deserialize function convert a #GVariant to #IBusSerializable. * Returns an integer value which indicates how many values in * the variant(tuple) are consumed. * * Returns: The number of values in the variant(tuple) are consumed. */ typedef gint (* IBusSerializableDeserializeFunc) (IBusSerializable *serializable, GVariant *variant); /** * IBusSerializableCopyFunc: * @dest: The destination #IBusSerializable. * @src: A source #IBusSerializable. * * Prototype of copy function. * Copy function copy from source #IBusSerializable to the destination one. * Returns a gboolean value which indicates whether the copying is success. * * Returns: %TRUE if succeed; %FALSE otherwise. */ typedef gboolean (* IBusSerializableCopyFunc) (IBusSerializable *dest, const IBusSerializable *src); struct _IBusSerializableClass { /*< private >*/ IBusObjectClass parent; /* virtual table */ gboolean (* serialize) (IBusSerializable *object, GVariantBuilder *builder); gint (* deserialize) (IBusSerializable *object, GVariant *variant); gboolean (* copy) (IBusSerializable *dest, const IBusSerializable *src); /*< private >*/ /* padding */ gpointer pdummy[5]; }; GType ibus_serializable_get_type (void); /** * ibus_serializable_new: * * Creates a new instance of an #IBusSerializable. * * Returns: a new instance of #IBusSerializable. */ IBusSerializable *ibus_serializable_new (void); /** * ibus_serializable_set_qattachment: * @serializable: An #IBusSerializable. * @key: String formatted key for indexing value. * @value: Value to be attached or %NULL to remove any prevoius value. * * Attach a value to an #IBusSerializable. If the value is floating, * the serializable will take the ownership. * * See also: ibus_serializable_set_attachment(). */ void ibus_serializable_set_qattachment (IBusSerializable *serializable, GQuark key, GVariant *value); /** * ibus_serializable_get_qattachment: * @serializable: An #IBusSerializable. * @key: String formatted key for indexing value. * * Gets a value from attachment of an #IBusSerializable. * * Returns: The attached value; or %NULL if fail to retrieve the value. * * See also: ibus_serializable_set_attachment(). */ GVariant *ibus_serializable_get_qattachment (IBusSerializable *serializable, GQuark key); /** * ibus_serializable_remove_qattachment: * @serializable: An #IBusSerializable. * @key: String formatted key for indexing value. * * Remove a value from attachment of an #IBusSerializable. * See also: ibus_serializable_remove_attachment(). */ void ibus_serializable_remove_qattachment (IBusSerializable *serializable, GQuark key); /** * ibus_serializable_copy: * @serializable: An #IBusSerializable. * * Clone an #IBusSerializable. * The copy method should be implemented in extended class. * * Returns: (transfer none): A newly allocated clone object; or %NULL * if @object is not serializable. * * See also: IBusSerializableCopyFunc(). */ IBusSerializable *ibus_serializable_copy (IBusSerializable *serializable); /** * ibus_serializable_serialize: * @serializable: An #IBusSerializable. * * Serialize an #IBusSerializable to a #GVariant. * The serialize method should be implemented in extended class. * * Returns: A #GVariant. * * See also: IBusSerializableCopyFunc(). */ GVariant *ibus_serializable_serialize (IBusSerializable *serializable); /** * ibus_serializable_deserialize: * @variant: A #GVariant. * * Deserialize a #GVariant to an #IBusSerializable/ * The deserialize method should be implemented in extended class. * * Returns: (transfer none): The deserialized #IBusSerializable. * * See also: IBusSerializableCopyFunc(). */ IBusSerializable *ibus_serializable_deserialize (GVariant *variant); G_END_DECLS #endif ibus-1.5.11/src/ibusservice.c0000644000000000000000000006207412551654123012723 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusservice.h" #include "ibusinternal.h" #define IBUS_SERVICE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_SERVICE, IBusServicePrivate)) enum { LAST_SIGNAL }; enum { PROP_0, PROP_OBJECT_PATH, PROP_CONNECTION, }; /* IBusServicePrivate */ struct _IBusServicePrivate { gchar *object_path; GDBusConnection *connection; GHashTable *table; gboolean constructed; }; /* static guint service_signals[LAST_SIGNAL] = { 0 }; */ /* functions prototype */ static void ibus_service_base_init (IBusServiceClass *class); static void ibus_service_base_fini (IBusServiceClass *class); static void ibus_service_class_init (IBusServiceClass *class); static void ibus_service_init (IBusService *service); static void ibus_service_constructed (GObject *object); static void ibus_service_set_property (IBusService *service, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_service_get_property (IBusService *service, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_service_destroy (IBusService *service); static void ibus_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *ibus_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean ibus_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void ibus_service_service_method_call_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, IBusService *service); static GVariant *ibus_service_service_get_property_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, IBusService *service); static gboolean ibus_service_service_set_property_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, IBusService *service); static void ibus_service_connection_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, IBusService *service); static void ibus_service_unregister_cb (GDBusConnection *connection, guint *ids, IBusService *service); static const GDBusInterfaceVTable ibus_service_interface_vtable = { (GDBusInterfaceMethodCallFunc) ibus_service_service_method_call_cb, (GDBusInterfaceGetPropertyFunc) ibus_service_service_get_property_cb, (GDBusInterfaceSetPropertyFunc) ibus_service_service_set_property_cb }; static IBusObjectClass *ibus_service_parent_class = NULL; GType ibus_service_get_type (void) { static GType type = 0; static const GTypeInfo type_info = { sizeof (IBusServiceClass), (GBaseInitFunc) ibus_service_base_init, (GBaseFinalizeFunc) ibus_service_base_fini, (GClassInitFunc) ibus_service_class_init, NULL, /* class finialize */ NULL, /* class data */ sizeof (IBusService), 0, (GInstanceInitFunc) ibus_service_init, }; if (type == 0) { type = g_type_register_static (IBUS_TYPE_OBJECT, "IBusService", &type_info, 0); } return type; } static void ibus_service_base_init (IBusServiceClass *class) { GArray *old = class->interfaces; class->interfaces = g_array_new (TRUE, TRUE, sizeof (GDBusInterfaceInfo *)); if (old != NULL) { GDBusInterfaceInfo **p = (GDBusInterfaceInfo **)old->data; while (*p != NULL) { g_array_append_val (class->interfaces, *p++); } } } static void ibus_service_base_fini (IBusServiceClass *class) { GDBusInterfaceInfo **interfaces = (GDBusInterfaceInfo **) g_array_free (class->interfaces, FALSE); GDBusInterfaceInfo **p = interfaces; while (*p != NULL) { g_dbus_interface_info_unref (*p++); } g_free (interfaces); } static const gchar introspection_xml[] = "" " " " " " " ""; static void ibus_service_class_init (IBusServiceClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); ibus_service_parent_class = IBUS_OBJECT_CLASS (g_type_class_peek_parent (class)); gobject_class->constructed = ibus_service_constructed; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_service_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_service_get_property; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_service_destroy; /* virtual functions */ class->service_method_call = ibus_service_service_method_call; class->service_get_property = ibus_service_service_get_property; class->service_set_property = ibus_service_service_set_property; /* class members */ ibus_service_class_add_interfaces (class, introspection_xml); /* install properties */ /** * IBusService:object-path: * * The path of service object. */ g_object_class_install_property ( gobject_class, PROP_OBJECT_PATH, g_param_spec_string ( "object-path", "object path", "The path of service object", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB) ); /** * IBusService:connection: * * The connection of service object. */ g_object_class_install_property ( gobject_class, PROP_CONNECTION, g_param_spec_object ( "connection", "connection", "The connection of service object", G_TYPE_DBUS_CONNECTION, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB) ); g_type_class_add_private (class, sizeof (IBusServicePrivate)); } static void ibus_service_init (IBusService *service) { service->priv = IBUS_SERVICE_GET_PRIVATE (service); service->priv->table = g_hash_table_new (NULL, NULL); } static void ibus_service_constructed (GObject *object) { IBusService *service = (IBusService *)object; if (service->priv->connection) { GError *error = NULL; if (!ibus_service_register (service, service->priv->connection, &error)) { g_warning ("%s", error->message); g_error_free (error); } } service->priv->constructed = TRUE; } static void ibus_service_set_property (IBusService *service, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_OBJECT_PATH: service->priv->object_path = g_value_dup_string (value); break; case PROP_CONNECTION: service->priv->connection = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (service, prop_id, pspec); } } static void ibus_service_get_property (IBusService *service, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_OBJECT_PATH: g_value_set_string (value, service->priv->object_path); break; case PROP_CONNECTION: g_value_set_object (value, service->priv->connection); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (service, prop_id, pspec); } } static void ibus_service_destroy (IBusService *service) { g_free (service->priv->object_path); service->priv->object_path = NULL; if (service->priv->connection) { g_object_unref (service->priv->connection); service->priv->connection = NULL; } if (service->priv->table) { g_hash_table_foreach_remove (service->priv->table, (GHRFunc)ibus_service_unregister_cb, service); g_hash_table_destroy (service->priv->table); service->priv->table = NULL; } IBUS_OBJECT_CLASS(ibus_service_parent_class)->destroy (IBUS_OBJECT (service)); } static void ibus_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { if (g_strcmp0 (method_name, "Destroy") == 0) { g_dbus_method_invocation_return_value (invocation, NULL); ibus_object_destroy ((IBusObject *)service); return; } g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "%s::%s", interface_name, method_name); return; } static GVariant * ibus_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { return NULL; } static gboolean ibus_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { return FALSE; } static void ibus_service_service_method_call_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, IBusService *service) { IBUS_SERVICE_GET_CLASS (service)->service_method_call (service, connection, sender, object_path, interface_name, method_name, parameters, invocation); } static GVariant * ibus_service_service_get_property_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, IBusService *service) { return IBUS_SERVICE_GET_CLASS (service)->service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } static gboolean ibus_service_service_set_property_cb (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, IBusService *service) { return IBUS_SERVICE_GET_CLASS (service)->service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } static void ibus_service_connection_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, IBusService *service) { ibus_service_unregister (service, connection); if (connection == service->priv->connection) { ibus_object_destroy ((IBusObject *) service); } } static void ibus_service_unregister_cb (GDBusConnection *connection, guint *ids, IBusService *service) { guint *p = ids; while (*p != 0) { g_dbus_connection_unregister_object (connection, *p++); } g_signal_handlers_disconnect_by_func (connection, G_CALLBACK (ibus_service_connection_closed_cb), service); g_object_unref (connection); g_free (ids); } IBusService * ibus_service_new (GDBusConnection *connection, const gchar *object_path) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); g_return_val_if_fail (object_path != NULL, NULL); GObject *obj = g_object_new (IBUS_TYPE_SERVICE, "object-path", object_path, "connection", connection, NULL); return IBUS_SERVICE (obj); } const gchar * ibus_service_get_object_path (IBusService *service) { g_return_val_if_fail (IBUS_IS_SERVICE (service), NULL); return service->priv->object_path; } GDBusConnection * ibus_service_get_connection (IBusService *service) { g_return_val_if_fail (IBUS_IS_SERVICE (service), NULL); return service->priv->connection; } gboolean ibus_service_register (IBusService *service, GDBusConnection *connection, GError **error) { g_return_val_if_fail (IBUS_IS_SERVICE (service), FALSE); g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); GArray *array = NULL; if (g_hash_table_lookup (service->priv->table, connection)) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_OBJECT_PATH_IN_USE, "Service %p has been registered with connection %p.", service, connection); } goto error_out; } GDBusInterfaceInfo **p = (GDBusInterfaceInfo **)IBUS_SERVICE_GET_CLASS (service)->interfaces->data; if (*p == NULL) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Service %p does not have any interface.", service); } goto error_out; } array = g_array_new (TRUE, TRUE, sizeof (guint)); while (*p != NULL) { guint id = g_dbus_connection_register_object (connection, service->priv->object_path, *p, &ibus_service_interface_vtable, g_object_ref (service), (GDestroyNotify)g_object_unref, error); if (id != 0) { g_array_append_val (array, id); } else { g_object_unref (service); goto error_out; } p++; } g_signal_connect (connection, "closed", G_CALLBACK (ibus_service_connection_closed_cb), service); g_hash_table_insert (service->priv->table, g_object_ref (connection), g_array_free (array, FALSE)); return TRUE; error_out: if (array != NULL) { guint *ids = (guint*) array->data; while (*ids != 0) { g_dbus_connection_unregister_object (connection, *ids++); } g_array_free (array, TRUE); } return FALSE; } void ibus_service_unregister (IBusService *service, GDBusConnection *connection) { g_return_if_fail (IBUS_IS_SERVICE (service)); g_return_if_fail (G_IS_DBUS_CONNECTION (connection)); guint *ids = (guint *) g_hash_table_lookup (service->priv->table, connection); g_return_if_fail (ids != NULL); g_hash_table_remove (service->priv->table, connection); ibus_service_unregister_cb (connection, ids, service); } gboolean ibus_service_emit_signal (IBusService *service, const gchar *dest_bus_name, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, GError **error) { g_return_val_if_fail (IBUS_IS_SERVICE (service), FALSE); g_return_val_if_fail (interface_name != NULL, FALSE); g_return_val_if_fail (signal_name != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); g_return_val_if_fail (service->priv->connection != NULL, FALSE); return g_dbus_connection_emit_signal (service->priv->connection, dest_bus_name, service->priv->object_path, interface_name, signal_name, parameters, error); } gboolean ibus_service_class_add_interfaces (IBusServiceClass *class, const gchar *xml_data) { g_return_val_if_fail (IBUS_IS_SERVICE_CLASS (class), FALSE); g_return_val_if_fail (xml_data != NULL, FALSE); GError *error = NULL; GDBusNodeInfo *introspection_data = g_dbus_node_info_new_for_xml (xml_data, &error); if (introspection_data == NULL) { g_warning ("%s", error->message); g_error_free (error); return FALSE; } else { GDBusInterfaceInfo **p = introspection_data->interfaces; while (*p != NULL) { g_dbus_interface_info_ref (*p); g_array_append_val (class->interfaces, *p); p++; } g_dbus_node_info_unref (introspection_data); return TRUE; } } ibus-1.5.11/src/ibuskeymap.c0000644000000000000000000002032312551654123012540 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include "ibuskeys.h" #include "ibuskeysyms.h" #include "ibuskeymap.h" typedef guint KEYMAP[256][7]; /* functions prototype */ static void ibus_keymap_destroy (IBusKeymap *keymap); static gboolean ibus_keymap_load (const gchar *name, KEYMAP keymap); static GHashTable *keymaps = NULL; G_DEFINE_TYPE (IBusKeymap, ibus_keymap, IBUS_TYPE_OBJECT) static void ibus_keymap_class_init (IBusKeymapClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_keymap_destroy; } static void ibus_keymap_init (IBusKeymap *keymap) { gint i; keymap->name = NULL; for (i = 0; i < sizeof (keymap->keymap) / sizeof (guint); i++) { ((guint *)keymap->keymap)[i] = IBUS_KEY_VoidSymbol; } } static void ibus_keymap_destroy (IBusKeymap *keymap) { if (keymap->name != NULL) { g_free (keymap->name); keymap->name = NULL; } IBUS_OBJECT_CLASS (ibus_keymap_parent_class)->destroy ((IBusObject *)keymap); } #define SKIP_SPACE(p) \ while (*p == ' ') p++; static gboolean ibus_keymap_parse_line (gchar *str, KEYMAP keymap) { gchar *p1, *p2; gint i; guint keycode; guint keysym; const struct { const gchar *prefix; const gint len; } prefix [] = { { "keycode ", sizeof ("keycode ") - 1 }, { "shift keycode ", sizeof ("shift keycode ") - 1 }, { "capslock keycode ", sizeof ("capslock keycode ") - 1 }, { "shift capslock keycode ", sizeof ("shift capslock keycode ") - 1 }, { "altgr keycode ", sizeof ("altgr keycode ") - 1}, { "shift altgr keycode ", sizeof ("shift altgr keycode ") - 1}, { "numlock keycode ", sizeof ("numlock keycode ") - 1}, }; p1 = str; SKIP_SPACE(p1); if (*p1 == '#') return TRUE; if (strncmp (p1, "include ", sizeof ("include ") - 1) == 0) { p1 += sizeof ("include ") - 1; for (p2 = p1; *p2 != '\n'; p2++); *p2 = '\0'; return ibus_keymap_load (p1, keymap); } for (i = 0; i < sizeof (prefix) / sizeof (prefix[0]); i++) { if (strncmp (p1, prefix[i].prefix, prefix[i].len) == 0) { p1 += prefix[i].len; break; } } if (i >= sizeof (prefix) / sizeof (prefix[0])) return FALSE; keycode = (guint) strtoul (p1, &p2, 10); if (keycode == 0 && p1 == p2) return FALSE; if ((int) keycode < 0 || keycode > 255) return FALSE; p1 = p2; if (*p1++ != ' ') return FALSE; if (*p1++ != '=') return FALSE; if (*p1++ != ' ') return FALSE; for (p2 = p1; *p2 != '\n' && *p2 != ' '; p2++); *p2 = '\0'; p2++; keysym = ibus_keyval_from_name (p1); if (keysym == IBUS_KEY_VoidSymbol) return FALSE; if (i == 0 && strncmp (p2, "addupper", sizeof ("addupper") - 1) == 0 && g_ascii_isalpha (*p1)) { gchar buf[] = "a"; buf[0] = g_ascii_toupper(*p1); keymap[keycode][0] = keymap[keycode][3] = keysym; keymap[keycode][1] = keymap[keycode][2] = ibus_keyval_from_name (buf); } else { keymap[keycode][i] = keysym; } return TRUE; } static gboolean ibus_keymap_load (const gchar *name, KEYMAP keymap) { gchar *fname; FILE *pf; gchar buf[256]; gint lineno; fname = g_build_filename (IBUS_DATA_DIR, "keymaps", name, NULL); if (fname == NULL) { return FALSE; } pf = g_fopen (fname, "r"); g_free (fname); if (pf == NULL) { return FALSE; } lineno = 0; while (fgets (buf, sizeof (buf), pf) != NULL) { lineno ++; if (!ibus_keymap_parse_line (buf, keymap)) { g_warning ("parse %s failed on %d line", name, lineno); lineno = -1; break; } } fclose (pf); if (lineno == -1) { return FALSE; } return TRUE; } void ibus_keymap_fill (KEYMAP keymap) { gint i; for (i = 0; i < 256; i++) { /* fill shift */ if (keymap[i][1] == IBUS_KEY_VoidSymbol) keymap[i][1] = keymap[i][0]; /* fill capslock */ if (keymap[i][2] == IBUS_KEY_VoidSymbol) keymap[i][2] = keymap[i][0]; /* fill shift capslock */ if (keymap[i][3] == IBUS_KEY_VoidSymbol) keymap[i][3] = keymap[i][1]; /* fill altgr */ if (keymap[i][4] == IBUS_KEY_VoidSymbol) keymap[i][4] = keymap[i][0]; /* fill shift altgr */ if (keymap[i][5] == IBUS_KEY_VoidSymbol) keymap[i][5] = keymap[i][1]; } } static void _keymap_destroy_cb (IBusKeymap *keymap, gpointer user_data) { g_hash_table_remove (keymaps, keymap->name); g_object_unref (keymap); } IBusKeymap * ibus_keymap_new (const gchar *name) { return ibus_keymap_get (name); } IBusKeymap * ibus_keymap_get (const gchar *name) { g_assert (name != NULL); IBusKeymap *keymap; if (keymaps == NULL) { keymaps = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref); } keymap = (IBusKeymap *) g_hash_table_lookup (keymaps, name); if (keymap == NULL) { keymap = g_object_new (IBUS_TYPE_KEYMAP, NULL); g_object_ref_sink (keymap); if (ibus_keymap_load (name, keymap->keymap)) { ibus_keymap_fill (keymap->keymap); keymap->name = g_strdup (name); g_hash_table_insert (keymaps, g_strdup (keymap->name), keymap); g_signal_connect (keymap, "destroy", G_CALLBACK (_keymap_destroy_cb), NULL); } else { g_object_unref (keymap); keymap = NULL; } } if (keymap != NULL) g_object_ref_sink (keymap); return keymap; } guint32 ibus_keymap_lookup_keysym (IBusKeymap *keymap, guint16 keycode, guint32 state) { g_assert (IBUS_IS_KEYMAP (keymap)); if (keycode < 256) { /* numlock */ if ((state & IBUS_MOD2_MASK) && (keymap->keymap[keycode][6] != IBUS_KEY_VoidSymbol)) { return keymap->keymap[keycode][6]; } state &= IBUS_SHIFT_MASK | IBUS_LOCK_MASK | IBUS_MOD5_MASK; switch (state) { case 0: return keymap->keymap[keycode][0]; case IBUS_SHIFT_MASK: return keymap->keymap[keycode][1]; case IBUS_LOCK_MASK: return keymap->keymap[keycode][2]; case IBUS_SHIFT_MASK | IBUS_LOCK_MASK: return keymap->keymap[keycode][3]; case IBUS_MOD5_MASK: case IBUS_MOD5_MASK | IBUS_LOCK_MASK: return keymap->keymap[keycode][4]; case IBUS_MOD5_MASK | IBUS_SHIFT_MASK: case IBUS_MOD5_MASK | IBUS_LOCK_MASK | IBUS_SHIFT_MASK: return keymap->keymap[keycode][5]; default: break; } } return IBUS_KEY_VoidSymbol; } ibus-1.5.11/src/ibuscomponent.h0000644000000000000000000002532712551654123013272 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_COMPONENT_H_ #define __IBUS_COMPONENT_H_ /** * SECTION: ibuscomponent * @short_description: Component (executable) specification. * @title: IBusComponent * @stability: Stable * * An IBusComponent is an executable program. * It provides services such as user interface, configuration, * and input method engine (IME). * * It is recommended that IME developers provide * a component XML file and * load the XML file by ibus_component_new_from_file(). * * The format of a component XML file is described at * https://github.com/ibus/ibus/wiki/DevXML */ #include "ibusserializable.h" #include "ibusobservedpath.h" #include "ibusenginedesc.h" #include "ibusxml.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_COMPONENT \ (ibus_component_get_type ()) #define IBUS_COMPONENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_COMPONENT, IBusComponent)) #define IBUS_COMPONENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_COMPONENT, IBusComponentClass)) #define IBUS_IS_COMPONENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_COMPONENT)) #define IBUS_IS_COMPONENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_COMPONENT)) #define IBUS_COMPONENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_COMPONENT, IBusComponentClass)) G_BEGIN_DECLS typedef struct _IBusComponent IBusComponent; typedef struct _IBusComponentClass IBusComponentClass; typedef struct _IBusComponentPrivate IBusComponentPrivate; /** * IBusComponent: * * An IBusComponent stores component information. * You can get extended values with g_object_get_properties. */ struct _IBusComponent { /*< private >*/ IBusSerializable parent; IBusComponentPrivate *priv; /* instance members */ /*< public >*/ /*< private >*/ /* padding */ gpointer pdummy[7]; // We can add 7 pointers without breaking the ABI. }; struct _IBusComponentClass { IBusSerializableClass parent; /* class members */ }; GType ibus_component_get_type (void); /** * ibus_component_new: * @name: Name of the component. * @description: Detailed description of component. * @version: Component version. * @license: Distribution license of this component. * @author: Author(s) of the component. * @homepage: Homepage of the component. * @command_line: path to component executable. * @textdomain: Domain name for dgettext() * * Creates a new #IBusComponent. * * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new (const gchar *name, const gchar *description, const gchar *version, const gchar *license, const gchar *author, const gchar *homepage, const gchar *command_line, const gchar *textdomain); /** * ibus_component_new_varargs: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusComponent. * ibus_component_new_varargs() supports the va_list format. * name property is required. e.g. * IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo", * "command_line", "/usr/libexec/ibus-engine-foo --ibus", * NULL) * * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_varargs (const gchar *first_property_name, ...); /** * ibus_component_new_from_xml_node: * @node: Root node of component XML tree. * * Creates a new #IBusComponent from an XML tree. * * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_from_xml_node (XMLNode *node); /** * ibus_component_new_from_file: * @filename: An XML file that contains component information. * * Creates a new #IBusComponent from an XML file. * Note that a component file usually contains engine descriptions, * if it does, ibus_engine_desc_new_from_xml_node() will be called * to load the engine descriptions. * * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_from_file (const gchar *filename); /** * ibus_component_get_name: * @component: An #IBusComponent * * Gets the name property in #IBusComponent. It should not be freed. * * Returns: name property in #IBusComponent */ const gchar *ibus_component_get_name (IBusComponent *component); /** * ibus_component_get_description: * @component: An #IBusComponent * * Gets the description property in #IBusComponent. It should not be freed. * * Returns: description property in #IBusComponent */ const gchar *ibus_component_get_description (IBusComponent *component); /** * ibus_component_get_version: * @component: An #IBusComponent * * Gets the version property in #IBusComponent. It should not be freed. * * Returns: version property in #IBusComponent */ const gchar *ibus_component_get_version (IBusComponent *component); /** * ibus_component_get_license: * @component: An #IBusComponent * * Gets the license property in #IBusComponent. It should not be freed. * * Returns: license property in #IBusComponent */ const gchar *ibus_component_get_license (IBusComponent *component); /** * ibus_component_get_author: * @component: An #IBusComponent * * Gets the author property in #IBusComponent. It should not be freed. * * Returns: author property in #IBusComponent */ const gchar *ibus_component_get_author (IBusComponent *component); /** * ibus_component_get_homepage: * @component: An #IBusComponent * * Gets the homepage property in #IBusComponent. It should not be freed. * * Returns: homepage property in #IBusComponent */ const gchar *ibus_component_get_homepage (IBusComponent *component); /** * ibus_component_get_exec: * @component: An #IBusComponent * * Gets the exec property in #IBusComponent. It should not be freed. * * Returns: exec property in #IBusComponent */ const gchar *ibus_component_get_exec (IBusComponent *component); /** * ibus_component_get_textdomain: * @component: An #IBusComponent * * Gets the textdomain property in #IBusComponent. It should not be freed. * * Returns: textdomain property in #IBusComponent */ const gchar *ibus_component_get_textdomain (IBusComponent *component); /** * ibus_component_add_observed_path: * @component: An #IBusComponent * @path: Observed path to be added. * @access_fs: %TRUE for filling the file status; %FALSE otherwise. * * Add an observed path to #IBusComponent. */ void ibus_component_add_observed_path (IBusComponent *component, const gchar *path, gboolean access_fs); /** * ibus_component_add_engine: * @component: An #IBusComponent * @engine: A description of an engine. * * Add an engine to #IBusComponent according to the description in @engine. */ void ibus_component_add_engine (IBusComponent *component, IBusEngineDesc *engine); /** * ibus_component_get_engines: * @component: An #IBusComponent. * * Gets the engines of this component. * * Returns: (transfer container) (element-type IBusEngineDesc): * A newly allocated GList that contains engines. */ GList *ibus_component_get_engines (IBusComponent *component); /** * ibus_component_output: * @component: An #IBusComponent. * @output: GString that holds the result. * @indent: level of indent. * * Output #IBusComponent as an XML-formatted string. * The output string can be then shown on the screen or written to file. */ void ibus_component_output (IBusComponent *component, GString *output, gint indent); /** * ibus_component_output_engines: * @component: An #IBusComponent. * @output: GString that holds the result. * @indent: level of indent. * * Output engine description as an XML-formatted string. * The output string can be then shown on the screen or written to file. */ void ibus_component_output_engines (IBusComponent *component, GString *output, gint indent); /** * ibus_component_check_modification: * @component: An #IBusComponent. * * Check whether the observed paths of component is modified. * * Returns: %TRUE if at least one of the observed paths is modified; * %FALSE otherwise. */ gboolean ibus_component_check_modification (IBusComponent *component); /** * ibus_component_get_observed_paths: * @component: An #IBusComponent. * * Gets the observed paths of this component. * * Returns: (transfer container) (element-type IBusObservedPath): A * newly allocated GList that contains observed paths. */ GList *ibus_component_get_observed_paths (IBusComponent *component); G_END_DECLS #endif ibus-1.5.11/src/ibusproxy.h0000644000000000000000000000726112551654123012446 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_PROXY_H_ #define __IBUS_PROXY_H_ /** * SECTION: ibusproxy * @short_description: Base proxy object. * @stability: Stable * * An IBusProxy is the base of all proxy objects, * which communicate the corresponding #IBusServices on the other end of * IBusConnection. * For example, IBus clients (such as editors, web browsers) invoke the proxy * object, * IBusInputContext to communicate with the InputContext service of the * ibus-daemon. * * Almost all services have corresponding proxies, except very simple services. */ #include /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_PROXY \ (ibus_proxy_get_type ()) #define IBUS_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROXY, IBusProxy)) #define IBUS_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROXY, IBusProxyClass)) #define IBUS_IS_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROXY)) #define IBUS_IS_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROXY)) #define IBUS_PROXY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROXY, IBusProxyClass)) G_BEGIN_DECLS typedef struct _IBusProxy IBusProxy; typedef struct _IBusProxyClass IBusProxyClass; #define IBUS_PROXY_FLAGS(obj) (IBUS_PROXY (obj)->flags) #define IBUS_PROXY_SET_FLAGS(obj,flag) G_STMT_START{ (IBUS_PROXY_FLAGS (obj) |= (flag)); }G_STMT_END #define IBUS_PROXY_UNSET_FLAGS(obj,flag) G_STMT_START{ (IBUS_PROXY_FLAGS (obj) &= ~(flag)); }G_STMT_END #define IBUS_PROXY_DESTROYED(obj) (IBUS_PROXY_FLAGS (obj) & IBUS_DESTROYED) /** * IBusProxy: * * An opaque data type representing an IBusProxy. */ struct _IBusProxy { GDBusProxy parent; /* instance members */ guint32 flags; gboolean own; }; struct _IBusProxyClass { GDBusProxyClass parent; /* class members */ void (* destroy) (IBusProxy *proxy); /*< private >*/ /* padding */ gpointer pdummy[7]; }; GType ibus_proxy_get_type (void); /** * ibus_proxy_destroy: * @proxy: An #IBusProxy * * Dispose the proxy object. If the dbus connection is alive and the own * variable above is TRUE (which is the default), * org.freedesktop.IBus.Service.Destroy method will be called. * Note that "destroy" signal might be emitted when ibus_proxy_destroy is * called or the underlying dbus connection for the proxy is terminated. * In the callback of the destroy signal, you might have to call something * like 'g_object_unref(the_proxy);'. */ void ibus_proxy_destroy (IBusProxy *proxy); G_END_DECLS #endif ibus-1.5.11/src/IBus-1.0.gir0000644000000000000000000425205412551654515012105 00000000000000 Array of IBusAttribute. Creates an new #IBusAttrList. A newly allocated #IBusAttrList. Append an IBusAttribute to IBusAttrList, and increase reference. An IBusAttrList instance. The IBusAttribute instance to be appended. Returns #IBusAttribute at given index. Borrowed reference. #IBusAttribute at given index, %NULL if no such #IBusAttribute. An IBusAttrList instance. Index of the @attr_list. GArray that holds #IBusAttribute. Type enumeration of IBusText attribute. Decorate with underline. Foreground color. Background color. Type of IBusText attribute. No underline. Single underline. Double underline. Low underline ? FIXME Error underline Creates a new underline #IBusAttribute. A newly allocated #IBusAttribute. Type of underline. Where attribute starts. Where attribute ends. An IBusAttribute represents an attribute that associate to IBusText. It decorates preedit buffer and auxiliary text with underline, foreground and background colors. Creates a new IBusAttribute. A newly allocated IBusAttribute. Type of the attribute. Value of the attribute. Where attribute starts. Where attribute ends. Gets an enum of #IBusAttrType. An enum of #IBusAttrType. An #IBusAttribute Gets an end unsigned index A end unsigned index An #IBusAttribute Gets a start unsigned index A start unsigned index An #IBusAttribute Gets an unsigned int value relative with #IBusAttrType. If the type is %IBUS_ATTR_TYPE_UNDERLINE, the return value is #IBusAttrUnderline. If the type is %IBUS_ATTR_TYPE_FOREGROUND, the return value is the color RGB. An unsigned int value relative with #IBusAttrType. An #IBusAttribute IBusAttributeType Value for the type. The starting index, inclusive. The ending index, exclusive. An IBusBus connects with IBus daemon. Creates a new #IBusBus instance. A newly allocated #IBusBus instance, and the instance is not floating. Creates a new #IBusBus instance. The instance will asynchronously connect to the IBus daemon. A newly allocated #IBusBus instance, and the instance is not floating. Add a match rule to an #IBusBus synchronously. %TRUE if the rule is added. %FALSE otherwise. An #IBusBus. Match rule. Add a match rule to an #IBusBus asynchronously. An #IBusBus. Match rule. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_add_match_async(). %TRUE if the rule is added. %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_add_match_async(). Create an input context for client synchronously. An newly allocated #IBusInputContext if the An #IBusBus. Name of client. "CreateInputContext" call is suceeded, %NULL otherwise. Create an input context for client asynchronously. An #IBusBus. Name of client. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied. It should not be %NULL. The data to pass to callback. Finishes an operation started with ibus_bus_create_input_context_async(). An newly allocated #IBusInputContext if the "CreateInputContext" call is suceeded, %NULL otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_create_input_context_async(). Get the current focused input context synchronously. The named of currently focued #IBusInputContext if the "CurrentInputContext" call suceeded, %NULL otherwise. The return value must be freed with g_free(). An #IBusBus. Get the current focused input context asynchronously. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_current_input_context_async(). The named of currently focued IBusInputContext if the "CurrentInputContext" call suceeded, %NULL otherwise. The return value must be freed with g_free(). An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_current_input_context_async(). Exit or restart ibus-daemon synchronously. %TRUE if the "Exit" call is suceeded, %FALSE otherwise. An #IBusBus. Whether restarting the ibus. Exit or restart ibus-daemon asynchronously. An #IBusBus. Whether restarting the ibus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_exit_async(). %TRUE if the "Exit" call is suceeded, %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_exit_async(). Get the config instance from #IBusBus. An #IBusConfig object which is configurable with @bus. An #IBusBus. Gets a #GDBusConnection of an #IBusBus instance. A #GDBusConnection of an #IBusBus instance. An #IBusBus. Get engines by given names synchronously. If some engine names do not exist, this function will simply ignore them, and return rest of engines. TODO(penghuang): add asynchronous version A %NULL-terminated array of engines. An #IBusBus. A %NULL-terminated array of names. Get the description of current global engine synchronously. The description of current global engine, or %NULL if there is no global engine. An #IBusBus. Get the description of current global engine asynchronously. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_get_global_engine_async_finish(). The description of current global engine, or %NULL if there is no global engine. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_get_global_engine_async_finish(). Get org.freedesktop.DBus.Properties. The value in org.freedesktop.DBus.Properties.Get The returned value must be freed with g_variant_unref(). An #IBusBus. property name in org.freedesktop.DBus.Properties.Get Get org.freedesktop.DBus.Properties asynchronously. An #IBusBus. property name in org.freedesktop.DBus.Properties.Get The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_get_ibus_property_async(). The value in org.freedesktop.DBus.Properties.Get The returned value must be freed with g_variant_unref(). An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_get_ibus_property_async(). Return the name owner synchronously. Owner of the name. The returned value must be freed with g_free(). An #IBusBus. Name. Return the name owner asynchronously. An #IBusBus. Name. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_get_name_owner_async(). Owner of the name. The returned value must be freed with g_free(). An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_get_name_owner_async(). Check if the bus's "use_global_engine" option is enabled or not synchronously. Currently global engine is always used. TRUE if "use_global_engine" option is enabled. An #IBusBus. Check if the bus's "use_global_engine" option is enabled or not asynchronously. Currently global engine is always used. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_get_use_global_engine_async(). Currently global engine is always used. %TRUE if "use_global_engine" option is enabled. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_get_use_global_engine_async(). Check if the bus's "use_sys_layout" option is enabled or not synchronously. Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead. %TRUE if "use_sys_layout" option is enabled. An #IBusBus. Check if the bus's "use_sys_layout" option is enabled or not asynchronously. Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_get_use_sys_layout_async(). Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead. TRUE if "use_sys_layout" option is enabled. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_get_use_sys_layout_async(). This function sends a "HELLO" message to DBus daemon, which replies the unique name of current IBus process. The unique name of IBus process in DBus. An #IBusBus. Return %TRUE if @bus is connected to IBus daemon. %TRUE if @bus is connected, %FALSE otherwise. An #IBusBus. Check if the current global engine is enabled or not synchronously. Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL. %TRUE if the current global engine is enabled. An #IBusBus. Check if the current global engine is enabled or not asynchronously. Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_is_global_engine_enabled_async(). Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL. %TRUE if the current global engine is enabled. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_is_global_engine_enabled_async(). List active engines synchronously. Read dconf value /desktop/ibus/general/preload-engines instead. A List of active engines. An #IBusBus. List active engines asynchronously. Read dconf value /desktop/ibus/general/preload-engines instead. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_list_active_engines_async(). Read dconf value /desktop/ibus/general/preload-engines instead. A List of active engines. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_list_active_engines_async(). List engines synchronously. A List of engines. An #IBusBus. List engines asynchronously. An #IBusBus. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_list_engines_async(). A List of engines. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_list_engines_async(). Return lists that attached to @bus. <note><para>[FixMe] Not implemented yet, only return %NULL.</para></note> <note><para>[FixMe] Add async version.</para></note> Lists that attached to @bus. An #IBusBus. Lists the unique bus names of connections currently queued for a bus name. FIXME add an asynchronous version. The unique bus names of connections currently queued for @name. An IBusBus. Name to be queried. Checks whether the name has owner synchronously. %TRUE if the name has owner, %FALSE otherwise. An #IBusBus. Name to be checked. Checks whether the name has owner asynchronously. An #IBusBus. Name to be checked. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_name_has_owner_async(). %TRUE if the name has owner, %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_name_has_owner_async(). Start bus components by engine names synchronously. %TRUE if components start. %FALSE otherwise. An #IBusBus. A %NULL-terminated array of engine names. Start bus components by engine names asynchronously. An #IBusBus. A %NULL-terminated array of engine names. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_preload_engines_async(). %TRUE if component starts. %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_preload_engines_async(). Register a componet to an #IBusBus synchronously. %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. An #IBusBus. A input engine component. Register a componet to an #IBusBus asynchronously. An #IBusBus. A input engine component. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_register_component_async(). %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_register_component_async(). Release a name to IBus daemon synchronously. 0 if failed; positive number otherwise. An #IBusBus. Name to be released. Release a name to IBus daemon asynchronously. An #IBusBus. Name to be released. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_release_name_async(). 0 if failed; positive number otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_release_name_async(). Remove a match rule to an #IBusBus synchronously. %TRUE if the rule is removed. %FALSE otherwise. An #IBusBus. Match rule. Remove a match rule to an IBusBus asynchronously. An #IBusBus. Match rule. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_remove_match_async(). %TRUE if the rule is removed. %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_remove_match_async(). Request a name from IBus daemon synchronously. 0 if failed; IBusBusRequestNameReply otherwise. the IBusBus instance to be processed. Name to be requested. IBusBusNameFlag. Request a name from IBus daemon asynchronously. An #IBusBus. Name to be requested. Flags (FixMe). The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_request_name_async(). 0 if failed; positive number otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_request_name_async(). Set current global engine synchronously. %TRUE if the global engine was set successfully. An #IBusBus. A new engine name. Set current global engine asynchronously. An #IBusBus. A new engine name. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_set_global_engine_async(). %TRUE if no IPC errros. %FALSE otherwise. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_set_global_engine_async(). Set org.freedesktop.DBus.Properties. An #IBusBus. property name in org.freedesktop.DBus.Properties.Set value in org.freedesktop.DBus.Properties.Set Set org.freedesktop.DBus.Properties asynchronously. An #IBusBus. property name in org.freedesktop.DBus.Properties.Set value in org.freedesktop.DBus.Properties.Set The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_bus_set_ibus_property_async(). %TRUE if property is set with async. %FALSE failed. An #IBusBus. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_bus_set_ibus_property_async(). Start or stop watching the NameOwnerChanged DBus signal. An #IBusBus. %TRUE if you want ibusbus to emit "name-owner-changed" signal when ibus-daemon emits the NameOwnerChanged DBus signal. Start or stop watching the GlobalEngineChanged IBus signal. An #IBusBus. %TRUE if you want ibusbus to emit "global-engine-changed" signal when ibus-daemon emits the GlobalEngineChanged IBus signal. Whether the #IBusBus object should connect asynchronously to the bus. Emitted when #IBusBus is connected to ibus-daemon. Emitted when #IBusBus is disconnected from ibus-daemon. Emitted when global engine is changed. The name of the new global engine. Emitted when D-Bus name owner is changed. The name which ower is changed. The unique bus name of the old owner. The unique bus name of the new owner. same as DBUS_NAME_FLAG_ALLOW_REPLACEMENT same as DBUS_NAME_FLAG_REPLACE_EXISTING same as DBUS_NAME_FLAG_DO_NOT_QUEUE same as DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER same as DBUS_REQUEST_NAME_REPLY_IN_QUEUE same as DBUS_REQUEST_NAME_REPLY_EXISTS same as DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER same as DBUS_START_REPLY_SUCCESS same as DBUS_START_REPLY_ALREADY_RUNNING Capability flags of UI. UI is capable to show pre-edit text. UI is capable to show auxiliary text. UI is capable to show the lookup table. UI is capable to get focus. UI is capable to have property. Client can provide surround text, or IME can handle surround text. International and multi-key character composition. An IBusComponent is an executable program. It provides services such as user interface, configuration, and input method engine (IME). It is recommended that IME developers provide a component XML file and load the XML file by ibus_component_new_from_file(). The format of a component XML file is described at <ulink url="https://github.com/ibus/ibus/wiki/DevXML">https://github.com/ibus/ibus/wiki/DevXML</ulink> Creates a new #IBusComponent. A newly allocated #IBusComponent. Name of the component. Detailed description of component. Component version. Distribution license of this component. Author(s) of the component. Homepage of the component. path to component executable. Domain name for dgettext() Creates a new #IBusComponent from an XML file. Note that a component file usually contains engine descriptions, if it does, ibus_engine_desc_new_from_xml_node() will be called to load the engine descriptions. A newly allocated #IBusComponent. An XML file that contains component information. Creates a new #IBusComponent from an XML tree. A newly allocated #IBusComponent. Root node of component XML tree. Creates a new #IBusComponent. ibus_component_new_varargs() supports the va_list format. name property is required. e.g. IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo", "command_line", "/usr/libexec/ibus-engine-foo --ibus", NULL) A newly allocated #IBusComponent. Name of the first property. the NULL-terminated arguments of the properties and values. Add an engine to #IBusComponent according to the description in @engine. An #IBusComponent A description of an engine. Add an observed path to #IBusComponent. An #IBusComponent Observed path to be added. %TRUE for filling the file status; %FALSE otherwise. Check whether the observed paths of component is modified. %TRUE if at least one of the observed paths is modified; %FALSE otherwise. An #IBusComponent. Gets the author property in #IBusComponent. It should not be freed. author property in #IBusComponent An #IBusComponent Gets the description property in #IBusComponent. It should not be freed. description property in #IBusComponent An #IBusComponent Gets the engines of this component. A newly allocated GList that contains engines. An #IBusComponent. Gets the exec property in #IBusComponent. It should not be freed. exec property in #IBusComponent An #IBusComponent Gets the homepage property in #IBusComponent. It should not be freed. homepage property in #IBusComponent An #IBusComponent Gets the license property in #IBusComponent. It should not be freed. license property in #IBusComponent An #IBusComponent Gets the name property in #IBusComponent. It should not be freed. name property in #IBusComponent An #IBusComponent Gets the observed paths of this component. A newly allocated GList that contains observed paths. An #IBusComponent. Gets the textdomain property in #IBusComponent. It should not be freed. textdomain property in #IBusComponent An #IBusComponent Gets the version property in #IBusComponent. It should not be freed. version property in #IBusComponent An #IBusComponent Output #IBusComponent as an XML-formatted string. The output string can be then shown on the screen or written to file. An #IBusComponent. GString that holds the result. level of indent. Output engine description as an XML-formatted string. The output string can be then shown on the screen or written to file. An #IBusComponent. GString that holds the result. level of indent. The author of component The exec path of component The description of component The homepage of component The license of component The name of component The textdomain of component The version of component An IBusConfig provides engine configuration methods such as get and set the configure settings to configuration file. Currently, IBusConfig supports gconf. Create a new #IBusConfig from existing #GDBusConnection. A newly allocated #IBusConfig corresponding to @connection. A #GDBusConnection. A #GCancellable or %NULL. Finishes an operation started with ibus_config_new_async(). A newly allocated #IBusConfig. A #GAsyncResult obtained from the #GAsyncReadyCallback pass to ibus_config_new_async(). New an #IBusConfig asynchronously. An #GDBusConnection. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied. The callback should not be %NULL. The data to pass to callback. Get the value of a configuration option synchronously. GConf stores configure options in a tree-like structure, and the IBus related setting is at /desktop/ibus, thus, @section here is a path from there, while @name is the key of that configuration option. ibus-chewing, for example, stores its setting in /desktop/ibus/engine/Chewing, so the section name for it is "engine/Chewing". See also: ibus_config_set_value(). A #GVariant or %NULL. Free with g_variant_unref(). An #IBusConfig Section name of the configuration option. Name of the configure option. Get the value of a configuration option asynchronously. See also: ibus_config_get_value(). An #IBusConfig Section name of the configuration option. Name of the configure option. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. Callback function to invoke when the return value is ready. The data to pass to callback. Finish get value of a configuration option. A #GVariant or %NULL if error is set. Free with g_variant_unref(). See also: ibus_config_get_value_async(). A #IBusConfig. A #GAsyncResult. Get all values in a section synchronously. A #GVariant or %NULL. Free with g_variant_unref(). See also: ibus_config_set_value(). An #IBusConfig Section name of the configuration option. Get all values in a section asynchronously. See also: ibus_config_get_values(). An #IBusConfig Section name of the configuration option. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. Callback function to invoke when the return value is ready. The data to pass to callback. Finish get values in a section. A #GVariant or %NULL if error is set. Free with g_variant_unref(). See also: ibus_config_get_values_async(). A #IBusConfig. A #GAsyncResult. Set the value of a configuration option synchronously. %TRUE if succeed; %FALSE otherwise. See also: ibus_config_get_value(). An #IBusConfig Section name of the configuration option. Name of the configure option its self. A #GVariant that holds the value. If the value is floating, the function takes ownership of it. Set the value of a configuration option asynchronously. See also: ibus_config_set_value(). An #IBusConfig Section name of the configuration option. Name of the configure option. A #GVariant that holds the value. If the value is floating, the function takes ownership of it. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. Callback function to invoke when the return value is ready. The data to pass to callback. Finish set value of a configuration option. %TRUE or %FALSE if error is set. See also: ibus_config_set_value_async(). A #IBusConfig. A #GAsyncResult. Remove an entry of a configuration option. %TRUE if succeed; %FALSE otherwise. See also: ibus_config_get_value(). An #IBusConfig Section name of the configuration option. Name of the configure option its self. Unsubscribe from the configuration option change notification. %TRUE if succeed; %FALSE otherwise. See also: ibus_config_watch. An #IBusConfig Section name of the configuration option. Name of the configure option its self. Subscribe to the configuration option change notification. Until this function is called, every change will be notified to the client through #IBusConfig::value-changed signal. Clients should call ibus_config_watch() with the sections they are interested in, to reduce the number of D-Bus messages. %TRUE if succeed; %FALSE otherwise. See also: ibus_config_unwatch(). An #IBusConfig Section name of the configuration option. Name of the configure option its self. Emitted when configuration value is changed. <note><para>Argument @user_data is ignored in this function.</para></note> Section name. Name of the property. Value. An IBusConfigService is a base class for other configuration services such as GConf. Currently, directly known sub class is IBusConfigGConf. IBusConfigServiceClass has following member functions: <itemizedlist> <listitem> <para>gboolean set_value(IBusConfigService *config, const gchar *section, const gchar *name, const GValue *value, IBusError **error) </para> <variablelist> <varlistentry> <term>config:</term> <listitem>A configure service</listitem> </varlistentry> <varlistentry> <term>section:</term> <listitem>Section name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>name:</term> <listitem>Name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>value:</term> <listitem>GValue that holds the value.</listitem> </varlistentry> <varlistentry> <term>error:</term> <listitem>Error outputs here.</listitem> </varlistentry> <varlistentry> <term>Returns:</term> <listitem>TRUE if succeed; FALSE otherwise.</listitem> </varlistentry> </variablelist> <para>Set a value to a configuration option. </para> </listitem> <listitem> <para>gboolean get_value(IBusConfigService *config, const gchar *section, const gchar *name, GValue *value, IBusError **error) </para> <variablelist> <varlistentry> <term>config:</term> <listitem>A configure service</listitem> </varlistentry> <varlistentry> <term>section:</term> <listitem>Section name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>name:</term> <listitem>Name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>value:</term> <listitem>GValue that holds the value.</listitem> </varlistentry> <varlistentry> <term>error:</term> <listitem>Error outputs here.</listitem> </varlistentry> <varlistentry> <term>Returns:</term> <listitem>TRUE if succeed; FALSE otherwise.</listitem> </varlistentry> </variablelist> <para>Get value of a configuration option. </para> </listitem> <listitem> <para>gboolean unset(IBusConfigService *config, const gchar *section, const gchar *name, IBusError **error) </para> <variablelist> <varlistentry> <term>config:</term> <listitem>A configure service</listitem> </varlistentry> <varlistentry> <term>section:</term> <listitem>Section name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>name:</term> <listitem>Name of the configuration option.</listitem> </varlistentry> <varlistentry> <term>error:</term> <listitem>Error outputs here.</listitem> </varlistentry> <varlistentry> <term>Returns:</term> <listitem>TRUE if succeed; FALSE otherwise.</listitem> </varlistentry> </variablelist> <para>Remove an entry to a configuration option. </para> </listitem> </itemizedlist> Creates an new #IBusConfigService from an #GDBusConnection. A newly allocated #IBusConfigServices. An #GDBusConnection. Change a value of a configuration option by sending a "ValueChanged" message to IBus service. An IBusConfigService. Section name of the configuration option. Name of the configure option. GVariant that holds the value. An IBusEngine provides infrastructure for input method engine. Developers can "extend" this class for input method engine development. see_also: #IBusComponent, #IBusEngineDesc Create a new #IBusEngine. A newly allocated IBusEngine. Name of the IBusObject. Path for IBusService. An opened GDBusConnection. Create a new #IBusEngine. A newly allocated IBusEngine. GType of #IBusEngine. Name of the IBusObject. Path for IBusService. An opened GDBusConnection. Commit output of input method to IBus client. (Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. String commit to IBusEngine. Delete surrounding text. An IBusEngine. The offset of the first char. Number of chars to be deleted. Forward the key event. An IBusEngine. KeySym. keyboard scancode. Key modifier flags. Get content-type (primary purpose and hints) of the current input context. See also: #IBusEngine::set-content-type An #IBusEngine. Primary purpose of the input context. Hints that augument @purpose. Return the name of #IBusEngine. Name of #IBusEngine. An IBusEngine. Get surrounding text. It is also used to tell the input-context that the engine will utilize surrounding-text. In that case, it must be called in #IBusEngine::enable handler, with both @text and @cursor set to %NULL. See also: #IBusEngine::set-surrounding-text An IBusEngine. Location to store surrounding text. Cursor position in characters in @text. Anchor position of selection in @text. Hide the auxiliary bar. An IBusEngine. Hide the lookup table. An IBusEngine. Hide the pre-edit buffer. An IBusEngine. Register and show properties in language bar. (Note: The prop_list object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. Property List. Show the auxiliary bar. An IBusEngine. Show the lookup table. An IBusEngine. Show the pre-edit buffer. An IBusEngine. Update the auxiliary bar. (Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. Update content. Whether the auxiliary text bar is visible. Update the lookup table. (Note: The table object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. An lookup_table. Whether the lookup_table is visible. Fast update for big lookup table. If size of lookup table is not over table page size *4, then it calls ibus_engine_update_lookup_table(). (Note: The table object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. An lookup_table. Whether the lookup_table is visible. Update the pre-edit buffer. (Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. Update content. Current position of cursor Whether the pre-edit buffer is visible. Update the pre-edit buffer with commit mode. Similar to ibus_engine_update_preedit_text(), this function allows users to specify the behavior on focus out when the pre-edit buffer is visible. If @mode is IBUS_ENGINE_PREEDIT_COMMIT, contents of the pre-edit buffer will be comitted and cleared. If @mode is IBUS_ENGINE_PREEDIT_CLEAR, contents of the pre-edit buffer will be cleared only. (Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. Update content. Current position of cursor Whether the pre-edit buffer is visible. Pre-edit commit mode when the focus is lost. Update the state displayed in language bar. (Note: The prop object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.) An IBusEngine. IBusProperty to be updated. Whether the engine is enabled. Whether the engine has focus. Area of cursor. IBusCapabilite (client capabilities) flags. Emitted when a hand writing operation is cancelled. Implement the member function IBusEngineClass::cancel_hand_writing in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> The number of strokes to be removed. 0 means "remove all". Emitted when candidate on lookup table is clicked. Implement the member function IBusEngineClass::candidate_clicked in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Index of candidate be clicked. Mouse button. Keyboard state. Emitted when the down cursor button is pressed. Implement the member function IBusEngineClass::cursor_down in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the up cursor button is pressed. Implement the member function IBusEngineClass::cursor_up in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the IME is disabled. Implement the member function IBusEngineClass::disable in extended class to receive this signal. See also: ibus_bus_set_global_engine(). <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the IME is enabled. Implement the member function IBusEngineClass::enable in extended class to receive this signal. See also: ibus_bus_set_global_engine(). <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the client application get the focus. Implement the member function IBusEngineClass::focus_in in extended class to receive this signal. See also: ibus_input_context_focus_in() <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the client application lost the focus. Implement the member function IBusEngineClass::focus_out in extended class to receive this signal. See also: ibus_input_context_focus_out() <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the page-down button is pressed. Implement the member function IBusEngineClass::page_down in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the page-up button is pressed. Implement the member function IBusEngineClass::page_up in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when a hand writing operation is cancelled. Implement the member function IBusEngineClass::cancel_hand_writing in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> An array of double (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]). The number of elements in the array. Emitted when a key event is received. Implement the member function IBusEngineClass::process_key_event in extended class to receive this signal. Both the key symbol and keycode are passed to the member function. See ibus_input_context_process_key_event() for further explanation of key symbol, keycode and which to use. %TRUE for successfully process the key; %FALSE otherwise. See also: ibus_input_context_process_key_event(). <note><para>Argument @user_data is ignored in this function.</para></note> Key symbol of the key press. KeyCode of the key press. Key modifier flags. Emitted when a property is activated or change changed. Implement the member function IBusEngineClass::property_activate in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Property name. Property state. Emitted when a property is hidden. Implement the member function IBusEngineClass::property_hide in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Property name. Emitted when a property is shown. Implement the member function IBusEngineClass::property_side in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para></note> Property name. Emitted when the IME is reset. Implement the member function IBusEngineClass::reset in extended class to receive this signal. See also: ibus_input_context_reset(). <note><para>Argument @user_data is ignored in this function.</para></note> Emitted when the client application capabilities is set. Implement the member function IBusEngineClass::set_capabilities in extended class to receive this signal. See also: ibus_input_context_set_capabilities(). <note><para>Argument @user_data is ignored in this function.</para></note> Capabilities flags of IBusEngine, see #IBusCapabilite Emitted when the client application content-type (primary purpose and hints) is set. The engine could change the behavior according to the content-type. Implement the member function IBusEngineClass::set_content_type in extended class to receive this signal. For example, if the client application wants to restrict input to numbers, this signal will be emitted with @purpose set to #IBUS_INPUT_PURPOSE_NUMBER, so the engine can switch the input mode to latin. <note><para>Argument @user_data is ignored in this function.</para></note> Primary purpose of the input context, as an #IBusInputPurpose. Hints that augment @purpose, as an #IBusInputHints. Emitted when the location of IME is set. Implement the member function IBusEngineClass::set_cursor_location in extended class to receive this signal. See also: ibus_input_context_set_cursor_location(). <note><para>Argument @user_data is ignored in this function.</para></note> X coordinate of the cursor. Y coordinate of the cursor. Width of the cursor. Height of the cursor. Emitted when a surrounding text is set. Implement the member function IBusEngineClass::set_surrounding_text in extended class to receive this signal. If anchor_pos equals to cursor_pos, it means "there are no selection" or "does not support selection retrival". <note><para>Argument @user_data is ignored in this function.</para></note> The surrounding text. The cursor position on surrounding text. The anchor position on selection area. An IBusEngineDesc stores description data of IBusEngine. The description data can either be passed to ibus_engine_desc_new(), or loaded from an XML node through ibus_engine_desc_new_from_xml_node() to construct IBusEngineDesc. However, the recommended way to load engine description data is using ibus_component_new_from_file() to load a component file, which also includes engine description data. see_also: #IBusComponent, #IBusEngine Creates a new #IBusEngineDesc. A newly allocated IBusEngineDesc. Name of the engine. Long name of the input method engine. Input method engine description. Language (e.g. zh, jp) supported by this input method engine. License of the input method engine. Author of the input method engine. Icon file of this engine. Keyboard layout Creates a new IBusEngineDesc from an XML node. <note><para>This function is called by ibus_component_new_from_file(), so developers normally do not need to call it directly. </para></note> A newly allocated IBusEngineDesc that contains description from @node. An XML node Creates a new #IBusEngineDesc. ibus_engine_desc_new_varargs() supports the va_list format. name property is required. e.g. ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL) A newly allocated IBusEngineDesc. Name of the first property. the NULL-terminated arguments of the properties and values. Gets the author property in IBusEngineDesc. It should not be freed. author property in IBusEngineDesc An IBusEngineDesc Gets the description property in IBusEngineDesc. It should not be freed. description property in IBusEngineDesc An IBusEngineDesc Gets the hotkeys property in IBusEngineDesc. It should not be freed. hotkeys property in IBusEngineDesc An IBusEngineDesc Gets the icon property in IBusEngineDesc. It should not be freed. icon property in IBusEngineDesc An IBusEngineDesc Gets the key of IBusProperty to load the panel icon dynamically in IBusEngineDesc. It should not be freed. IBusProperty.key for dynamic panel icon in IBusEngineDesc An IBusEngineDesc Gets the language property in IBusEngineDesc. It should not be freed. language property in IBusEngineDesc An IBusEngineDesc Gets the layout property in IBusEngineDesc. It should not be freed. layout property in IBusEngineDesc An IBusEngineDesc Gets the keyboard option property in IBusEngineDesc. It should not be freed. keyboard option property in IBusEngineDesc An IBusEngineDesc Gets the keyboard variant property in IBusEngineDesc. It should not be freed. keyboard variant property in IBusEngineDesc An IBusEngineDesc Gets the license property in IBusEngineDesc. It should not be freed. license property in IBusEngineDesc An IBusEngineDesc Gets the longname property in IBusEngineDesc. It should not be freed. longname property in IBusEngineDesc An IBusEngineDesc Gets the name property in IBusEngineDesc. It should not be freed. name property in IBusEngineDesc An IBusEngineDesc Gets the rank property in IBusEngineDesc. rank property in IBusEngineDesc An IBusEngineDesc Gets the setup property in IBusEngineDesc. It should not be freed. setup property in IBusEngineDesc An IBusEngineDesc Gets the symbol property in IBusEngineDesc. It should not be freed. symbol property in IBusEngineDesc An IBusEngineDesc Gets the textdomain property in IBusEngineDesc. It should not be freed. textdomain in IBusEngineDesc An IBusEngineDesc Gets the version property in IBusEngineDesc. It should not be freed. version in IBusEngineDesc An IBusEngineDesc Output XML-formatted input method engine description. The result will be append to GString specified in @output. An IBusEngineDesc XML-formatted Input method engine description. Number of indent (showed as 4 spaces). The author of engine description The description of engine description The hotkeys of engine description The icon of engine description The key of IBusProperty to change panel icon dynamically. The language of engine description The layout of engine description The keyboard option of engine description The keyboard variant of engine description The license of engine description The longname of engine description The name of engine description The rank of engine description The exec lists of the engine setup command The symbol chars of engine description instead of icon image The textdomain of engine description The version number of engine description An IBusEngineSimple provides table-based input method logic. see_also: #IBusEngine Call ibus_engine_simple_add_table() internally by locale. %TRUE if the @file is loaded. An IBusEngineSimple. The compose file. If the @file is %NULL, the current locale is used. Adds an additional table to search to the engine. Each row of the table consists of max_seq_len key symbols followed by two guint16 interpreted as the high and low words of a gunicode value. Tables are searched starting from the last added. The table must be sorted in dictionary order on the numeric value of the key symbol fields. (Values beyond the length of the sequence should be zero.) An IBusEngineSimple. The table which must be available during the whole life of the simple engine. Maximum length of a swquence in the table (cannot be greater than %IBUS_MAX_COMPOSE_LEN) number of sequences in the table Call ibus_engine_simple_add_table() internally by locale. %TRUE if the @locale is matched to the table. An IBusEngineSimple. The locale name. If the locale is %NULL, the current locale is used. There is no engine associated with input context. There is no config module running. General failure. An IBusFactory is an #IBusService that creates input method engine (IME) instance. It provides CreateEngine remote method, which creates an IME instance by name, and returns the D-Bus object path to IBus daemon. see_also: #IBusEngine Creates a new #IBusFactory. A newly allocated #IBusFactory. An GDBusConnection. Creates an #IBusEngine with @engine_name. #IBusEngine with @engine_name. An #IBusFactory. Name of an engine. Add an engine to the factory. An IBusFactory. Name of an engine. GType of an engine. Creates an #IBusEngine with @engine_name. #IBusEngine with @engine_name. An #IBusFactory. Name of an engine. The ::create-engine signal is a signal to create IBusEngine with @engine_name, which gets emitted when IBusFactory received CreateEngine dbus method. The callback functions will be called until a callback returns a non-null object of IBusEngine. An IBusEngine the engine_name which received the signal #IBusEngine with @engine_name. An #IBusFactory. Name of an engine. Free function prototype. object to be freed. Japanese keyboard support. Japanese keyboard support. Japanese keyboard support. Japanese keyboard support. An opaque data type representing an IBusHotkeyProfile. Creates a new #IBusHotkeyProfile. A newly allocated #IBusHotkeyProfile. Adds a hotkey and its associated event to an #IBusHotkeyProfile. Always %TRUE. An IBusHotkeyProfile. Keycode of the hotkey. Modifiers of the hotkey. The event to be associated. Adds a hotkey and its associated event to an #IBusHotkeyProfile. The hotkey is in string format, such like <constant>Control+Shift+A</constant>. FALSE if @str contains invalid symbol; TRUE otherwise. An IBusHotkeyProfile. Key in string representation. '+' is the separator. The event to be associated. Emits a <constant>::trigger</constant> signal when a hotkey is in a profile. 0 if releasing a hotkey and the hotkey is not in the profile; an associated event otherwise. See also: ::trigger An IBusHotkeyProfile. Keycode of the hotkey. Modifiers of the hotkey. Keycode of the hotkey. Modifiers of the hotkey. user data for signal "trigger". The event associated to the hotkey or 0 if the hotkey is not in the profile. An IBusHotkeyProfile. Keycode of the hotkey. Modifiers of the hotkey. Removes the hotkey for an #IBusHotkeyProfile. %FALSE if the key is not in @profile, %TRUE otherwise. An IBusHotkeyProfile. Keycode of the hotkey. Modifiers of the hotkey. Removes the hotkey for an #IBusHotkeyProfile by event. %FALSE if no such event in @profile, %TRUE otherwise. An IBusHotkeyProfile. The associated event. Emitted when a hotkey is pressed and the hotkey is in profile. Implement the member function trigger() in extended class to receive this signal. <note><para>The last parameter, user_data is not actually a valid parameter. It is displayed because of GtkDoc bug.</para></note> An event in GQuark. User data for callback. D-Bus interface for IBus config. D-Bus interface for IBus engine. D-Bus interface for IBus factory. D-Bus interface for IBus. D-Bus interface for IBus input context. D-Bus interface for IBus notifications. D-Bus interface for IBus panel. An IBusInputContext is a proxy object of BusInputContext, which manages the context for input methods that supports text input in various natural languages. Clients call the IBusInputContext to invoke BusInputContext, through which invokes IBusEngine. Creates a new #IBusInputContext. A newly allocated #IBusInputContext. The path to the object that emitting the signal. A #GDBusConnection. A #GCancellable or %NULL. Finishes an operation started with ibus_input_context_new_async(). A newly allocated #IBusInputContext. A #GAsyncResult obtained from the #GAsyncReadyCallback pass to ibus_input_context_new_async(). Gets an existing IBusInputContext. An existing #IBusInputContext. The path to the object that emitting the signal. A GDBusConnection. Gets an existing #IBusInputContext asynchronously. The path to the object that emitting the signal. A #GDBusConnection. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied. The callback should not be %NULL. The data to pass to callback. Finishes an operation started with ibus_input_context_get_input_context_async(). An existing #IBusInputContext. A #GAsyncResult obtained from the #GAsyncReadyCallback pass to ibus_input_context_get_input_context_async(). Creates a new #IBusInputContext asynchronously. The path to the object that emitting the signal. A #GDBusConnection. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied. The callback should not be %NULL. The data to pass to callback. Clear handwriting stroke(s) in the current input method engine. see_also: #IBusEngine::cancel-hand-writing An IBusInputContext. The number of strokes to be removed. Pass 0 to remove all. Invoked when the client application get focus. An asynchronous IPC will be performed. see_also: #IBusEngine::focus_in. An #IBusInputContext. Invoked when the client application get focus. An asynchronous IPC will be performed. see_also: #IBusEngine::focus_out. An #IBusInputContext. Gets an IME engine description for the context. A synchronous IPC will be performed. An IME engine description for the context, or NULL. An #IBusInputContext. An asynchronous IPC will be performed. An #IBusInputContext. The timeout in milliseconds or -1 to use the default timeout. A #GCancellable or %NULL. A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_input_context_get_engine_async(). An IME engine description for the context, or %NULL. An #IBusInputContext. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_input_context_get_engine_async(). Check whether the current engine requires surrounding-text. %TRUE if surrounding-text is needed by the current engine; %FALSE otherwise. An #IBusInputContext. Pass a handwriting stroke to an input method engine. In this API, a coordinate (0.0, 0.0) represents the top-left corner of an area for handwriting, and (1.0, 1.0) does the bottom-right. Therefore, for example, if a user writes a character 'L', the array would be something like [0.0, 0.0, 0.0, 1.0, 1.0, 1.0] and coordinates_len would be 6. The function is usually called when a user releases the mouse button in a hand writing area. see_also: #IBusEngine::process-hand-writing-event An IBusInputContext. An array of gdouble (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]). The number of elements in the array. The number should be even and >= 4. Pass the key event to input method engine and wait for the reply from ibus (i.e. synchronous IPC). %TRUE for successfully process the key; %FALSE otherwise. See also: ibus_input_context_process_key_event_async() An #IBusInputContext. Key symbol of a key event. Keycode of a key event. Key modifier flags. Pass the key event to input method engine. Key symbols are characters/symbols produced by key press, for example, pressing "s" generates key symbol "s"; pressing shift-"s" generates key symbol "S". Same key on keyboard may produce different key symbols on different keyboard layout. e.g., "s" key on QWERTY keyboard produces "o" in DVORAK layout. Unlike key symbol, keycode is only determined by the location of the key, and irrelevant of the keyboard layout. Briefly speaking, input methods that expect certain keyboard layout should use keycode; otherwise keyval is sufficient. For example, Chewing, Cangjie, Wubi expect an en-US QWERTY keyboard, these should use keycode; while pinyin can rely on keyval only, as it is less sensitive to the keyboard layout change, DVORAK users can still use DVORAK layout to input pinyin. Use ibus_keymap_lookup_keysym() to convert keycode to keysym in given keyboard layout. see_also: #IBusEngine::process-key-event An IBusInputContext. Key symbol of a key event. Keycode of a key event. Key modifier flags. The timeout in milliseconds or -1 to use the default timeout. A GCancellable or NULL. A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation. The data to pass to callback. Finishes an operation started with ibus_input_context_process_key_event_async(). %TRUE if the key event is processed; %FALSE otherwise or some errors happen and the @error will be set. An #IBusInputContext. A #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_input_context_process_key_event_async(). Activate the property asynchronously. See also: #IBusEngine::property_activate An #IBusInputContext. A property name (e.g. "InputMode.WideLatin") A status of the property (e.g. PROP_STATE_CHECKED) Invoked when the IME is reset. An asynchronous IPC will be performed. see_also: #IBusEngine::reset An #IBusInputContext. Set the capabilities flags of client application asynchronously. When IBUS_CAP_FOCUS is not set, IBUS_CAP_PREEDIT_TEXT, IBUS_CAP_AUXILIARY_TEXT, IBUS_CAP_LOOKUP_TABLE, and IBUS_CAP_PROPERTY have to be all set. The panel component does nothing for an application that doesn't support focus. see_also: #IBusEngine::set-capabilities An IBusInputContext. Capabilities flags of IBusEngine, see #IBusCapabilite Set content-type (primary purpose and hints) of the context. This information is particularly useful to implement intelligent behavior in engines, such as automatic input-mode switch and text prediction. For example, to restrict input to numbers, the client can call this function with @purpose set to #IBUS_INPUT_PURPOSE_NUMBER. See also: #IBusEngine::set-content-type An #IBusInputContext. Primary purpose of the input context, as an #IBusInputPurpose. Hints that augment @purpose, as an #IBusInputHints. Set the cursor location of IBus input context asynchronously. see_also: #IBusEngine::set-cursor-location An IBusInputContext. X coordinate of the cursor. Y coordinate of the cursor. Width of the cursor. Height of the cursor. Invoked when the IME engine is changed. An asynchronous IPC will be performed. An #IBusInputContext. A name of the engine. An #IBusInputContext. An #IBusText surrounding the current cursor on the application. Current cursor position in characters in @text. Anchor position of selection in @text. Emitted when the text is going to be committed. (Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) Text to be committed. Emitted to select next candidate of lookup table. Emitted to select previous candidate of lookup table. Emitted to delete surrounding text event from IME to client of IME. the character offset from the cursor position of the text to be deleted. A negative value indicates a position before the cursor. the number of characters to be deleted. Emitted when an IME is disabled. Emitted when an IME is enabled. Emitted to forward key event from IME to client of IME. Key symbol of the keyboard event. Key symbol of the keyboard event. Key modifier flags. Emitted to hide auxiliary text. Emitted to hide lookup table. Emitted to hide preedit text. Emitted to view the next page of lookup table. Emitted to view the previous page of lookup table. Emitted to register the properties in @props. (Note: The props object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) An IBusPropList that contains properties. Emitted to show auxiliary text. Emitted to show lookup table. Emitted to show preedit text. Emitted to hide auxilary text. (Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) An auxiliary text The visibility of @text Emitted to update lookup table. (Note: The table object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) An IBusLookupTable to be updated. Whether the table should be visible. Emitted to update preedit text. (Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) Text to be updated. Cursor position. Whether the update is visible. Emitted to update the property @prop. (Note: The prop object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.) The IBusProperty to be updated. Describes hints that might be taken into account by engines. Note that engines may already tailor their behaviour according to the #IBusInputPurpose of the entry. No special behaviour suggested Suggest checking for typos Suggest not checking for typos Suggest word completion Suggest to convert all text to lowercase Suggest to capitalize all text Suggest to capitalize the first character of each word Suggest to capitalize the first word of each sentence Suggest to not show an onscreen keyboard (e.g for a calculator that already has all the keys). The text is vertical. Describes primary purpose of the input context. This information is particularly useful to implement intelligent behavior in engines, such as automatic input-mode switch and text prediction. This enumeration may be extended in the future; engines should interpret unknown values as 'free form'. Allow any character Allow only alphabetic characters Allow only digits Edited field expects numbers Edited field expects phone number Edited field expects URL Edited field expects email address Edited field expects the name of a person Like @IBUS_INPUT_PURPOSE_FREE_FORM, but characters are hidden Like @IBUS_INPUT_PURPOSE_DIGITS, but characters are hidden Japanese keyboard support. Japanese keyboard support. An IBusKeymap defines the mapping between keyboard scancodes and keyboard symbols such as numbers, alphabets, and punctuation marks. Some input methods assume certain keyboard layout (such as Chewing and Wubi requires an US-QWERTY layout), and expect key symbols to be arranged in that order. These input methods should new an IBusKeymap instance and define the keyboard layout. Then ibus_keymap_lookup_keysym() can convert scancodes back to the key symbols. see_also: #IBusComponent, #IBusEngineDesc Get an #IBusKeymap associated with the giving name. This function loads the keymap file specified in @name in the IBUS_DATA_DIR/keymaps directory. This function has been deprecated and should not be used in newly written code. Please use ibus_keymap_get(). An #IBusKeymap associated with the giving name; or %NULL if failed. The keymap file to be loaded, such as 'us', 'jp'. Get an IBusKeymap associated with the giving name. This function loads the keymap file specified in @name in the IBUS_DATA_DIR/keymaps directory. An #IBusKeymap associated with the giving name; or %NULL if failed. The keymap file to be loaded, such as 'us', 'jp'. Converts the scancode to keysym, given the keymap. Corresponding keysym. An IBusKeymap. A scancode to be converted. Modifier flags(such as Ctrl, Shift). The name of the keymap, such as 'us', 'jp'. Keymap table. IME developers normally don have to touch this. An IBusLookuptable stores the candidate words or phrases for users to choose from. Use ibus_engine_update_lookup_table(), ibus_engine_show_lookup_table(), and ibus_engine_hide_lookup_table() to update, show and hide the lookup table. see_also: #IBusEngine Craetes a new #IBusLookupTable. A newly allocated #IBusLookupTable. number of candidate shown per page, the max value is 16. position index of cursor. whether the cursor is visible. TRUE for lookup table wrap around. Append a candidate word/phrase to IBusLookupTable, and increase reference. An IBusLookupTable. candidate word/phrase to be appended (in IBusText format). Append a candidate word/phrase to IBusLookupTable, and increase reference. This function is needed if the input method select candidate with non-numeric keys such as "asdfghjkl;". An IBusLookupTable. A candidate label to be appended (in IBusText format). Clear and remove all candidate from an IBusLookupTable. An IBusLookupTable. Go to next candidate of an #IBusLookupTable. It returns FALSE if it is already at the last candidate, unless <code>table&gt;-round==TRUE</code>, where it will go to the first candidate. %TRUE if succeed. An IBusLookupTable. Go to previous candidate of an #IBusLookupTable. It returns FALSE if it is already at the first candidate, unless <code>table&gt;-round==TRUE</code>, where it will go to the last candidate. %TRUE if succeed. An IBusLookupTable. Return #IBusText at the given index. Borrowed reference. IBusText at the given index; NULL if no such #IBusText. An IBusLookupTable. Index in the Lookup table. Gets the cursor position in current page of #IBusLookupTable. The position of cursor in current page. An IBusLookupTable. Gets the cursor position of #IBusLookupTable. The position of cursor. An IBusLookupTable. Return #IBusText at the given index. Borrowed reference. #IBusText at the given index; %NULL if no such #IBusText. An IBusLookupTable. Index in the Lookup table. Return the number of candidate in the table. The number of candidates in the table An IBusLookupTable. Returns the orientation of the #IBusLookupTable. The orientation of the @table. An IBusLookupTable. Gets the number of candidate shown per page. Page size, i.e., number of candidate shown per page. dd An IBusLookupTable. Returns whether the cursor of an #IBusLookupTable is visible. Whether the cursor of @table is visible. An #IBusLookupTable. Returns whether the #IBusLookupTable is round. Whether the @table is round. An IBusLookupTable. Go to next page of an #IBusLookupTable. It returns FALSE if it is already at the last page, unless <code>table&gt;-round==TRUE</code>, where it will go to the first page. %TRUE if succeed. An IBusLookupTable. Go to previous page of an #IBusLookupTable. It returns FALSE if it is already at the first page, unless <code>table&gt;-round==TRUE</code>, where it will go to the last page. %TRUE if succeed. An IBusLookupTable. Set the cursor position of IBusLookupTable. An IBusLookupTable. The position of cursor. Set whether to make the cursor of an IBusLookupTable visible or not. An IBusLookupTable. Whether to make the cursor of @table visible. Append a candidate word/phrase to IBusLookupTable, and increase reference. This function is needed if the input method select candidate with non-numeric keys such as "asdfghjkl;". An IBusLookupTable. Intex in the Lookup table. A candidate label to be appended (in IBusText format). Set the orientation. An IBusLookupTable. . Set the number of candidate shown per page. An IBusLookupTable. number of candidate shown per page. Set whether to make the IBusLookupTable round or not. An IBusLookupTable. Whether to make @table round. number of candidate shown per page. position index of cursor. whether the cursor is visible. TRUE for lookup table wrap around. orientation of the table. Candidate words/phrases. Candidate labels which identify individual candidates in the same page. Default is 1, 2, 3, 4 ... IBus major version. IBus micro version. IBus minor version. Handles key modifier such as control, shift and alt and release event. Note that nits 15 - 25 are currently unused, while bit 29 is used internally. Shift is activated. Cap Lock is locked. Control key is activated. Modifier 1 (Usually Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)) activated. Modifier 2 (Usually Num_Lock (0x4d)) activated. Modifier 3 activated. Modifier 4 (Usually Super_L (0xce), Hyper_L (0xcf)) activated. Modifier 5 (ISO_Level3_Shift (0x5c), Mode_switch (0xcb)) activated. Mouse button 1 (left) is activated. Mouse button 2 (middle) is activated. Mouse button 3 (right) is activated. Mouse button 4 (scroll up) is activated. Mouse button 5 (scroll down) is activated. Handled mask indicates the event has been handled by ibus. Forward mask indicates the event has been forward from ibus. It is an alias of IBUS_FORWARD_MASK. Super (Usually Win) key is activated. Hyper key is activated. Meta key is activated. Key is released. Modifier mask for the all the masks above. Japanese keyboard support. Key for composing characters. A.k.a. Compose Key. IBusObject is the base object for all objects in IBus. Creates a new #IBusObject. A newly allocated #IBusObject Emit the "destory" signal notifying all reference holders that they should release the #IBusObject. The memory for the object itself won't be deleted until its reference count actually drops to 0; ibus_object_destroy merely asks reference holders to release their references. It does not free the object. an #IBusObject to destroy. Emit the "destory" signal notifying all reference holders that they should release the #IBusObject. The memory for the object itself won't be deleted until its reference count actually drops to 0; ibus_object_destroy merely asks reference holders to release their references. It does not free the object. an #IBusObject to destroy. Destroy and free an IBusObject See also: ibus_object_destroy(). <note><para>Argument @user_data is ignored in this function.</para></note> an #IBusObject to destroy. The flags are used internally. Used in GObjectClass::dispose Used during emitting IBusObject::destroy signal. Reserved. Reserved. IBusObservedPath provides methods for file path manipulation, such as monitor modification, directory tree traversal. Creates a new #IBusObservedPath from an XML node. A newly allocated #IBusObservedPath. The path string. Auto-fill the path status. Creates an new #IBusObservedPath from an XML node. A newly allocated #IBusObservedPath. An XML node that contain path. Auto-fill the path status. Checks whether the path is modified by comparing the mtime in object and mtime in file system. %TRUE if imtime is changed, otherwise %FALSE. An IBusObservedPath. Append the observed path to a string with following format: &lt;path mtime="&lt;i&gt;modified time&lt;/i&gt;" &gt;&lt;i&gt;path&lt;/i&gt;&lt;/path&gt; An IBusObservedPath. Path is appended to. number of indent. Recursively traverse the path and put the files and subdirectory in to a newly allocated GLists, if the @path is a directory. Otherwise returns NULL. A newly allocate GList which holds content in path; NULL if @path is not directory. An IBusObservedPath. Only looks for subdirs, not files Path to be handled. Modified time. Whether the file is the path directory. Whether the file exists. Orientation of UI. Horizontal orientation. Vertival orientation. Use ibus global orientation setup. D-Bus path for IBus config. D-Bus path for IBus factory. D-Bus path for IBus Template of D-Bus path for IBus input context. D-Bus path for IBus notifications. D-Bus path for IBus panel. An IBusPanelService is a base class for UI services. Developers can "extend" this class for panel UI development. Creates a new #IBusPanelService from an #GDBusConnection. A newly allocated #IBusPanelService. An GDBusConnection. Notify that a candidate is clicked by sending a "CandidateClicked" to IBus service. An IBusPanelService Index in the Lookup table GdkEventButton::button (1: left button, etc.) GdkEventButton::state (key modifier flags) Notify that the cursor is down by sending a "CursorDown" to IBus service. An IBusPanelService Notify that the cursor is up by sending a "CursorUp" to IBus service. An IBusPanelService Notify that the page is down by sending a "PageDown" to IBus service. An IBusPanelService Notify that the page is up by sending a "PageUp" to IBus service. An IBusPanelService Notify that a property is active by sending a "PropertyActivate" message to IBus service. An IBusPanelService A property name State of the property Notify that a property is hidden by sending a "ValueChanged" message to IBus service. An IBusPanelService A property name Notify that a property is shown by sending a "ValueChanged" message to IBus service. An IBusPanelService A property name Emitted when the client application get the ::cursor-down-lookup-table. Implement the member function IBusPanelServiceClass::cursor_down_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::cursor-up-lookup-table. Implement the member function IBusPanelServiceClass::cursor_up_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application destroys. Implement the member function IBusPanelServiceClass::destroy_context in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Object path of InputContext. Emitted when the client application get the ::focus-in. Implement the member function IBusPanelServiceClass::focus_in in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Object path of InputContext. Emitted when the client application get the ::focus-out. Implement the member function IBusPanelServiceClass::focus_out in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Object path of InputContext. Emitted when the client application get the ::hide-auxiliary-text. Implement the member function IBusPanelServiceClass::hide_auxiliary_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::hide-language-bar. Implement the member function IBusPanelServiceClass::hide_language_bar in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::hide-lookup-table. Implement the member function IBusPanelServiceClass::hide_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::hide-preedit-text. Implement the member function IBusPanelServiceClass::hide_preedit_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::page-down-lookup-table. Implement the member function IBusPanelServiceClass::page_down_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::page-up-lookup-table. Implement the member function IBusPanelServiceClass::page_up_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::register-properties. Implement the member function IBusPanelServiceClass::register_properties in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> An IBusPropList that contains properties. Emitted when the client application get the ::reset. Implement the member function IBusPanelServiceClass::reset in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::set-content-type. Implement the member function IBusPanelServiceClass::set_content_type in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Input purpose. Input hints. Emitted when the client application get the ::set-cursor-location. Implement the member function IBusPanelServiceClass::set_cursor_location in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> X coordinate of the cursor. Y coordinate of the cursor. Width of the cursor. Height of the cursor. Emitted when the client application get the ::show-auxiliary-text. Implement the member function IBusPanelServiceClass::show_auxiliary_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::show-language-bar. Implement the member function IBusPanelServiceClass::show_language_bar in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::show-lookup-table. Implement the member function IBusPanelServiceClass::show_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::show-preedit-text. Implement the member function IBusPanelServiceClass::show_preedit_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::start-setup. Implement the member function IBusPanelServiceClass::start_setup in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::state-changed. Implement the member function IBusPanelServiceClass::state_changed in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> Emitted when the client application get the ::update-auxiliary-text. Implement the member function IBusPanelServiceClass::update_auxiliary_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> A preedit text to be updated. Whether the update is visible. Emitted when the client application get the ::update-lookup-table. Implement the member function IBusPanelServiceClass::update_lookup_table in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> A lookup table to be updated. Whether the update is visible. Emitted when the client application get the ::update-preedit-text. Implement the member function IBusPanelServiceClass::update_preedit_text in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> A preedit text to be updated. The cursor position of the text. Whether the update is visible. Emitted when the client application get the ::update-property. Implement the member function IBusPanelServiceClass::update_property in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> The IBusProperty to be updated. Pre-edit commit mode when the focus is lost. pre-edit text is cleared. pre-edit text is committed. See_also: #IBusProperty, #IBusEngine Create a new #IBusPropList. A newly allocated #IBusPropList. Append an IBusProperty to an IBusPropList, and increase reference. An IBusPropList. IBusProperty to be append to @prop_list. Gets #IBusProperty at given index. Borrowed reference. #IBusProperty at given index, %NULL if no such #IBusProperty. An IBusPropList. Index of an IBusPropList. Update an IBusProperty in IBusPropList. %TRUE if succeeded, %FALSE otherwise. An IBusPropList. IBusProperty to be update. GArray that holds IBusProperties. Class structure for #IBusPropList. The parent class. State of #IBusProperty. The actual effect depends on #IBusPropType of the IBusProperty. <variablelist> <varlistentry> <term>PROP_TYPE_TOGGLE</term> <listitem><para>Emphasized if PROP_STATE_CHECKED, normal otherwise.</para></listitem> </varlistentry> <varlistentry> <term>PROP_TYPE_RADIO</term> <listitem><para>Option checked if PROP_STATE_CHECKED, unchecked otherwise.</para></listitem> </varlistentry> </variablelist> No effect on other types. Property option is unchecked. Property option is checked. The state is inconsistent with the associated IME property. Type enumeration of IBusProperty. Property is shown as normal text. Property is shown as a toggle button. Property is shown as a radio selection option. Property is shown as a menu, usually imply it has sub menu items. A separator for menu. An IBusProperty is an UI component like a button or a menu item which shows the status of corresponding input method engine property. End user can operate and see the current status of IME through these components. For example, ibus-chewing users change the English/Chinese input mode by pressing ctrl-space or click on the Eng/Chi switch button. And the IBusProperty shows the change correspondingly. see_also: #IBusPropList, #IBusEngine Creates a new #IBusProperty. A newly allocated #IBusProperty. Unique Identity for the #IBusProperty. #IBusPropType of #IBusProperty. Text shown in UI. Icon file for the #IBusProperty. Message shown if mouse hovered the #IBusProperty. Whether the #IBusProperty is sensitive to keyboard and mouse event. Whether the #IBusProperty is visible. IBusPropState of #IBusProperty. #IBusPropList that contains sub IBusProperties. Creates a new #IBusProperty. ibus_property_new_varargs() supports the va_list format. name property is required. e.g. ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL) A newly allocated #IBusProperty. Name of the first property. the NULL-terminated arguments of the properties and values. Get the icon of #IBusProperty. the icon of #IBusProperty. Should not be freed. An #IBusProperty. Get the key of #IBusProperty. the key of #IBusProperty. Should not be freed. An #IBusProperty. Get the label of #IBusProperty. the label of #IBusProperty. Should not be freed. An #IBusProperty. Get the sensitive of #IBusProperty. the sensitive of #IBusProperty. An #IBusProperty. Get the state of #IBusProperty. the state of #IBusProperty. An #IBusProperty. Get the IBusPropList of #IBusProperty. the IBusPropList of #IBusProperty. Should not be freed. An #IBusProperty. Get the symbol of #IBusProperty. the symbol of #IBusProperty. Should not be freed. An #IBusProperty. Get the tooltip of #IBusProperty. the tooltip of #IBusProperty. Should not be freed. An #IBusProperty. Get the visible of #IBusProperty. the visible of #IBusProperty. An #IBusProperty. Set the icon of #IBusProperty. An #IBusProperty. Icon shown in UI. It could be a full path of an icon file or an icon name. Set the label of #IBusProperty. An #IBusProperty. Text shown in UI. Set whether the #IBusProperty is sensitive. An #IBusProperty. Whether the #IBusProperty is sensitive. Set the state of the #IBusProperty. An #IBusProperty. The state of the #IBusProperty. Set the sub IBusProperties. An #IBusProperty. #IBusPropList that contains sub IBusProperties. Set the symbol of #IBusProperty. An #IBusProperty. Text shown in UI. Set the tooltip of #IBusProperty. An #IBusProperty. Text of the tooltip. Set whether the #IBusProperty is visible. An #IBusProperty. Whether the #IBusProperty is visible. Update the content of an #IBusProperty. #IBusProperty @prop_update can either be sub-property of @prop, or holds new values for @prop. TRUE for update suceeded; FALSE otherwise. An #IBusProperty. #IBusPropList that contains sub IBusProperties. An IBusProxy is the base of all proxy objects, which communicate the corresponding #IBusServices on the other end of IBusConnection. For example, IBus clients (such as editors, web browsers) invoke the proxy object, IBusInputContext to communicate with the InputContext service of the ibus-daemon. Almost all services have corresponding proxies, except very simple services. Dispose the proxy object. If the dbus connection is alive and the own variable above is TRUE (which is the default), org.freedesktop.IBus.Service.Destroy method will be called. Note that "destroy" signal might be emitted when ibus_proxy_destroy is called or the underlying dbus connection for the proxy is terminated. In the callback of the destroy signal, you might have to call something like 'g_object_unref(the_proxy);'. An #IBusProxy Dispose the proxy object. If the dbus connection is alive and the own variable above is TRUE (which is the default), org.freedesktop.IBus.Service.Destroy method will be called. Note that "destroy" signal might be emitted when ibus_proxy_destroy is called or the underlying dbus connection for the proxy is terminated. In the callback of the destroy signal, you might have to call something like 'g_object_unref(the_proxy);'. An #IBusProxy Destroy and free an IBusProxy See also: ibus_proxy_destroy(). <note><para>Argument @user_data is ignored in this function.</para></note> An #IBusProxy Rectangle definition. x coordinate. y coordinate. width of the rectangle. height of the renctangl. An #IBusRegistry loads IBus component files and generates the cache files. see_also: #IBusComponent Creates a new #IBusRegistry A newly allocated #IBusRegistry. Check if the registry is updated. %TRUE if mtime is changed; %FALSE otherwise. An #IBusRegistry. List components. a list of #IBusComponent objects. The caller has to call g_list_free() for the returned list. An #IBusRegistry. List observed paths. a list of #IBusObservedPath objects. The caller has to call g_list_free() for the returned list. An #IBusRegistry. Read all XML files in a IBus component directory (typically /usr/share/ibus/component/ *.xml) and update the registry object. IBUS_COMPONENT_PATH environment valuable is also available for the custom component directories, whose delimiter is ':'. An #IBusRegistry. Load the user or system registry cache. %TRUE if the cache exists and is loaded successfully, %FALSE otherwise. An #IBusRegistry. %TRUE if the registry cache is loaded in the user directory. Load the registry cache @filename. %TRUE if the cache exists and is loaded successfully, %FALSE otherwise. An #IBusRegistry. The file path of the registry cache Read all XML files in @dirname, create a #IBusComponent object for each file, and add the component objects to the registry. If @dirname is "/usr/share/ibus/component", this API and ibus_registry_load() are same. An #IBusRegistry. IBus component directory which includes XML files. Output #IBusRegistry as an XML-formatted string. The output string can be then shown on the screen or written to file. An #IBusRegistry. GString that holds the result. level of indent. Save the registry in a user directory or system directory. %TRUE if the cache is saved successfully, %FALSE otherwise. An #IBusRegistry. %TRUE if the registry cache is saved in the user directory. Save the registry cache @filename. %TRUE if the cache is saved successfully, %FALSE otherwise. An #IBusRegistry. The file path of the registry cache Start to monitor observed paths. An #IBusRegistry. Emitted when any observed paths are changed. A method is not associated in this class. the "changed" signal would be handled in other classes. See also: ibus_registry_start_monitor_changes(). Japanese keyboard support. Address of IBus config service. Address of IBus service. Address of IBus notification service. Address of IBus panel service. An #IBusSerializable is an IBus object which can be serialized, that is, to be to and from a #GVariant. This class is to be extended by other class that requires serialization. An extended class should overrides following methods: <itemizedlist> <listitem> <para><function>serialize(object,iter)</function>: for serialize.</para> </listitem> <listitem> <para><function>deserialize(object,iter)</function>: for deserialize.</para> </listitem> <listitem> <para><function>copy(desc,src)</function>: for copy between IBusSerializable.</para> </listitem> </itemizedlist> See IBusSerializableSerializeFunc(), IBusSerializableDeserializeFunc(), IBusSerializableCopyFunc() for function prototype. Creates a new instance of an #IBusSerializable. a new instance of #IBusSerializable. Deserialize a #GVariant to an #IBusSerializable/ The deserialize method should be implemented in extended class. The deserialized #IBusSerializable. See also: IBusSerializableCopyFunc(). A #GVariant. Clone an #IBusSerializable. The copy method should be implemented in extended class. A newly allocated clone object; or %NULL if @object is not serializable. See also: IBusSerializableCopyFunc(). An #IBusSerializable. Gets a value from attachment of an #IBusSerializable. The attached value; or %NULL if fail to retrieve the value. See also: ibus_serializable_set_attachment(). An #IBusSerializable. String formatted key for indexing value. Remove a value from attachment of an #IBusSerializable. See also: ibus_serializable_remove_attachment(). An #IBusSerializable. String formatted key for indexing value. Serialize an #IBusSerializable to a #GVariant. The serialize method should be implemented in extended class. A #GVariant. See also: IBusSerializableCopyFunc(). An #IBusSerializable. Attach a value to an #IBusSerializable. If the value is floating, the serializable will take the ownership. See also: ibus_serializable_set_attachment(). An #IBusSerializable. String formatted key for indexing value. Value to be attached or %NULL to remove any prevoius value. Prototype of copy function. Copy function copy from source #IBusSerializable to the destination one. Returns a gboolean value which indicates whether the copying is success. %TRUE if succeed; %FALSE otherwise. The destination #IBusSerializable. A source #IBusSerializable. Prototype of deserialize function. Deserialize function convert a #GVariant to #IBusSerializable. Returns an integer value which indicates how many values in the variant(tuple) are consumed. The number of values in the variant(tuple) are consumed. An #IBusSerializable. A #GVariant contains a tuple. Prototype of serialize function. Serialize function convert an #IBusSerializable to #GVariantBuilder. Returns a gboolean value which indicates whether the conversion is success. Return %TRUE if succeed. %TRUE if succeed; %FALSE otherwise. An #IBusSerializable. A #GVariantBuilder. An IBusService is a base class for services. Creantes a new #IBusService. A newly allocated #IBusService A GDBusConnection. Object path. The ::service_get_property class method is to connect GDBusInterfaceGetPropertyFunc(). A variant. An #IBusService. A dbus connection. A sender. An object path. An interface name. A property name. The ::service_method_call class method is to connect GDBusInterfaceMethodCallFunc(). An #IBusService. A dbus connection. A sender. An object path. An interface name. A method name. A parameters. A dbus method invocation. The ::service_set_property class method is to connect GDBusInterfaceSetPropertyFunc(). %TRUE if set the value else %FALSE. An #IBusService. A dbus connection. A sender. An object path. An interface name. An property name. An property value. Gets a connections. A #GDBusConnection of an #IBusService instance. An IBusService. Gets the object path of an IBusService. The object path of @service An IBusService. Registers service to a connection. %TRUE if the service was registered, %FALSE otherwise. An IBusService. A GDBusConnection the service will be registered to. Unregisters service from a connection. An IBusService. A GDBusConnection the service was registered with. The connection of service object. The path of service object. An #IBusService. A dbus connection. A sender. An object path. An interface name. A method name. A parameters. A dbus method invocation. A variant. An #IBusService. A dbus connection. A sender. An object path. An interface name. A property name. %TRUE if set the value else %FALSE. An #IBusService. A dbus connection. A sender. An object path. An interface name. An property name. An property value. Set the interface introspection information with the service class. %TRUE if @xml_data is valid and succeeded to be added; %FALSE otherwise. An IBusServiceClass. The introspection xml data. An IBusText is the main text object in IBus. The text is decorated according to associated IBusAttribute, e.g. the foreground/background color, underline, and applied scope. see_also: #IBusAttribute Creates a new #IBusText from a printf expression. The result of printf expression is stored in the new IBusText instance. A newly allocated #IBusText. printf format string. arguments for @fmt. Creates a new #IBusText from a static string. Since @str is a static string which won't be freed. This function will NOT duplicate @str. A newly allocated #IBusText. An text string to be set. Creates a new #IBusText from a string. @str will be duplicated in #IBusText, so feel free to free @str after this function. A newly allocated #IBusText. An text string to be set. Creates a new #IBusText from an UCS-4 encoded string. @str will be duplicated in IBusText, so feel free to free @str after this function. A newly allocated #IBusText. An text string to be set. Creates a new #IBusText from a single UCS4-encoded character. A newly allocated #IBusText. A single UCS4-encoded character. Append an IBusAttribute for IBusText. an IBusText IBusAttributeType for @text. Value for the type. The starting index, inclusive. The ending index, exclusive. Return the attributes in an #IBusText. Should not be freed. the attrs in @text. An #IBusText. Return the is_static in an #IBusText. the is_static in @text. An #IBusText. Return number of characters in an #IBusText. This function is based on g_utf8_strlen(), so unlike strlen(), it does not count by bytes but characters instead. Number of character in @text, not counted by bytes. An #IBusText. Return the text in an #IBusText. Should not be freed. the text in @text. An #IBusText. An IBusText. An IBusAttrList Whether @text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string(). The string content of IBusText in UTF-8. Associated IBusAttributes. IBusXML lists data structure and handling function for XML in IBus. Name of XML tag. Text enclosed by XML start tag and end tag. i.e. <tag>text</tag>. Attributes of the XML node. Children node of this XML node. Creates a copy of @node, which should be freed with ibus_xml_free(). Primarily used by language bindings, not that useful otherwise (since @node can just be copied by assignment in C). the newly allocated #IBusXML, which should be freed with ibus_xml_free(), or %NULL if @node was %NULL. Root node of an XML tree. Free an XML tree. Root node of an XML tree. Output an XML tree to a GString. Root node of an XML tree. GString which stores the output. Parse a string buffer which contains an XML-formatted string, and return a corresponding XML tree. Root node of parsed XML tree. Buffer to be parsed. Parse an XML file and return a corresponding XML tree. Root node of parsed XML tree. File name to be parsed. Creates a new background #IBusAttribute. A newly allocated #IBusAttribute. Color in RGB. Where attribute starts. Where attribute ends. Creates a new foreground #IBusAttribute. A newly allocated #IBusAttribute. Color in RGB. Where attribute starts. Where attribute ends. Creates a new underline #IBusAttribute. A newly allocated #IBusAttribute. Type of underline. Where attribute starts. Where attribute ends. Free a list of strings. This function has been deprecated and should not be used in newly written code. List of strings. Return the D-Bus address of IBus. It will find the address from following source: <orderedlist> <listitem><para>Environment variable IBUS_ADDRESS</para></listitem> <listitem><para>Socket file under ~/.config/ibus/bus/</para></listitem> </orderedlist> D-Bus address of IBus. %NULL for not found. See also: ibus_write_address(). Get UID of ibus-daemon. This function has been deprecated and should not be used in newly written code. UID of ibus-daemon; or 0 if UID is not available. translated language name A const locale name. Obtains the machine UUID of the machine this process is running on. A newly allocated string that shows the UUID of the machine. Get the path of socket file. A newly allocated string that stores the path of socket file. Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. im-ibus.so), not for ibus-daemon. Note that the timeout for ibus-daemon could be set by --timeout command line option of the daemon. A GDBus timeout in milliseconds. -1 when default timeout for GDBus should be used. untranslated language name A const locale name. Get the current user name. It is determined by: <orderedlist> <listitem><para>getlogin()</para></listitem> <listitem><para>Environment variable SUDO_USER</para></listitem> <listitem><para>Environment variable USERHELPER_UID</para></listitem> <listitem><para>Environment variable USERNAME</para></listitem> <listitem><para>Environment variable LOGNAME</para></listitem> <listitem><para>Environment variable USER</para></listitem> <listitem><para>Environment variable LNAME</para></listitem> </orderedlist> A newly allocated string that stores current user name. Initialize the ibus types. Parse key event string and return key symbol and modifiers. %TRUE for succeed; %FALSE if failed. Key event string. Variable that hold key symbol result. Variable that hold modifiers result. Return the name of a key symbol and modifiers. For example, if press ctrl, shift, and enter, then this function returns: Shift+Control+enter. The name of a key symbol and modifier. Key symbol. Modifiers such as Ctrl or Shift. Obtains the upper- and lower-case versions of the keyval @symbol. Examples of keyvals are #IBUS_KEY_a, #IBUS_KEY_Return, #IBUS_KEY_F1, etc. a keyval return location for lowercase version of @symbol return location for uppercase version of @symbol Return the key symbol that associate with the key name. Corresponding key symbol. Key name in #gdk_keys_by_name. Return the name of a key symbol. Note that the returned string is used internally, so don't free it. Corresponding key name. %NULL if no such key symbol. Key symbol. Converts a key value to lower case, if applicable. the lower case form of @keyval, or @keyval itself if it is already in lower case or it is not subject to case conversion. a key value. Convert from an IBus key symbol to the corresponding ISO10646 (Unicode) character. the corresponding unicode character, or 0 if there is no corresponding character. an IBus key symbol Converts a key value to upper case, if applicable. the upper case form of @keyval, or @keyval itself if it is already in upper case or it is not subject to case conversion. a key value. Runs an IBus main loop until ibus_quit() is called in the loop. See also: ibus_quit(). Stops an IBus from running. Any calls to ibus_quit() for the loop will return. See also: ibus_main(). Set the display address. Display address, as in DISPLAY environment for X. Sets GLIB's log handler to ours. Our log handler adds time info including hour, minute, second, and microsecond, like: (ibus-daemon:7088): IBUS-DEBUG: 18:06:45.822819: ibus-daemon started If @verbose is %TRUE, all levels of messages will be logged. Otherwise, DEBUG and WARNING messages will be ignored. The function is used in ibus-daemon, but can be useful for IBus client programs as well for debugging. It's totally fine for not calling this function. If you don't set a custom GLIB log handler, the default GLIB log handler will be used. TRUE for verbose logging. Convert from a ISO10646 character to a key symbol. the corresponding IBus key symbol, if one exists. or, if there is no corresponding symbol, wc | 0x01000000 a ISO10646 encoded character Remove the log handler which is set by ibus_set_log_handler. Write D-Bus address to socket file. See also: ibus_get_address(). D-Bus address of IBus. Parse a string buffer which contains an XML-formatted string, and return a corresponding XML tree. Root node of parsed XML tree. Buffer to be parsed. Parse an XML file and return a corresponding XML tree. Root node of parsed XML tree. File name to be parsed. ibus-1.5.11/src/ibusmarshalers.c0000644000000000000000000010177412551654437013435 00000000000000#include "ibusmarshalers.h" #include #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ /* VOID:NONE (./ibusmarshalers.list:1) */ /* VOID:OBJECT (./ibusmarshalers.list:2) */ /* VOID:POINTER (./ibusmarshalers.list:3) */ /* VOID:STRING (./ibusmarshalers.list:4) */ /* VOID:STRING,INT (./ibusmarshalers.list:5) */ void _ibus_marshal_VOID__STRING_INT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_INT) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2); register GMarshalFunc_VOID__STRING_INT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_int (param_values + 2), data2); } /* VOID:STRING,UINT (./ibusmarshalers.list:6) */ void _ibus_marshal_VOID__STRING_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_UINT) (gpointer data1, gpointer arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__STRING_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* BOOL:POINTER (./ibusmarshalers.list:7) */ void _ibus_marshal_BOOLEAN__POINTER (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER) (gpointer data1, gpointer arg_1, gpointer data2); register GMarshalFunc_BOOLEAN__POINTER callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__POINTER) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_pointer (param_values + 1), data2); g_value_set_boolean (return_value, v_return); } /* BOOL:POINTER,POINTER (./ibusmarshalers.list:8) */ void _ibus_marshal_BOOLEAN__POINTER_POINTER (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER_POINTER) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2); register GMarshalFunc_BOOLEAN__POINTER_POINTER callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_pointer (param_values + 1), g_marshal_value_peek_pointer (param_values + 2), data2); g_value_set_boolean (return_value, v_return); } /* BOOL:UINT,UINT (./ibusmarshalers.list:9) */ void _ibus_marshal_BOOLEAN__UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_BOOLEAN__UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__UINT_UINT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); g_value_set_boolean (return_value, v_return); } /* BOOL:UINT,UINT,UINT (./ibusmarshalers.list:10) */ void _ibus_marshal_BOOLEAN__UINT_UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_BOOLEAN__UINT_UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_uint (param_values + 3), data2); g_value_set_boolean (return_value, v_return); } /* BOOL:ULONG (./ibusmarshalers.list:11) */ void _ibus_marshal_BOOLEAN__ULONG (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gboolean (*GMarshalFunc_BOOLEAN__ULONG) (gpointer data1, gulong arg_1, gpointer data2); register GMarshalFunc_BOOLEAN__ULONG callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_BOOLEAN__ULONG) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_ulong (param_values + 1), data2); g_value_set_boolean (return_value, v_return); } /* VOID:INT,INT,INT,INT (./ibusmarshalers.list:12) */ void _ibus_marshal_VOID__INT_INT_INT_INT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__INT_INT_INT_INT) (gpointer data1, gint arg_1, gint arg_2, gint arg_3, gint arg_4, gpointer data2); register GMarshalFunc_VOID__INT_INT_INT_INT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__INT_INT_INT_INT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_int (param_values + 1), g_marshal_value_peek_int (param_values + 2), g_marshal_value_peek_int (param_values + 3), g_marshal_value_peek_int (param_values + 4), data2); } /* VOID:UINT,UINT (./ibusmarshalers.list:13) */ void _ibus_marshal_VOID__UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* VOID:INT,UINT (./ibusmarshalers.list:14) */ void _ibus_marshal_VOID__INT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__INT_UINT) (gpointer data1, gint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__INT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__INT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_int (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* VOID:UINT,UINT,UINT (./ibusmarshalers.list:15) */ void _ibus_marshal_VOID__UINT_UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__UINT_UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_uint (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_uint (param_values + 3), data2); } /* VOID:OBJECT,UINT,BOOL (./ibusmarshalers.list:16) */ void _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN) (gpointer data1, gpointer arg_1, guint arg_2, gboolean arg_3, gpointer data2); register GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_boolean (param_values + 3), data2); } /* VOID:OBJECT,UINT,BOOL,UINT (./ibusmarshalers.list:17) */ void _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT) (gpointer data1, gpointer arg_1, guint arg_2, gboolean arg_3, guint arg_4, gpointer data2); register GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_boolean (param_values + 3), g_marshal_value_peek_uint (param_values + 4), data2); } /* VOID:OBJECT,UINT,UINT (./ibusmarshalers.list:18) */ void _ibus_marshal_VOID__OBJECT_UINT_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_UINT_UINT) (gpointer data1, gpointer arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__OBJECT_UINT_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_uint (param_values + 2), g_marshal_value_peek_uint (param_values + 3), data2); } /* VOID:OBJECT,BOOL (./ibusmarshalers.list:19) */ void _ibus_marshal_VOID__OBJECT_BOOLEAN (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2); register GMarshalFunc_VOID__OBJECT_BOOLEAN callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_boolean (param_values + 2), data2); } /* VOID:BOXED,BOOL (./ibusmarshalers.list:20) */ void _ibus_marshal_VOID__BOXED_BOOLEAN (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__BOXED_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2); register GMarshalFunc_VOID__BOXED_BOOLEAN callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__BOXED_BOOLEAN) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_boxed (param_values + 1), g_marshal_value_peek_boolean (param_values + 2), data2); } /* VOID:BOXED (./ibusmarshalers.list:21) */ /* VOID:STRING,STRING,VARIANT (./ibusmarshalers.list:22) */ void _ibus_marshal_VOID__STRING_STRING_VARIANT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_STRING_VARIANT) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer arg_3, gpointer data2); register GMarshalFunc_VOID__STRING_STRING_VARIANT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_STRING_VARIANT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_string (param_values + 2), g_marshal_value_peek_variant (param_values + 3), data2); } /* VOID:STRING,STRING,STRING (./ibusmarshalers.list:23) */ void _ibus_marshal_VOID__STRING_STRING_STRING (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer arg_3, gpointer data2); register GMarshalFunc_VOID__STRING_STRING_STRING callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__STRING_STRING_STRING) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_string (param_values + 2), g_marshal_value_peek_string (param_values + 3), data2); } /* VOID:UINT (./ibusmarshalers.list:24) */ /* VOID:UINT,POINTER (./ibusmarshalers.list:25) */ /* VOID:POINTER,UINT (./ibusmarshalers.list:26) */ void _ibus_marshal_VOID__POINTER_UINT (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__POINTER_UINT) (gpointer data1, gpointer arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__POINTER_UINT callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_VOID__POINTER_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_pointer (param_values + 1), g_marshal_value_peek_uint (param_values + 2), data2); } /* OBJECT:STRING (./ibusmarshalers.list:27) */ void _ibus_marshal_OBJECT__STRING (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef GObject* (*GMarshalFunc_OBJECT__STRING) (gpointer data1, gpointer arg_1, gpointer data2); register GMarshalFunc_OBJECT__STRING callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; GObject* v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_OBJECT__STRING) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_string (param_values + 1), data2); g_value_take_object (return_value, v_return); } ibus-1.5.11/src/ibusinternal.h0000644000000000000000000000356012551654123013077 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_INTERNEL_H_ #define __IBUS_INTERNEL_H_ #include /** * I_: * @string: A string * @returns: The canonical representation for the string. * * Returns a canonical representation for string. * Interned strings can be compared for equality by comparing the pointers, instead of using strcmp(). */ #define I_(string) g_intern_static_string (string) /** * DBUS_SERVICE_DBUS: * * Address of D-Bus service. */ #define DBUS_SERVICE_DBUS "org.freedesktop.DBus" /** * DBUS_PATH_DBUS: * * D-Bus path for D-Bus. */ #define DBUS_PATH_DBUS "/org/freedesktop/DBus" /** * DBUS_INTERFACE_DBUS: * * D-Bus interface for D-Bus. */ #define DBUS_INTERFACE_DBUS "org.freedesktop.DBus" G_GNUC_INTERNAL void ibus_g_variant_get_child_string (GVariant *variant, gsize index, char **str); #endif ibus-1.5.11/src/ibusenginedesc.h0000644000000000000000000002467512551654123013401 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_ENGINE_DESC_H_ #define __IBUS_ENGINE_DESC_H_ /** * SECTION: ibusenginedesc * @short_description: Input method engine description data. * @title: IBusEngineDesc * @stability: Stable * * An IBusEngineDesc stores description data of IBusEngine. * The description data can either be passed to ibus_engine_desc_new(), * or loaded from an XML node through ibus_engine_desc_new_from_xml_node() * to construct IBusEngineDesc. * * However, the recommended way to load engine description data is * using ibus_component_new_from_file() to load a component file, * which also includes engine description data. * * see_also: #IBusComponent, #IBusEngine * */ #include "ibusserializable.h" #include "ibusxml.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_ENGINE_DESC \ (ibus_engine_desc_get_type ()) #define IBUS_ENGINE_DESC(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ENGINE_DESC, IBusEngineDesc)) #define IBUS_ENGINE_DESC_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ENGINE_DESC, IBusEngineDescClass)) #define IBUS_IS_ENGINE_DESC(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ENGINE_DESC)) #define IBUS_IS_ENGINE_DESC_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ENGINE_DESC)) #define IBUS_ENGINE_DESC_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ENGINE_DESC, IBusEngineDescClass)) G_BEGIN_DECLS typedef struct _IBusEngineDesc IBusEngineDesc; typedef struct _IBusEngineDescPrivate IBusEngineDescPrivate; typedef struct _IBusEngineDescClass IBusEngineDescClass; /** * IBusEngineDesc: * * Input method engine description data. * You can get extended values with g_object_get_properties. */ struct _IBusEngineDesc { IBusSerializable parent; /* instance members */ /*< public >*/ /*< private >*/ IBusEngineDescPrivate *priv; }; struct _IBusEngineDescClass { IBusSerializableClass parent; /* class members */ }; GType ibus_engine_desc_get_type (void); /** * ibus_engine_desc_new: * @name: Name of the engine. * @longname: Long name of the input method engine. * @description: Input method engine description. * @language: Language (e.g. zh, jp) supported by this input method engine. * @license: License of the input method engine. * @author: Author of the input method engine. * @icon: Icon file of this engine. * @layout: Keyboard layout * * Creates a new #IBusEngineDesc. * * Returns: A newly allocated IBusEngineDesc. */ IBusEngineDesc *ibus_engine_desc_new (const gchar *name, const gchar *longname, const gchar *description, const gchar *language, const gchar *license, const gchar *author, const gchar *icon, const gchar *layout); /** * ibus_engine_desc_new_varargs: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusEngineDesc. * ibus_engine_desc_new_varargs() supports the va_list format. * name property is required. e.g. * ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL) * * Returns: A newly allocated IBusEngineDesc. */ IBusEngineDesc *ibus_engine_desc_new_varargs (const gchar *first_property_name, ...); /** * ibus_engine_desc_new_from_xml_node: * @node: An XML node * * Creates a new IBusEngineDesc from an XML node. * This function is called by ibus_component_new_from_file(), * so developers normally do not need to call it directly. * * * Returns: A newly allocated IBusEngineDesc that contains description from * @node. */ IBusEngineDesc *ibus_engine_desc_new_from_xml_node (XMLNode *node); /** * ibus_engine_desc_get_name: * @info: An IBusEngineDesc * * Gets the name property in IBusEngineDesc. It should not be freed. * * Returns: name property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_name (IBusEngineDesc *info); /** * ibus_engine_desc_get_longname: * @info: An IBusEngineDesc * * Gets the longname property in IBusEngineDesc. It should not be freed. * * Returns: longname property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_longname (IBusEngineDesc *info); /** * ibus_engine_desc_get_description: * @info: An IBusEngineDesc * * Gets the description property in IBusEngineDesc. It should not be freed. * * Returns: description property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_description (IBusEngineDesc *info); /** * ibus_engine_desc_get_language: * @info: An IBusEngineDesc * * Gets the language property in IBusEngineDesc. It should not be freed. * * Returns: language property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_language (IBusEngineDesc *info); /** * ibus_engine_desc_get_license: * @info: An IBusEngineDesc * * Gets the license property in IBusEngineDesc. It should not be freed. * * Returns: license property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_license (IBusEngineDesc *info); /** * ibus_engine_desc_get_author: * @info: An IBusEngineDesc * * Gets the author property in IBusEngineDesc. It should not be freed. * * Returns: author property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_author (IBusEngineDesc *info); /** * ibus_engine_desc_get_icon: * @info: An IBusEngineDesc * * Gets the icon property in IBusEngineDesc. It should not be freed. * * Returns: icon property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_icon (IBusEngineDesc *info); /** * ibus_engine_desc_get_layout: * @info: An IBusEngineDesc * * Gets the layout property in IBusEngineDesc. It should not be freed. * * Returns: layout property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_layout (IBusEngineDesc *info); /** * ibus_engine_desc_get_layout_variant: * @info: An IBusEngineDesc * * Gets the keyboard variant property in IBusEngineDesc. It should not be freed. * * Returns: keyboard variant property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_layout_variant (IBusEngineDesc *info); /** * ibus_engine_desc_get_layout_option: * @info: An IBusEngineDesc * * Gets the keyboard option property in IBusEngineDesc. It should not be freed. * * Returns: keyboard option property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_layout_option (IBusEngineDesc *info); /** * ibus_engine_desc_get_rank: * @info: An IBusEngineDesc * * Gets the rank property in IBusEngineDesc. * * Returns: rank property in IBusEngineDesc */ guint ibus_engine_desc_get_rank (IBusEngineDesc *info); /** * ibus_engine_desc_get_hotkeys: * @info: An IBusEngineDesc * * Gets the hotkeys property in IBusEngineDesc. It should not be freed. * * Returns: hotkeys property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_hotkeys (IBusEngineDesc *info); /** * ibus_engine_desc_get_symbol: * @info: An IBusEngineDesc * * Gets the symbol property in IBusEngineDesc. It should not be freed. * * Returns: symbol property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_symbol (IBusEngineDesc *info); /** * ibus_engine_desc_get_setup: * @info: An IBusEngineDesc * * Gets the setup property in IBusEngineDesc. It should not be freed. * * Returns: setup property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_setup (IBusEngineDesc *info); /** * ibus_engine_desc_get_version: * @info: An IBusEngineDesc * * Gets the version property in IBusEngineDesc. It should not be freed. * * Returns: version in IBusEngineDesc */ const gchar *ibus_engine_desc_get_version (IBusEngineDesc *info); /** * ibus_engine_desc_get_textdomain: * @info: An IBusEngineDesc * * Gets the textdomain property in IBusEngineDesc. It should not be freed. * * Returns: textdomain in IBusEngineDesc */ const gchar *ibus_engine_desc_get_textdomain (IBusEngineDesc *info); /** * ibus_engine_desc_get_icon_prop_key: * @info: An IBusEngineDesc * * Gets the key of IBusProperty to load the panel icon dynamically * in IBusEngineDesc. It should not be freed. * * Returns: IBusProperty.key for dynamic panel icon in IBusEngineDesc */ const gchar *ibus_engine_desc_get_icon_prop_key (IBusEngineDesc *info); /** * ibus_engine_desc_output: * @info: An IBusEngineDesc * @output: XML-formatted Input method engine description. * @indent: Number of indent (showed as 4 spaces). * * Output XML-formatted input method engine description. * The result will be append to GString specified in @output. */ void ibus_engine_desc_output (IBusEngineDesc *info, GString *output, gint indent); G_END_DECLS #endif ibus-1.5.11/src/ibustypes.h0000644000000000000000000002404012551654123012423 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_TYPES_H_ #define __IBUS_TYPES_H_ /** * SECTION: ibustypes * @short_description: Generic types for IBus. * @stability: Stable * * This section consists generic types for IBus, including shift/control key * modifiers, * and a rectangle structure. */ /** * IBusModifierType: * @IBUS_SHIFT_MASK: Shift is activated. * @IBUS_LOCK_MASK: Cap Lock is locked. * @IBUS_CONTROL_MASK: Control key is activated. * @IBUS_MOD1_MASK: Modifier 1 (Usually Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)) activated. * @IBUS_MOD2_MASK: Modifier 2 (Usually Num_Lock (0x4d)) activated. * @IBUS_MOD3_MASK: Modifier 3 activated. * @IBUS_MOD4_MASK: Modifier 4 (Usually Super_L (0xce), Hyper_L (0xcf)) activated. * @IBUS_MOD5_MASK: Modifier 5 (ISO_Level3_Shift (0x5c), Mode_switch (0xcb)) activated. * @IBUS_BUTTON1_MASK: Mouse button 1 (left) is activated. * @IBUS_BUTTON2_MASK: Mouse button 2 (middle) is activated. * @IBUS_BUTTON3_MASK: Mouse button 3 (right) is activated. * @IBUS_BUTTON4_MASK: Mouse button 4 (scroll up) is activated. * @IBUS_BUTTON5_MASK: Mouse button 5 (scroll down) is activated. * @IBUS_HANDLED_MASK: Handled mask indicates the event has been handled by ibus. * @IBUS_FORWARD_MASK: Forward mask indicates the event has been forward from ibus. * @IBUS_IGNORED_MASK: It is an alias of IBUS_FORWARD_MASK. * @IBUS_SUPER_MASK: Super (Usually Win) key is activated. * @IBUS_HYPER_MASK: Hyper key is activated. * @IBUS_META_MASK: Meta key is activated. * @IBUS_RELEASE_MASK: Key is released. * @IBUS_MODIFIER_MASK: Modifier mask for the all the masks above. * * Handles key modifier such as control, shift and alt and release event. * Note that nits 15 - 25 are currently unused, while bit 29 is used internally. */ typedef enum { IBUS_SHIFT_MASK = 1 << 0, IBUS_LOCK_MASK = 1 << 1, IBUS_CONTROL_MASK = 1 << 2, IBUS_MOD1_MASK = 1 << 3, IBUS_MOD2_MASK = 1 << 4, IBUS_MOD3_MASK = 1 << 5, IBUS_MOD4_MASK = 1 << 6, IBUS_MOD5_MASK = 1 << 7, IBUS_BUTTON1_MASK = 1 << 8, IBUS_BUTTON2_MASK = 1 << 9, IBUS_BUTTON3_MASK = 1 << 10, IBUS_BUTTON4_MASK = 1 << 11, IBUS_BUTTON5_MASK = 1 << 12, /* The next few modifiers are used by XKB, so we skip to the end. * Bits 15 - 23 are currently unused. Bit 29 is used internally. */ /* ibus mask */ IBUS_HANDLED_MASK = 1 << 24, IBUS_FORWARD_MASK = 1 << 25, IBUS_IGNORED_MASK = IBUS_FORWARD_MASK, IBUS_SUPER_MASK = 1 << 26, IBUS_HYPER_MASK = 1 << 27, IBUS_META_MASK = 1 << 28, IBUS_RELEASE_MASK = 1 << 30, IBUS_MODIFIER_MASK = 0x5f001fff } IBusModifierType; /** * IBusCapabilite: * @IBUS_CAP_PREEDIT_TEXT: UI is capable to show pre-edit text. * @IBUS_CAP_AUXILIARY_TEXT: UI is capable to show auxiliary text. * @IBUS_CAP_LOOKUP_TABLE: UI is capable to show the lookup table. * @IBUS_CAP_FOCUS: UI is capable to get focus. * @IBUS_CAP_PROPERTY: UI is capable to have property. * @IBUS_CAP_SURROUNDING_TEXT: Client can provide surround text, * or IME can handle surround text. * * Capability flags of UI. */ typedef enum { IBUS_CAP_PREEDIT_TEXT = 1 << 0, IBUS_CAP_AUXILIARY_TEXT = 1 << 1, IBUS_CAP_LOOKUP_TABLE = 1 << 2, IBUS_CAP_FOCUS = 1 << 3, IBUS_CAP_PROPERTY = 1 << 4, IBUS_CAP_SURROUNDING_TEXT = 1 << 5, } IBusCapabilite; /** * IBusPreeditFocusMode: * @IBUS_ENGINE_PREEDIT_CLEAR: pre-edit text is cleared. * @IBUS_ENGINE_PREEDIT_COMMIT: pre-edit text is committed. * * Pre-edit commit mode when the focus is lost. */ typedef enum { IBUS_ENGINE_PREEDIT_CLEAR = 0, IBUS_ENGINE_PREEDIT_COMMIT = 1, } IBusPreeditFocusMode; /** * IBusOrientation: * @IBUS_ORIENTATION_HORIZONTAL: Horizontal orientation. * @IBUS_ORIENTATION_VERTICAL: Vertival orientation. * @IBUS_ORIENTATION_SYSTEM: Use ibus global orientation setup. * * Orientation of UI. */ typedef enum { IBUS_ORIENTATION_HORIZONTAL = 0, IBUS_ORIENTATION_VERTICAL = 1, IBUS_ORIENTATION_SYSTEM = 2, } IBusOrientation; /** * IBusBusNameFlag: * @IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT: * same as DBUS_NAME_FLAG_ALLOW_REPLACEMENT * @IBUS_BUS_NAME_FLAG_REPLACE_EXISTING: * same as DBUS_NAME_FLAG_REPLACE_EXISTING * @IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE: * same as DBUS_NAME_FLAG_DO_NOT_QUEUE */ typedef enum { IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT = (1 << 0), IBUS_BUS_NAME_FLAG_REPLACE_EXISTING = (1 << 1), IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE = (1 << 2), } IBusBusNameFlag; /** * IBusBusRequestNameReply: * @IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER: * same as DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER * @IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE: * same as DBUS_REQUEST_NAME_REPLY_IN_QUEUE * @IBUS_BUS_REQUEST_NAME_REPLY_EXISTS: * same as DBUS_REQUEST_NAME_REPLY_EXISTS * @IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER: * same as DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER */ typedef enum { IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1, IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE = 2, IBUS_BUS_REQUEST_NAME_REPLY_EXISTS = 3, IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4, } IBusBusRequestNameReply; /** * IBusBusStartServiceByNameReply: * @IBUS_BUS_START_REPLY_SUCCESS: * same as DBUS_START_REPLY_SUCCESS * @IBUS_BUS_START_REPLY_ALREADY_RUNNING: * same as DBUS_START_REPLY_ALREADY_RUNNING */ typedef enum { IBUS_BUS_START_REPLY_SUCCESS = 1, IBUS_BUS_START_REPLY_ALREADY_RUNNING = 2, } IBusBusStartServiceByNameReply; /** * IBusError: * @IBUS_ERROR_NO_ENGINE: * There is no engine associated with input context. * @IBUS_ERROR_NO_CONFIG: * There is no config module running. * @IBUS_ERROR_FAILED: * General failure. */ typedef enum { IBUS_ERROR_NO_ENGINE, IBUS_ERROR_NO_CONFIG, IBUS_ERROR_FAILED } IBusError; /** * IBusRectangle: * @x: x coordinate. * @y: y coordinate. * @width: width of the rectangle. * @height: height of the renctangl. * * Rectangle definition. */ typedef struct _IBusRectangle IBusRectangle; struct _IBusRectangle { gint x; gint y; gint width; gint height; }; /** * IBusFreeFunc: * @object: object to be freed. * * Free function prototype. */ typedef void (* IBusFreeFunc) (gpointer object); /** * IBusInputPurpose: * @IBUS_INPUT_PURPOSE_FREE_FORM: Allow any character * @IBUS_INPUT_PURPOSE_ALPHA: Allow only alphabetic characters * @IBUS_INPUT_PURPOSE_DIGITS: Allow only digits * @IBUS_INPUT_PURPOSE_NUMBER: Edited field expects numbers * @IBUS_INPUT_PURPOSE_PHONE: Edited field expects phone number * @IBUS_INPUT_PURPOSE_URL: Edited field expects URL * @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address * @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person * @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM, * but characters are hidden * @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but * characters are hidden * * Describes primary purpose of the input context. This information * is particularly useful to implement intelligent behavior in * engines, such as automatic input-mode switch and text prediction. * * This enumeration may be extended in the future; engines should * interpret unknown values as 'free form'. */ typedef enum { IBUS_INPUT_PURPOSE_FREE_FORM, IBUS_INPUT_PURPOSE_ALPHA, IBUS_INPUT_PURPOSE_DIGITS, IBUS_INPUT_PURPOSE_NUMBER, IBUS_INPUT_PURPOSE_PHONE, IBUS_INPUT_PURPOSE_URL, IBUS_INPUT_PURPOSE_EMAIL, IBUS_INPUT_PURPOSE_NAME, IBUS_INPUT_PURPOSE_PASSWORD, IBUS_INPUT_PURPOSE_PIN } IBusInputPurpose; /** * IBusInputHints: * @IBUS_INPUT_HINT_NONE: No special behaviour suggested * @IBUS_INPUT_HINT_SPELLCHECK: Suggest checking for typos * @IBUS_INPUT_HINT_NO_SPELLCHECK: Suggest not checking for typos * @IBUS_INPUT_HINT_WORD_COMPLETION: Suggest word completion * @IBUS_INPUT_HINT_LOWERCASE: Suggest to convert all text to lowercase * @IBUS_INPUT_HINT_UPPERCASE_CHARS: Suggest to capitalize all text * @IBUS_INPUT_HINT_UPPERCASE_WORDS: Suggest to capitalize the first * character of each word * @IBUS_INPUT_HINT_UPPERCASE_SENTENCES: Suggest to capitalize the * first word of each sentence * @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard * (e.g for a calculator that already has all the keys). * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. * * Describes hints that might be taken into account by engines. Note * that engines may already tailor their behaviour according to the * #IBusInputPurpose of the entry. */ typedef enum { IBUS_INPUT_HINT_NONE = 0, IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, IBUS_INPUT_HINT_LOWERCASE = 1 << 3, IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8 } IBusInputHints; #endif ibus-1.5.11/src/ibuscomposetable.c0000644000000000000000000005552712551654123013745 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus - The Input Bus * Copyright (C) 2013-2014 Peng Huang * Copyright (C) 2013-2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ /* If you copy libX11/nls/??/Compose.pre in xorg git HEAD to * /usr/share/X11/locale/??/Compose , need to convert: * # sed -e 's/^XCOMM/#/' -e 's|X11_LOCALEDATADIR|/usr/share/X11/locale|' * Compose.pre > /usr/share/X11/locale/foo/Compose */ #include #include #include #include #include #include #include "ibuserror.h" #include "ibuskeys.h" #include "ibuskeysyms.h" #include "ibuscomposetable.h" #include "ibustypes.h" #define IS_DEAD_KEY(k) \ ((k) >= IBUS_KEY_dead_grave && (k) <= (IBUS_KEY_dead_dasia + 1)) int MAX_COMPOSE_LEN = 0; int N_INDEX_STRIDE = 0; static gboolean is_codepoint (const gchar *str) { gboolean retval = (strlen (str) > 1 && *str == 'U'); int i; if (!retval) return FALSE; for (i = 1; str[i] != '\0'; i++) { if (g_ascii_isxdigit (str[i])) continue; else return FALSE; } return TRUE; } static guint32 get_codepoint (const gchar *str) { if (g_str_has_prefix (str, "IBUS_KEY_")) return (guint32) ibus_keyval_from_name (str + 9); if (*str == '0' && *(str + 1) == '\0') return 0; if (*str == '0' && *(str + 1) == 'x') return (guint32) g_ascii_strtoll (str, NULL, 16); g_assert_not_reached (); return 0; } static gboolean parse_compose_value (GArray *array, const gchar *val, GError **error) { gchar **words = g_strsplit (val, "\"", 3); gchar *result; gunichar uch; if (g_strv_length (words) < 3) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "Need to double-quote the value: %s", val); g_strfreev (words); return FALSE; } uch = g_utf8_get_char (words[1]); if (uch == 0) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "Invalid value: %s", val); g_strfreev (words); return FALSE; } else if (uch == '\\') { uch = words[1][1]; /* The escaped string "\"" is separated with '\\' and '"'. */ if (uch == '\0' && words[2][0] == '"') uch = '"'; /* The escaped octal */ else if (uch >= '0' && uch <= '8') uch = g_ascii_strtoll(words[1] + 1, 0, 8); /* If we need to handle other escape sequences. */ else if (uch != '\\') g_assert_not_reached (); } else if (g_utf8_get_char (g_utf8_next_char (words[1])) > 0) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "GTK+ supports to output one char only: %s", val); g_strfreev (words); return FALSE; } result = g_strdup_printf ("0x%08X", uch); g_array_append_val (array, result); if (uch == '"') result = g_strdup (g_strstrip (words[2] + 1)); else result = g_strdup (g_strstrip (words[2])); g_array_append_val (array, result); g_strfreev (words); return TRUE; } static gboolean parse_compose_sequence (GArray *array, const gchar *seq, GError **error) { gchar **words = g_strsplit (seq, "<", -1); gchar *result; int i; int n = 0; if (g_strv_length (words) < 2) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "key sequence format is ..."); g_strfreev (words); return FALSE; } for (i = 1; words[i] != NULL; i++) { gchar *start = words[i]; gchar *end = index (words[i], '>'); gchar *match; if (words[i][0] == '\0') continue; if (start == NULL || end == NULL || end <= start) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "key sequence format is ..."); g_strfreev (words); return FALSE; } match = g_strndup (start, end - start); if (is_codepoint (match)) { gint64 code = g_ascii_strtoll (match + 1, NULL, 16); result = g_strdup_printf ("0x%04X", (unsigned int) code); } else result = g_strdup_printf ("IBUS_KEY_%s", match); g_free (match); g_array_append_val (array, result); n++; } g_strfreev (words); if (0 == n || n >= IBUS_MAX_COMPOSE_LEN) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "The max number of sequences is %d", IBUS_MAX_COMPOSE_LEN); return FALSE; } result = g_strdup ("0"); g_array_append_val (array, result); return TRUE; } static void clear_char_array (gpointer data) { gchar **array = data; g_free (*array); } static void parse_compose_line (GList **compose_list, const gchar *line) { gchar **components = NULL; GArray *array; GError *error = NULL; if (line[0] == '\0' || line[0] == '#') return; if (g_str_has_prefix (line, "include ")) return; components = g_strsplit (line, ":", 2); if (components[1] == NULL) { g_warning ("No delimiter ':': %s", line); g_strfreev (components); return; } array = g_array_new (TRUE, TRUE, sizeof (gchar *)); g_array_set_clear_func (array, clear_char_array); if (!parse_compose_sequence (array, g_strstrip (components[0]), &error)) { g_warning ("%s: %s", error->message, line); g_clear_error (&error); g_strfreev (components); g_array_unref (array); return; } if (!parse_compose_value (array, g_strstrip (components[1]), &error)) { g_warning ("%s: %s", error->message, line); g_clear_error (&error); g_strfreev (components); g_array_unref (array); return; } g_strfreev (components); *compose_list = g_list_append (*compose_list, array); } static GList * parse_compose_file (const gchar *compose_file) { gchar *contents = NULL; gchar **lines = NULL; gsize length = 0; GError *error = NULL; GList *compose_list = NULL; int i; if (!g_file_get_contents (compose_file, &contents, &length, &error)) { g_error ("%s", error->message); g_error_free (error); } lines = g_strsplit (contents, "\n", -1); g_free (contents); for (i = 0; lines[i] != NULL; i++) parse_compose_line (&compose_list, lines[i]); g_strfreev (lines); return compose_list; } static int compare_seq_index (const void *key, const void *value) { const guint16 *keysyms = key; const guint16 *seq = value; if (keysyms[0] < seq[0]) return -1; else if (keysyms[0] > seq[0]) return 1; return 0; } static int compare_seq (const void *key, const void *value) { int i = 0; const guint16 *keysyms = key; const guint16 *seq = value; while (keysyms[i]) { if (keysyms[i] < seq[i]) return -1; else if (keysyms[i] > seq[i]) return 1; i++; } return 0; } /* Implement check_compact_table() in ibus/src/ibusenginesimple.c */ static gboolean check_compact_table (const guint16 *compose_buffer, const IBusComposeTableCompact *table, gint n_compose) { gint row_stride; guint16 *seq_index; guint16 *seq; gint i; seq_index = bsearch (compose_buffer, table->data, table->n_index_size, sizeof (guint16) * table->n_index_stride, compare_seq_index); if (seq_index == NULL) { // g_debug ("compact: no\n"); return FALSE; } seq = NULL; i = n_compose - 1; if (i >= table->max_seq_len) { return FALSE; } row_stride = i + 1; if (seq_index[i + 1] <= seq_index[i]) { return FALSE; } seq = bsearch (compose_buffer + 1, table->data + seq_index[i], (seq_index[i + 1] - seq_index[i]) / row_stride, sizeof (guint16) * row_stride, compare_seq); // g_debug ("seq = %p", seq); if (!seq) { // g_debug ("no\n"); return FALSE; } else { gunichar value = seq[row_stride - 1]; // g_debug ("U+%04X\n", value); if (compose_buffer[n_compose + 1] == value) return TRUE; else return FALSE; } } static gboolean check_normalize_nfc (gunichar* combination_buffer, gint n_compose) { gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_LEN]; gchar *combination_utf8_temp = NULL; gchar *nfc_temp = NULL; gint n_combinations; gunichar temp_swap; gint i; n_combinations = 1; for (i = 1; i < n_compose; i++ ) n_combinations *= i; if (combination_buffer[0] >= 0x390 && combination_buffer[0] <= 0x3FF) { for (i = 1; i < n_compose; i++ ) if (combination_buffer[i] == 0x303) combination_buffer[i] = 0x342; } memcpy (combination_buffer_temp, combination_buffer, IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); for (i = 0; i < n_combinations; i++ ) { g_unicode_canonical_ordering (combination_buffer_temp, n_compose); combination_utf8_temp = g_ucs4_to_utf8 (combination_buffer_temp, -1, NULL, NULL, NULL); nfc_temp = g_utf8_normalize (combination_utf8_temp, -1, G_NORMALIZE_NFC); if (g_utf8_strlen (nfc_temp, -1) == 1) { memcpy (combination_buffer, combination_buffer_temp, IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); g_free (combination_utf8_temp); g_free (nfc_temp); return TRUE; } g_free (combination_utf8_temp); g_free (nfc_temp); if (n_compose > 2) { temp_swap = combination_buffer_temp[i % (n_compose - 1) + 1]; combination_buffer_temp[i % (n_compose - 1) + 1] = combination_buffer_temp[(i+1) % (n_compose - 1) + 1]; combination_buffer_temp[(i+1) % (n_compose - 1) + 1] = temp_swap; } else break; } return FALSE; } /* Implement check_algorithmically() in ibus/src/ibusenginesimple.c */ static gboolean check_algorithmically (const guint16 *compose_buffer, gint n_compose) { int i = 0; gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; gchar *combination_utf8, *nfc; if (n_compose >= IBUS_MAX_COMPOSE_LEN) return FALSE; for (i = 0; i < n_compose && IS_DEAD_KEY (compose_buffer[i]); i++) ; if (i == n_compose) return FALSE; if (i > 0 && i == n_compose - 1) { combination_buffer[0] = ibus_keyval_to_unicode ((guint) compose_buffer[i]); combination_buffer[n_compose] = 0; i--; while (i >= 0) { switch (compose_buffer[i]) { #define CASE(keysym, unicode) \ case IBUS_KEY_dead_##keysym: combination_buffer[i+1] = unicode; \ break CASE (grave, 0x0300); CASE (acute, 0x0301); CASE (circumflex, 0x0302); CASE (tilde, 0x0303); CASE (macron, 0x0304); CASE (breve, 0x0306); CASE (abovedot, 0x0307); CASE (diaeresis, 0x0308); CASE (hook, 0x0309); CASE (abovering, 0x030A); CASE (doubleacute, 0x030B); CASE (caron, 0x030C); CASE (abovecomma, 0x0313); CASE (abovereversedcomma, 0x0314); CASE (horn, 0x031B); CASE (belowdot, 0x0323); CASE (cedilla, 0x0327); CASE (ogonek, 0x0328); CASE (iota, 0x0345); CASE (voiced_sound, 0x3099); CASE (semivoiced_sound, 0x309A); /* The following cases are to be removed once xkeyboard-config, * xorg are fully updated. */ /* Workaround for typo in 1.4.x xserver-xorg */ case 0xfe66: combination_buffer[i+1] = 0x314; break; /* CASE (dasia, 0x314); */ /* CASE (perispomeni, 0x342); */ /* CASE (psili, 0x343); */ #undef CASE default: combination_buffer[i+1] = ibus_keyval_to_unicode ((guint) compose_buffer[i]); } i--; } if (check_normalize_nfc (combination_buffer, n_compose)) { gunichar value; combination_utf8 = g_ucs4_to_utf8 (combination_buffer, -1, NULL, NULL, NULL); nfc = g_utf8_normalize (combination_utf8, -1, G_NORMALIZE_NFC); value = g_utf8_get_char (nfc); g_free (combination_utf8); g_free (nfc); if (compose_buffer[n_compose + 1] == value) return TRUE; } } return FALSE; } static GList * check_duplicated_compose (GList *compose_list) { GList *list; GList *removed_list = NULL; for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; static guint16 keysyms[IBUS_MAX_COMPOSE_LEN + 2]; int i; int n_compose = 0; for (i = 0; i < IBUS_MAX_COMPOSE_LEN + 2; i++) { keysyms[i] = 0; } for (i = 0; i < array->len; i++) { const gchar *data = g_array_index (array, const gchar *, i); guint32 codepoint = get_codepoint (data); keysyms[i] = (guint16) codepoint; if (codepoint == IBUS_KEY_VoidSymbol) g_warning ("Could not get code point of keysym %s", data); if (codepoint == 0) { data = g_array_index (array, const gchar *, i + 1); codepoint = get_codepoint (data); keysyms[i + 1] = (guint16) codepoint; if (codepoint == IBUS_KEY_VoidSymbol) g_warning ("Could not get code point of keysym %s", data); break; } n_compose++; } if (check_compact_table (keysyms, &ibus_compose_table_compact, n_compose)) removed_list = g_list_append (removed_list, array); else if (check_algorithmically (keysyms, n_compose)) removed_list = g_list_append (removed_list, array); } for (list = removed_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; compose_list = g_list_remove (compose_list, array); g_array_unref (array); } g_list_free (removed_list); return compose_list; } static GList * check_uint16 (GList *compose_list) { GList *list; GList *removed_list = NULL; for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; int i; for (i = 0; i < array->len; i++) { const gchar *data = g_array_index (array, const gchar *, i); guint32 codepoint = get_codepoint (data); if (codepoint == 0) break; if (codepoint > 0xffff) { removed_list = g_list_append (removed_list, array); break; } } } for (list = removed_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; compose_list = g_list_remove (compose_list, array); g_array_unref (array); } g_list_free (removed_list); return compose_list; } static GList * format_for_gtk (GList *compose_list) { GList *list; GList *new_list = NULL; int i; int j; for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; for (i = 0; i < array->len; i++) { const gchar *data = g_array_index (array, const gchar *, i); guint32 codepoint = get_codepoint (data); if (codepoint == 0) { if (MAX_COMPOSE_LEN < i) MAX_COMPOSE_LEN = i; break; } } } N_INDEX_STRIDE = MAX_COMPOSE_LEN + 2; for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; for (i = 0; i < array->len; i++) { const gchar *data = g_array_index (array, const gchar *, i); guint32 codepoint = get_codepoint (data); if (codepoint == 0) { gchar *value = g_strdup (g_array_index (array, const gchar *, i + 1)); gchar *comment = g_strdup (g_array_index (array, const gchar *, i + 2)); gchar *result; g_array_remove_range (array, i, array->len - i); for (j = i; j < MAX_COMPOSE_LEN; j++) { result = g_strdup ("0"); g_array_append_val (array, result); } codepoint = get_codepoint (value); g_free (value); if (codepoint > 0xffff) { result = g_strdup_printf ("0x%04X", codepoint / 0x10000); g_array_append_val (array, result); result = g_strdup_printf ("0x%04X", codepoint - codepoint / 0x10000 * 0x10000); g_array_append_val (array, result); } else { result = g_strdup ("0"); g_array_append_val (array, result); result = g_strdup_printf ("0x%04X", codepoint); g_array_append_val (array, result); } g_array_append_val (array, comment); new_list = g_list_append (new_list, array); break; } } } g_list_free (compose_list); return new_list; } static gint compare_array (gpointer a, gpointer b) { GArray *array_a = (GArray *) a; GArray *array_b = (GArray *) b; int i; for (i = 0; i < MAX_COMPOSE_LEN; i++) { const gchar *data_a = g_array_index (array_a, const gchar *, i); const gchar *data_b = g_array_index (array_b, const gchar *, i); guint32 code_a = get_codepoint (data_a); guint32 code_b = get_codepoint (data_b); if (code_a != code_b) return code_a - code_b; } return 0; } static void print_compose_list (GList *compose_list) { GList *list; int i; int TOTAL_SIZE = 0; for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; const gchar *data; const gchar *upper; const gchar *lower; const gchar *comment; g_assert (array->len >= MAX_COMPOSE_LEN + 2); g_printf (" "); for (i = 0; i < MAX_COMPOSE_LEN; i++) { data = g_array_index (array, const gchar *, i); if (i == MAX_COMPOSE_LEN -1) g_printf ("%s,\n", data); else g_printf ("%s, ", data); } upper = g_array_index (array, const gchar *, i); lower = g_array_index (array, const gchar *, i + 1); comment = g_array_index (array, const gchar *, i + 2); if (list == g_list_last (compose_list)) g_printf (" %s, %s /* %s */\n", upper, lower, comment); else g_printf (" %s, %s, /* %s */\n", upper, lower, comment); TOTAL_SIZE += N_INDEX_STRIDE; } g_printerr ("TOTAL_SIZE: %d\nMAX_COMPOSE_LEN: %d\nN_INDEX_STRIDE: %d\n", TOTAL_SIZE, MAX_COMPOSE_LEN, N_INDEX_STRIDE); } static IBusComposeTable * ibus_compose_table_new_with_list (GList *compose_list, int max_compose_len, int n_index_stride) { guint length; guint n = 0; int i; static guint16 *ibus_compose_seqs = NULL; GList *list; IBusComposeTable *retval = NULL; g_return_val_if_fail (compose_list != NULL, NULL); length = g_list_length (compose_list); ibus_compose_seqs = g_new0 (guint16, length * n_index_stride); for (list = compose_list; list != NULL; list = list->next) { GArray *array = (GArray *) list->data; const gchar *data; for (i = 0; i < n_index_stride; i++) { data = g_array_index (array, const gchar *, i); ibus_compose_seqs[n++] = (guint16) get_codepoint (data); } } retval = g_new0 (IBusComposeTable, 1); retval->data = ibus_compose_seqs; retval->max_seq_len = max_compose_len; retval->n_seqs = length; return retval; } IBusComposeTable * ibus_compose_table_new_with_file (const gchar *compose_file) { GList *compose_list = NULL; IBusComposeTable *compose_table; g_assert (compose_file != NULL); MAX_COMPOSE_LEN = 0; N_INDEX_STRIDE = 0; compose_list = parse_compose_file (compose_file); if (compose_list == NULL) { g_list_free_full (compose_list, (GDestroyNotify) g_array_unref); return NULL; } compose_list = check_duplicated_compose (compose_list); compose_list = check_uint16 (compose_list); compose_list = format_for_gtk (compose_list); compose_list = g_list_sort (compose_list, (GCompareFunc) compare_array); if (compose_list == NULL) { g_list_free_full (compose_list, (GDestroyNotify) g_array_unref); return NULL; } if (g_getenv ("IBUS_PRINT_COMPOSE_TABLE") != NULL) { print_compose_list (compose_list); } compose_table = ibus_compose_table_new_with_list (compose_list, MAX_COMPOSE_LEN, N_INDEX_STRIDE); g_list_free_full (compose_list, (GDestroyNotify) g_array_unref); return compose_table; } ibus-1.5.11/src/ibusbus.c0000644000000000000000000023702212551654123012051 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusbus.h" #include #include #include #include #include #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" #include "ibusenginedesc.h" #include "ibusserializable.h" #include "ibusconfig.h" #define IBUS_BUS_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_BUS, IBusBusPrivate)) enum { CONNECTED, DISCONNECTED, GLOBAL_ENGINE_CHANGED, NAME_OWNER_CHANGED, LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_CONNECT_ASYNC, }; /* IBusBusPriv */ struct _IBusBusPrivate { GFileMonitor *monitor; GDBusConnection *connection; gboolean watch_dbus_signal; guint watch_dbus_signal_id; gboolean watch_ibus_signal; guint watch_ibus_signal_id; IBusConfig *config; gchar *unique_name; gboolean connect_async; gchar *bus_address; GCancellable *cancellable; }; static guint bus_signals[LAST_SIGNAL] = { 0 }; static IBusBus *_bus = NULL; /* functions prototype */ static GObject *ibus_bus_constructor (GType type, guint n_params, GObjectConstructParam *params); static void ibus_bus_destroy (IBusObject *object); static void ibus_bus_watch_dbus_signal (IBusBus *bus); static void ibus_bus_unwatch_dbus_signal (IBusBus *bus); static void ibus_bus_watch_ibus_signal (IBusBus *bus); static void ibus_bus_unwatch_ibus_signal (IBusBus *bus); static GVariant *ibus_bus_call_sync (IBusBus *bus, const gchar *service, const gchar *path, const gchar *interface, const gchar *member, GVariant *parameters, const GVariantType *reply_type); static void ibus_bus_call_async (IBusBus *bus, const gchar *service, const gchar *path, const gchar *interface, const gchar *member, GVariant *parameters, const GVariantType *reply_type, gpointer source_tag, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); static void ibus_bus_set_property (IBusBus *bus, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_bus_get_property (IBusBus *bus, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_bus_close_connection (IBusBus *bus); G_DEFINE_TYPE (IBusBus, ibus_bus, IBUS_TYPE_OBJECT) static void ibus_bus_class_init (IBusBusClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); gobject_class->constructor = ibus_bus_constructor; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_bus_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_bus_get_property; ibus_object_class->destroy = ibus_bus_destroy; /* install properties */ /** * IBusBus:connect-async: * * Whether the #IBusBus object should connect asynchronously to the bus. * */ g_object_class_install_property (gobject_class, PROP_CONNECT_ASYNC, g_param_spec_boolean ("connect-async", "Connect Async", "Connect asynchronously to the bus", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /* install signals */ /** * IBusBus::connected: * @bus: The #IBusBus object which recevied the signal * * Emitted when #IBusBus is connected to ibus-daemon. * */ bus_signals[CONNECTED] = g_signal_new (I_("connected"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusBus::disconnected: * @bus: The #IBusBus object which recevied the signal * * Emitted when #IBusBus is disconnected from ibus-daemon. * */ bus_signals[DISCONNECTED] = g_signal_new (I_("disconnected"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusBus::global-engine-changed: * @bus: The #IBusBus object which recevied the signal * @name: The name of the new global engine. * * Emitted when global engine is changed. * */ bus_signals[GLOBAL_ENGINE_CHANGED] = g_signal_new (I_("global-engine-changed"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusBus::name-owner-changed: * @bus: The #IBusBus object which recevied the signal * @name: The name which ower is changed. * @old_owner: The unique bus name of the old owner. * @new_owner: The unique bus name of the new owner. * * Emitted when D-Bus name owner is changed. * */ bus_signals[NAME_OWNER_CHANGED] = g_signal_new (I_("name-owner-changed"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__STRING_STRING_STRING, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); g_type_class_add_private (class, sizeof (IBusBusPrivate)); } static void _connection_dbus_signal_cb (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { g_return_if_fail (user_data != NULL); g_return_if_fail (IBUS_IS_BUS (user_data)); if (g_strcmp0 (signal_name, "NameOwnerChanged") == 0) { gchar *name = NULL; gchar *old_owner = NULL; gchar *new_owner = NULL; g_variant_get (parameters, "(&s&s&s)", &name, &old_owner, &new_owner); g_signal_emit (IBUS_BUS (user_data), bus_signals[NAME_OWNER_CHANGED], 0, name, old_owner, new_owner); } /* FIXME handle other D-Bus signals if needed */ } static void _connection_ibus_signal_cb (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { g_return_if_fail (user_data != NULL); g_return_if_fail (IBUS_IS_BUS (user_data)); if (g_strcmp0 (signal_name, "GlobalEngineChanged") == 0) { gchar *engine_name = NULL; g_variant_get (parameters, "(&s)", &engine_name); g_signal_emit (IBUS_BUS (user_data), bus_signals[GLOBAL_ENGINE_CHANGED], 0, engine_name); } /* FIXME handle org.freedesktop.IBus.RegistryChanged signal if needed */ } static void _connection_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, IBusBus *bus) { if (error) { /* We replaced g_warning with g_debug here because * currently when ibus-daemon restarts, GTK client calls this and * _g_dbus_worker_do_read_cb() sets the error message: * "Underlying GIOStream returned 0 bytes on an async read" * http://git.gnome.org/browse/glib/tree/gio/gdbusprivate.c#n693 * However we think the error message is almost harmless. */ g_debug ("_connection_closed_cb: %s", error->message); } ibus_bus_close_connection (bus); } static void ibus_bus_close_connection (IBusBus *bus) { g_free (bus->priv->unique_name); bus->priv->unique_name = NULL; bus->priv->watch_dbus_signal_id = 0; bus->priv->watch_ibus_signal_id = 0; g_free (bus->priv->bus_address); bus->priv->bus_address = NULL; /* Cancel ongoing connect request. */ g_cancellable_cancel (bus->priv->cancellable); g_cancellable_reset (bus->priv->cancellable); /* unref the old connection at first */ if (bus->priv->connection != NULL) { g_signal_handlers_disconnect_by_func (bus->priv->connection, G_CALLBACK (_connection_closed_cb), bus); if (!g_dbus_connection_is_closed(bus->priv->connection)) g_dbus_connection_close(bus->priv->connection, NULL, NULL, NULL); g_object_unref (bus->priv->connection); bus->priv->connection = NULL; g_signal_emit (bus, bus_signals[DISCONNECTED], 0); } } static void ibus_bus_connect_completed (IBusBus *bus) { g_assert (bus->priv->connection); /* FIXME */ ibus_bus_hello (bus); g_signal_connect (bus->priv->connection, "closed", (GCallback) _connection_closed_cb, bus); if (bus->priv->watch_dbus_signal) { ibus_bus_watch_dbus_signal (bus); } if (bus->priv->watch_ibus_signal) { ibus_bus_watch_ibus_signal (bus); } g_signal_emit (bus, bus_signals[CONNECTED], 0); } static void _bus_connect_async_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { g_return_if_fail (user_data != NULL); g_return_if_fail (IBUS_IS_BUS (user_data)); IBusBus *bus = IBUS_BUS (user_data); GError *error = NULL; bus->priv->connection = g_dbus_connection_new_for_address_finish (res, &error); if (error != NULL) { g_warning ("Unable to connect to ibus: %s", error->message); g_error_free (error); error = NULL; } if (bus->priv->connection != NULL) { ibus_bus_connect_completed (bus); } else { g_free (bus->priv->bus_address); bus->priv->bus_address = NULL; } /* unref the ref from ibus_bus_connect */ g_object_unref (bus); } static void ibus_bus_connect_async (IBusBus *bus) { const gchar *bus_address = ibus_get_address (); if (bus_address == NULL) return; if (g_strcmp0 (bus->priv->bus_address, bus_address) == 0) return; /* Close current connection and cancel ongoing connect request. */ ibus_bus_close_connection (bus); bus->priv->bus_address = g_strdup (bus_address); g_object_ref (bus); g_dbus_connection_new_for_address ( bus_address, G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, NULL, bus->priv->cancellable, _bus_connect_async_cb, bus); } static void ibus_bus_connect (IBusBus *bus) { const gchar *bus_address = ibus_get_address (); if (bus_address == NULL) return; if (g_strcmp0 (bus_address, bus->priv->bus_address) == 0 && bus->priv->connection != NULL) return; /* Close current connection and cancel ongoing connect request. */ ibus_bus_close_connection (bus); bus->priv->connection = g_dbus_connection_new_for_address_sync ( bus_address, G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, NULL, NULL, NULL); if (bus->priv->connection) { bus->priv->bus_address = g_strdup (bus_address); ibus_bus_connect_completed (bus); } } static void _changed_cb (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, IBusBus *bus) { if (event_type != G_FILE_MONITOR_EVENT_CHANGED && event_type != G_FILE_MONITOR_EVENT_CREATED && event_type != G_FILE_MONITOR_EVENT_DELETED) return; ibus_bus_connect_async (bus); } static void ibus_bus_init (IBusBus *bus) { struct stat buf; gchar *path; GFile *file; bus->priv = IBUS_BUS_GET_PRIVATE (bus); bus->priv->config = NULL; bus->priv->connection = NULL; bus->priv->watch_dbus_signal = FALSE; bus->priv->watch_dbus_signal_id = 0; bus->priv->watch_ibus_signal = FALSE; bus->priv->watch_ibus_signal_id = 0; bus->priv->unique_name = NULL; bus->priv->connect_async = FALSE; bus->priv->bus_address = NULL; bus->priv->cancellable = g_cancellable_new (); path = g_path_get_dirname (ibus_get_socket_path ()); g_mkdir_with_parents (path, 0700); g_chmod (path, 0700); if (stat (path, &buf) == 0) { if (buf.st_uid != getuid ()) { g_warning ("The owner of %s is not %s!", path, ibus_get_user_name ()); return; } } file = g_file_new_for_path (ibus_get_socket_path ()); bus->priv->monitor = g_file_monitor_file (file, 0, NULL, NULL); g_signal_connect (bus->priv->monitor, "changed", (GCallback) _changed_cb, bus); g_object_unref (file); g_free (path); } static void ibus_bus_set_property (IBusBus *bus, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CONNECT_ASYNC: bus->priv->connect_async = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (bus, prop_id, pspec); } } static void ibus_bus_get_property (IBusBus *bus, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CONNECT_ASYNC: g_value_set_boolean (value, bus->priv->connect_async); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (bus, prop_id, pspec); } } static GObject* ibus_bus_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObject *object; /* share one IBusBus instance in whole application */ if (_bus == NULL) { object = G_OBJECT_CLASS (ibus_bus_parent_class)->constructor (type, n_params, params); /* make bus object sink */ g_object_ref_sink (object); _bus = IBUS_BUS (object); if (_bus->priv->connect_async) ibus_bus_connect_async (_bus); else ibus_bus_connect (_bus); } else { object = g_object_ref (_bus); } return object; } static void ibus_bus_destroy (IBusObject *object) { g_assert (_bus == (IBusBus *)object); IBusBus * bus = _bus; _bus = NULL; if (bus->priv->monitor) { g_object_unref (bus->priv->monitor); bus->priv->monitor = NULL; } if (bus->priv->config) { ibus_proxy_destroy ((IBusProxy *) bus->priv->config); bus->priv->config = NULL; } if (bus->priv->connection) { g_signal_handlers_disconnect_by_func (bus->priv->connection, G_CALLBACK (_connection_closed_cb), bus); /* FIXME should use async close function */ g_dbus_connection_close_sync (bus->priv->connection, NULL, NULL); g_object_unref (bus->priv->connection); bus->priv->connection = NULL; } g_free (bus->priv->unique_name); bus->priv->unique_name = NULL; g_free (bus->priv->bus_address); bus->priv->bus_address = NULL; g_cancellable_cancel (bus->priv->cancellable); g_object_unref (bus->priv->cancellable); bus->priv->cancellable = NULL; IBUS_OBJECT_CLASS (ibus_bus_parent_class)->destroy (object); } static gboolean _async_finish_void (GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return FALSE; return TRUE; } static gchar * _async_finish_object_path (GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; GVariant *result = g_simple_async_result_get_op_res_gpointer (simple); GVariant *variant = NULL; g_return_val_if_fail (result != NULL, NULL); gchar *path = NULL; g_variant_get (result, "(v)", &variant); path = g_variant_dup_string (variant, NULL); g_variant_unref (variant); return path; } static gchar * _async_finish_string (GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (variant != NULL, NULL); gchar *s = NULL; g_variant_get (variant, "(&s)", &s); return s; } static gboolean _async_finish_gboolean (GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return FALSE; GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (variant != NULL, FALSE); gboolean retval = FALSE; g_variant_get (variant, "(b)", &retval); return retval; } static guint _async_finish_guint (GAsyncResult *res, GError **error) { static const guint bad_id = 0; GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return bad_id; GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (variant != NULL, bad_id); guint id = 0; g_variant_get (variant, "(u)", &id); return id; } IBusBus * ibus_bus_new (void) { IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, "connect-async", FALSE, NULL)); return bus; } IBusBus * ibus_bus_new_async (void) { IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, "connect-async", TRUE, NULL)); return bus; } gboolean ibus_bus_is_connected (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); if (bus->priv->connection == NULL || g_dbus_connection_is_closed (bus->priv->connection)) return FALSE; return TRUE; } IBusInputContext * ibus_bus_create_input_context (IBusBus *bus, const gchar *client_name) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); g_return_val_if_fail (client_name != NULL, NULL); gchar *path; IBusInputContext *context = NULL; GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "CreateInputContext", g_variant_new ("(s)", client_name), G_VARIANT_TYPE ("(o)")); if (result != NULL) { GError *error = NULL; g_variant_get (result, "(&o)", &path); context = ibus_input_context_new (path, bus->priv->connection, NULL, &error); g_variant_unref (result); if (context == NULL) { g_warning ("ibus_bus_create_input_context: %s", error->message); g_error_free (error); } } return context; } static void _create_input_context_async_step_two_done (GObject *source_object, GAsyncResult *res, GSimpleAsyncResult *simple) { GError *error = NULL; IBusInputContext *context = ibus_input_context_new_async_finish (res, &error); if (context == NULL) { g_simple_async_result_set_from_error (simple, error); g_error_free (error); } else { g_simple_async_result_set_op_res_gpointer (simple, context, NULL); } g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); } static void _create_input_context_async_step_one_done (GDBusConnection *connection, GAsyncResult *res, GSimpleAsyncResult *simple) { GError *error = NULL; GVariant *variant = g_dbus_connection_call_finish (connection, res, &error); if (variant == NULL) { g_simple_async_result_set_from_error (simple, error); g_error_free (error); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); return; } if (g_dbus_connection_is_closed (connection)) { /* * The connection is closed, can not contine next steps, so complete * the asynchronous request with error. */ g_variant_unref(variant); g_simple_async_result_set_error (simple, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Connection is closed."); g_simple_async_result_complete_in_idle (simple); return; } const gchar *path = NULL; g_variant_get (variant, "(&o)", &path); g_variant_unref(variant); IBusBus *bus = (IBusBus *)g_async_result_get_source_object ( (GAsyncResult *)simple); g_assert (IBUS_IS_BUS (bus)); GCancellable *cancellable = (GCancellable *)g_object_get_data ((GObject *)simple, "cancellable"); ibus_input_context_new_async (path, bus->priv->connection, cancellable, (GAsyncReadyCallback)_create_input_context_async_step_two_done, simple); /* release the reference from g_async_result_get_source_object() */ g_object_unref (bus); } void ibus_bus_create_input_context_async (IBusBus *bus, const gchar *client_name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (client_name != NULL); g_return_if_fail (callback != NULL); GSimpleAsyncResult *simple = g_simple_async_result_new ((GObject *)bus, callback, user_data, ibus_bus_create_input_context_async); if (cancellable != NULL) { g_object_set_data_full ((GObject *)simple, "cancellable", g_object_ref (cancellable), (GDestroyNotify)g_object_unref); } /* do not use ibus_bus_call_async, instread use g_dbus_connection_call * directly, because we need two async steps for create an IBusInputContext. * 1. Call CreateInputContext to request ibus-daemon create a remote IC. * 2. New local IBusInputContext proxy of the remote IC */ g_dbus_connection_call (bus->priv->connection, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "CreateInputContext", g_variant_new ("(s)", client_name), G_VARIANT_TYPE("(o)"), G_DBUS_CALL_FLAGS_NO_AUTO_START, timeout_msec, cancellable, (GAsyncReadyCallback)_create_input_context_async_step_one_done, simple); } IBusInputContext * ibus_bus_create_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_create_input_context_async)); GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; IBusInputContext *context = g_simple_async_result_get_op_res_gpointer (simple); g_assert (IBUS_IS_INPUT_CONTEXT (context)); return context; } gchar * ibus_bus_current_input_context (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); gchar *path = NULL; GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "CurrentInputContext"), G_VARIANT_TYPE ("(v)")); if (result != NULL) { GVariant *variant = NULL; g_variant_get (result, "(v)", &variant); path = g_variant_dup_string (variant, NULL); g_variant_unref (variant); g_variant_unref (result); } return path; } void ibus_bus_current_input_context_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "CurrentInputContext"), G_VARIANT_TYPE ("(v)"), ibus_bus_current_input_context_async, timeout_msec, cancellable, callback, user_data); } gchar * ibus_bus_current_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_current_input_context_async)); return _async_finish_object_path (res, error); } static void ibus_bus_watch_dbus_signal (IBusBus *bus) { g_return_if_fail (bus->priv->connection != NULL); g_return_if_fail (bus->priv->watch_dbus_signal_id == 0); /* Subscribe to dbus signals such as NameOwnerChanged. */ bus->priv->watch_dbus_signal_id = g_dbus_connection_signal_subscribe (bus->priv->connection, DBUS_SERVICE_DBUS, DBUS_INTERFACE_DBUS, "NameOwnerChanged", DBUS_PATH_DBUS, NULL /* arg0 */, (GDBusSignalFlags) 0, _connection_dbus_signal_cb, bus, NULL /* user_data_free_func */); /* FIXME handle other D-Bus signals if needed */ } static void ibus_bus_unwatch_dbus_signal (IBusBus *bus) { g_return_if_fail (bus->priv->watch_dbus_signal_id != 0); g_dbus_connection_signal_unsubscribe (bus->priv->connection, bus->priv->watch_dbus_signal_id); bus->priv->watch_dbus_signal_id = 0; } void ibus_bus_set_watch_dbus_signal (IBusBus *bus, gboolean watch) { g_return_if_fail (IBUS_IS_BUS (bus)); if (bus->priv->watch_dbus_signal == watch) return; bus->priv->watch_dbus_signal = watch; if (ibus_bus_is_connected (bus)) { if (watch) { ibus_bus_watch_dbus_signal (bus); } else { ibus_bus_unwatch_dbus_signal (bus); } } } static void ibus_bus_watch_ibus_signal (IBusBus *bus) { g_return_if_fail (bus->priv->connection != NULL); g_return_if_fail (bus->priv->watch_ibus_signal_id == 0); /* Subscribe to ibus signals such as GlboalEngineChanged. */ bus->priv->watch_ibus_signal_id = g_dbus_connection_signal_subscribe (bus->priv->connection, "org.freedesktop.IBus", IBUS_INTERFACE_IBUS, "GlobalEngineChanged", IBUS_PATH_IBUS, NULL /* arg0 */, (GDBusSignalFlags) 0, _connection_ibus_signal_cb, bus, NULL /* user_data_free_func */); /* FIXME handle org.freedesktop.IBus.RegistryChanged signal if needed */ } static void ibus_bus_unwatch_ibus_signal (IBusBus *bus) { g_return_if_fail (bus->priv->watch_ibus_signal_id != 0); g_dbus_connection_signal_unsubscribe (bus->priv->connection, bus->priv->watch_ibus_signal_id); bus->priv->watch_ibus_signal_id = 0; } void ibus_bus_set_watch_ibus_signal (IBusBus *bus, gboolean watch) { g_return_if_fail (IBUS_IS_BUS (bus)); if (bus->priv->watch_ibus_signal == watch) return; bus->priv->watch_ibus_signal = watch; if (ibus_bus_is_connected (bus)) { if (watch) { ibus_bus_watch_ibus_signal (bus); } else { ibus_bus_unwatch_ibus_signal (bus); } } } const gchar * ibus_bus_hello (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); g_return_val_if_fail (ibus_bus_is_connected (bus), NULL); /* gdbus connection will say hello by self. */ if (bus->priv->connection) return g_dbus_connection_get_unique_name (bus->priv->connection); return NULL; } guint32 ibus_bus_request_name (IBusBus *bus, const gchar *name, guint32 flags) { g_return_val_if_fail (IBUS_IS_BUS (bus), 0); g_return_val_if_fail (name != NULL, 0); guint32 retval = 0; GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "RequestName", g_variant_new ("(su)", name, flags), G_VARIANT_TYPE ("(u)")); if (result) { g_variant_get (result, "(u)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_request_name_async (IBusBus *bus, const gchar *name, guint flags, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (name != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "RequestName", g_variant_new ("(su)", name, flags), G_VARIANT_TYPE ("(u)"), ibus_bus_request_name_async, timeout_msec, cancellable, callback, user_data); } guint ibus_bus_request_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_request_name_async)); return _async_finish_guint (res, error); } guint ibus_bus_release_name (IBusBus *bus, const gchar *name) { g_return_val_if_fail (IBUS_IS_BUS (bus), 0); g_return_val_if_fail (name != NULL, 0); guint retval = 0; GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "ReleaseName", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(u)")); if (result) { g_variant_get (result, "(u)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_release_name_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (name != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "ReleaseName", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(u)"), ibus_bus_release_name_async, timeout_msec, cancellable, callback, user_data); } guint ibus_bus_release_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_release_name_async)); return _async_finish_guint (res, error); } GList * ibus_bus_list_queued_owners (IBusBus *bus, const gchar *name) { GList *retval = NULL; GVariant *result; g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); g_return_val_if_fail (name != NULL, NULL); result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "ListQueuedOwners", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(as)")); if (result) { GVariantIter *iter = NULL; const gchar *name = NULL; g_variant_get (result, "(as)", &iter); while (g_variant_iter_loop (iter, "&s", &name)) { if (name == NULL) { continue; } retval = g_list_append (retval, g_strdup (name)); } g_variant_iter_free (iter); g_variant_unref (result); } return retval; } gboolean ibus_bus_name_has_owner (IBusBus *bus, const gchar *name) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (name != NULL, FALSE); gboolean retval = FALSE; GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "NameHasOwner", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(b)")); if (result) { g_variant_get (result, "(b)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_name_has_owner_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (name != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "NameHasOwner", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(b)"), ibus_bus_name_has_owner_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_name_has_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_name_has_owner_async)); return _async_finish_gboolean (res, error); } GList * ibus_bus_list_names (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); return NULL; } gboolean ibus_bus_add_match (IBusBus *bus, const gchar *rule) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (rule != NULL, FALSE); GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "AddMatch", g_variant_new ("(s)", rule), NULL); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_add_match_async (IBusBus *bus, const gchar *rule, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (rule != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "AddMatch", g_variant_new ("(s)", rule), NULL, ibus_bus_add_match_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_add_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_add_match_async)); return _async_finish_void (res, error); } gboolean ibus_bus_remove_match (IBusBus *bus, const gchar *rule) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (rule != NULL, FALSE); GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "RemoveMatch", g_variant_new ("(s)", rule), NULL); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_remove_match_async (IBusBus *bus, const gchar *rule, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (rule != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "RemoveMatch", g_variant_new ("(s)", rule), NULL, ibus_bus_remove_match_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_remove_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_remove_match_async)); return _async_finish_void (res, error); } gchar * ibus_bus_get_name_owner (IBusBus *bus, const gchar *name) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); g_return_val_if_fail (name != NULL, NULL); gchar *retval = NULL; GVariant *result; result = ibus_bus_call_sync (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "GetNameOwner", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(s)")); if (result) { g_variant_get (result, "(s)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_get_name_owner_async (IBusBus *bus, const gchar *name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (name != NULL); ibus_bus_call_async (bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "GetNameOwner", g_variant_new ("(s)", name), G_VARIANT_TYPE ("(s)"), ibus_bus_get_name_owner_async, timeout_msec, cancellable, callback, user_data); } gchar * ibus_bus_get_name_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_get_name_owner_async)); return g_strdup (_async_finish_string (res, error)); } GDBusConnection * ibus_bus_get_connection (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); return bus->priv->connection; } gboolean ibus_bus_exit (IBusBus *bus, gboolean restart) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "Exit", g_variant_new ("(b)", restart), NULL); ibus_bus_close_connection (bus); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_exit_async (IBusBus *bus, gboolean restart, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "Exit", g_variant_new ("(b)", restart), NULL, ibus_bus_exit_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_exit_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_exit_async)); return _async_finish_void (res, error); } gboolean ibus_bus_register_component (IBusBus *bus, IBusComponent *component) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (IBUS_IS_COMPONENT (component), FALSE); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)component); GVariant *result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "RegisterComponent", g_variant_new ("(v)", variant), NULL); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_register_component_async (IBusBus *bus, IBusComponent *component, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (IBUS_IS_COMPONENT (component)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)component); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "RegisterComponent", g_variant_new ("(v)", variant), NULL, ibus_bus_register_component_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_register_component_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_register_component_async)); return _async_finish_void (res, error); } static GList * ibus_bus_do_list_engines (IBusBus *bus, gboolean active_engines_only) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); GList *retval = NULL; GVariant *result; const gchar *property = active_engines_only ? "ActiveEngines" : "Engines"; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, property), G_VARIANT_TYPE ("(v)")); if (result) { GVariant *variant = NULL; GVariantIter *iter = NULL; g_variant_get (result, "(v)", &variant); iter = g_variant_iter_new (variant); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); g_object_ref_sink (serializable); retval = g_list_append (retval, serializable); } g_variant_iter_free (iter); g_variant_unref (variant); g_variant_unref (result); } return retval; } GList * ibus_bus_list_engines (IBusBus *bus) { return ibus_bus_do_list_engines (bus, FALSE); } void ibus_bus_list_engines_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "Engines"), G_VARIANT_TYPE ("(v)"), ibus_bus_list_engines_async, timeout_msec, cancellable, callback, user_data); } GList * ibus_bus_list_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; GVariant *result = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (result != NULL, NULL); GVariant *variant = NULL; GList *retval = NULL; GVariantIter *iter = NULL; g_variant_get (result, "(v)", &variant); iter = g_variant_iter_new (variant); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); g_object_ref_sink (serializable); retval = g_list_append (retval, serializable); } g_variant_iter_free (iter); g_variant_unref (variant); return retval; } #ifndef IBUS_DISABLE_DEPRECATED GList * ibus_bus_list_active_engines (IBusBus *bus) { return ibus_bus_do_list_engines (bus, TRUE); } void ibus_bus_list_active_engines_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "ActiveEngines"), G_VARIANT_TYPE ("(v)"), ibus_bus_list_active_engines_async, timeout_msec, cancellable, callback, user_data); } GList * ibus_bus_list_active_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { return ibus_bus_list_engines_async_finish (bus, res, error); } #endif /* IBUS_DISABLE_DEPRECATED */ IBusEngineDesc ** ibus_bus_get_engines_by_names (IBusBus *bus, const gchar * const *names) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "GetEnginesByNames", g_variant_new("(^as)", names), G_VARIANT_TYPE ("(av)")); if (result == NULL) return NULL; GArray *array = g_array_new (TRUE, TRUE, sizeof (IBusEngineDesc *)); GVariantIter *iter = NULL; g_variant_get (result, "(av)", &iter); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusEngineDesc *desc = (IBusEngineDesc *) ibus_serializable_deserialize (var); g_object_ref_sink (desc); g_array_append_val (array, desc); } g_variant_iter_free (iter); g_variant_unref (result); return (IBusEngineDesc **)g_array_free (array, FALSE); } static void _config_destroy_cb (IBusConfig *config, IBusBus *bus) { IBusBusPrivate *priv; priv = IBUS_BUS_GET_PRIVATE (bus); g_assert (priv->config == config); g_object_unref (config); priv->config = NULL; } IBusConfig * ibus_bus_get_config (IBusBus *bus) { g_assert (IBUS_IS_BUS (bus)); g_return_val_if_fail (ibus_bus_is_connected (bus), NULL); IBusBusPrivate *priv; priv = IBUS_BUS_GET_PRIVATE (bus); if (priv->config == NULL && priv->connection) { priv->config = ibus_config_new (priv->connection, NULL, NULL); if (priv->config) { g_signal_connect (priv->config, "destroy", G_CALLBACK (_config_destroy_cb), bus); } } return priv->config; } #ifndef IBUS_DISABLE_DEPRECATED gboolean ibus_bus_get_use_sys_layout (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); gboolean retval = FALSE; GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "GetUseSysLayout", NULL, G_VARIANT_TYPE ("(b)")); if (result) { g_variant_get (result, "(b)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_get_use_sys_layout_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "GetUseSysLayout", NULL, G_VARIANT_TYPE ("(b)"), ibus_bus_get_use_sys_layout_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_get_use_sys_layout_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid ( res, (GObject *) bus, ibus_bus_get_use_sys_layout_async)); return _async_finish_gboolean (res, error); } gboolean ibus_bus_get_use_global_engine (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); gboolean retval = FALSE; GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "GetUseGlobalEngine", NULL, G_VARIANT_TYPE ("(b)")); if (result) { g_variant_get (result, "(b)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_get_use_global_engine_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "GetUseGlobalEngine", NULL, G_VARIANT_TYPE ("(b)"), ibus_bus_get_use_global_engine_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_get_use_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid ( res, (GObject *) bus, ibus_bus_get_use_global_engine_async)); return _async_finish_gboolean (res, error); } gboolean ibus_bus_is_global_engine_enabled (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); gboolean retval = FALSE; GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "IsGlobalEngineEnabled", NULL, G_VARIANT_TYPE ("(b)")); if (result) { g_variant_get (result, "(b)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_is_global_engine_enabled_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "IsGlobalEngineEnabled", NULL, G_VARIANT_TYPE ("(b)"), ibus_bus_is_global_engine_enabled_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_is_global_engine_enabled_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid ( res, (GObject *) bus, ibus_bus_is_global_engine_enabled_async)); return _async_finish_gboolean (res, error); } #endif /* IBUS_DISABLE_DEPRECATED */ IBusEngineDesc * ibus_bus_get_global_engine (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); GVariant *result; IBusEngineDesc *engine = NULL; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "GlobalEngine"), G_VARIANT_TYPE ("(v)")); if (result) { GVariant *variant = NULL; g_variant_get (result, "(v)", &variant); if (variant) { GVariant *obj = g_variant_get_variant (variant); engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); g_variant_unref (obj); g_variant_unref (variant); } g_variant_unref (result); } return engine; } void ibus_bus_get_global_engine_async (IBusBus *bus, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, "GlobalEngine"), G_VARIANT_TYPE ("(v)"), ibus_bus_get_global_engine_async, timeout_msec, cancellable, callback, user_data); } IBusEngineDesc * ibus_bus_get_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; GVariant *result = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (result != NULL, NULL); GVariant *variant = NULL; g_variant_get (result, "(v)", &variant); IBusEngineDesc *engine = NULL; if (variant) { GVariant *obj = g_variant_get_variant (variant); engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); g_variant_unref (obj); g_variant_unref (variant); } return engine; } gboolean ibus_bus_set_global_engine (IBusBus *bus, const gchar *global_engine) { g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (global_engine != NULL, FALSE); GVariant *result; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "SetGlobalEngine", g_variant_new ("(s)", global_engine), NULL); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_set_global_engine_async (IBusBus *bus, const gchar *global_engine, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (global_engine != NULL); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, IBUS_INTERFACE_IBUS, "SetGlobalEngine", g_variant_new ("(s)", global_engine), NULL, /* no return value */ ibus_bus_set_global_engine_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_set_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, ibus_bus_set_global_engine_async)); return _async_finish_void (res, error); } gboolean ibus_bus_preload_engines (IBusBus *bus, const gchar * const *names) { GVariant *result; GVariant *variant = NULL; g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); g_return_val_if_fail (names != NULL && names[0] != NULL, FALSE); variant = g_variant_new_strv(names, -1); result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Set", g_variant_new ("(ssv)", IBUS_INTERFACE_IBUS, "PreloadEngines", variant), NULL); if (result) { g_variant_unref (result); return TRUE; } return FALSE; } void ibus_bus_preload_engines_async (IBusBus *bus, const gchar * const *names, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GVariant *variant = NULL; g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (names != NULL && names[0] != NULL); variant = g_variant_new_strv(names, -1); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Set", g_variant_new ("(ssv)", IBUS_INTERFACE_IBUS, "PreloadEngines", variant), NULL, /* no return value */ ibus_bus_preload_engines_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_preload_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid ( res, (GObject *) bus, ibus_bus_preload_engines_async)); return _async_finish_void (res, error); } GVariant * ibus_bus_get_ibus_property (IBusBus *bus, const gchar *property_name) { GVariant *result; GVariant *retval = NULL; g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); g_return_val_if_fail (property_name != NULL, NULL); result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, property_name), G_VARIANT_TYPE ("(v)")); if (result) { g_variant_get (result, "(v)", &retval); g_variant_unref (result); } return retval; } void ibus_bus_get_ibus_property_async (IBusBus *bus, const gchar *property_name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (property_name != NULL); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", IBUS_INTERFACE_IBUS, property_name), G_VARIANT_TYPE ("(v)"), ibus_bus_get_ibus_property_async, timeout_msec, cancellable, callback, user_data); } GVariant * ibus_bus_get_ibus_property_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; if (g_simple_async_result_propagate_error (simple, error)) return NULL; GVariant *result = g_simple_async_result_get_op_res_gpointer (simple); g_return_val_if_fail (result != NULL, NULL); GVariant *retval = NULL; g_variant_get (result, "(v)", &retval); return retval; } void ibus_bus_set_ibus_property (IBusBus *bus, const gchar *property_name, GVariant *value) { GVariant *result; g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (property_name != NULL); result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Set", g_variant_new ("(ssv)", IBUS_INTERFACE_IBUS, property_name, value), NULL); if (result) { g_variant_unref (result); } } void ibus_bus_set_ibus_property_async (IBusBus *bus, const gchar *property_name, GVariant *value, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (property_name != NULL); ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, "org.freedesktop.DBus.Properties", "Set", g_variant_new ("(ssv)", IBUS_INTERFACE_IBUS, property_name, value), NULL, /* no return value */ ibus_bus_set_ibus_property_async, timeout_msec, cancellable, callback, user_data); } gboolean ibus_bus_set_ibus_property_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { g_assert (IBUS_IS_BUS (bus)); g_assert (g_simple_async_result_is_valid ( res, (GObject *) bus, ibus_bus_set_ibus_property_async)); return _async_finish_void (res, error); } static GVariant * ibus_bus_call_sync (IBusBus *bus, const gchar *bus_name, const gchar *path, const gchar *interface, const gchar *member, GVariant *parameters, const GVariantType *reply_type) { g_assert (IBUS_IS_BUS (bus)); g_assert (member != NULL); g_return_val_if_fail (ibus_bus_is_connected (bus), NULL); GError *error = NULL; GVariant *result; result = g_dbus_connection_call_sync (bus->priv->connection, bus_name, path, interface, member, parameters, reply_type, G_DBUS_CALL_FLAGS_NO_AUTO_START, ibus_get_timeout (), NULL, &error); if (result == NULL) { g_warning ("ibus_bus_call_sync: %s.%s: %s", interface, member, error->message); g_error_free (error); return NULL; } return result; } static void ibus_bus_call_async_done (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { g_assert (G_IS_DBUS_CONNECTION (connection)); GSimpleAsyncResult *simple = (GSimpleAsyncResult *) user_data; GError *error = NULL; GVariant *variant = g_dbus_connection_call_finish (connection, res, &error); if (variant == NULL) { /* Replace with g_simple_async_result_take_error in glib 2.28 */ g_simple_async_result_set_from_error (simple, error); g_error_free (error); } else { g_simple_async_result_set_op_res_gpointer (simple, variant, (GDestroyNotify) g_variant_unref); } g_simple_async_result_complete (simple); g_object_unref (simple); } static void ibus_bus_call_async (IBusBus *bus, const gchar *bus_name, const gchar *path, const gchar *interface, const gchar *member, GVariant *parameters, const GVariantType *reply_type, gpointer source_tag, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (IBUS_IS_BUS (bus)); g_assert (member != NULL); g_return_if_fail (ibus_bus_is_connected (bus)); GSimpleAsyncResult *simple = g_simple_async_result_new ((GObject*) bus, callback, user_data, source_tag); g_dbus_connection_call (bus->priv->connection, bus_name, path, interface, member, parameters, reply_type, G_DBUS_CALL_FLAGS_NO_AUTO_START, timeout_msec, cancellable, (GAsyncReadyCallback) ibus_bus_call_async_done, simple); } ibus-1.5.11/src/ibuskeymap.h0000644000000000000000000001130212551654123012542 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_KEYMAP_H_ #define __IBUS_KEYMAP_H_ /** * SECTION: ibuskeymap * @short_description: Keyboard mapping handling. * @title: IBusKeymap * @stability: Stable * * An IBusKeymap defines the mapping between keyboard scancodes and * keyboard symbols such as numbers, alphabets, and punctuation marks. * * Some input methods assume certain keyboard layout * (such as Chewing and Wubi requires an US-QWERTY layout), * and expect key symbols to be arranged in that order. * These input methods should new an IBusKeymap * instance and define the keyboard layout. * Then ibus_keymap_lookup_keysym() can * convert scancodes back to the key symbols. * * see_also: #IBusComponent, #IBusEngineDesc * */ #include "ibusobject.h" /* * Type macros. */ /* define IBusKeymap macros */ #define IBUS_TYPE_KEYMAP \ (ibus_keymap_get_type ()) #define IBUS_KEYMAP(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_KEYMAP, IBusKeymap)) #define IBUS_KEYMAP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_KEYMAP, IBusKeymapClass)) #define IBUS_IS_KEYMAP(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_KEYMAP)) #define IBUS_IS_KEYMAP_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_KEYMAP)) #define IBUS_KEYMAP_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_KEYMAP, IBusKeymapClass)) G_BEGIN_DECLS typedef struct _IBusKeymap IBusKeymap; typedef struct _IBusKeymapClass IBusKeymapClass; /** * KEYMAP: * * Data structure for storing keymap. * keymap[.][i] * i: * 0 - without modifer * 1 - shift * 2 - caplock * 3 - shift caplock * 4 - altgr * 5 - shift altgr * 6 - numlock */ /* typedef guint KEYMAP[256][7]; */ /** * IBusKeymap: * @name: The name of the keymap, such as 'us', 'jp'. * @keymap: Keymap table. IME developers normally don have to touch this. * * A keymap object in IBus. */ struct _IBusKeymap { /*< private >*/ IBusObject parent; /* members */ /*< public >*/ gchar *name; guint keymap[256][7]; }; struct _IBusKeymapClass { IBusObjectClass parent; }; GType ibus_keymap_get_type (void); /** * ibus_keymap_new: * @name: The keymap file to be loaded, such as 'us', 'jp'. * * Get an #IBusKeymap associated with the giving name. * * This function loads the keymap file specified in @name * in the IBUS_DATA_DIR/keymaps directory. * * Returns: An #IBusKeymap associated with the giving name; or %NULL if failed. * * Deprecated: This function has been deprecated and should * not be used in newly written code. Please use ibus_keymap_get(). */ IBusKeymap *ibus_keymap_new (const gchar *name) G_GNUC_DEPRECATED; /** * ibus_keymap_get: * @name: The keymap file to be loaded, such as 'us', 'jp'. * * Get an IBusKeymap associated with the giving name. * * This function loads the keymap file specified in @name * in the IBUS_DATA_DIR/keymaps directory. * * Returns: (transfer full): An #IBusKeymap associated with the giving name; * or %NULL if failed. */ IBusKeymap *ibus_keymap_get (const gchar *name); /** * ibus_keymap_lookup_keysym: * @keymap: An IBusKeymap. * @keycode: A scancode to be converted. * @state: Modifier flags(such as Ctrl, Shift). * * Converts the scancode to keysym, given the keymap. * * Returns: Corresponding keysym. */ guint ibus_keymap_lookup_keysym (IBusKeymap *keymap, guint16 keycode, guint32 state); G_END_DECLS #endif ibus-1.5.11/src/ibusregistry.c0000644000000000000000000005141712551654123013132 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2015 Peng Huang * Copyright (C) 2015 Takao Fujiwara * Copyright (C) 2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include "ibusinternal.h" #include "ibusmarshalers.h" #include "ibusregistry.h" #define IBUS_CACHE_MAGIC 0x49425553 /* "IBUS" */ #define IBUS_CACHE_VERSION 0x00010502 enum { CHANGED, LAST_SIGNAL, }; static guint _signals[LAST_SIGNAL] = { 0 }; struct _IBusRegistryPrivate { /* a list of IBusObservedPath objects. */ GList *observed_paths; /* a list of IBusComponent objects that are created from component XML * files (or from the cache of them). */ GList *components; gboolean changed; /* a mapping from GFile to GFileMonitor. */ GHashTable *monitor_table; guint monitor_timeout_id; }; #define IBUS_REGISTRY_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_REGISTRY, IBusRegistryPrivate)) /* functions prototype */ static void ibus_registry_destroy (IBusRegistry *registry); static void ibus_registry_remove_all (IBusRegistry *registry); static gboolean ibus_registry_serialize (IBusRegistry *registry, GVariantBuilder *builder); static gint ibus_registry_deserialize (IBusRegistry *registry, GVariant *variant); static gboolean ibus_registry_copy (IBusRegistry *dest, const IBusRegistry *src); G_DEFINE_TYPE (IBusRegistry, ibus_registry, IBUS_TYPE_SERIALIZABLE) static void ibus_registry_class_init (IBusRegistryClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_registry_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_registry_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_registry_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_registry_copy; g_type_class_add_private (class, sizeof (IBusRegistryPrivate)); /* install signals */ /** * IBusRegistry::changed: * @registry: An #IBusRegistry. * * Emitted when any observed paths are changed. * A method is not associated in this class. the "changed" * signal would be handled in other classes. * * See also: ibus_registry_start_monitor_changes(). */ _signals[CHANGED] = g_signal_new (I_("changed"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void ibus_registry_init (IBusRegistry *registry) { registry->priv = IBUS_REGISTRY_GET_PRIVATE (registry); registry->priv->observed_paths = NULL; registry->priv->components = NULL; registry->priv->changed = FALSE; registry->priv->monitor_table = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, (GDestroyNotify) g_object_unref, (GDestroyNotify) g_object_unref); } static void ibus_registry_destroy (IBusRegistry *registry) { ibus_registry_remove_all (registry); g_hash_table_destroy (registry->priv->monitor_table); registry->priv->monitor_table = NULL; if (registry->priv->monitor_timeout_id > 0) { g_source_remove (registry->priv->monitor_timeout_id); registry->priv->monitor_timeout_id = 0; } IBUS_OBJECT_CLASS (ibus_registry_parent_class)-> destroy (IBUS_OBJECT (registry)); } static gboolean ibus_registry_serialize (IBusRegistry *registry, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> serialize ((IBusSerializable *)registry, builder); g_return_val_if_fail (retval, FALSE); GList *p; GVariantBuilder *array; array = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (p = registry->priv->observed_paths; p != NULL; p = p->next) { IBusSerializable *serializable = (IBusSerializable *) p->data; g_variant_builder_add (array, "v", ibus_serializable_serialize (serializable)); } g_variant_builder_add (builder, "av", array); g_variant_builder_unref (array); array = g_variant_builder_new (G_VARIANT_TYPE ("av")); for (p = registry->priv->components; p != NULL; p = p->next) { IBusSerializable *serializable = (IBusSerializable *) p->data; g_variant_builder_add (array, "v", ibus_serializable_serialize (serializable)); } g_variant_builder_add (builder, "av", array); g_variant_builder_unref (array); return TRUE; } static gint ibus_registry_deserialize (IBusRegistry *registry, GVariant *variant) { GVariant *var; GVariantIter *iter; gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> deserialize ((IBusSerializable *)registry, variant); g_return_val_if_fail (retval, 0); g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); registry->priv->observed_paths = g_list_append (registry->priv->observed_paths, IBUS_OBSERVED_PATH (serializable)); } g_variant_iter_free (iter); g_variant_get_child (variant, retval++, "av", &iter); while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); registry->priv->components = g_list_append (registry->priv->components, IBUS_COMPONENT (serializable)); } g_variant_iter_free (iter); return retval; } static gboolean ibus_registry_copy (IBusRegistry *dest, const IBusRegistry *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->components = g_list_copy (src->priv->components); dest->priv->observed_paths = g_list_copy (src->priv->observed_paths); return TRUE; } /** * ibus_registry_remove_all: * * Remove the loaded registry. */ static void ibus_registry_remove_all (IBusRegistry *registry) { g_assert (IBUS_IS_REGISTRY (registry)); g_list_free_full (registry->priv->observed_paths, g_object_unref); registry->priv->observed_paths = NULL; g_list_free_full (registry->priv->components, g_object_unref); registry->priv->components = NULL; } void ibus_registry_load (IBusRegistry *registry) { const gchar *envstr; GPtrArray *path; gchar **d, **search_path; g_assert (IBUS_IS_REGISTRY (registry)); path = g_ptr_array_new(); envstr = g_getenv ("IBUS_COMPONENT_PATH"); if (envstr) { gchar **dirs = g_strsplit (envstr, G_SEARCHPATH_SEPARATOR_S, 0); for (d = dirs; *d != NULL; d++) g_ptr_array_add (path, *d); g_free (dirs); } else { gchar *dirname; dirname = g_build_filename (IBUS_DATA_DIR, "component", NULL); g_ptr_array_add (path, dirname); #if 0 /* FIXME Should we support install some IME in user dir? */ dirname = g_build_filename (g_get_user_data_dir (), "ibus", "component", NULL); g_ptr_array_add (path, dirname); #endif } g_ptr_array_add (path, NULL); search_path = (gchar **) g_ptr_array_free (path, FALSE); for (d = search_path; *d != NULL; d++) { ibus_registry_load_in_dir (registry, *d); } g_strfreev (search_path); } gboolean ibus_registry_load_cache (IBusRegistry *registry, gboolean is_user) { gchar *filename; gboolean retval; g_assert (IBUS_IS_REGISTRY (registry)); if (is_user) { filename = g_build_filename (g_get_user_cache_dir (), "ibus", "bus", "registry", NULL); } else { filename = g_build_filename (IBUS_CACHE_DIR, "bus", "registry", NULL); } retval = ibus_registry_load_cache_file (registry, filename); g_free (filename); return retval; } gboolean ibus_registry_load_cache_file (IBusRegistry *registry, const gchar *filename) { gchar *contents, *p; gsize length; GVariant *variant; GError *error; g_assert (IBUS_IS_REGISTRY (registry)); g_assert (filename != NULL); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) return FALSE; error = NULL; if (!g_file_get_contents (filename, &contents, &length, &error)) { g_warning ("cannot read %s: %s", filename, error->message); g_error_free (error); return FALSE; } p = contents; /* read file header including magic and version */ if (length < 8) { g_free (contents); return FALSE; } if (GUINT32_FROM_BE (*(guint32 *) p) != IBUS_CACHE_MAGIC) { g_free (contents); return FALSE; } p += 4; if (GUINT32_FROM_BE (*(guint32 *) p) != IBUS_CACHE_VERSION) { g_free (contents); return FALSE; } p += 4; /* read serialized IBusRegistry */ variant = g_variant_new_from_data (G_VARIANT_TYPE ("(sa{sv}avav)"), p, length - (p - contents), FALSE, (GDestroyNotify) g_free, NULL); if (variant == NULL) { g_free (contents); return FALSE; } ibus_registry_deserialize (registry, variant); g_variant_unref (variant); g_free (contents); return TRUE; } gboolean ibus_registry_check_modification (IBusRegistry *registry) { GList *p; g_assert (IBUS_IS_REGISTRY (registry)); for (p = registry->priv->observed_paths; p != NULL; p = p->next) { if (!IBUS_IS_OBSERVED_PATH (p->data)) { g_warning ("The registry cache of observed_paths might be " \ "broken and have to generate the cache again."); g_list_free_full (registry->priv->observed_paths, g_object_unref); registry->priv->observed_paths = NULL; return TRUE; } if (ibus_observed_path_check_modification ( (IBusObservedPath *) p->data)) return TRUE; } for (p = registry->priv->components; p != NULL; p = p->next) { if (!IBUS_IS_COMPONENT (p->data)) { g_warning ("The registry cache of components might be " \ "broken and have to generate the cache again."); g_list_free_full (registry->priv->components, g_object_unref); registry->priv->components = NULL; return TRUE; } if (ibus_component_check_modification ((IBusComponent *) p->data)) return TRUE; } return FALSE; } gboolean ibus_registry_save_cache (IBusRegistry *registry, gboolean is_user) { gchar *filename; gboolean retval; g_assert (IBUS_IS_REGISTRY (registry)); if (is_user) { filename = g_build_filename (g_get_user_cache_dir (), "ibus", "bus", "registry", NULL); } else { filename = g_build_filename (IBUS_CACHE_DIR, "bus", "registry", NULL); } retval = ibus_registry_save_cache_file (registry, filename); g_free (filename); return retval; } gboolean ibus_registry_save_cache_file (IBusRegistry *registry, const gchar *filename) { gchar *cachedir; GVariant *variant; gchar *contents, *p; gsize length; gboolean retval; guint32 intval; GError *error; g_assert (IBUS_IS_REGISTRY (registry)); g_assert (filename != NULL); cachedir = g_path_get_dirname (filename); g_mkdir_with_parents (cachedir, 0775); g_free (cachedir); variant = ibus_serializable_serialize (IBUS_SERIALIZABLE (registry)); length = 8 + g_variant_get_size (variant); p = contents = g_slice_alloc (length); /* write file header */ intval = GUINT32_TO_BE (IBUS_CACHE_MAGIC); memcpy (p, (gchar *) &intval, 4); p += 4; intval = GUINT32_TO_BE (IBUS_CACHE_VERSION); memcpy (p, (gchar *) &intval, 4); p += 4; /* write serialized IBusRegistry */ g_variant_store (variant, p); error = NULL; retval = g_file_set_contents (filename, contents, length, &error); g_variant_unref (variant); g_slice_free1 (length, contents); if (!retval) { g_warning ("cannot write %s: %s", filename, error->message); g_error_free (error); return FALSE; } if (g_str_has_prefix (filename, g_get_user_cache_dir ())) { g_chmod (filename, 0644); } return TRUE; } #define g_string_append_indent(string, indent) \ { \ gint i; \ for (i = 0; i < (indent); i++) { \ g_string_append (string, " "); \ } \ } void ibus_registry_output (IBusRegistry *registry, GString *output, int indent) { GList *p; g_assert (IBUS_IS_REGISTRY (registry)); g_return_if_fail (output != NULL); g_string_append (output, "\n"); g_string_append (output, "\n"); if (registry->priv->observed_paths) { g_string_append_indent (output, indent); g_string_append (output, "\n"); for (p = registry->priv->observed_paths; p != NULL; p = p->next) { ibus_observed_path_output ((IBusObservedPath *) p->data, output, indent * 2); } g_string_append_indent (output, indent); g_string_append (output, "\n"); } if (registry->priv->components) { g_string_append_indent (output, indent); g_string_append (output, "\n"); for (p = registry->priv->components; p != NULL; p = p->next) { ibus_component_output ((IBusComponent *) p->data, output, indent * 2); } g_string_append_indent (output, indent); g_string_append (output, "\n"); } g_string_append (output, "\n"); } void ibus_registry_load_in_dir (IBusRegistry *registry, const gchar *dirname) { GError *error = NULL; GDir *dir; IBusObservedPath *observed_path = NULL; const gchar *filename; g_assert (IBUS_IS_REGISTRY (registry)); g_assert (dirname); dir = g_dir_open (dirname, 0, &error); if (dir == NULL) { g_warning ("Unable open directory %s : %s", dirname, error->message); g_error_free (error); return; } observed_path = ibus_observed_path_new (dirname, TRUE); registry->priv->observed_paths = g_list_append (registry->priv->observed_paths, observed_path); while ((filename = g_dir_read_name (dir)) != NULL) { glong size; gchar *path; IBusComponent *component; size = g_utf8_strlen (filename, -1); if (g_strcmp0 (MAX (filename, filename + size - 4), ".xml") != 0) continue; path = g_build_filename (dirname, filename, NULL); component = ibus_component_new_from_file (path); if (component != NULL) { g_object_ref_sink (component); registry->priv->components = g_list_append (registry->priv->components, component); } g_free (path); } g_dir_close (dir); } IBusRegistry * ibus_registry_new (void) { IBusRegistry *registry; registry = (IBusRegistry *) g_object_new (IBUS_TYPE_REGISTRY, NULL); return registry; } GList * ibus_registry_get_components (IBusRegistry *registry) { g_assert (IBUS_IS_REGISTRY (registry)); return g_list_copy (registry->priv->components); } GList * ibus_registry_get_observed_paths (IBusRegistry *registry) { g_assert (IBUS_IS_REGISTRY (registry)); return g_list_copy (registry->priv->observed_paths); } static gboolean _monitor_timeout_cb (IBusRegistry *registry) { g_hash_table_remove_all (registry->priv->monitor_table); registry->priv->changed = TRUE; g_signal_emit (registry, _signals[CHANGED], 0); registry->priv->monitor_timeout_id = 0; return FALSE; } static void _monitor_changed_cb (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, IBusRegistry *registry) { g_assert (IBUS_IS_REGISTRY (registry)); if (event_type != G_FILE_MONITOR_EVENT_CHANGED && event_type != G_FILE_MONITOR_EVENT_DELETED && event_type != G_FILE_MONITOR_EVENT_CREATED && event_type != G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED) return; /* Merge successive file changes into one, with a low priority timeout handler. */ if (registry->priv->monitor_timeout_id > 0) return; registry->priv->monitor_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, 5000, (GSourceFunc) _monitor_timeout_cb, g_object_ref (registry), (GDestroyNotify) g_object_unref); } void ibus_registry_start_monitor_changes (IBusRegistry *registry) { GList *observed_paths, *p; g_assert (IBUS_IS_REGISTRY (registry)); g_hash_table_remove_all (registry->priv->monitor_table); observed_paths = g_list_copy (registry->priv->observed_paths); for (p = registry->priv->components; p != NULL; p = p->next) { IBusComponent *component = (IBusComponent *) p->data; GList *component_observed_paths = ibus_component_get_observed_paths (component); observed_paths = g_list_concat (observed_paths, component_observed_paths); } for (p = observed_paths; p != NULL; p = p->next) { IBusObservedPath *path = (IBusObservedPath *) p->data; GFile *file = g_file_new_for_path (path->path); if (g_hash_table_lookup (registry->priv->monitor_table, file) == NULL) { GFileMonitor *monitor; GError *error; error = NULL; monitor = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, &error); if (monitor != NULL) { g_signal_connect (monitor, "changed", G_CALLBACK (_monitor_changed_cb), registry); g_hash_table_replace (registry->priv->monitor_table, g_object_ref (file), monitor); } else { g_warning ("Can't monitor directory %s: %s", path->path, error->message); g_error_free (error); } } g_object_unref (file); } g_list_free (observed_paths); } ibus-1.5.11/src/ibusproplist.h0000644000000000000000000001103012551654123013126 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_PROP_LIST_H_ #define __IBUS_PROP_LIST_H_ /** * SECTION: ibusproplist * @Title: IBusPropList * @Short_description: An #IBusProperty container. * @Stability: Stable * * See_also: #IBusProperty, #IBusEngine * */ #include "ibusserializable.h" #include "ibusproperty.h" G_BEGIN_DECLS /* * Type macros. */ /* define IBusPropList macros */ #define IBUS_TYPE_PROP_LIST \ (ibus_prop_list_get_type ()) #define IBUS_PROP_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROP_LIST, IBusPropList)) #define IBUS_PROP_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROP_LIST, IBusPropListClass)) #define IBUS_IS_PROP_LIST(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROP_LIST)) #define IBUS_IS_PROP_LIST_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROP_LIST)) #define IBUS_PROP_LIST_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass)) /* FIXME: https://mail.gnome.org/archives/gtk-doc-list/2015-July/msg00004.html * If ibusproperty.h and ibusproplist.h includes each other, * gtk-doc build outputs several warnings: * * # cd html && gtkdoc-mkhtml ibus ../ibus-docs.sgml * ../ibus-docs.sgml:4: element refentry: validity error : ID IBusPropList * already defined * ../ibus-docs.sgml:172: element refsect2: validity error : ID * IBusPropListClass already defined * Warning: multiple "IDs" for constraint linkend: IBusPropList. * Warning: multiple "IDs" for constraint linkend: IBusPropList. * Warning: multiple "IDs" for constraint linkend: IBusPropListClass. */ #ifndef __PROPLIST_DEFINED #define __PROPLIST_DEFINED typedef struct _IBusPropList IBusPropList; typedef struct _IBusPropListClass IBusPropListClass; #endif /** * IBusPropList: * @properties: GArray that holds IBusProperties. * * An array of IBusProperties. */ struct _IBusPropList { IBusSerializable parent; /*< public >*/ GArray *properties; }; /** * IBusPropListClass: * @parent: The parent class. * * Class structure for #IBusPropList. */ struct _IBusPropListClass { IBusSerializableClass parent; }; GType ibus_prop_list_get_type (); /** * ibus_prop_list_new: * * Create a new #IBusPropList. * * Returns: A newly allocated #IBusPropList. */ IBusPropList *ibus_prop_list_new (); /** * ibus_prop_list_append: * @prop_list: An IBusPropList. * @prop: IBusProperty to be append to @prop_list. * * Append an IBusProperty to an IBusPropList, and increase reference. */ void ibus_prop_list_append (IBusPropList *prop_list, IBusProperty *prop); /** * ibus_prop_list_get: * @prop_list: An IBusPropList. * @index: Index of an IBusPropList. * * Gets #IBusProperty at given index. Borrowed reference. * * Returns: (transfer none): #IBusProperty at given index, %NULL if no such * #IBusProperty. */ IBusProperty *ibus_prop_list_get (IBusPropList *prop_list, guint index); /** * ibus_prop_list_update_property: * @prop_list: An IBusPropList. * @prop: IBusProperty to be update. * * Update an IBusProperty in IBusPropList. * * Returns: %TRUE if succeeded, %FALSE otherwise. */ gboolean ibus_prop_list_update_property (IBusPropList *prop_list, IBusProperty *prop); G_END_DECLS #endif ibus-1.5.11/src/ibusdebug.h0000644000000000000000000000321512551654123012346 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_DEBUG_H_ #define __IBUS_DEBUG_H_ /** * SECTION: ibusdebug * @short_description: Debug message output. * @stability: Stable * * This section lists functions that generate debug and warning messages. */ /** * ibus_warning: * @msg: A printf formatted message to be print. * @...: Necessary arguments for @msg. * * A convenient wrapper for g_warning. * The output format will be * * source_file:line, message... * */ #define ibus_warning(msg, args...) \ g_warning("%s:%d, " msg, __FILE__, __LINE__, ##args) #endif ibus-1.5.11/src/ibusinputcontext.h0000644000000000000000000004526312551654123014035 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_INPUT_CONTEXT_H_ #define __IBUS_INPUT_CONTEXT_H_ /** * SECTION: ibusinputcontext * @short_description: IBus input context proxy object. * @stability: Stable * * An IBusInputContext is a proxy object of BusInputContext, * which manages the context for input methods that supports * text input in various natural languages. * * Clients call the IBusInputContext to invoke BusInputContext, * through which invokes IBusEngine. */ #include "ibusproxy.h" #include "ibusenginedesc.h" #include "ibustext.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_INPUT_CONTEXT \ (ibus_input_context_get_type ()) #define IBUS_INPUT_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_INPUT_CONTEXT, IBusInputContext)) #define IBUS_INPUT_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_INPUT_CONTEXT, IBusInputContextClass)) #define IBUS_IS_INPUT_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_INPUT_CONTEXT)) #define IBUS_IS_INPUT_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_INPUT_CONTEXT)) #define IBUS_INPUT_CONTEXT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_INPUT_CONTEXT, IBusInputContextClass)) G_BEGIN_DECLS typedef struct _IBusInputContext IBusInputContext; typedef struct _IBusInputContextClass IBusInputContextClass; /** * IBusInputContext: * * An opaque data type representing an IBusInputContext. */ struct _IBusInputContext { IBusProxy parent; /* instance members */ }; struct _IBusInputContextClass { IBusProxyClass parent; /* signals */ /*< private >*/ /* padding */ gpointer pdummy[24]; }; GType ibus_input_context_get_type (void); /** * ibus_input_context_new: * @path: The path to the object that emitting the signal. * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Creates a new #IBusInputContext. * * Returns: A newly allocated #IBusInputContext. */ IBusInputContext * ibus_input_context_new (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GError **error); /** * ibus_input_context_new_async: * @path: The path to the object that emitting the signal. * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * The callback should not be %NULL. * @user_data: The data to pass to callback. * * Creates a new #IBusInputContext asynchronously. */ void ibus_input_context_new_async (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_input_context_new_async_finish: * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback pass to * ibus_input_context_new_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_input_context_new_async(). * * Returns: A newly allocated #IBusInputContext. */ IBusInputContext * ibus_input_context_new_async_finish (GAsyncResult *res, GError **error); /** * ibus_input_context_get_input_context: * @path: The path to the object that emitting the signal. * @connection: A GDBusConnection. * * Gets an existing IBusInputContext. * * Returns: (transfer none): An existing #IBusInputContext. */ IBusInputContext * ibus_input_context_get_input_context (const gchar *path, GDBusConnection *connection); /** * ibus_input_context_get_input_context_async: * @path: The path to the object that emitting the signal. * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * The callback should not be %NULL. * @user_data: The data to pass to callback. * * Gets an existing #IBusInputContext asynchronously. */ void ibus_input_context_get_input_context_async (const gchar *path, GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_input_context_get_input_context_async_finish: * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback pass to * ibus_input_context_get_input_context_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with * ibus_input_context_get_input_context_async(). * * Returns: (transfer none): An existing #IBusInputContext. */ IBusInputContext * ibus_input_context_get_input_context_async_finish (GAsyncResult *res, GError **error); /** * ibus_input_context_process_hand_writing_event: * @context: An IBusInputContext. * @coordinates: An array of gdouble (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]). * @coordinates_len: The number of elements in the array. The number should be even and >= 4. * * Pass a handwriting stroke to an input method engine. * * In this API, a coordinate (0.0, 0.0) represents the top-left corner of an area for * handwriting, and (1.0, 1.0) does the bottom-right. Therefore, for example, if * a user writes a character 'L', the array would be something like [0.0, 0.0, 0.0, 1.0, 1.0, 1.0] * and coordinates_len would be 6. * * The function is usually called when a user releases the mouse button in a hand * writing area. * * see_also: #IBusEngine::process-hand-writing-event */ void ibus_input_context_process_hand_writing_event (IBusInputContext *context, const gdouble *coordinates, guint coordinates_len); /** * ibus_input_context_cancel_hand_writing: * @context: An IBusInputContext. * @n_strokes: The number of strokes to be removed. Pass 0 to remove all. * * Clear handwriting stroke(s) in the current input method engine. * * see_also: #IBusEngine::cancel-hand-writing */ void ibus_input_context_cancel_hand_writing (IBusInputContext *context, guint n_strokes); /** * ibus_input_context_process_key_event_async: * @context: An IBusInputContext. * @keyval: Key symbol of a key event. * @keycode: Keycode of a key event. * @state: Key modifier flags. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A GCancellable or NULL. * @callback: A GAsyncReadyCallback to call when the request is satisfied or NULL * if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * Pass the key event to input method engine. * * Key symbols are characters/symbols produced by key press, for example, * pressing "s" generates key symbol "s"; pressing shift-"s" generates key symbol "S". * Same key on keyboard may produce different key symbols on different keyboard layout. * e.g., "s" key on QWERTY keyboard produces "o" in DVORAK layout. * * Unlike key symbol, keycode is only determined by the location of the key, and * irrelevant of the keyboard layout. * * Briefly speaking, input methods that expect certain keyboard layout should use * keycode; otherwise keyval is sufficient. * For example, Chewing, Cangjie, Wubi expect an en-US QWERTY keyboard, these should * use keycode; while pinyin can rely on keyval only, as it is less sensitive to * the keyboard layout change, DVORAK users can still use DVORAK layout to input pinyin. * * Use ibus_keymap_lookup_keysym() to convert keycode to keysym in given keyboard layout. * * see_also: #IBusEngine::process-key-event */ void ibus_input_context_process_key_event_async (IBusInputContext *context, guint32 keyval, guint32 keycode, guint32 state, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_input_context_process_key_event_async_finish: * @context: An #IBusInputContext. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_input_context_process_key_event_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with * ibus_input_context_process_key_event_async(). * * Returns: %TRUE if the key event is processed; * %FALSE otherwise or some errors happen and the @error will be set. */ gboolean ibus_input_context_process_key_event_async_finish (IBusInputContext *context, GAsyncResult *res, GError **error); /** * ibus_input_context_process_key_event: * @context: An #IBusInputContext. * @keyval: Key symbol of a key event. * @keycode: Keycode of a key event. * @state: Key modifier flags. * * Pass the key event to input method engine and wait for the reply from * ibus (i.e. synchronous IPC). * * Returns: %TRUE for successfully process the key; %FALSE otherwise. * * See also: ibus_input_context_process_key_event_async() */ gboolean ibus_input_context_process_key_event (IBusInputContext *context, guint32 keyval, guint32 keycode, guint32 state); /** * ibus_input_context_set_cursor_location: * @context: An IBusInputContext. * @x: X coordinate of the cursor. * @y: Y coordinate of the cursor. * @w: Width of the cursor. * @h: Height of the cursor. * * Set the cursor location of IBus input context asynchronously. * * see_also: #IBusEngine::set-cursor-location */ void ibus_input_context_set_cursor_location (IBusInputContext *context, gint32 x, gint32 y, gint32 w, gint32 h); /** * ibus_input_context_set_capabilities: * @context: An IBusInputContext. * @capabilities: Capabilities flags of IBusEngine, see #IBusCapabilite * * Set the capabilities flags of client application asynchronously. * When IBUS_CAP_FOCUS is not set, IBUS_CAP_PREEDIT_TEXT, IBUS_CAP_AUXILIARY_TEXT, IBUS_CAP_LOOKUP_TABLE, and IBUS_CAP_PROPERTY have to be all set. * The panel component does nothing for an application that doesn't support focus. * * see_also: #IBusEngine::set-capabilities */ void ibus_input_context_set_capabilities (IBusInputContext *context, guint32 capabilities); /** * ibus_input_context_property_activate: * @context: An #IBusInputContext. * @prop_name: A property name (e.g. "InputMode.WideLatin") * @state: A status of the property (e.g. PROP_STATE_CHECKED) * * Activate the property asynchronously. * * See also: #IBusEngine::property_activate */ void ibus_input_context_property_activate (IBusInputContext *context, const gchar *prop_name, guint32 state); /** * ibus_input_context_focus_in: * @context: An #IBusInputContext. * * Invoked when the client application get focus. An asynchronous IPC will * be performed. * * see_also: #IBusEngine::focus_in. */ void ibus_input_context_focus_in (IBusInputContext *context); /** * ibus_input_context_focus_out: * @context: An #IBusInputContext. * * Invoked when the client application get focus. An asynchronous IPC will be performed. * * see_also: #IBusEngine::focus_out. */ void ibus_input_context_focus_out (IBusInputContext *context); /** * ibus_input_context_reset: * @context: An #IBusInputContext. * * Invoked when the IME is reset. An asynchronous IPC will be performed. * * see_also: #IBusEngine::reset */ void ibus_input_context_reset (IBusInputContext *context); /** * ibus_input_context_get_engine_async: * @context: An #IBusInputContext. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or * %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * An asynchronous IPC will be performed. */ void ibus_input_context_get_engine_async (IBusInputContext *context, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_input_context_get_engine_async_finish: * @context: An #IBusInputContext. * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_input_context_get_engine_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_input_context_get_engine_async(). * * Returns: (transfer none): An IME engine description for the context, or * %NULL. */ IBusEngineDesc * ibus_input_context_get_engine_async_finish (IBusInputContext *context, GAsyncResult *res, GError **error); /** * ibus_input_context_get_engine: * @context: An #IBusInputContext. * * Gets an IME engine description for the context. * A synchronous IPC will be performed. * * Returns: (transfer none): An IME engine description for the context, or NULL. */ IBusEngineDesc * ibus_input_context_get_engine (IBusInputContext *context); /** * ibus_input_context_set_engine: * @context: An #IBusInputContext. * @name: A name of the engine. * * Invoked when the IME engine is changed. * An asynchronous IPC will be performed. */ void ibus_input_context_set_engine (IBusInputContext *context, const gchar *name); /** * ibus_input_context_set_surrounding_text: * @context: An #IBusInputContext. * @text: An #IBusText surrounding the current cursor on the application. * @cursor_pos: Current cursor position in characters in @text. * @anchor_pos: Anchor position of selection in @text. */ void ibus_input_context_set_surrounding_text (IBusInputContext *context, IBusText *text, guint32 cursor_pos, guint32 anchor_pos); /** * ibus_input_context_needs_surrounding_text: * @context: An #IBusInputContext. * * Check whether the current engine requires surrounding-text. * * Returns: %TRUE if surrounding-text is needed by the current engine; * %FALSE otherwise. */ gboolean ibus_input_context_needs_surrounding_text (IBusInputContext *context); /** * ibus_input_context_set_content_type: * @context: An #IBusInputContext. * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. * @hints: Hints that augment @purpose, as an #IBusInputHints. * * Set content-type (primary purpose and hints) of the context. This * information is particularly useful to implement intelligent * behavior in engines, such as automatic input-mode switch and text * prediction. For example, to restrict input to numbers, the client * can call this function with @purpose set to * #IBUS_INPUT_PURPOSE_NUMBER. * * See also: #IBusEngine::set-content-type */ void ibus_input_context_set_content_type (IBusInputContext *context, guint purpose, guint hints); G_END_DECLS #endif ibus-1.5.11/src/ibusobservedpath.c0000644000000000000000000002117112551654123013742 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input IBus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include "ibusinternal.h" #include "ibusobservedpath.h" enum { LAST_SIGNAL, }; /* IBusObservedPathPriv */ struct _IBusObservedPathPrivate { gpointer pad; }; typedef struct _IBusObservedPathPrivate IBusObservedPathPrivate; #define IBUS_OBSERVED_PATH_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_OBSERVED_PATH, IBusObservedPathPrivate)) // static guint _signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_observed_path_destroy (IBusObservedPath *path); static gboolean ibus_observed_path_serialize (IBusObservedPath *path, GVariantBuilder *builder); static gint ibus_observed_path_deserialize (IBusObservedPath *path, GVariant *variant); static gboolean ibus_observed_path_copy (IBusObservedPath *dest, const IBusObservedPath *src); static gboolean ibus_observed_path_parse_xml_node (IBusObservedPath *path, XMLNode *node); G_DEFINE_TYPE (IBusObservedPath, ibus_observed_path, IBUS_TYPE_SERIALIZABLE) static void ibus_observed_path_class_init (IBusObservedPathClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); // g_type_class_add_private (class, sizeof (IBusObservedPathPrivate)); object_class->destroy = (IBusObjectDestroyFunc) ibus_observed_path_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_observed_path_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_observed_path_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_observed_path_copy; } static void ibus_observed_path_init (IBusObservedPath *path) { } static void ibus_observed_path_destroy (IBusObservedPath *path) { g_free (path->path); IBUS_OBJECT_CLASS (ibus_observed_path_parent_class)->destroy (IBUS_OBJECT (path)); } static gboolean ibus_observed_path_serialize (IBusObservedPath *path, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->serialize ((IBusSerializable *)path, builder); g_return_val_if_fail (retval, FALSE); g_variant_builder_add (builder, "s", path->path); g_variant_builder_add (builder, "x", path->mtime); return TRUE; } static gint ibus_observed_path_deserialize (IBusObservedPath *path, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->deserialize ((IBusSerializable *)path, variant); g_return_val_if_fail (retval, 0); ibus_g_variant_get_child_string (variant, retval++, &path->path); g_variant_get_child (variant, retval++, "x", &path->mtime); return retval; } static gboolean ibus_observed_path_copy (IBusObservedPath *dest, const IBusObservedPath *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->path = g_strdup (src->path); dest->mtime = src->mtime; return TRUE; } #define g_string_append_indent(string, indent) \ { \ gint i; \ for (i = 0; i < (indent); i++) { \ g_string_append (string, " "); \ } \ } void ibus_observed_path_output (IBusObservedPath *path, GString *output, gint indent) { g_assert (IBUS_IS_OBSERVED_PATH (path)); g_assert (output); g_string_append_indent (output, indent); g_string_append_printf (output, "%s\n", path->mtime, path->path); } gboolean ibus_observed_path_check_modification (IBusObservedPath *path) { g_assert (IBUS_IS_OBSERVED_PATH (path)); struct stat buf; if (g_stat (path->path, &buf) != 0) { buf.st_mtime = 0; } if (path->mtime == buf.st_mtime) return FALSE; return TRUE; } static void ibus_observed_path_fill_stat (IBusObservedPath *path) { g_assert (IBUS_IS_OBSERVED_PATH (path)); struct stat buf; if (g_stat (path->path, &buf) == 0) { path->is_exist = 1; if (S_ISDIR (buf.st_mode)) { path->is_dir = 1; } path->mtime = buf.st_mtime; } else { path->is_dir = 0; path->is_exist = 0; path->mtime = 0; } } GList * ibus_observed_path_traverse (IBusObservedPath *path, gboolean dir_only) { g_assert (IBUS_IS_OBSERVED_PATH (path)); GDir *dir; const gchar *name; GList *paths = NULL; dir = g_dir_open (path->path, 0, NULL); if (dir == NULL) return NULL; while ((name = g_dir_read_name (dir)) != NULL) { IBusObservedPath *sub; sub = g_object_new (IBUS_TYPE_OBSERVED_PATH, NULL); g_object_ref_sink (sub); sub->path = g_build_filename (path->path, name, NULL); ibus_observed_path_fill_stat (sub); if (sub->is_exist && sub->is_dir) { paths = g_list_append (paths, sub); paths = g_list_concat (paths, ibus_observed_path_traverse (sub, dir_only)); } else if (!dir_only) { paths = g_list_append (paths, sub); } } g_dir_close (dir); return paths; } static gboolean ibus_observed_path_parse_xml_node (IBusObservedPath *path, XMLNode *node) { g_assert (IBUS_IS_OBSERVED_PATH (path)); g_assert (node); if (G_UNLIKELY (g_strcmp0 (node->name, "path") != 0)) { return FALSE; } if (node->text[0] == '~' && node->text[1] != G_DIR_SEPARATOR) { g_warning ("invalide path \"%s\"", node->text); return FALSE; } if (node->text[0] == '~') { const gchar *homedir = g_getenv ("HOME"); if (homedir == NULL) homedir = g_get_home_dir (); path->path = g_build_filename (homedir, node->text + 2, NULL); } else { path->path = g_strdup (node->text); } gchar **attr; for (attr = node->attributes; attr[0]; attr += 2) { if (g_strcmp0 (*attr, "mtime") == 0) { path->mtime = atol (attr[1]); continue; } g_warning ("Unkonwn attribute %s", attr[0]); } return TRUE; } IBusObservedPath * ibus_observed_path_new_from_xml_node (XMLNode *node, gboolean fill_stat) { g_assert (node); IBusObservedPath *path; path = (IBusObservedPath *) g_object_new (IBUS_TYPE_OBSERVED_PATH, NULL); if (!ibus_observed_path_parse_xml_node (path, node)) { g_object_unref (path); path = NULL; } else if (fill_stat) { ibus_observed_path_fill_stat (path); } return path; } IBusObservedPath * ibus_observed_path_new (const gchar *path, gboolean fill_stat) { g_assert (path); IBusObservedPath *op; op = (IBusObservedPath *) g_object_new (IBUS_TYPE_OBSERVED_PATH, NULL); op->path = g_strdup (path); if (fill_stat) { ibus_observed_path_fill_stat (op); } return op; } ibus-1.5.11/src/ibusshare.h0000644000000000000000000002207112551654123012363 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_SHARE_H_ #define __IBUS_SHARE_H_ /** * SECTION: ibusshare * @short_description: Shared utility functions and definition. * @stability: Stable * * This file defines some utility functions and definition * which are shared among ibus component and services. */ #include #ifdef IBUS_DISABLE_DEPRECATION_WARNINGS #define IBUS_DEPRECATED #else #define IBUS_DEPRECATED G_DEPRECATED #endif /** * IBUS_SERVICE_IBUS: * * Address of IBus service. */ #define IBUS_SERVICE_IBUS "org.freedesktop.IBus" /** * IBUS_SERVICE_PANEL: * * Address of IBus panel service. */ #define IBUS_SERVICE_PANEL "org.freedesktop.IBus.Panel" /** * IBUS_SERVICE_CONFIG: * * Address of IBus config service. */ #define IBUS_SERVICE_CONFIG "org.freedesktop.IBus.Config" /** * IBUS_SERVICE_NOTIFICATIONS: * * Address of IBus notification service. */ #define IBUS_SERVICE_NOTIFICATIONS "org.freedesktop.IBus.Notifications" /** * IBUS_PATH_IBUS: * * D-Bus path for IBus */ #define IBUS_PATH_IBUS "/org/freedesktop/IBus" /** * IBUS_PATH_FACTORY: * * D-Bus path for IBus factory. */ #define IBUS_PATH_FACTORY "/org/freedesktop/IBus/Factory" /** * IBUS_PATH_PANEL: * * D-Bus path for IBus panel. */ #define IBUS_PATH_PANEL "/org/freedesktop/IBus/Panel" /** * IBUS_PATH_CONFIG: * * D-Bus path for IBus config. */ #define IBUS_PATH_CONFIG "/org/freedesktop/IBus/Config" /** * IBUS_PATH_NOTIFICATIONS: * * D-Bus path for IBus notifications. */ #define IBUS_PATH_NOTIFICATIONS "/org/freedesktop/IBus/Notifications" /** * IBUS_PATH_INPUT_CONTEXT: * * Template of D-Bus path for IBus input context. */ #define IBUS_PATH_INPUT_CONTEXT "/org/freedesktop/IBus/InputContext_%d" /** * IBUS_INTERFACE_IBUS: * * D-Bus interface for IBus. */ #define IBUS_INTERFACE_IBUS "org.freedesktop.IBus" /** * IBUS_INTERFACE_INPUT_CONTEXT: * * D-Bus interface for IBus input context. */ #define IBUS_INTERFACE_INPUT_CONTEXT \ "org.freedesktop.IBus.InputContext" /** * IBUS_INTERFACE_FACTORY: * * D-Bus interface for IBus factory. */ #define IBUS_INTERFACE_FACTORY "org.freedesktop.IBus.Factory" /** * IBUS_INTERFACE_ENGINE: * * D-Bus interface for IBus engine. */ #define IBUS_INTERFACE_ENGINE "org.freedesktop.IBus.Engine" /** * IBUS_INTERFACE_PANEL: * * D-Bus interface for IBus panel. */ #define IBUS_INTERFACE_PANEL "org.freedesktop.IBus.Panel" /** * IBUS_INTERFACE_CONFIG: * * D-Bus interface for IBus config. */ #define IBUS_INTERFACE_CONFIG "org.freedesktop.IBus.Config" /** * IBUS_INTERFACE_NOTIFICATIONS: * * D-Bus interface for IBus notifications. */ #define IBUS_INTERFACE_NOTIFICATIONS "org.freedesktop.IBus.Notifications" G_BEGIN_DECLS /** * ibus_get_local_machine_id: * * Obtains the machine UUID of the machine this process is running on. * * Returns: A newly allocated string that shows the UUID of the machine. */ const gchar *ibus_get_local_machine_id (void); /** * ibus_set_display: * @display: Display address, as in DISPLAY environment for X. * * Set the display address. */ void ibus_set_display (const gchar *display); /** * ibus_get_address: * * Return the D-Bus address of IBus. * It will find the address from following source: * * Environment variable IBUS_ADDRESS * Socket file under ~/.config/ibus/bus/ * * * Returns: D-Bus address of IBus. %NULL for not found. * * See also: ibus_write_address(). */ const gchar *ibus_get_address (void); /** * ibus_write_address: * @address: D-Bus address of IBus. * * Write D-Bus address to socket file. * * See also: ibus_get_address(). */ void ibus_write_address (const gchar *address); /** * ibus_get_user_name: * * Get the current user name. * It is determined by: * * getlogin() * Environment variable SUDO_USER * Environment variable USERHELPER_UID * Environment variable USERNAME * Environment variable LOGNAME * Environment variable USER * Environment variable LNAME * * * Returns: A newly allocated string that stores current user name. */ const gchar *ibus_get_user_name (void); /** * ibus_get_daemon_uid: * * Get UID of ibus-daemon. * * Returns: UID of ibus-daemon; or 0 if UID is not available. * * Deprecated: This function has been deprecated and should * not be used in newly written code. */ glong ibus_get_daemon_uid (void) G_GNUC_DEPRECATED; /** * ibus_get_socket_path: * * Get the path of socket file. * * Returns: A newly allocated string that stores the path of socket file. */ const gchar *ibus_get_socket_path (void); /** * ibus_get_timeout: * * Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. * im-ibus.so), not for ibus-daemon. * Note that the timeout for ibus-daemon could be set by --timeout command * line option of the daemon. * * Returns: A GDBus timeout in milliseconds. -1 when default timeout for * GDBus should be used. */ gint ibus_get_timeout (void); /** * ibus_free_strv: * @strv: List of strings. * * Free a list of strings. * Deprecated: This function has been deprecated and should * not be used in newly written code. */ void ibus_free_strv (gchar **strv) G_GNUC_DEPRECATED; /** * ibus_key_event_to_string: * @keyval: Key symbol. * @modifiers: Modifiers such as Ctrl or Shift. * * Return the name of a key symbol and modifiers. * * For example, if press ctrl, shift, and enter, then this function returns: * Shift+Control+enter. * * Returns: The name of a key symbol and modifier. */ const gchar *ibus_key_event_to_string (guint keyval, guint modifiers); /** * ibus_key_event_from_string: * @string: Key event string. * @keyval: Variable that hold key symbol result. * @modifiers: Variable that hold modifiers result. * * Parse key event string and return key symbol and modifiers. * * Returns: %TRUE for succeed; %FALSE if failed. */ gboolean ibus_key_event_from_string (const gchar *string, guint *keyval, guint *modifiers); /** * ibus_init: * * Initialize the ibus types. */ void ibus_init (void); /** * ibus_main: * * Runs an IBus main loop until ibus_quit() is called in the loop. * * See also: ibus_quit(). */ void ibus_main (void); /** * ibus_quit: * * Stops an IBus from running. * * Any calls to ibus_quit() for the loop will return. * See also: ibus_main(). */ void ibus_quit (void); /** * ibus_set_log_handler: * @verbose: TRUE for verbose logging. * * Sets GLIB's log handler to ours. Our log handler adds time info * including hour, minute, second, and microsecond, like: * * (ibus-daemon:7088): IBUS-DEBUG: 18:06:45.822819: ibus-daemon started * * If @verbose is %TRUE, all levels of messages will be logged. Otherwise, * DEBUG and WARNING messages will be ignored. The function is used in * ibus-daemon, but can be useful for IBus client programs as well for * debugging. It's totally fine for not calling this function. If you * don't set a custom GLIB log handler, the default GLIB log handler will * be used. */ void ibus_set_log_handler (gboolean verbose); /** * ibus_unset_log_handler: * * Remove the log handler which is set by ibus_set_log_handler. */ void ibus_unset_log_handler (void); G_END_DECLS #endif ibus-1.5.11/src/ibusconfigservice.h0000644000000000000000000002155512551654123014115 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_CONFIG_SERVICE_H_ #define __IBUS_CONFIG_SERVICE_H_ /** * SECTION: ibusconfigservice * @short_description: Configuration service back-end. * @stability: Stable * * An IBusConfigService is a base class for other configuration services such as GConf. * Currently, directly known sub class is IBusConfigGConf. * * IBusConfigServiceClass has following member functions: * * * gboolean set_value(IBusConfigService *config, const gchar *section, const gchar *name, * const GValue *value, IBusError **error) * * * * config: * A configure service * * * section: * Section name of the configuration option. * * * name: * Name of the configuration option. * * * value: * GValue that holds the value. * * * error: * Error outputs here. * * * Returns: * TRUE if succeed; FALSE otherwise. * * * Set a value to a configuration option. * * * * gboolean get_value(IBusConfigService *config, const gchar *section, const gchar *name, * GValue *value, IBusError **error) * * * * config: * A configure service * * * section: * Section name of the configuration option. * * * name: * Name of the configuration option. * * * value: * GValue that holds the value. * * * error: * Error outputs here. * * * Returns: * TRUE if succeed; FALSE otherwise. * * * Get value of a configuration option. * * * * gboolean unset(IBusConfigService *config, const gchar *section, const gchar *name, * IBusError **error) * * * * config: * A configure service * * * section: * Section name of the configuration option. * * * name: * Name of the configuration option. * * * error: * Error outputs here. * * * Returns: * TRUE if succeed; FALSE otherwise. * * * Remove an entry to a configuration option. * * * */ #include "ibusservice.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_CONFIG_SERVICE \ (ibus_config_service_get_type ()) #define IBUS_CONFIG_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_SERVICE, IBusConfigService)) #define IBUS_CONFIG_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_SERVICE, IBusConfigServiceClass)) #define IBUS_IS_CONFIG_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_SERVICE)) #define IBUS_IS_CONFIG_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_SERVICE)) #define IBUS_CONFIG_SERVICE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_SERVICE, IBusConfigServiceClass)) G_BEGIN_DECLS typedef struct _IBusConfigService IBusConfigService; typedef struct _IBusConfigServiceClass IBusConfigServiceClass; /** * IBusConfigService: * * An opaque data type representing a configure service. */ struct _IBusConfigService { /*< private >*/ IBusService parent; /* IBusConfigServicePriv *priv */ /* instance members */ }; struct _IBusConfigServiceClass { /*< private >*/ IBusServiceClass parent; /*< public >*/ /* class members */ gboolean (* set_value) (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value, GError **error); /** * get_value: * @config: An #IBusConfig. * @section: section name * @name: value name * * Returns: (transfer full): The value in config associated with section * and name. */ GVariant * (* get_value) (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); gboolean (* unset_value) (IBusConfigService *config, const gchar *section, const gchar *name, GError **error); GVariant * (* get_values) (IBusConfigService *config, const gchar *section, GError **error); /*< private >*/ /* padding */ gpointer pdummy[12]; }; GType ibus_config_service_get_type (void); /** * ibus_config_service_new: * @connection: An #GDBusConnection. * * Creates an new #IBusConfigService from an #GDBusConnection. * * Returns: A newly allocated #IBusConfigServices. */ IBusConfigService *ibus_config_service_new (GDBusConnection *connection); /** * ibus_config_service_value_changed: * @config: An IBusConfigService. * @section: Section name of the configuration option. * @name: Name of the configure option. * @value: GVariant that holds the value. * * Change a value of a configuration option * by sending a "ValueChanged" message to IBus service. */ void ibus_config_service_value_changed (IBusConfigService *config, const gchar *section, const gchar *name, GVariant *value); G_END_DECLS #endif ibus-1.5.11/src/keyname-table.h0000644000000000000000000044123312551654123013121 00000000000000/* keyname-table.h: Generated by gen-keyname-table.pl from keynames.txt * * Date: Thu Oct 17 18:16:31 2013 * * Do not edit. */ static const char keynames[] = "space\0" "exclam\0" "quotedbl\0" "numbersign\0" "dollar\0" "percent\0" "ampersand\0" "apostrophe\0" "quoteright\0" "parenleft\0" "parenright\0" "asterisk\0" "plus\0" "comma\0" "minus\0" "period\0" "slash\0" "0\0" "1\0" "2\0" "3\0" "4\0" "5\0" "6\0" "7\0" "8\0" "9\0" "colon\0" "semicolon\0" "less\0" "equal\0" "greater\0" "question\0" "at\0" "A\0" "B\0" "C\0" "D\0" "E\0" "F\0" "G\0" "H\0" "I\0" "J\0" "K\0" "L\0" "M\0" "N\0" "O\0" "P\0" "Q\0" "R\0" "S\0" "T\0" "U\0" "V\0" "W\0" "X\0" "Y\0" "Z\0" "bracketleft\0" "backslash\0" "bracketright\0" "asciicircum\0" "underscore\0" "grave\0" "quoteleft\0" "a\0" "b\0" "c\0" "d\0" "e\0" "f\0" "g\0" "h\0" "i\0" "j\0" "k\0" "l\0" "m\0" "n\0" "o\0" "p\0" "q\0" "r\0" "s\0" "t\0" "u\0" "v\0" "w\0" "x\0" "y\0" "z\0" "braceleft\0" "bar\0" "braceright\0" "asciitilde\0" "nobreakspace\0" "exclamdown\0" "cent\0" "sterling\0" "currency\0" "yen\0" "brokenbar\0" "section\0" "diaeresis\0" "copyright\0" "ordfeminine\0" "guillemotleft\0" "notsign\0" "hyphen\0" "registered\0" "macron\0" "degree\0" "plusminus\0" "twosuperior\0" "threesuperior\0" "acute\0" "mu\0" "paragraph\0" "periodcentered\0" "cedilla\0" "onesuperior\0" "masculine\0" "guillemotright\0" "onequarter\0" "onehalf\0" "threequarters\0" "questiondown\0" "Agrave\0" "Aacute\0" "Acircumflex\0" "Atilde\0" "Adiaeresis\0" "Aring\0" "AE\0" "Ccedilla\0" "Egrave\0" "Eacute\0" "Ecircumflex\0" "Ediaeresis\0" "Igrave\0" "Iacute\0" "Icircumflex\0" "Idiaeresis\0" "Eth\0" "ETH\0" "Ntilde\0" "Ograve\0" "Oacute\0" "Ocircumflex\0" "Otilde\0" "Odiaeresis\0" "multiply\0" "Ooblique\0" "Oslash\0" "Ugrave\0" "Uacute\0" "Ucircumflex\0" "Udiaeresis\0" "Yacute\0" "Thorn\0" "THORN\0" "ssharp\0" "agrave\0" "aacute\0" "acircumflex\0" "atilde\0" "adiaeresis\0" "aring\0" "ae\0" "ccedilla\0" "egrave\0" "eacute\0" "ecircumflex\0" "ediaeresis\0" "igrave\0" "iacute\0" "icircumflex\0" "idiaeresis\0" "eth\0" "ntilde\0" "ograve\0" "oacute\0" "ocircumflex\0" "otilde\0" "odiaeresis\0" "division\0" "ooblique\0" "oslash\0" "ugrave\0" "uacute\0" "ucircumflex\0" "udiaeresis\0" "yacute\0" "thorn\0" "ydiaeresis\0" "Aogonek\0" "breve\0" "Lstroke\0" "Lcaron\0" "Sacute\0" "Scaron\0" "Scedilla\0" "Tcaron\0" "Zacute\0" "Zcaron\0" "Zabovedot\0" "aogonek\0" "ogonek\0" "lstroke\0" "lcaron\0" "sacute\0" "caron\0" "scaron\0" "scedilla\0" "tcaron\0" "zacute\0" "doubleacute\0" "zcaron\0" "zabovedot\0" "Racute\0" "Abreve\0" "Lacute\0" "Cacute\0" "Ccaron\0" "Eogonek\0" "Ecaron\0" "Dcaron\0" "Dstroke\0" "Nacute\0" "Ncaron\0" "Odoubleacute\0" "Rcaron\0" "Uring\0" "Udoubleacute\0" "Tcedilla\0" "racute\0" "abreve\0" "lacute\0" "cacute\0" "ccaron\0" "eogonek\0" "ecaron\0" "dcaron\0" "dstroke\0" "nacute\0" "ncaron\0" "odoubleacute\0" "rcaron\0" "uring\0" "udoubleacute\0" "tcedilla\0" "abovedot\0" "Hstroke\0" "Hcircumflex\0" "Iabovedot\0" "Gbreve\0" "Jcircumflex\0" "hstroke\0" "hcircumflex\0" "idotless\0" "gbreve\0" "jcircumflex\0" "Cabovedot\0" "Ccircumflex\0" "Gabovedot\0" "Gcircumflex\0" "Ubreve\0" "Scircumflex\0" "cabovedot\0" "ccircumflex\0" "gabovedot\0" "gcircumflex\0" "ubreve\0" "scircumflex\0" "kappa\0" "kra\0" "Rcedilla\0" "Itilde\0" "Lcedilla\0" "Emacron\0" "Gcedilla\0" "Tslash\0" "rcedilla\0" "itilde\0" "lcedilla\0" "emacron\0" "gcedilla\0" "tslash\0" "ENG\0" "eng\0" "Amacron\0" "Iogonek\0" "Eabovedot\0" "Imacron\0" "Ncedilla\0" "Omacron\0" "Kcedilla\0" "Uogonek\0" "Utilde\0" "Umacron\0" "amacron\0" "iogonek\0" "eabovedot\0" "imacron\0" "ncedilla\0" "omacron\0" "kcedilla\0" "uogonek\0" "utilde\0" "umacron\0" "overline\0" "kana_fullstop\0" "kana_openingbracket\0" "kana_closingbracket\0" "kana_comma\0" "kana_conjunctive\0" "kana_middledot\0" "kana_WO\0" "kana_a\0" "kana_i\0" "kana_u\0" "kana_e\0" "kana_o\0" "kana_ya\0" "kana_yu\0" "kana_yo\0" "kana_tsu\0" "kana_tu\0" "prolongedsound\0" "kana_A\0" "kana_I\0" "kana_U\0" "kana_E\0" "kana_O\0" "kana_KA\0" "kana_KI\0" "kana_KU\0" "kana_KE\0" "kana_KO\0" "kana_SA\0" "kana_SHI\0" "kana_SU\0" "kana_SE\0" "kana_SO\0" "kana_TA\0" "kana_CHI\0" "kana_TI\0" "kana_TSU\0" "kana_TU\0" "kana_TE\0" "kana_TO\0" "kana_NA\0" "kana_NI\0" "kana_NU\0" "kana_NE\0" "kana_NO\0" "kana_HA\0" "kana_HI\0" "kana_FU\0" "kana_HU\0" "kana_HE\0" "kana_HO\0" "kana_MA\0" "kana_MI\0" "kana_MU\0" "kana_ME\0" "kana_MO\0" "kana_YA\0" "kana_YU\0" "kana_YO\0" "kana_RA\0" "kana_RI\0" "kana_RU\0" "kana_RE\0" "kana_RO\0" "kana_WA\0" "kana_N\0" "voicedsound\0" "semivoicedsound\0" "Arabic_comma\0" "Arabic_semicolon\0" "Arabic_question_mark\0" "Arabic_hamza\0" "Arabic_maddaonalef\0" "Arabic_hamzaonalef\0" "Arabic_hamzaonwaw\0" "Arabic_hamzaunderalef\0" "Arabic_hamzaonyeh\0" "Arabic_alef\0" "Arabic_beh\0" "Arabic_tehmarbuta\0" "Arabic_teh\0" "Arabic_theh\0" "Arabic_jeem\0" "Arabic_hah\0" "Arabic_khah\0" "Arabic_dal\0" "Arabic_thal\0" "Arabic_ra\0" "Arabic_zain\0" "Arabic_seen\0" "Arabic_sheen\0" "Arabic_sad\0" "Arabic_dad\0" "Arabic_tah\0" "Arabic_zah\0" "Arabic_ain\0" "Arabic_ghain\0" "Arabic_tatweel\0" "Arabic_feh\0" "Arabic_qaf\0" "Arabic_kaf\0" "Arabic_lam\0" "Arabic_meem\0" "Arabic_noon\0" "Arabic_ha\0" "Arabic_heh\0" "Arabic_waw\0" "Arabic_alefmaksura\0" "Arabic_yeh\0" "Arabic_fathatan\0" "Arabic_dammatan\0" "Arabic_kasratan\0" "Arabic_fatha\0" "Arabic_damma\0" "Arabic_kasra\0" "Arabic_shadda\0" "Arabic_sukun\0" "Serbian_dje\0" "Macedonia_gje\0" "Cyrillic_io\0" "Ukrainian_ie\0" "Ukranian_je\0" "Macedonia_dse\0" "Ukrainian_i\0" "Ukranian_i\0" "Ukrainian_yi\0" "Ukranian_yi\0" "Cyrillic_je\0" "Serbian_je\0" "Cyrillic_lje\0" "Serbian_lje\0" "Cyrillic_nje\0" "Serbian_nje\0" "Serbian_tshe\0" "Macedonia_kje\0" "Ukrainian_ghe_with_upturn\0" "Byelorussian_shortu\0" "Cyrillic_dzhe\0" "Serbian_dze\0" "numerosign\0" "Serbian_DJE\0" "Macedonia_GJE\0" "Cyrillic_IO\0" "Ukrainian_IE\0" "Ukranian_JE\0" "Macedonia_DSE\0" "Ukrainian_I\0" "Ukranian_I\0" "Ukrainian_YI\0" "Ukranian_YI\0" "Cyrillic_JE\0" "Serbian_JE\0" "Cyrillic_LJE\0" "Serbian_LJE\0" "Cyrillic_NJE\0" "Serbian_NJE\0" "Serbian_TSHE\0" "Macedonia_KJE\0" "Ukrainian_GHE_WITH_UPTURN\0" "Byelorussian_SHORTU\0" "Cyrillic_DZHE\0" "Serbian_DZE\0" "Cyrillic_yu\0" "Cyrillic_a\0" "Cyrillic_be\0" "Cyrillic_tse\0" "Cyrillic_de\0" "Cyrillic_ie\0" "Cyrillic_ef\0" "Cyrillic_ghe\0" "Cyrillic_ha\0" "Cyrillic_i\0" "Cyrillic_shorti\0" "Cyrillic_ka\0" "Cyrillic_el\0" "Cyrillic_em\0" "Cyrillic_en\0" "Cyrillic_o\0" "Cyrillic_pe\0" "Cyrillic_ya\0" "Cyrillic_er\0" "Cyrillic_es\0" "Cyrillic_te\0" "Cyrillic_u\0" "Cyrillic_zhe\0" "Cyrillic_ve\0" "Cyrillic_softsign\0" "Cyrillic_yeru\0" "Cyrillic_ze\0" "Cyrillic_sha\0" "Cyrillic_e\0" "Cyrillic_shcha\0" "Cyrillic_che\0" "Cyrillic_hardsign\0" "Cyrillic_YU\0" "Cyrillic_A\0" "Cyrillic_BE\0" "Cyrillic_TSE\0" "Cyrillic_DE\0" "Cyrillic_IE\0" "Cyrillic_EF\0" "Cyrillic_GHE\0" "Cyrillic_HA\0" "Cyrillic_I\0" "Cyrillic_SHORTI\0" "Cyrillic_KA\0" "Cyrillic_EL\0" "Cyrillic_EM\0" "Cyrillic_EN\0" "Cyrillic_O\0" "Cyrillic_PE\0" "Cyrillic_YA\0" "Cyrillic_ER\0" "Cyrillic_ES\0" "Cyrillic_TE\0" "Cyrillic_U\0" "Cyrillic_ZHE\0" "Cyrillic_VE\0" "Cyrillic_SOFTSIGN\0" "Cyrillic_YERU\0" "Cyrillic_ZE\0" "Cyrillic_SHA\0" "Cyrillic_E\0" "Cyrillic_SHCHA\0" "Cyrillic_CHE\0" "Cyrillic_HARDSIGN\0" "Greek_ALPHAaccent\0" "Greek_EPSILONaccent\0" "Greek_ETAaccent\0" "Greek_IOTAaccent\0" "Greek_IOTAdiaeresis\0" "Greek_IOTAdieresis\0" "Greek_OMICRONaccent\0" "Greek_UPSILONaccent\0" "Greek_UPSILONdieresis\0" "Greek_OMEGAaccent\0" "Greek_accentdieresis\0" "Greek_horizbar\0" "Greek_alphaaccent\0" "Greek_epsilonaccent\0" "Greek_etaaccent\0" "Greek_iotaaccent\0" "Greek_iotadieresis\0" "Greek_iotaaccentdieresis\0" "Greek_omicronaccent\0" "Greek_upsilonaccent\0" "Greek_upsilondieresis\0" "Greek_upsilonaccentdieresis\0" "Greek_omegaaccent\0" "Greek_ALPHA\0" "Greek_BETA\0" "Greek_GAMMA\0" "Greek_DELTA\0" "Greek_EPSILON\0" "Greek_ZETA\0" "Greek_ETA\0" "Greek_THETA\0" "Greek_IOTA\0" "Greek_KAPPA\0" "Greek_LAMBDA\0" "Greek_LAMDA\0" "Greek_MU\0" "Greek_NU\0" "Greek_XI\0" "Greek_OMICRON\0" "Greek_PI\0" "Greek_RHO\0" "Greek_SIGMA\0" "Greek_TAU\0" "Greek_UPSILON\0" "Greek_PHI\0" "Greek_CHI\0" "Greek_PSI\0" "Greek_OMEGA\0" "Greek_alpha\0" "Greek_beta\0" "Greek_gamma\0" "Greek_delta\0" "Greek_epsilon\0" "Greek_zeta\0" "Greek_eta\0" "Greek_theta\0" "Greek_iota\0" "Greek_kappa\0" "Greek_lambda\0" "Greek_lamda\0" "Greek_mu\0" "Greek_nu\0" "Greek_xi\0" "Greek_omicron\0" "Greek_pi\0" "Greek_rho\0" "Greek_sigma\0" "Greek_finalsmallsigma\0" "Greek_tau\0" "Greek_upsilon\0" "Greek_phi\0" "Greek_chi\0" "Greek_psi\0" "Greek_omega\0" "leftradical\0" "topleftradical\0" "horizconnector\0" "topintegral\0" "botintegral\0" "vertconnector\0" "topleftsqbracket\0" "botleftsqbracket\0" "toprightsqbracket\0" "botrightsqbracket\0" "topleftparens\0" "botleftparens\0" "toprightparens\0" "botrightparens\0" "leftmiddlecurlybrace\0" "rightmiddlecurlybrace\0" "topleftsummation\0" "botleftsummation\0" "topvertsummationconnector\0" "botvertsummationconnector\0" "toprightsummation\0" "botrightsummation\0" "rightmiddlesummation\0" "lessthanequal\0" "notequal\0" "greaterthanequal\0" "integral\0" "therefore\0" "variation\0" "infinity\0" "nabla\0" "approximate\0" "similarequal\0" "ifonlyif\0" "implies\0" "identical\0" "radical\0" "includedin\0" "includes\0" "intersection\0" "union\0" "logicaland\0" "logicalor\0" "partialderivative\0" "function\0" "leftarrow\0" "uparrow\0" "rightarrow\0" "downarrow\0" "blank\0" "soliddiamond\0" "checkerboard\0" "ht\0" "ff\0" "cr\0" "lf\0" "nl\0" "vt\0" "lowrightcorner\0" "uprightcorner\0" "upleftcorner\0" "lowleftcorner\0" "crossinglines\0" "horizlinescan1\0" "horizlinescan3\0" "horizlinescan5\0" "horizlinescan7\0" "horizlinescan9\0" "leftt\0" "rightt\0" "bott\0" "topt\0" "vertbar\0" "emspace\0" "enspace\0" "em3space\0" "em4space\0" "digitspace\0" "punctspace\0" "thinspace\0" "hairspace\0" "emdash\0" "endash\0" "signifblank\0" "ellipsis\0" "doubbaselinedot\0" "onethird\0" "twothirds\0" "onefifth\0" "twofifths\0" "threefifths\0" "fourfifths\0" "onesixth\0" "fivesixths\0" "careof\0" "figdash\0" "leftanglebracket\0" "decimalpoint\0" "rightanglebracket\0" "marker\0" "oneeighth\0" "threeeighths\0" "fiveeighths\0" "seveneighths\0" "trademark\0" "signaturemark\0" "trademarkincircle\0" "leftopentriangle\0" "rightopentriangle\0" "emopencircle\0" "emopenrectangle\0" "leftsinglequotemark\0" "rightsinglequotemark\0" "leftdoublequotemark\0" "rightdoublequotemark\0" "prescription\0" "permille\0" "minutes\0" "seconds\0" "latincross\0" "hexagram\0" "filledrectbullet\0" "filledlefttribullet\0" "filledrighttribullet\0" "emfilledcircle\0" "emfilledrect\0" "enopencircbullet\0" "enopensquarebullet\0" "openrectbullet\0" "opentribulletup\0" "opentribulletdown\0" "openstar\0" "enfilledcircbullet\0" "enfilledsqbullet\0" "filledtribulletup\0" "filledtribulletdown\0" "leftpointer\0" "rightpointer\0" "club\0" "diamond\0" "heart\0" "maltesecross\0" "dagger\0" "doubledagger\0" "checkmark\0" "ballotcross\0" "musicalsharp\0" "musicalflat\0" "malesymbol\0" "femalesymbol\0" "telephone\0" "telephonerecorder\0" "phonographcopyright\0" "caret\0" "singlelowquotemark\0" "doublelowquotemark\0" "cursor\0" "leftcaret\0" "rightcaret\0" "downcaret\0" "upcaret\0" "overbar\0" "downtack\0" "upshoe\0" "downstile\0" "underbar\0" "jot\0" "quad\0" "uptack\0" "circle\0" "upstile\0" "downshoe\0" "rightshoe\0" "leftshoe\0" "lefttack\0" "righttack\0" "hebrew_doublelowline\0" "hebrew_aleph\0" "hebrew_bet\0" "hebrew_beth\0" "hebrew_gimel\0" "hebrew_gimmel\0" "hebrew_dalet\0" "hebrew_daleth\0" "hebrew_he\0" "hebrew_waw\0" "hebrew_zain\0" "hebrew_zayin\0" "hebrew_chet\0" "hebrew_het\0" "hebrew_tet\0" "hebrew_teth\0" "hebrew_yod\0" "hebrew_finalkaph\0" "hebrew_kaph\0" "hebrew_lamed\0" "hebrew_finalmem\0" "hebrew_mem\0" "hebrew_finalnun\0" "hebrew_nun\0" "hebrew_samech\0" "hebrew_samekh\0" "hebrew_ayin\0" "hebrew_finalpe\0" "hebrew_pe\0" "hebrew_finalzade\0" "hebrew_finalzadi\0" "hebrew_zade\0" "hebrew_zadi\0" "hebrew_kuf\0" "hebrew_qoph\0" "hebrew_resh\0" "hebrew_shin\0" "hebrew_taf\0" "hebrew_taw\0" "Thai_kokai\0" "Thai_khokhai\0" "Thai_khokhuat\0" "Thai_khokhwai\0" "Thai_khokhon\0" "Thai_khorakhang\0" "Thai_ngongu\0" "Thai_chochan\0" "Thai_choching\0" "Thai_chochang\0" "Thai_soso\0" "Thai_chochoe\0" "Thai_yoying\0" "Thai_dochada\0" "Thai_topatak\0" "Thai_thothan\0" "Thai_thonangmontho\0" "Thai_thophuthao\0" "Thai_nonen\0" "Thai_dodek\0" "Thai_totao\0" "Thai_thothung\0" "Thai_thothahan\0" "Thai_thothong\0" "Thai_nonu\0" "Thai_bobaimai\0" "Thai_popla\0" "Thai_phophung\0" "Thai_fofa\0" "Thai_phophan\0" "Thai_fofan\0" "Thai_phosamphao\0" "Thai_moma\0" "Thai_yoyak\0" "Thai_rorua\0" "Thai_ru\0" "Thai_loling\0" "Thai_lu\0" "Thai_wowaen\0" "Thai_sosala\0" "Thai_sorusi\0" "Thai_sosua\0" "Thai_hohip\0" "Thai_lochula\0" "Thai_oang\0" "Thai_honokhuk\0" "Thai_paiyannoi\0" "Thai_saraa\0" "Thai_maihanakat\0" "Thai_saraaa\0" "Thai_saraam\0" "Thai_sarai\0" "Thai_saraii\0" "Thai_saraue\0" "Thai_sarauee\0" "Thai_sarau\0" "Thai_sarauu\0" "Thai_phinthu\0" "Thai_maihanakat_maitho\0" "Thai_baht\0" "Thai_sarae\0" "Thai_saraae\0" "Thai_sarao\0" "Thai_saraaimaimuan\0" "Thai_saraaimaimalai\0" "Thai_lakkhangyao\0" "Thai_maiyamok\0" "Thai_maitaikhu\0" "Thai_maiek\0" "Thai_maitho\0" "Thai_maitri\0" "Thai_maichattawa\0" "Thai_thanthakhat\0" "Thai_nikhahit\0" "Thai_leksun\0" "Thai_leknung\0" "Thai_leksong\0" "Thai_leksam\0" "Thai_leksi\0" "Thai_lekha\0" "Thai_lekhok\0" "Thai_lekchet\0" "Thai_lekpaet\0" "Thai_lekkao\0" "Hangul_Kiyeog\0" "Hangul_SsangKiyeog\0" "Hangul_KiyeogSios\0" "Hangul_Nieun\0" "Hangul_NieunJieuj\0" "Hangul_NieunHieuh\0" "Hangul_Dikeud\0" "Hangul_SsangDikeud\0" "Hangul_Rieul\0" "Hangul_RieulKiyeog\0" "Hangul_RieulMieum\0" "Hangul_RieulPieub\0" "Hangul_RieulSios\0" "Hangul_RieulTieut\0" "Hangul_RieulPhieuf\0" "Hangul_RieulHieuh\0" "Hangul_Mieum\0" "Hangul_Pieub\0" "Hangul_SsangPieub\0" "Hangul_PieubSios\0" "Hangul_Sios\0" "Hangul_SsangSios\0" "Hangul_Ieung\0" "Hangul_Jieuj\0" "Hangul_SsangJieuj\0" "Hangul_Cieuc\0" "Hangul_Khieuq\0" "Hangul_Tieut\0" "Hangul_Phieuf\0" "Hangul_Hieuh\0" "Hangul_A\0" "Hangul_AE\0" "Hangul_YA\0" "Hangul_YAE\0" "Hangul_EO\0" "Hangul_E\0" "Hangul_YEO\0" "Hangul_YE\0" "Hangul_O\0" "Hangul_WA\0" "Hangul_WAE\0" "Hangul_OE\0" "Hangul_YO\0" "Hangul_U\0" "Hangul_WEO\0" "Hangul_WE\0" "Hangul_WI\0" "Hangul_YU\0" "Hangul_EU\0" "Hangul_YI\0" "Hangul_I\0" "Hangul_J_Kiyeog\0" "Hangul_J_SsangKiyeog\0" "Hangul_J_KiyeogSios\0" "Hangul_J_Nieun\0" "Hangul_J_NieunJieuj\0" "Hangul_J_NieunHieuh\0" "Hangul_J_Dikeud\0" "Hangul_J_Rieul\0" "Hangul_J_RieulKiyeog\0" "Hangul_J_RieulMieum\0" "Hangul_J_RieulPieub\0" "Hangul_J_RieulSios\0" "Hangul_J_RieulTieut\0" "Hangul_J_RieulPhieuf\0" "Hangul_J_RieulHieuh\0" "Hangul_J_Mieum\0" "Hangul_J_Pieub\0" "Hangul_J_PieubSios\0" "Hangul_J_Sios\0" "Hangul_J_SsangSios\0" "Hangul_J_Ieung\0" "Hangul_J_Jieuj\0" "Hangul_J_Cieuc\0" "Hangul_J_Khieuq\0" "Hangul_J_Tieut\0" "Hangul_J_Phieuf\0" "Hangul_J_Hieuh\0" "Hangul_RieulYeorinHieuh\0" "Hangul_SunkyeongeumMieum\0" "Hangul_SunkyeongeumPieub\0" "Hangul_PanSios\0" "Hangul_KkogjiDalrinIeung\0" "Hangul_SunkyeongeumPhieuf\0" "Hangul_YeorinHieuh\0" "Hangul_AraeA\0" "Hangul_AraeAE\0" "Hangul_J_PanSios\0" "Hangul_J_KkogjiDalrinIeung\0" "Hangul_J_YeorinHieuh\0" "Korean_Won\0" "OE\0" "oe\0" "Ydiaeresis\0" "EuroSign\0" "3270_Duplicate\0" "3270_FieldMark\0" "3270_Right2\0" "3270_Left2\0" "3270_BackTab\0" "3270_EraseEOF\0" "3270_EraseInput\0" "3270_Reset\0" "3270_Quit\0" "3270_PA1\0" "3270_PA2\0" "3270_PA3\0" "3270_Test\0" "3270_Attn\0" "3270_CursorBlink\0" "3270_AltCursor\0" "3270_KeyClick\0" "3270_Jump\0" "3270_Ident\0" "3270_Rule\0" "3270_Copy\0" "3270_Play\0" "3270_Setup\0" "3270_Record\0" "3270_ChangeScreen\0" "3270_DeleteWord\0" "3270_ExSelect\0" "3270_CursorSelect\0" "3270_PrintScreen\0" "3270_Enter\0" "ISO_Lock\0" "ISO_Level2_Latch\0" "ISO_Level3_Shift\0" "ISO_Level3_Latch\0" "ISO_Level3_Lock\0" "ISO_Group_Latch\0" "ISO_Group_Lock\0" "ISO_Next_Group\0" "ISO_Next_Group_Lock\0" "ISO_Prev_Group\0" "ISO_Prev_Group_Lock\0" "ISO_First_Group\0" "ISO_First_Group_Lock\0" "ISO_Last_Group\0" "ISO_Last_Group_Lock\0" "ISO_Level5_Shift\0" "ISO_Level5_Latch\0" "ISO_Level5_Lock\0" "ISO_Left_Tab\0" "ISO_Move_Line_Up\0" "ISO_Move_Line_Down\0" "ISO_Partial_Line_Up\0" "ISO_Partial_Line_Down\0" "ISO_Partial_Space_Left\0" "ISO_Partial_Space_Right\0" "ISO_Set_Margin_Left\0" "ISO_Set_Margin_Right\0" "ISO_Release_Margin_Left\0" "ISO_Release_Margin_Right\0" "ISO_Release_Both_Margins\0" "ISO_Fast_Cursor_Left\0" "ISO_Fast_Cursor_Right\0" "ISO_Fast_Cursor_Up\0" "ISO_Fast_Cursor_Down\0" "ISO_Continuous_Underline\0" "ISO_Discontinuous_Underline\0" "ISO_Emphasize\0" "ISO_Center_Object\0" "ISO_Enter\0" "dead_grave\0" "dead_acute\0" "dead_circumflex\0" "dead_perispomeni\0" "dead_tilde\0" "dead_macron\0" "dead_breve\0" "dead_abovedot\0" "dead_diaeresis\0" "dead_abovering\0" "dead_doubleacute\0" "dead_caron\0" "dead_cedilla\0" "dead_ogonek\0" "dead_iota\0" "dead_voiced_sound\0" "dead_semivoiced_sound\0" "dead_belowdot\0" "dead_hook\0" "dead_horn\0" "dead_stroke\0" "dead_abovecomma\0" "dead_psili\0" "dead_abovereversedcomma\0" "dead_dasia\0" "dead_doublegrave\0" "dead_belowring\0" "dead_belowmacron\0" "dead_belowcircumflex\0" "dead_belowtilde\0" "dead_belowbreve\0" "dead_belowdiaeresis\0" "dead_invertedbreve\0" "dead_belowcomma\0" "dead_currency\0" "AccessX_Enable\0" "AccessX_Feedback_Enable\0" "RepeatKeys_Enable\0" "SlowKeys_Enable\0" "BounceKeys_Enable\0" "StickyKeys_Enable\0" "MouseKeys_Enable\0" "MouseKeys_Accel_Enable\0" "Overlay1_Enable\0" "Overlay2_Enable\0" "AudibleBell_Enable\0" "dead_a\0" "dead_A\0" "dead_e\0" "dead_E\0" "dead_i\0" "dead_I\0" "dead_o\0" "dead_O\0" "dead_u\0" "dead_U\0" "dead_small_schwa\0" "dead_capital_schwa\0" "dead_greek\0" "ch\0" "Ch\0" "CH\0" "c_h\0" "C_h\0" "C_H\0" "First_Virtual_Screen\0" "Prev_Virtual_Screen\0" "Next_Virtual_Screen\0" "Last_Virtual_Screen\0" "Terminate_Server\0" "Pointer_Left\0" "Pointer_Right\0" "Pointer_Up\0" "Pointer_Down\0" "Pointer_UpLeft\0" "Pointer_UpRight\0" "Pointer_DownLeft\0" "Pointer_DownRight\0" "Pointer_Button_Dflt\0" "Pointer_Button1\0" "Pointer_Button2\0" "Pointer_Button3\0" "Pointer_Button4\0" "Pointer_Button5\0" "Pointer_DblClick_Dflt\0" "Pointer_DblClick1\0" "Pointer_DblClick2\0" "Pointer_DblClick3\0" "Pointer_DblClick4\0" "Pointer_DblClick5\0" "Pointer_Drag_Dflt\0" "Pointer_Drag1\0" "Pointer_Drag2\0" "Pointer_Drag3\0" "Pointer_Drag4\0" "Pointer_EnableKeys\0" "Pointer_Accelerate\0" "Pointer_DfltBtnNext\0" "Pointer_DfltBtnPrev\0" "Pointer_Drag5\0" "BackSpace\0" "Tab\0" "Linefeed\0" "Clear\0" "Return\0" "Pause\0" "Scroll_Lock\0" "Sys_Req\0" "Escape\0" "Multi_key\0" "Kanji\0" "Muhenkan\0" "Henkan\0" "Henkan_Mode\0" "Romaji\0" "Hiragana\0" "Katakana\0" "Hiragana_Katakana\0" "Zenkaku\0" "Hankaku\0" "Zenkaku_Hankaku\0" "Touroku\0" "Massyo\0" "Kana_Lock\0" "Kana_Shift\0" "Eisu_Shift\0" "Eisu_toggle\0" "Hangul\0" "Hangul_Start\0" "Hangul_End\0" "Hangul_Hanja\0" "Hangul_Jamo\0" "Hangul_Romaja\0" "Codeinput\0" "Hangul_Codeinput\0" "Kanji_Bangou\0" "Hangul_Jeonja\0" "Hangul_Banja\0" "Hangul_PreHanja\0" "Hangul_PostHanja\0" "Hangul_SingleCandidate\0" "SingleCandidate\0" "Hangul_MultipleCandidate\0" "MultipleCandidate\0" "Zen_Koho\0" "Hangul_PreviousCandidate\0" "Mae_Koho\0" "PreviousCandidate\0" "Hangul_Special\0" "Home\0" "Left\0" "Up\0" "Right\0" "Down\0" "Page_Up\0" "Prior\0" "Page_Down\0" "Next\0" "End\0" "Begin\0" "Select\0" "Print\0" "Execute\0" "Insert\0" "Undo\0" "Redo\0" "Menu\0" "Find\0" "Cancel\0" "Help\0" "Break\0" "Arabic_switch\0" "Greek_switch\0" "Hangul_switch\0" "Hebrew_switch\0" "ISO_Group_Shift\0" "kana_switch\0" "Mode_switch\0" "script_switch\0" "Num_Lock\0" "KP_Space\0" "KP_Tab\0" "KP_Enter\0" "KP_F1\0" "KP_F2\0" "KP_F3\0" "KP_F4\0" "KP_Home\0" "KP_Left\0" "KP_Up\0" "KP_Right\0" "KP_Down\0" "KP_Page_Up\0" "KP_Prior\0" "KP_Next\0" "KP_Page_Down\0" "KP_End\0" "KP_Begin\0" "KP_Insert\0" "KP_Delete\0" "KP_Multiply\0" "KP_Add\0" "KP_Separator\0" "KP_Subtract\0" "KP_Decimal\0" "KP_Divide\0" "KP_0\0" "KP_1\0" "KP_2\0" "KP_3\0" "KP_4\0" "KP_5\0" "KP_6\0" "KP_7\0" "KP_8\0" "KP_9\0" "KP_Equal\0" "F1\0" "F2\0" "F3\0" "F4\0" "F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "F10\0" "F11\0" "L1\0" "F12\0" "L2\0" "F13\0" "L3\0" "F14\0" "L4\0" "F15\0" "L5\0" "F16\0" "L6\0" "F17\0" "L7\0" "F18\0" "L8\0" "F19\0" "L9\0" "F20\0" "L10\0" "F21\0" "R1\0" "F22\0" "R2\0" "F23\0" "R3\0" "F24\0" "R4\0" "F25\0" "R5\0" "F26\0" "R6\0" "F27\0" "R7\0" "F28\0" "R8\0" "F29\0" "R9\0" "F30\0" "R10\0" "F31\0" "R11\0" "F32\0" "R12\0" "F33\0" "R13\0" "F34\0" "R14\0" "F35\0" "R15\0" "Shift_L\0" "Shift_R\0" "Control_L\0" "Control_R\0" "Caps_Lock\0" "Shift_Lock\0" "Meta_L\0" "Meta_R\0" "Alt_L\0" "Alt_R\0" "Super_L\0" "Super_R\0" "Hyper_L\0" "Hyper_R\0" "braille_dot_1\0" "braille_dot_2\0" "braille_dot_3\0" "braille_dot_4\0" "braille_dot_5\0" "braille_dot_6\0" "braille_dot_7\0" "braille_dot_8\0" "braille_dot_9\0" "braille_dot_10\0" "Delete\0" "Ibreve\0" "ibreve\0" "Wcircumflex\0" "wcircumflex\0" "Ycircumflex\0" "ycircumflex\0" "SCHWA\0" "Obarred\0" "Ohorn\0" "ohorn\0" "Uhorn\0" "uhorn\0" "Zstroke\0" "zstroke\0" "EZH\0" "Ocaron\0" "ocaron\0" "Gcaron\0" "gcaron\0" "schwa\0" "obarred\0" "ezh\0" "Cyrillic_GHE_bar\0" "Cyrillic_ghe_bar\0" "Cyrillic_ZHE_descender\0" "Cyrillic_zhe_descender\0" "Cyrillic_KA_descender\0" "Cyrillic_ka_descender\0" "Cyrillic_KA_vertstroke\0" "Cyrillic_ka_vertstroke\0" "Cyrillic_EN_descender\0" "Cyrillic_en_descender\0" "Cyrillic_U_straight\0" "Cyrillic_u_straight\0" "Cyrillic_U_straight_bar\0" "Cyrillic_u_straight_bar\0" "Cyrillic_HA_descender\0" "Cyrillic_ha_descender\0" "Cyrillic_CHE_descender\0" "Cyrillic_che_descender\0" "Cyrillic_CHE_vertstroke\0" "Cyrillic_che_vertstroke\0" "Cyrillic_SHHA\0" "Cyrillic_shha\0" "Cyrillic_SCHWA\0" "Cyrillic_schwa\0" "Cyrillic_I_macron\0" "Cyrillic_i_macron\0" "Cyrillic_O_bar\0" "Cyrillic_o_bar\0" "Cyrillic_U_macron\0" "Cyrillic_u_macron\0" "Armenian_AYB\0" "Armenian_BEN\0" "Armenian_GIM\0" "Armenian_DA\0" "Armenian_YECH\0" "Armenian_ZA\0" "Armenian_E\0" "Armenian_AT\0" "Armenian_TO\0" "Armenian_ZHE\0" "Armenian_INI\0" "Armenian_LYUN\0" "Armenian_KHE\0" "Armenian_TSA\0" "Armenian_KEN\0" "Armenian_HO\0" "Armenian_DZA\0" "Armenian_GHAT\0" "Armenian_TCHE\0" "Armenian_MEN\0" "Armenian_HI\0" "Armenian_NU\0" "Armenian_SHA\0" "Armenian_VO\0" "Armenian_CHA\0" "Armenian_PE\0" "Armenian_JE\0" "Armenian_RA\0" "Armenian_SE\0" "Armenian_VEV\0" "Armenian_TYUN\0" "Armenian_RE\0" "Armenian_TSO\0" "Armenian_VYUN\0" "Armenian_PYUR\0" "Armenian_KE\0" "Armenian_O\0" "Armenian_FE\0" "Armenian_apostrophe\0" "Armenian_accent\0" "Armenian_shesht\0" "Armenian_amanak\0" "Armenian_exclam\0" "Armenian_but\0" "Armenian_separation_mark\0" "Armenian_paruyk\0" "Armenian_question\0" "Armenian_ayb\0" "Armenian_ben\0" "Armenian_gim\0" "Armenian_da\0" "Armenian_yech\0" "Armenian_za\0" "Armenian_e\0" "Armenian_at\0" "Armenian_to\0" "Armenian_zhe\0" "Armenian_ini\0" "Armenian_lyun\0" "Armenian_khe\0" "Armenian_tsa\0" "Armenian_ken\0" "Armenian_ho\0" "Armenian_dza\0" "Armenian_ghat\0" "Armenian_tche\0" "Armenian_men\0" "Armenian_hi\0" "Armenian_nu\0" "Armenian_sha\0" "Armenian_vo\0" "Armenian_cha\0" "Armenian_pe\0" "Armenian_je\0" "Armenian_ra\0" "Armenian_se\0" "Armenian_vev\0" "Armenian_tyun\0" "Armenian_re\0" "Armenian_tso\0" "Armenian_vyun\0" "Armenian_pyur\0" "Armenian_ke\0" "Armenian_o\0" "Armenian_fe\0" "Armenian_ligature_ew\0" "Armenian_full_stop\0" "Armenian_verjaket\0" "Armenian_hyphen\0" "Armenian_yentamna\0" "Arabic_madda_above\0" "Arabic_hamza_above\0" "Arabic_hamza_below\0" "Arabic_0\0" "Arabic_1\0" "Arabic_2\0" "Arabic_3\0" "Arabic_4\0" "Arabic_5\0" "Arabic_6\0" "Arabic_7\0" "Arabic_8\0" "Arabic_9\0" "Arabic_percent\0" "Arabic_superscript_alef\0" "Arabic_tteh\0" "Arabic_peh\0" "Arabic_tcheh\0" "Arabic_ddal\0" "Arabic_rreh\0" "Arabic_jeh\0" "Arabic_veh\0" "Arabic_keheh\0" "Arabic_gaf\0" "Arabic_noon_ghunna\0" "Arabic_heh_doachashmee\0" "Arabic_heh_goal\0" "Arabic_farsi_yeh\0" "Farsi_yeh\0" "Arabic_yeh_baree\0" "Arabic_fullstop\0" "Farsi_0\0" "Farsi_1\0" "Farsi_2\0" "Farsi_3\0" "Farsi_4\0" "Farsi_5\0" "Farsi_6\0" "Farsi_7\0" "Farsi_8\0" "Farsi_9\0" "Sinh_ng\0" "Sinh_h2\0" "Sinh_a\0" "Sinh_aa\0" "Sinh_ae\0" "Sinh_aee\0" "Sinh_i\0" "Sinh_ii\0" "Sinh_u\0" "Sinh_uu\0" "Sinh_ri\0" "Sinh_rii\0" "Sinh_lu\0" "Sinh_luu\0" "Sinh_e\0" "Sinh_ee\0" "Sinh_ai\0" "Sinh_o\0" "Sinh_oo\0" "Sinh_au\0" "Sinh_ka\0" "Sinh_kha\0" "Sinh_ga\0" "Sinh_gha\0" "Sinh_ng2\0" "Sinh_nga\0" "Sinh_ca\0" "Sinh_cha\0" "Sinh_ja\0" "Sinh_jha\0" "Sinh_nya\0" "Sinh_jnya\0" "Sinh_nja\0" "Sinh_tta\0" "Sinh_ttha\0" "Sinh_dda\0" "Sinh_ddha\0" "Sinh_nna\0" "Sinh_ndda\0" "Sinh_tha\0" "Sinh_thha\0" "Sinh_dha\0" "Sinh_dhha\0" "Sinh_na\0" "Sinh_ndha\0" "Sinh_pa\0" "Sinh_pha\0" "Sinh_ba\0" "Sinh_bha\0" "Sinh_ma\0" "Sinh_mba\0" "Sinh_ya\0" "Sinh_ra\0" "Sinh_la\0" "Sinh_va\0" "Sinh_sha\0" "Sinh_ssha\0" "Sinh_sa\0" "Sinh_ha\0" "Sinh_lla\0" "Sinh_fa\0" "Sinh_al\0" "Sinh_aa2\0" "Sinh_ae2\0" "Sinh_aee2\0" "Sinh_i2\0" "Sinh_ii2\0" "Sinh_u2\0" "Sinh_uu2\0" "Sinh_ru2\0" "Sinh_e2\0" "Sinh_ee2\0" "Sinh_ai2\0" "Sinh_o2\0" "Sinh_oo2\0" "Sinh_au2\0" "Sinh_lu2\0" "Sinh_ruu2\0" "Sinh_luu2\0" "Sinh_kunddaliya\0" "Georgian_an\0" "Georgian_ban\0" "Georgian_gan\0" "Georgian_don\0" "Georgian_en\0" "Georgian_vin\0" "Georgian_zen\0" "Georgian_tan\0" "Georgian_in\0" "Georgian_kan\0" "Georgian_las\0" "Georgian_man\0" "Georgian_nar\0" "Georgian_on\0" "Georgian_par\0" "Georgian_zhar\0" "Georgian_rae\0" "Georgian_san\0" "Georgian_tar\0" "Georgian_un\0" "Georgian_phar\0" "Georgian_khar\0" "Georgian_ghan\0" "Georgian_qar\0" "Georgian_shin\0" "Georgian_chin\0" "Georgian_can\0" "Georgian_jil\0" "Georgian_cil\0" "Georgian_char\0" "Georgian_xan\0" "Georgian_jhan\0" "Georgian_hae\0" "Georgian_he\0" "Georgian_hie\0" "Georgian_we\0" "Georgian_har\0" "Georgian_hoe\0" "Georgian_fi\0" "Babovedot\0" "babovedot\0" "Dabovedot\0" "dabovedot\0" "Fabovedot\0" "fabovedot\0" "Lbelowdot\0" "lbelowdot\0" "Mabovedot\0" "mabovedot\0" "Pabovedot\0" "pabovedot\0" "Sabovedot\0" "sabovedot\0" "Tabovedot\0" "tabovedot\0" "Wgrave\0" "wgrave\0" "Wacute\0" "wacute\0" "Wdiaeresis\0" "wdiaeresis\0" "Xabovedot\0" "xabovedot\0" "Abelowdot\0" "abelowdot\0" "Ahook\0" "ahook\0" "Acircumflexacute\0" "acircumflexacute\0" "Acircumflexgrave\0" "acircumflexgrave\0" "Acircumflexhook\0" "acircumflexhook\0" "Acircumflextilde\0" "acircumflextilde\0" "Acircumflexbelowdot\0" "acircumflexbelowdot\0" "Abreveacute\0" "abreveacute\0" "Abrevegrave\0" "abrevegrave\0" "Abrevehook\0" "abrevehook\0" "Abrevetilde\0" "abrevetilde\0" "Abrevebelowdot\0" "abrevebelowdot\0" "Ebelowdot\0" "ebelowdot\0" "Ehook\0" "ehook\0" "Etilde\0" "etilde\0" "Ecircumflexacute\0" "ecircumflexacute\0" "Ecircumflexgrave\0" "ecircumflexgrave\0" "Ecircumflexhook\0" "ecircumflexhook\0" "Ecircumflextilde\0" "ecircumflextilde\0" "Ecircumflexbelowdot\0" "ecircumflexbelowdot\0" "Ihook\0" "ihook\0" "Ibelowdot\0" "ibelowdot\0" "Obelowdot\0" "obelowdot\0" "Ohook\0" "ohook\0" "Ocircumflexacute\0" "ocircumflexacute\0" "Ocircumflexgrave\0" "ocircumflexgrave\0" "Ocircumflexhook\0" "ocircumflexhook\0" "Ocircumflextilde\0" "ocircumflextilde\0" "Ocircumflexbelowdot\0" "ocircumflexbelowdot\0" "Ohornacute\0" "ohornacute\0" "Ohorngrave\0" "ohorngrave\0" "Ohornhook\0" "ohornhook\0" "Ohorntilde\0" "ohorntilde\0" "Ohornbelowdot\0" "ohornbelowdot\0" "Ubelowdot\0" "ubelowdot\0" "Uhook\0" "uhook\0" "Uhornacute\0" "uhornacute\0" "Uhorngrave\0" "uhorngrave\0" "Uhornhook\0" "uhornhook\0" "Uhorntilde\0" "uhorntilde\0" "Uhornbelowdot\0" "uhornbelowdot\0" "Ygrave\0" "ygrave\0" "Ybelowdot\0" "ybelowdot\0" "Yhook\0" "yhook\0" "Ytilde\0" "ytilde\0" "zerosuperior\0" "foursuperior\0" "fivesuperior\0" "sixsuperior\0" "sevensuperior\0" "eightsuperior\0" "ninesuperior\0" "zerosubscript\0" "onesubscript\0" "twosubscript\0" "threesubscript\0" "foursubscript\0" "fivesubscript\0" "sixsubscript\0" "sevensubscript\0" "eightsubscript\0" "ninesubscript\0" "EcuSign\0" "ColonSign\0" "CruzeiroSign\0" "FFrancSign\0" "LiraSign\0" "MillSign\0" "NairaSign\0" "PesetaSign\0" "RupeeSign\0" "WonSign\0" "NewSheqelSign\0" "DongSign\0" "partdifferential\0" "emptyset\0" "elementof\0" "notelementof\0" "containsas\0" "squareroot\0" "cuberoot\0" "fourthroot\0" "dintegral\0" "tintegral\0" "because\0" "notapproxeq\0" "approxeq\0" "notidentical\0" "stricteq\0" "braille_blank\0" "braille_dots_1\0" "braille_dots_2\0" "braille_dots_12\0" "braille_dots_3\0" "braille_dots_13\0" "braille_dots_23\0" "braille_dots_123\0" "braille_dots_4\0" "braille_dots_14\0" "braille_dots_24\0" "braille_dots_124\0" "braille_dots_34\0" "braille_dots_134\0" "braille_dots_234\0" "braille_dots_1234\0" "braille_dots_5\0" "braille_dots_15\0" "braille_dots_25\0" "braille_dots_125\0" "braille_dots_35\0" "braille_dots_135\0" "braille_dots_235\0" "braille_dots_1235\0" "braille_dots_45\0" "braille_dots_145\0" "braille_dots_245\0" "braille_dots_1245\0" "braille_dots_345\0" "braille_dots_1345\0" "braille_dots_2345\0" "braille_dots_12345\0" "braille_dots_6\0" "braille_dots_16\0" "braille_dots_26\0" "braille_dots_126\0" "braille_dots_36\0" "braille_dots_136\0" "braille_dots_236\0" "braille_dots_1236\0" "braille_dots_46\0" "braille_dots_146\0" "braille_dots_246\0" "braille_dots_1246\0" "braille_dots_346\0" "braille_dots_1346\0" "braille_dots_2346\0" "braille_dots_12346\0" "braille_dots_56\0" "braille_dots_156\0" "braille_dots_256\0" "braille_dots_1256\0" "braille_dots_356\0" "braille_dots_1356\0" "braille_dots_2356\0" "braille_dots_12356\0" "braille_dots_456\0" "braille_dots_1456\0" "braille_dots_2456\0" "braille_dots_12456\0" "braille_dots_3456\0" "braille_dots_13456\0" "braille_dots_23456\0" "braille_dots_123456\0" "braille_dots_7\0" "braille_dots_17\0" "braille_dots_27\0" "braille_dots_127\0" "braille_dots_37\0" "braille_dots_137\0" "braille_dots_237\0" "braille_dots_1237\0" "braille_dots_47\0" "braille_dots_147\0" "braille_dots_247\0" "braille_dots_1247\0" "braille_dots_347\0" "braille_dots_1347\0" "braille_dots_2347\0" "braille_dots_12347\0" "braille_dots_57\0" "braille_dots_157\0" "braille_dots_257\0" "braille_dots_1257\0" "braille_dots_357\0" "braille_dots_1357\0" "braille_dots_2357\0" "braille_dots_12357\0" "braille_dots_457\0" "braille_dots_1457\0" "braille_dots_2457\0" "braille_dots_12457\0" "braille_dots_3457\0" "braille_dots_13457\0" "braille_dots_23457\0" "braille_dots_123457\0" "braille_dots_67\0" "braille_dots_167\0" "braille_dots_267\0" "braille_dots_1267\0" "braille_dots_367\0" "braille_dots_1367\0" "braille_dots_2367\0" "braille_dots_12367\0" "braille_dots_467\0" "braille_dots_1467\0" "braille_dots_2467\0" "braille_dots_12467\0" "braille_dots_3467\0" "braille_dots_13467\0" "braille_dots_23467\0" "braille_dots_123467\0" "braille_dots_567\0" "braille_dots_1567\0" "braille_dots_2567\0" "braille_dots_12567\0" "braille_dots_3567\0" "braille_dots_13567\0" "braille_dots_23567\0" "braille_dots_123567\0" "braille_dots_4567\0" "braille_dots_14567\0" "braille_dots_24567\0" "braille_dots_124567\0" "braille_dots_34567\0" "braille_dots_134567\0" "braille_dots_234567\0" "braille_dots_1234567\0" "braille_dots_8\0" "braille_dots_18\0" "braille_dots_28\0" "braille_dots_128\0" "braille_dots_38\0" "braille_dots_138\0" "braille_dots_238\0" "braille_dots_1238\0" "braille_dots_48\0" "braille_dots_148\0" "braille_dots_248\0" "braille_dots_1248\0" "braille_dots_348\0" "braille_dots_1348\0" "braille_dots_2348\0" "braille_dots_12348\0" "braille_dots_58\0" "braille_dots_158\0" "braille_dots_258\0" "braille_dots_1258\0" "braille_dots_358\0" "braille_dots_1358\0" "braille_dots_2358\0" "braille_dots_12358\0" "braille_dots_458\0" "braille_dots_1458\0" "braille_dots_2458\0" "braille_dots_12458\0" "braille_dots_3458\0" "braille_dots_13458\0" "braille_dots_23458\0" "braille_dots_123458\0" "braille_dots_68\0" "braille_dots_168\0" "braille_dots_268\0" "braille_dots_1268\0" "braille_dots_368\0" "braille_dots_1368\0" "braille_dots_2368\0" "braille_dots_12368\0" "braille_dots_468\0" "braille_dots_1468\0" "braille_dots_2468\0" "braille_dots_12468\0" "braille_dots_3468\0" "braille_dots_13468\0" "braille_dots_23468\0" "braille_dots_123468\0" "braille_dots_568\0" "braille_dots_1568\0" "braille_dots_2568\0" "braille_dots_12568\0" "braille_dots_3568\0" "braille_dots_13568\0" "braille_dots_23568\0" "braille_dots_123568\0" "braille_dots_4568\0" "braille_dots_14568\0" "braille_dots_24568\0" "braille_dots_124568\0" "braille_dots_34568\0" "braille_dots_134568\0" "braille_dots_234568\0" "braille_dots_1234568\0" "braille_dots_78\0" "braille_dots_178\0" "braille_dots_278\0" "braille_dots_1278\0" "braille_dots_378\0" "braille_dots_1378\0" "braille_dots_2378\0" "braille_dots_12378\0" "braille_dots_478\0" "braille_dots_1478\0" "braille_dots_2478\0" "braille_dots_12478\0" "braille_dots_3478\0" "braille_dots_13478\0" "braille_dots_23478\0" "braille_dots_123478\0" "braille_dots_578\0" "braille_dots_1578\0" "braille_dots_2578\0" "braille_dots_12578\0" "braille_dots_3578\0" "braille_dots_13578\0" "braille_dots_23578\0" "braille_dots_123578\0" "braille_dots_4578\0" "braille_dots_14578\0" "braille_dots_24578\0" "braille_dots_124578\0" "braille_dots_34578\0" "braille_dots_134578\0" "braille_dots_234578\0" "braille_dots_1234578\0" "braille_dots_678\0" "braille_dots_1678\0" "braille_dots_2678\0" "braille_dots_12678\0" "braille_dots_3678\0" "braille_dots_13678\0" "braille_dots_23678\0" "braille_dots_123678\0" "braille_dots_4678\0" "braille_dots_14678\0" "braille_dots_24678\0" "braille_dots_124678\0" "braille_dots_34678\0" "braille_dots_134678\0" "braille_dots_234678\0" "braille_dots_1234678\0" "braille_dots_5678\0" "braille_dots_15678\0" "braille_dots_25678\0" "braille_dots_125678\0" "braille_dots_35678\0" "braille_dots_135678\0" "braille_dots_235678\0" "braille_dots_1235678\0" "braille_dots_45678\0" "braille_dots_145678\0" "braille_dots_245678\0" "braille_dots_1245678\0" "braille_dots_345678\0" "braille_dots_1345678\0" "braille_dots_2345678\0" "braille_dots_12345678\0" "Switch_VT_1\0" "Switch_VT_2\0" "Switch_VT_3\0" "Switch_VT_4\0" "Switch_VT_5\0" "Switch_VT_6\0" "Switch_VT_7\0" "Switch_VT_8\0" "Switch_VT_9\0" "Switch_VT_10\0" "Switch_VT_11\0" "Switch_VT_12\0" "Ungrab\0" "ClearGrab\0" "Next_VMode\0" "Prev_VMode\0" "LogWindowTree\0" "LogGrabInfo\0" "ModeLock\0" "MonBrightnessUp\0" "MonBrightnessDown\0" "KbdLightOnOff\0" "KbdBrightnessUp\0" "KbdBrightnessDown\0" "Standby\0" "AudioLowerVolume\0" "AudioMute\0" "AudioRaiseVolume\0" "AudioPlay\0" "AudioStop\0" "AudioPrev\0" "AudioNext\0" "HomePage\0" "Mail\0" "Start\0" "Search\0" "AudioRecord\0" "Calculator\0" "Memo\0" "ToDoList\0" "Calendar\0" "PowerDown\0" "ContrastAdjust\0" "RockerUp\0" "RockerDown\0" "RockerEnter\0" "Back\0" "Forward\0" "Stop\0" "Refresh\0" "PowerOff\0" "WakeUp\0" "Eject\0" "ScreenSaver\0" "WWW\0" "Sleep\0" "Favorites\0" "AudioPause\0" "AudioMedia\0" "MyComputer\0" "VendorHome\0" "LightBulb\0" "Shop\0" "History\0" "OpenURL\0" "AddFavorite\0" "HotLinks\0" "BrightnessAdjust\0" "Finance\0" "Community\0" "AudioRewind\0" "BackForward\0" "Launch0\0" "Launch1\0" "Launch2\0" "Launch3\0" "Launch4\0" "Launch5\0" "Launch6\0" "Launch7\0" "Launch8\0" "Launch9\0" "LaunchA\0" "LaunchB\0" "LaunchC\0" "LaunchD\0" "LaunchE\0" "LaunchF\0" "ApplicationLeft\0" "ApplicationRight\0" "Book\0" "CD\0" "WindowClear\0" "Close\0" "Copy\0" "Cut\0" "Display\0" "DOS\0" "Documents\0" "Excel\0" "Explorer\0" "Game\0" "Go\0" "iTouch\0" "LogOff\0" "Market\0" "Meeting\0" "MenuKB\0" "MenuPB\0" "MySites\0" "New\0" "News\0" "OfficeHome\0" "Open\0" "Option\0" "Paste\0" "Phone\0" "Reply\0" "Reload\0" "RotateWindows\0" "RotationPB\0" "RotationKB\0" "Save\0" "ScrollUp\0" "ScrollDown\0" "ScrollClick\0" "Send\0" "Spell\0" "SplitScreen\0" "Support\0" "TaskPane\0" "Terminal\0" "Tools\0" "Travel\0" "UserPB\0" "User1KB\0" "User2KB\0" "Video\0" "WheelButton\0" "Word\0" "Xfer\0" "ZoomIn\0" "ZoomOut\0" "Away\0" "Messenger\0" "WebCam\0" "MailForward\0" "Pictures\0" "Music\0" "Battery\0" "Bluetooth\0" "WLAN\0" "UWB\0" "AudioForward\0" "AudioRepeat\0" "AudioRandomPlay\0" "Subtitle\0" "AudioCycleTrack\0" "CycleAngle\0" "FrameBack\0" "FrameForward\0" "Time\0" "SelectButton\0" "View\0" "TopMenu\0" "Red\0" "Green\0" "Yellow\0" "Blue\0" "Suspend\0" "Hibernate\0" "TouchpadToggle\0" "TouchpadOn\0" "TouchpadOff\0" "AudioMicMute\0" "VoidSymbol\0"; typedef struct { guint keyval; guint offset; } gdk_key; static const gdk_key gdk_keys_by_keyval[] = { { 0x000020, 0 }, { 0x000021, 6 }, { 0x000022, 13 }, { 0x000023, 22 }, { 0x000024, 33 }, { 0x000025, 40 }, { 0x000026, 48 }, { 0x000027, 58 }, { 0x000027, 69 }, { 0x000028, 80 }, { 0x000029, 90 }, { 0x00002a, 101 }, { 0x00002b, 110 }, { 0x00002c, 115 }, { 0x00002d, 121 }, { 0x00002e, 127 }, { 0x00002f, 134 }, { 0x000030, 140 }, { 0x000031, 142 }, { 0x000032, 144 }, { 0x000033, 146 }, { 0x000034, 148 }, { 0x000035, 150 }, { 0x000036, 152 }, { 0x000037, 154 }, { 0x000038, 156 }, { 0x000039, 158 }, { 0x00003a, 160 }, { 0x00003b, 166 }, { 0x00003c, 176 }, { 0x00003d, 181 }, { 0x00003e, 187 }, { 0x00003f, 195 }, { 0x000040, 204 }, { 0x000041, 207 }, { 0x000042, 209 }, { 0x000043, 211 }, { 0x000044, 213 }, { 0x000045, 215 }, { 0x000046, 217 }, { 0x000047, 219 }, { 0x000048, 221 }, { 0x000049, 223 }, { 0x00004a, 225 }, { 0x00004b, 227 }, { 0x00004c, 229 }, { 0x00004d, 231 }, { 0x00004e, 233 }, { 0x00004f, 235 }, { 0x000050, 237 }, { 0x000051, 239 }, { 0x000052, 241 }, { 0x000053, 243 }, { 0x000054, 245 }, { 0x000055, 247 }, { 0x000056, 249 }, { 0x000057, 251 }, { 0x000058, 253 }, { 0x000059, 255 }, { 0x00005a, 257 }, { 0x00005b, 259 }, { 0x00005c, 271 }, { 0x00005d, 281 }, { 0x00005e, 294 }, { 0x00005f, 306 }, { 0x000060, 317 }, { 0x000060, 323 }, { 0x000061, 333 }, { 0x000062, 335 }, { 0x000063, 337 }, { 0x000064, 339 }, { 0x000065, 341 }, { 0x000066, 343 }, { 0x000067, 345 }, { 0x000068, 347 }, { 0x000069, 349 }, { 0x00006a, 351 }, { 0x00006b, 353 }, { 0x00006c, 355 }, { 0x00006d, 357 }, { 0x00006e, 359 }, { 0x00006f, 361 }, { 0x000070, 363 }, { 0x000071, 365 }, { 0x000072, 367 }, { 0x000073, 369 }, { 0x000074, 371 }, { 0x000075, 373 }, { 0x000076, 375 }, { 0x000077, 377 }, { 0x000078, 379 }, { 0x000079, 381 }, { 0x00007a, 383 }, { 0x00007b, 385 }, { 0x00007c, 395 }, { 0x00007d, 399 }, { 0x00007e, 410 }, { 0x0000a0, 421 }, { 0x0000a1, 434 }, { 0x0000a2, 445 }, { 0x0000a3, 450 }, { 0x0000a4, 459 }, { 0x0000a5, 468 }, { 0x0000a6, 472 }, { 0x0000a7, 482 }, { 0x0000a8, 490 }, { 0x0000a9, 500 }, { 0x0000aa, 510 }, { 0x0000ab, 522 }, { 0x0000ac, 536 }, { 0x0000ad, 544 }, { 0x0000ae, 551 }, { 0x0000af, 562 }, { 0x0000b0, 569 }, { 0x0000b1, 576 }, { 0x0000b2, 586 }, { 0x0000b3, 598 }, { 0x0000b4, 612 }, { 0x0000b5, 618 }, { 0x0000b6, 621 }, { 0x0000b7, 631 }, { 0x0000b8, 646 }, { 0x0000b9, 654 }, { 0x0000ba, 666 }, { 0x0000bb, 676 }, { 0x0000bc, 691 }, { 0x0000bd, 702 }, { 0x0000be, 710 }, { 0x0000bf, 724 }, { 0x0000c0, 737 }, { 0x0000c1, 744 }, { 0x0000c2, 751 }, { 0x0000c3, 763 }, { 0x0000c4, 770 }, { 0x0000c5, 781 }, { 0x0000c6, 787 }, { 0x0000c7, 790 }, { 0x0000c8, 799 }, { 0x0000c9, 806 }, { 0x0000ca, 813 }, { 0x0000cb, 825 }, { 0x0000cc, 836 }, { 0x0000cd, 843 }, { 0x0000ce, 850 }, { 0x0000cf, 862 }, { 0x0000d0, 873 }, { 0x0000d0, 877 }, { 0x0000d1, 881 }, { 0x0000d2, 888 }, { 0x0000d3, 895 }, { 0x0000d4, 902 }, { 0x0000d5, 914 }, { 0x0000d6, 921 }, { 0x0000d7, 932 }, { 0x0000d8, 941 }, { 0x0000d8, 950 }, { 0x0000d9, 957 }, { 0x0000da, 964 }, { 0x0000db, 971 }, { 0x0000dc, 983 }, { 0x0000dd, 994 }, { 0x0000de, 1001 }, { 0x0000de, 1007 }, { 0x0000df, 1013 }, { 0x0000e0, 1020 }, { 0x0000e1, 1027 }, { 0x0000e2, 1034 }, { 0x0000e3, 1046 }, { 0x0000e4, 1053 }, { 0x0000e5, 1064 }, { 0x0000e6, 1070 }, { 0x0000e7, 1073 }, { 0x0000e8, 1082 }, { 0x0000e9, 1089 }, { 0x0000ea, 1096 }, { 0x0000eb, 1108 }, { 0x0000ec, 1119 }, { 0x0000ed, 1126 }, { 0x0000ee, 1133 }, { 0x0000ef, 1145 }, { 0x0000f0, 1156 }, { 0x0000f1, 1160 }, { 0x0000f2, 1167 }, { 0x0000f3, 1174 }, { 0x0000f4, 1181 }, { 0x0000f5, 1193 }, { 0x0000f6, 1200 }, { 0x0000f7, 1211 }, { 0x0000f8, 1220 }, { 0x0000f8, 1229 }, { 0x0000f9, 1236 }, { 0x0000fa, 1243 }, { 0x0000fb, 1250 }, { 0x0000fc, 1262 }, { 0x0000fd, 1273 }, { 0x0000fe, 1280 }, { 0x0000ff, 1286 }, { 0x0001a1, 1297 }, { 0x0001a2, 1305 }, { 0x0001a3, 1311 }, { 0x0001a5, 1319 }, { 0x0001a6, 1326 }, { 0x0001a9, 1333 }, { 0x0001aa, 1340 }, { 0x0001ab, 1349 }, { 0x0001ac, 1356 }, { 0x0001ae, 1363 }, { 0x0001af, 1370 }, { 0x0001b1, 1380 }, { 0x0001b2, 1388 }, { 0x0001b3, 1395 }, { 0x0001b5, 1403 }, { 0x0001b6, 1410 }, { 0x0001b7, 1417 }, { 0x0001b9, 1423 }, { 0x0001ba, 1430 }, { 0x0001bb, 1439 }, { 0x0001bc, 1446 }, { 0x0001bd, 1453 }, { 0x0001be, 1465 }, { 0x0001bf, 1472 }, { 0x0001c0, 1482 }, { 0x0001c3, 1489 }, { 0x0001c5, 1496 }, { 0x0001c6, 1503 }, { 0x0001c8, 1510 }, { 0x0001ca, 1517 }, { 0x0001cc, 1525 }, { 0x0001cf, 1532 }, { 0x0001d0, 1539 }, { 0x0001d1, 1547 }, { 0x0001d2, 1554 }, { 0x0001d5, 1561 }, { 0x0001d8, 1574 }, { 0x0001d9, 1581 }, { 0x0001db, 1587 }, { 0x0001de, 1600 }, { 0x0001e0, 1609 }, { 0x0001e3, 1616 }, { 0x0001e5, 1623 }, { 0x0001e6, 1630 }, { 0x0001e8, 1637 }, { 0x0001ea, 1644 }, { 0x0001ec, 1652 }, { 0x0001ef, 1659 }, { 0x0001f0, 1666 }, { 0x0001f1, 1674 }, { 0x0001f2, 1681 }, { 0x0001f5, 1688 }, { 0x0001f8, 1701 }, { 0x0001f9, 1708 }, { 0x0001fb, 1714 }, { 0x0001fe, 1727 }, { 0x0001ff, 1736 }, { 0x0002a1, 1745 }, { 0x0002a6, 1753 }, { 0x0002a9, 1765 }, { 0x0002ab, 1775 }, { 0x0002ac, 1782 }, { 0x0002b1, 1794 }, { 0x0002b6, 1802 }, { 0x0002b9, 1814 }, { 0x0002bb, 1823 }, { 0x0002bc, 1830 }, { 0x0002c5, 1842 }, { 0x0002c6, 1852 }, { 0x0002d5, 1864 }, { 0x0002d8, 1874 }, { 0x0002dd, 1886 }, { 0x0002de, 1893 }, { 0x0002e5, 1905 }, { 0x0002e6, 1915 }, { 0x0002f5, 1927 }, { 0x0002f8, 1937 }, { 0x0002fd, 1949 }, { 0x0002fe, 1956 }, { 0x0003a2, 1968 }, { 0x0003a2, 1974 }, { 0x0003a3, 1978 }, { 0x0003a5, 1987 }, { 0x0003a6, 1994 }, { 0x0003aa, 2003 }, { 0x0003ab, 2011 }, { 0x0003ac, 2020 }, { 0x0003b3, 2027 }, { 0x0003b5, 2036 }, { 0x0003b6, 2043 }, { 0x0003ba, 2052 }, { 0x0003bb, 2060 }, { 0x0003bc, 2069 }, { 0x0003bd, 2076 }, { 0x0003bf, 2080 }, { 0x0003c0, 2084 }, { 0x0003c7, 2092 }, { 0x0003cc, 2100 }, { 0x0003cf, 2110 }, { 0x0003d1, 2118 }, { 0x0003d2, 2127 }, { 0x0003d3, 2135 }, { 0x0003d9, 2144 }, { 0x0003dd, 2152 }, { 0x0003de, 2159 }, { 0x0003e0, 2167 }, { 0x0003e7, 2175 }, { 0x0003ec, 2183 }, { 0x0003ef, 2193 }, { 0x0003f1, 2201 }, { 0x0003f2, 2210 }, { 0x0003f3, 2218 }, { 0x0003f9, 2227 }, { 0x0003fd, 2235 }, { 0x0003fe, 2242 }, { 0x00047e, 2250 }, { 0x0004a1, 2259 }, { 0x0004a2, 2273 }, { 0x0004a3, 2293 }, { 0x0004a4, 2313 }, { 0x0004a5, 2324 }, { 0x0004a5, 2341 }, { 0x0004a6, 2356 }, { 0x0004a7, 2364 }, { 0x0004a8, 2371 }, { 0x0004a9, 2378 }, { 0x0004aa, 2385 }, { 0x0004ab, 2392 }, { 0x0004ac, 2399 }, { 0x0004ad, 2407 }, { 0x0004ae, 2415 }, { 0x0004af, 2423 }, { 0x0004af, 2432 }, { 0x0004b0, 2440 }, { 0x0004b1, 2455 }, { 0x0004b2, 2462 }, { 0x0004b3, 2469 }, { 0x0004b4, 2476 }, { 0x0004b5, 2483 }, { 0x0004b6, 2490 }, { 0x0004b7, 2498 }, { 0x0004b8, 2506 }, { 0x0004b9, 2514 }, { 0x0004ba, 2522 }, { 0x0004bb, 2530 }, { 0x0004bc, 2538 }, { 0x0004bd, 2547 }, { 0x0004be, 2555 }, { 0x0004bf, 2563 }, { 0x0004c0, 2571 }, { 0x0004c1, 2579 }, { 0x0004c1, 2588 }, { 0x0004c2, 2596 }, { 0x0004c2, 2605 }, { 0x0004c3, 2613 }, { 0x0004c4, 2621 }, { 0x0004c5, 2629 }, { 0x0004c6, 2637 }, { 0x0004c7, 2645 }, { 0x0004c8, 2653 }, { 0x0004c9, 2661 }, { 0x0004ca, 2669 }, { 0x0004cb, 2677 }, { 0x0004cc, 2685 }, { 0x0004cc, 2693 }, { 0x0004cd, 2701 }, { 0x0004ce, 2709 }, { 0x0004cf, 2717 }, { 0x0004d0, 2725 }, { 0x0004d1, 2733 }, { 0x0004d2, 2741 }, { 0x0004d3, 2749 }, { 0x0004d4, 2757 }, { 0x0004d5, 2765 }, { 0x0004d6, 2773 }, { 0x0004d7, 2781 }, { 0x0004d8, 2789 }, { 0x0004d9, 2797 }, { 0x0004da, 2805 }, { 0x0004db, 2813 }, { 0x0004dc, 2821 }, { 0x0004dd, 2829 }, { 0x0004de, 2836 }, { 0x0004df, 2848 }, { 0x0005ac, 2864 }, { 0x0005bb, 2877 }, { 0x0005bf, 2894 }, { 0x0005c1, 2915 }, { 0x0005c2, 2928 }, { 0x0005c3, 2947 }, { 0x0005c4, 2966 }, { 0x0005c5, 2984 }, { 0x0005c6, 3006 }, { 0x0005c7, 3024 }, { 0x0005c8, 3036 }, { 0x0005c9, 3047 }, { 0x0005ca, 3065 }, { 0x0005cb, 3076 }, { 0x0005cc, 3088 }, { 0x0005cd, 3100 }, { 0x0005ce, 3111 }, { 0x0005cf, 3123 }, { 0x0005d0, 3134 }, { 0x0005d1, 3146 }, { 0x0005d2, 3156 }, { 0x0005d3, 3168 }, { 0x0005d4, 3180 }, { 0x0005d5, 3193 }, { 0x0005d6, 3204 }, { 0x0005d7, 3215 }, { 0x0005d8, 3226 }, { 0x0005d9, 3237 }, { 0x0005da, 3248 }, { 0x0005e0, 3261 }, { 0x0005e1, 3276 }, { 0x0005e2, 3287 }, { 0x0005e3, 3298 }, { 0x0005e4, 3309 }, { 0x0005e5, 3320 }, { 0x0005e6, 3332 }, { 0x0005e7, 3344 }, { 0x0005e7, 3354 }, { 0x0005e8, 3365 }, { 0x0005e9, 3376 }, { 0x0005ea, 3395 }, { 0x0005eb, 3406 }, { 0x0005ec, 3422 }, { 0x0005ed, 3438 }, { 0x0005ee, 3454 }, { 0x0005ef, 3467 }, { 0x0005f0, 3480 }, { 0x0005f1, 3493 }, { 0x0005f2, 3507 }, { 0x0006a1, 3520 }, { 0x0006a2, 3532 }, { 0x0006a3, 3546 }, { 0x0006a4, 3558 }, { 0x0006a4, 3571 }, { 0x0006a5, 3583 }, { 0x0006a6, 3597 }, { 0x0006a6, 3609 }, { 0x0006a7, 3620 }, { 0x0006a7, 3633 }, { 0x0006a8, 3645 }, { 0x0006a8, 3657 }, { 0x0006a9, 3668 }, { 0x0006a9, 3681 }, { 0x0006aa, 3693 }, { 0x0006aa, 3706 }, { 0x0006ab, 3718 }, { 0x0006ac, 3731 }, { 0x0006ad, 3745 }, { 0x0006ae, 3771 }, { 0x0006af, 3791 }, { 0x0006af, 3805 }, { 0x0006b0, 3817 }, { 0x0006b1, 3828 }, { 0x0006b2, 3840 }, { 0x0006b3, 3854 }, { 0x0006b4, 3866 }, { 0x0006b4, 3879 }, { 0x0006b5, 3891 }, { 0x0006b6, 3905 }, { 0x0006b6, 3917 }, { 0x0006b7, 3928 }, { 0x0006b7, 3941 }, { 0x0006b8, 3953 }, { 0x0006b8, 3965 }, { 0x0006b9, 3976 }, { 0x0006b9, 3989 }, { 0x0006ba, 4001 }, { 0x0006ba, 4014 }, { 0x0006bb, 4026 }, { 0x0006bc, 4039 }, { 0x0006bd, 4053 }, { 0x0006be, 4079 }, { 0x0006bf, 4099 }, { 0x0006bf, 4113 }, { 0x0006c0, 4125 }, { 0x0006c1, 4137 }, { 0x0006c2, 4148 }, { 0x0006c3, 4160 }, { 0x0006c4, 4173 }, { 0x0006c5, 4185 }, { 0x0006c6, 4197 }, { 0x0006c7, 4209 }, { 0x0006c8, 4222 }, { 0x0006c9, 4234 }, { 0x0006ca, 4245 }, { 0x0006cb, 4261 }, { 0x0006cc, 4273 }, { 0x0006cd, 4285 }, { 0x0006ce, 4297 }, { 0x0006cf, 4309 }, { 0x0006d0, 4320 }, { 0x0006d1, 4332 }, { 0x0006d2, 4344 }, { 0x0006d3, 4356 }, { 0x0006d4, 4368 }, { 0x0006d5, 4380 }, { 0x0006d6, 4391 }, { 0x0006d7, 4404 }, { 0x0006d8, 4416 }, { 0x0006d9, 4434 }, { 0x0006da, 4448 }, { 0x0006db, 4460 }, { 0x0006dc, 4473 }, { 0x0006dd, 4484 }, { 0x0006de, 4499 }, { 0x0006df, 4512 }, { 0x0006e0, 4530 }, { 0x0006e1, 4542 }, { 0x0006e2, 4553 }, { 0x0006e3, 4565 }, { 0x0006e4, 4578 }, { 0x0006e5, 4590 }, { 0x0006e6, 4602 }, { 0x0006e7, 4614 }, { 0x0006e8, 4627 }, { 0x0006e9, 4639 }, { 0x0006ea, 4650 }, { 0x0006eb, 4666 }, { 0x0006ec, 4678 }, { 0x0006ed, 4690 }, { 0x0006ee, 4702 }, { 0x0006ef, 4714 }, { 0x0006f0, 4725 }, { 0x0006f1, 4737 }, { 0x0006f2, 4749 }, { 0x0006f3, 4761 }, { 0x0006f4, 4773 }, { 0x0006f5, 4785 }, { 0x0006f6, 4796 }, { 0x0006f7, 4809 }, { 0x0006f8, 4821 }, { 0x0006f9, 4839 }, { 0x0006fa, 4853 }, { 0x0006fb, 4865 }, { 0x0006fc, 4878 }, { 0x0006fd, 4889 }, { 0x0006fe, 4904 }, { 0x0006ff, 4917 }, { 0x0007a1, 4935 }, { 0x0007a2, 4953 }, { 0x0007a3, 4973 }, { 0x0007a4, 4989 }, { 0x0007a5, 5006 }, { 0x0007a5, 5026 }, { 0x0007a7, 5045 }, { 0x0007a8, 5065 }, { 0x0007a9, 5085 }, { 0x0007ab, 5107 }, { 0x0007ae, 5125 }, { 0x0007af, 5146 }, { 0x0007b1, 5161 }, { 0x0007b2, 5179 }, { 0x0007b3, 5199 }, { 0x0007b4, 5215 }, { 0x0007b5, 5232 }, { 0x0007b6, 5251 }, { 0x0007b7, 5276 }, { 0x0007b8, 5296 }, { 0x0007b9, 5316 }, { 0x0007ba, 5338 }, { 0x0007bb, 5366 }, { 0x0007c1, 5384 }, { 0x0007c2, 5396 }, { 0x0007c3, 5407 }, { 0x0007c4, 5419 }, { 0x0007c5, 5431 }, { 0x0007c6, 5445 }, { 0x0007c7, 5456 }, { 0x0007c8, 5466 }, { 0x0007c9, 5478 }, { 0x0007ca, 5489 }, { 0x0007cb, 5501 }, { 0x0007cb, 5514 }, { 0x0007cc, 5526 }, { 0x0007cd, 5535 }, { 0x0007ce, 5544 }, { 0x0007cf, 5553 }, { 0x0007d0, 5567 }, { 0x0007d1, 5576 }, { 0x0007d2, 5586 }, { 0x0007d4, 5598 }, { 0x0007d5, 5608 }, { 0x0007d6, 5622 }, { 0x0007d7, 5632 }, { 0x0007d8, 5642 }, { 0x0007d9, 5652 }, { 0x0007e1, 5664 }, { 0x0007e2, 5676 }, { 0x0007e3, 5687 }, { 0x0007e4, 5699 }, { 0x0007e5, 5711 }, { 0x0007e6, 5725 }, { 0x0007e7, 5736 }, { 0x0007e8, 5746 }, { 0x0007e9, 5758 }, { 0x0007ea, 5769 }, { 0x0007eb, 5781 }, { 0x0007eb, 5794 }, { 0x0007ec, 5806 }, { 0x0007ed, 5815 }, { 0x0007ee, 5824 }, { 0x0007ef, 5833 }, { 0x0007f0, 5847 }, { 0x0007f1, 5856 }, { 0x0007f2, 5866 }, { 0x0007f3, 5878 }, { 0x0007f4, 5900 }, { 0x0007f5, 5910 }, { 0x0007f6, 5924 }, { 0x0007f7, 5934 }, { 0x0007f8, 5944 }, { 0x0007f9, 5954 }, { 0x0008a1, 5966 }, { 0x0008a2, 5978 }, { 0x0008a3, 5993 }, { 0x0008a4, 6008 }, { 0x0008a5, 6020 }, { 0x0008a6, 6032 }, { 0x0008a7, 6046 }, { 0x0008a8, 6063 }, { 0x0008a9, 6080 }, { 0x0008aa, 6098 }, { 0x0008ab, 6116 }, { 0x0008ac, 6130 }, { 0x0008ad, 6144 }, { 0x0008ae, 6159 }, { 0x0008af, 6174 }, { 0x0008b0, 6195 }, { 0x0008b1, 6217 }, { 0x0008b2, 6234 }, { 0x0008b3, 6251 }, { 0x0008b4, 6277 }, { 0x0008b5, 6303 }, { 0x0008b6, 6321 }, { 0x0008b7, 6339 }, { 0x0008bc, 6360 }, { 0x0008bd, 6374 }, { 0x0008be, 6383 }, { 0x0008bf, 6400 }, { 0x0008c0, 6409 }, { 0x0008c1, 6419 }, { 0x0008c2, 6429 }, { 0x0008c5, 6438 }, { 0x0008c8, 6444 }, { 0x0008c9, 6456 }, { 0x0008cd, 6469 }, { 0x0008ce, 6478 }, { 0x0008cf, 6486 }, { 0x0008d6, 6496 }, { 0x0008da, 6504 }, { 0x0008db, 6515 }, { 0x0008dc, 6524 }, { 0x0008dd, 6537 }, { 0x0008de, 6543 }, { 0x0008df, 6554 }, { 0x0008ef, 6564 }, { 0x0008f6, 6582 }, { 0x0008fb, 6591 }, { 0x0008fc, 6601 }, { 0x0008fd, 6609 }, { 0x0008fe, 6620 }, { 0x0009df, 6630 }, { 0x0009e0, 6636 }, { 0x0009e1, 6649 }, { 0x0009e2, 6662 }, { 0x0009e3, 6665 }, { 0x0009e4, 6668 }, { 0x0009e5, 6671 }, { 0x0009e8, 6674 }, { 0x0009e9, 6677 }, { 0x0009ea, 6680 }, { 0x0009eb, 6695 }, { 0x0009ec, 6709 }, { 0x0009ed, 6722 }, { 0x0009ee, 6736 }, { 0x0009ef, 6750 }, { 0x0009f0, 6765 }, { 0x0009f1, 6780 }, { 0x0009f2, 6795 }, { 0x0009f3, 6810 }, { 0x0009f4, 6825 }, { 0x0009f5, 6831 }, { 0x0009f6, 6838 }, { 0x0009f7, 6843 }, { 0x0009f8, 6848 }, { 0x000aa1, 6856 }, { 0x000aa2, 6864 }, { 0x000aa3, 6872 }, { 0x000aa4, 6881 }, { 0x000aa5, 6890 }, { 0x000aa6, 6901 }, { 0x000aa7, 6912 }, { 0x000aa8, 6922 }, { 0x000aa9, 6932 }, { 0x000aaa, 6939 }, { 0x000aac, 6946 }, { 0x000aae, 6958 }, { 0x000aaf, 6967 }, { 0x000ab0, 6983 }, { 0x000ab1, 6992 }, { 0x000ab2, 7002 }, { 0x000ab3, 7011 }, { 0x000ab4, 7021 }, { 0x000ab5, 7033 }, { 0x000ab6, 7044 }, { 0x000ab7, 7053 }, { 0x000ab8, 7064 }, { 0x000abb, 7071 }, { 0x000abc, 7079 }, { 0x000abd, 7096 }, { 0x000abe, 7109 }, { 0x000abf, 7127 }, { 0x000ac3, 7134 }, { 0x000ac4, 7144 }, { 0x000ac5, 7157 }, { 0x000ac6, 7169 }, { 0x000ac9, 7182 }, { 0x000aca, 7192 }, { 0x000acb, 7206 }, { 0x000acc, 7224 }, { 0x000acd, 7241 }, { 0x000ace, 7259 }, { 0x000acf, 7272 }, { 0x000ad0, 7288 }, { 0x000ad1, 7308 }, { 0x000ad2, 7329 }, { 0x000ad3, 7349 }, { 0x000ad4, 7370 }, { 0x000ad5, 7383 }, { 0x000ad6, 7392 }, { 0x000ad7, 7400 }, { 0x000ad9, 7408 }, { 0x000ada, 7419 }, { 0x000adb, 7428 }, { 0x000adc, 7445 }, { 0x000add, 7465 }, { 0x000ade, 7486 }, { 0x000adf, 7501 }, { 0x000ae0, 7514 }, { 0x000ae1, 7531 }, { 0x000ae2, 7550 }, { 0x000ae3, 7565 }, { 0x000ae4, 7581 }, { 0x000ae5, 7599 }, { 0x000ae6, 7608 }, { 0x000ae7, 7627 }, { 0x000ae8, 7644 }, { 0x000ae9, 7662 }, { 0x000aea, 7682 }, { 0x000aeb, 7694 }, { 0x000aec, 7707 }, { 0x000aed, 7712 }, { 0x000aee, 7720 }, { 0x000af0, 7726 }, { 0x000af1, 7739 }, { 0x000af2, 7746 }, { 0x000af3, 7759 }, { 0x000af4, 7769 }, { 0x000af5, 7781 }, { 0x000af6, 7794 }, { 0x000af7, 7806 }, { 0x000af8, 7817 }, { 0x000af9, 7830 }, { 0x000afa, 7840 }, { 0x000afb, 7858 }, { 0x000afc, 7878 }, { 0x000afd, 7884 }, { 0x000afe, 7903 }, { 0x000aff, 7922 }, { 0x000ba3, 7929 }, { 0x000ba6, 7939 }, { 0x000ba8, 7950 }, { 0x000ba9, 7960 }, { 0x000bc0, 7968 }, { 0x000bc2, 7976 }, { 0x000bc3, 7985 }, { 0x000bc4, 7992 }, { 0x000bc6, 8002 }, { 0x000bca, 8011 }, { 0x000bcc, 8015 }, { 0x000bce, 8020 }, { 0x000bcf, 8027 }, { 0x000bd3, 8034 }, { 0x000bd6, 8042 }, { 0x000bd8, 8051 }, { 0x000bda, 8061 }, { 0x000bdc, 8070 }, { 0x000bfc, 8079 }, { 0x000cdf, 8089 }, { 0x000ce0, 8110 }, { 0x000ce1, 8123 }, { 0x000ce1, 8134 }, { 0x000ce2, 8146 }, { 0x000ce2, 8159 }, { 0x000ce3, 8173 }, { 0x000ce3, 8186 }, { 0x000ce4, 8200 }, { 0x000ce5, 8210 }, { 0x000ce6, 8221 }, { 0x000ce6, 8233 }, { 0x000ce7, 8246 }, { 0x000ce7, 8258 }, { 0x000ce8, 8269 }, { 0x000ce8, 8280 }, { 0x000ce9, 8292 }, { 0x000cea, 8303 }, { 0x000ceb, 8320 }, { 0x000cec, 8332 }, { 0x000ced, 8345 }, { 0x000cee, 8361 }, { 0x000cef, 8372 }, { 0x000cf0, 8388 }, { 0x000cf1, 8399 }, { 0x000cf1, 8413 }, { 0x000cf2, 8427 }, { 0x000cf3, 8439 }, { 0x000cf4, 8454 }, { 0x000cf5, 8464 }, { 0x000cf5, 8481 }, { 0x000cf6, 8498 }, { 0x000cf6, 8510 }, { 0x000cf7, 8522 }, { 0x000cf7, 8533 }, { 0x000cf8, 8545 }, { 0x000cf9, 8557 }, { 0x000cfa, 8569 }, { 0x000cfa, 8580 }, { 0x000da1, 8591 }, { 0x000da2, 8602 }, { 0x000da3, 8615 }, { 0x000da4, 8629 }, { 0x000da5, 8643 }, { 0x000da6, 8656 }, { 0x000da7, 8672 }, { 0x000da8, 8684 }, { 0x000da9, 8697 }, { 0x000daa, 8711 }, { 0x000dab, 8725 }, { 0x000dac, 8735 }, { 0x000dad, 8748 }, { 0x000dae, 8760 }, { 0x000daf, 8773 }, { 0x000db0, 8786 }, { 0x000db1, 8799 }, { 0x000db2, 8818 }, { 0x000db3, 8834 }, { 0x000db4, 8845 }, { 0x000db5, 8856 }, { 0x000db6, 8867 }, { 0x000db7, 8881 }, { 0x000db8, 8896 }, { 0x000db9, 8910 }, { 0x000dba, 8920 }, { 0x000dbb, 8934 }, { 0x000dbc, 8945 }, { 0x000dbd, 8959 }, { 0x000dbe, 8969 }, { 0x000dbf, 8982 }, { 0x000dc0, 8993 }, { 0x000dc1, 9009 }, { 0x000dc2, 9019 }, { 0x000dc3, 9030 }, { 0x000dc4, 9041 }, { 0x000dc5, 9049 }, { 0x000dc6, 9061 }, { 0x000dc7, 9069 }, { 0x000dc8, 9081 }, { 0x000dc9, 9093 }, { 0x000dca, 9105 }, { 0x000dcb, 9116 }, { 0x000dcc, 9127 }, { 0x000dcd, 9140 }, { 0x000dce, 9150 }, { 0x000dcf, 9164 }, { 0x000dd0, 9179 }, { 0x000dd1, 9190 }, { 0x000dd2, 9206 }, { 0x000dd3, 9218 }, { 0x000dd4, 9230 }, { 0x000dd5, 9241 }, { 0x000dd6, 9253 }, { 0x000dd7, 9265 }, { 0x000dd8, 9278 }, { 0x000dd9, 9289 }, { 0x000dda, 9301 }, { 0x000dde, 9314 }, { 0x000ddf, 9337 }, { 0x000de0, 9347 }, { 0x000de1, 9358 }, { 0x000de2, 9370 }, { 0x000de3, 9381 }, { 0x000de4, 9400 }, { 0x000de5, 9420 }, { 0x000de6, 9437 }, { 0x000de7, 9451 }, { 0x000de8, 9466 }, { 0x000de9, 9477 }, { 0x000dea, 9489 }, { 0x000deb, 9501 }, { 0x000dec, 9518 }, { 0x000ded, 9535 }, { 0x000df0, 9549 }, { 0x000df1, 9561 }, { 0x000df2, 9574 }, { 0x000df3, 9587 }, { 0x000df4, 9599 }, { 0x000df5, 9610 }, { 0x000df6, 9621 }, { 0x000df7, 9633 }, { 0x000df8, 9646 }, { 0x000df9, 9659 }, { 0x000ea1, 9671 }, { 0x000ea2, 9685 }, { 0x000ea3, 9704 }, { 0x000ea4, 9722 }, { 0x000ea5, 9735 }, { 0x000ea6, 9753 }, { 0x000ea7, 9771 }, { 0x000ea8, 9785 }, { 0x000ea9, 9804 }, { 0x000eaa, 9817 }, { 0x000eab, 9836 }, { 0x000eac, 9854 }, { 0x000ead, 9872 }, { 0x000eae, 9889 }, { 0x000eaf, 9907 }, { 0x000eb0, 9926 }, { 0x000eb1, 9944 }, { 0x000eb2, 9957 }, { 0x000eb3, 9970 }, { 0x000eb4, 9988 }, { 0x000eb5, 10005 }, { 0x000eb6, 10017 }, { 0x000eb7, 10034 }, { 0x000eb8, 10047 }, { 0x000eb9, 10060 }, { 0x000eba, 10078 }, { 0x000ebb, 10091 }, { 0x000ebc, 10105 }, { 0x000ebd, 10118 }, { 0x000ebe, 10132 }, { 0x000ebf, 10145 }, { 0x000ec0, 10154 }, { 0x000ec1, 10164 }, { 0x000ec2, 10174 }, { 0x000ec3, 10185 }, { 0x000ec4, 10195 }, { 0x000ec5, 10204 }, { 0x000ec6, 10215 }, { 0x000ec7, 10225 }, { 0x000ec8, 10234 }, { 0x000ec9, 10244 }, { 0x000eca, 10255 }, { 0x000ecb, 10265 }, { 0x000ecc, 10275 }, { 0x000ecd, 10284 }, { 0x000ece, 10295 }, { 0x000ecf, 10305 }, { 0x000ed0, 10315 }, { 0x000ed1, 10325 }, { 0x000ed2, 10335 }, { 0x000ed3, 10345 }, { 0x000ed4, 10354 }, { 0x000ed5, 10370 }, { 0x000ed6, 10391 }, { 0x000ed7, 10411 }, { 0x000ed8, 10426 }, { 0x000ed9, 10446 }, { 0x000eda, 10466 }, { 0x000edb, 10482 }, { 0x000edc, 10497 }, { 0x000edd, 10518 }, { 0x000ede, 10538 }, { 0x000edf, 10558 }, { 0x000ee0, 10577 }, { 0x000ee1, 10597 }, { 0x000ee2, 10618 }, { 0x000ee3, 10638 }, { 0x000ee4, 10653 }, { 0x000ee5, 10668 }, { 0x000ee6, 10687 }, { 0x000ee7, 10701 }, { 0x000ee8, 10720 }, { 0x000ee9, 10735 }, { 0x000eea, 10750 }, { 0x000eeb, 10765 }, { 0x000eec, 10781 }, { 0x000eed, 10796 }, { 0x000eee, 10812 }, { 0x000eef, 10827 }, { 0x000ef0, 10851 }, { 0x000ef1, 10876 }, { 0x000ef2, 10901 }, { 0x000ef3, 10916 }, { 0x000ef4, 10941 }, { 0x000ef5, 10967 }, { 0x000ef6, 10986 }, { 0x000ef7, 10999 }, { 0x000ef8, 11013 }, { 0x000ef9, 11030 }, { 0x000efa, 11057 }, { 0x000eff, 11078 }, { 0x0013bc, 11089 }, { 0x0013bd, 11092 }, { 0x0013be, 11095 }, { 0x0020ac, 11106 }, { 0x00fd01, 11115 }, { 0x00fd02, 11130 }, { 0x00fd03, 11145 }, { 0x00fd04, 11157 }, { 0x00fd05, 11168 }, { 0x00fd06, 11181 }, { 0x00fd07, 11195 }, { 0x00fd08, 11211 }, { 0x00fd09, 11222 }, { 0x00fd0a, 11232 }, { 0x00fd0b, 11241 }, { 0x00fd0c, 11250 }, { 0x00fd0d, 11259 }, { 0x00fd0e, 11269 }, { 0x00fd0f, 11279 }, { 0x00fd10, 11296 }, { 0x00fd11, 11311 }, { 0x00fd12, 11325 }, { 0x00fd13, 11335 }, { 0x00fd14, 11346 }, { 0x00fd15, 11356 }, { 0x00fd16, 11366 }, { 0x00fd17, 11376 }, { 0x00fd18, 11387 }, { 0x00fd19, 11399 }, { 0x00fd1a, 11417 }, { 0x00fd1b, 11433 }, { 0x00fd1c, 11447 }, { 0x00fd1d, 11465 }, { 0x00fd1e, 11482 }, { 0x00fe01, 11493 }, { 0x00fe02, 11502 }, { 0x00fe03, 11519 }, { 0x00fe04, 11536 }, { 0x00fe05, 11553 }, { 0x00fe06, 11569 }, { 0x00fe07, 11585 }, { 0x00fe08, 11600 }, { 0x00fe09, 11615 }, { 0x00fe0a, 11635 }, { 0x00fe0b, 11650 }, { 0x00fe0c, 11670 }, { 0x00fe0d, 11686 }, { 0x00fe0e, 11707 }, { 0x00fe0f, 11722 }, { 0x00fe11, 11742 }, { 0x00fe12, 11759 }, { 0x00fe13, 11776 }, { 0x00fe20, 11792 }, { 0x00fe21, 11805 }, { 0x00fe22, 11822 }, { 0x00fe23, 11841 }, { 0x00fe24, 11861 }, { 0x00fe25, 11883 }, { 0x00fe26, 11906 }, { 0x00fe27, 11930 }, { 0x00fe28, 11950 }, { 0x00fe29, 11971 }, { 0x00fe2a, 11995 }, { 0x00fe2b, 12020 }, { 0x00fe2c, 12045 }, { 0x00fe2d, 12066 }, { 0x00fe2e, 12088 }, { 0x00fe2f, 12107 }, { 0x00fe30, 12128 }, { 0x00fe31, 12153 }, { 0x00fe32, 12181 }, { 0x00fe33, 12195 }, { 0x00fe34, 12213 }, { 0x00fe50, 12223 }, { 0x00fe51, 12234 }, { 0x00fe52, 12245 }, { 0x00fe53, 12261 }, { 0x00fe53, 12278 }, { 0x00fe54, 12289 }, { 0x00fe55, 12301 }, { 0x00fe56, 12312 }, { 0x00fe57, 12326 }, { 0x00fe58, 12341 }, { 0x00fe59, 12356 }, { 0x00fe5a, 12373 }, { 0x00fe5b, 12384 }, { 0x00fe5c, 12397 }, { 0x00fe5d, 12409 }, { 0x00fe5e, 12419 }, { 0x00fe5f, 12437 }, { 0x00fe60, 12459 }, { 0x00fe61, 12473 }, { 0x00fe62, 12483 }, { 0x00fe63, 12493 }, { 0x00fe64, 12505 }, { 0x00fe64, 12521 }, { 0x00fe65, 12532 }, { 0x00fe65, 12556 }, { 0x00fe66, 12567 }, { 0x00fe67, 12584 }, { 0x00fe68, 12599 }, { 0x00fe69, 12616 }, { 0x00fe6a, 12637 }, { 0x00fe6b, 12653 }, { 0x00fe6c, 12669 }, { 0x00fe6d, 12689 }, { 0x00fe6e, 12708 }, { 0x00fe6f, 12724 }, { 0x00fe70, 12738 }, { 0x00fe71, 12753 }, { 0x00fe72, 12777 }, { 0x00fe73, 12795 }, { 0x00fe74, 12811 }, { 0x00fe75, 12829 }, { 0x00fe76, 12847 }, { 0x00fe77, 12864 }, { 0x00fe78, 12887 }, { 0x00fe79, 12903 }, { 0x00fe7a, 12919 }, { 0x00fe80, 12938 }, { 0x00fe81, 12945 }, { 0x00fe82, 12952 }, { 0x00fe83, 12959 }, { 0x00fe84, 12966 }, { 0x00fe85, 12973 }, { 0x00fe86, 12980 }, { 0x00fe87, 12987 }, { 0x00fe88, 12994 }, { 0x00fe89, 13001 }, { 0x00fe8a, 13008 }, { 0x00fe8b, 13025 }, { 0x00fe8c, 13044 }, { 0x00fea0, 13055 }, { 0x00fea1, 13058 }, { 0x00fea2, 13061 }, { 0x00fea3, 13064 }, { 0x00fea4, 13068 }, { 0x00fea5, 13072 }, { 0x00fed0, 13076 }, { 0x00fed1, 13097 }, { 0x00fed2, 13117 }, { 0x00fed4, 13137 }, { 0x00fed5, 13157 }, { 0x00fee0, 13174 }, { 0x00fee1, 13187 }, { 0x00fee2, 13201 }, { 0x00fee3, 13212 }, { 0x00fee4, 13225 }, { 0x00fee5, 13240 }, { 0x00fee6, 13256 }, { 0x00fee7, 13273 }, { 0x00fee8, 13291 }, { 0x00fee9, 13311 }, { 0x00feea, 13327 }, { 0x00feeb, 13343 }, { 0x00feec, 13359 }, { 0x00feed, 13375 }, { 0x00feee, 13391 }, { 0x00feef, 13413 }, { 0x00fef0, 13431 }, { 0x00fef1, 13449 }, { 0x00fef2, 13467 }, { 0x00fef3, 13485 }, { 0x00fef4, 13503 }, { 0x00fef5, 13521 }, { 0x00fef6, 13535 }, { 0x00fef7, 13549 }, { 0x00fef8, 13563 }, { 0x00fef9, 13577 }, { 0x00fefa, 13596 }, { 0x00fefb, 13615 }, { 0x00fefc, 13635 }, { 0x00fefd, 13655 }, { 0x00ff08, 13669 }, { 0x00ff09, 13679 }, { 0x00ff0a, 13683 }, { 0x00ff0b, 13692 }, { 0x00ff0d, 13698 }, { 0x00ff13, 13705 }, { 0x00ff14, 13711 }, { 0x00ff15, 13723 }, { 0x00ff1b, 13731 }, { 0x00ff20, 13738 }, { 0x00ff21, 13748 }, { 0x00ff22, 13754 }, { 0x00ff23, 13763 }, { 0x00ff23, 13770 }, { 0x00ff24, 13782 }, { 0x00ff25, 13789 }, { 0x00ff26, 13798 }, { 0x00ff27, 13807 }, { 0x00ff28, 13825 }, { 0x00ff29, 13833 }, { 0x00ff2a, 13841 }, { 0x00ff2b, 13857 }, { 0x00ff2c, 13865 }, { 0x00ff2d, 13872 }, { 0x00ff2e, 13882 }, { 0x00ff2f, 13893 }, { 0x00ff30, 13904 }, { 0x00ff31, 13916 }, { 0x00ff32, 13923 }, { 0x00ff33, 13936 }, { 0x00ff34, 13947 }, { 0x00ff35, 13960 }, { 0x00ff36, 13972 }, { 0x00ff37, 13986 }, { 0x00ff37, 13996 }, { 0x00ff37, 14013 }, { 0x00ff38, 14026 }, { 0x00ff39, 14040 }, { 0x00ff3a, 14053 }, { 0x00ff3b, 14069 }, { 0x00ff3c, 14086 }, { 0x00ff3c, 14109 }, { 0x00ff3d, 14125 }, { 0x00ff3d, 14150 }, { 0x00ff3d, 14168 }, { 0x00ff3e, 14177 }, { 0x00ff3e, 14202 }, { 0x00ff3e, 14211 }, { 0x00ff3f, 14229 }, { 0x00ff50, 14244 }, { 0x00ff51, 14249 }, { 0x00ff52, 14254 }, { 0x00ff53, 14257 }, { 0x00ff54, 14263 }, { 0x00ff55, 14268 }, { 0x00ff55, 14276 }, { 0x00ff56, 14282 }, { 0x00ff56, 14292 }, { 0x00ff57, 14297 }, { 0x00ff58, 14301 }, { 0x00ff60, 14307 }, { 0x00ff61, 14314 }, { 0x00ff62, 14320 }, { 0x00ff63, 14328 }, { 0x00ff65, 14335 }, { 0x00ff66, 14340 }, { 0x00ff67, 14345 }, { 0x00ff68, 14350 }, { 0x00ff69, 14355 }, { 0x00ff6a, 14362 }, { 0x00ff6b, 14367 }, { 0x00ff7e, 14373 }, { 0x00ff7e, 14387 }, { 0x00ff7e, 14400 }, { 0x00ff7e, 14414 }, { 0x00ff7e, 14428 }, { 0x00ff7e, 14444 }, { 0x00ff7e, 14456 }, { 0x00ff7e, 14468 }, { 0x00ff7f, 14482 }, { 0x00ff80, 14491 }, { 0x00ff89, 14500 }, { 0x00ff8d, 14507 }, { 0x00ff91, 14516 }, { 0x00ff92, 14522 }, { 0x00ff93, 14528 }, { 0x00ff94, 14534 }, { 0x00ff95, 14540 }, { 0x00ff96, 14548 }, { 0x00ff97, 14556 }, { 0x00ff98, 14562 }, { 0x00ff99, 14571 }, { 0x00ff9a, 14579 }, { 0x00ff9a, 14590 }, { 0x00ff9b, 14599 }, { 0x00ff9b, 14607 }, { 0x00ff9c, 14620 }, { 0x00ff9d, 14627 }, { 0x00ff9e, 14636 }, { 0x00ff9f, 14646 }, { 0x00ffaa, 14656 }, { 0x00ffab, 14668 }, { 0x00ffac, 14675 }, { 0x00ffad, 14688 }, { 0x00ffae, 14700 }, { 0x00ffaf, 14711 }, { 0x00ffb0, 14721 }, { 0x00ffb1, 14726 }, { 0x00ffb2, 14731 }, { 0x00ffb3, 14736 }, { 0x00ffb4, 14741 }, { 0x00ffb5, 14746 }, { 0x00ffb6, 14751 }, { 0x00ffb7, 14756 }, { 0x00ffb8, 14761 }, { 0x00ffb9, 14766 }, { 0x00ffbd, 14771 }, { 0x00ffbe, 14780 }, { 0x00ffbf, 14783 }, { 0x00ffc0, 14786 }, { 0x00ffc1, 14789 }, { 0x00ffc2, 14792 }, { 0x00ffc3, 14795 }, { 0x00ffc4, 14798 }, { 0x00ffc5, 14801 }, { 0x00ffc6, 14804 }, { 0x00ffc7, 14807 }, { 0x00ffc8, 14811 }, { 0x00ffc8, 14815 }, { 0x00ffc9, 14818 }, { 0x00ffc9, 14822 }, { 0x00ffca, 14825 }, { 0x00ffca, 14829 }, { 0x00ffcb, 14832 }, { 0x00ffcb, 14836 }, { 0x00ffcc, 14839 }, { 0x00ffcc, 14843 }, { 0x00ffcd, 14846 }, { 0x00ffcd, 14850 }, { 0x00ffce, 14853 }, { 0x00ffce, 14857 }, { 0x00ffcf, 14860 }, { 0x00ffcf, 14864 }, { 0x00ffd0, 14867 }, { 0x00ffd0, 14871 }, { 0x00ffd1, 14874 }, { 0x00ffd1, 14878 }, { 0x00ffd2, 14882 }, { 0x00ffd2, 14886 }, { 0x00ffd3, 14889 }, { 0x00ffd3, 14893 }, { 0x00ffd4, 14896 }, { 0x00ffd4, 14900 }, { 0x00ffd5, 14903 }, { 0x00ffd5, 14907 }, { 0x00ffd6, 14910 }, { 0x00ffd6, 14914 }, { 0x00ffd7, 14917 }, { 0x00ffd7, 14921 }, { 0x00ffd8, 14924 }, { 0x00ffd8, 14928 }, { 0x00ffd9, 14931 }, { 0x00ffd9, 14935 }, { 0x00ffda, 14938 }, { 0x00ffda, 14942 }, { 0x00ffdb, 14945 }, { 0x00ffdb, 14949 }, { 0x00ffdc, 14953 }, { 0x00ffdc, 14957 }, { 0x00ffdd, 14961 }, { 0x00ffdd, 14965 }, { 0x00ffde, 14969 }, { 0x00ffde, 14973 }, { 0x00ffdf, 14977 }, { 0x00ffdf, 14981 }, { 0x00ffe0, 14985 }, { 0x00ffe0, 14989 }, { 0x00ffe1, 14993 }, { 0x00ffe2, 15001 }, { 0x00ffe3, 15009 }, { 0x00ffe4, 15019 }, { 0x00ffe5, 15029 }, { 0x00ffe6, 15039 }, { 0x00ffe7, 15050 }, { 0x00ffe8, 15057 }, { 0x00ffe9, 15064 }, { 0x00ffea, 15070 }, { 0x00ffeb, 15076 }, { 0x00ffec, 15084 }, { 0x00ffed, 15092 }, { 0x00ffee, 15100 }, { 0x00fff1, 15108 }, { 0x00fff2, 15122 }, { 0x00fff3, 15136 }, { 0x00fff4, 15150 }, { 0x00fff5, 15164 }, { 0x00fff6, 15178 }, { 0x00fff7, 15192 }, { 0x00fff8, 15206 }, { 0x00fff9, 15220 }, { 0x00fffa, 15234 }, { 0x00ffff, 15249 }, { 0x100012c, 15256 }, { 0x100012d, 15263 }, { 0x1000174, 15270 }, { 0x1000175, 15282 }, { 0x1000176, 15294 }, { 0x1000177, 15306 }, { 0x100018f, 15318 }, { 0x100019f, 15324 }, { 0x10001a0, 15332 }, { 0x10001a1, 15338 }, { 0x10001af, 15344 }, { 0x10001b0, 15350 }, { 0x10001b5, 15356 }, { 0x10001b6, 15364 }, { 0x10001b7, 15372 }, { 0x10001d1, 15376 }, { 0x10001d2, 15383 }, { 0x10001e6, 15390 }, { 0x10001e7, 15397 }, { 0x1000259, 15404 }, { 0x1000275, 15410 }, { 0x1000292, 15418 }, { 0x1000492, 15422 }, { 0x1000493, 15439 }, { 0x1000496, 15456 }, { 0x1000497, 15479 }, { 0x100049a, 15502 }, { 0x100049b, 15524 }, { 0x100049c, 15546 }, { 0x100049d, 15569 }, { 0x10004a2, 15592 }, { 0x10004a3, 15614 }, { 0x10004ae, 15636 }, { 0x10004af, 15656 }, { 0x10004b0, 15676 }, { 0x10004b1, 15700 }, { 0x10004b2, 15724 }, { 0x10004b3, 15746 }, { 0x10004b6, 15768 }, { 0x10004b7, 15791 }, { 0x10004b8, 15814 }, { 0x10004b9, 15838 }, { 0x10004ba, 15862 }, { 0x10004bb, 15876 }, { 0x10004d8, 15890 }, { 0x10004d9, 15905 }, { 0x10004e2, 15920 }, { 0x10004e3, 15938 }, { 0x10004e8, 15956 }, { 0x10004e9, 15971 }, { 0x10004ee, 15986 }, { 0x10004ef, 16004 }, { 0x1000531, 16022 }, { 0x1000532, 16035 }, { 0x1000533, 16048 }, { 0x1000534, 16061 }, { 0x1000535, 16073 }, { 0x1000536, 16087 }, { 0x1000537, 16099 }, { 0x1000538, 16110 }, { 0x1000539, 16122 }, { 0x100053a, 16134 }, { 0x100053b, 16147 }, { 0x100053c, 16160 }, { 0x100053d, 16174 }, { 0x100053e, 16187 }, { 0x100053f, 16200 }, { 0x1000540, 16213 }, { 0x1000541, 16225 }, { 0x1000542, 16238 }, { 0x1000543, 16252 }, { 0x1000544, 16266 }, { 0x1000545, 16279 }, { 0x1000546, 16291 }, { 0x1000547, 16303 }, { 0x1000548, 16316 }, { 0x1000549, 16328 }, { 0x100054a, 16341 }, { 0x100054b, 16353 }, { 0x100054c, 16365 }, { 0x100054d, 16377 }, { 0x100054e, 16389 }, { 0x100054f, 16402 }, { 0x1000550, 16416 }, { 0x1000551, 16428 }, { 0x1000552, 16441 }, { 0x1000553, 16455 }, { 0x1000554, 16469 }, { 0x1000555, 16481 }, { 0x1000556, 16492 }, { 0x100055a, 16504 }, { 0x100055b, 16524 }, { 0x100055b, 16540 }, { 0x100055c, 16556 }, { 0x100055c, 16572 }, { 0x100055d, 16588 }, { 0x100055d, 16601 }, { 0x100055e, 16626 }, { 0x100055e, 16642 }, { 0x1000561, 16660 }, { 0x1000562, 16673 }, { 0x1000563, 16686 }, { 0x1000564, 16699 }, { 0x1000565, 16711 }, { 0x1000566, 16725 }, { 0x1000567, 16737 }, { 0x1000568, 16748 }, { 0x1000569, 16760 }, { 0x100056a, 16772 }, { 0x100056b, 16785 }, { 0x100056c, 16798 }, { 0x100056d, 16812 }, { 0x100056e, 16825 }, { 0x100056f, 16838 }, { 0x1000570, 16851 }, { 0x1000571, 16863 }, { 0x1000572, 16876 }, { 0x1000573, 16890 }, { 0x1000574, 16904 }, { 0x1000575, 16917 }, { 0x1000576, 16929 }, { 0x1000577, 16941 }, { 0x1000578, 16954 }, { 0x1000579, 16966 }, { 0x100057a, 16979 }, { 0x100057b, 16991 }, { 0x100057c, 17003 }, { 0x100057d, 17015 }, { 0x100057e, 17027 }, { 0x100057f, 17040 }, { 0x1000580, 17054 }, { 0x1000581, 17066 }, { 0x1000582, 17079 }, { 0x1000583, 17093 }, { 0x1000584, 17107 }, { 0x1000585, 17119 }, { 0x1000586, 17130 }, { 0x1000587, 17142 }, { 0x1000589, 17163 }, { 0x1000589, 17182 }, { 0x100058a, 17200 }, { 0x100058a, 17216 }, { 0x1000653, 17234 }, { 0x1000654, 17253 }, { 0x1000655, 17272 }, { 0x1000660, 17291 }, { 0x1000661, 17300 }, { 0x1000662, 17309 }, { 0x1000663, 17318 }, { 0x1000664, 17327 }, { 0x1000665, 17336 }, { 0x1000666, 17345 }, { 0x1000667, 17354 }, { 0x1000668, 17363 }, { 0x1000669, 17372 }, { 0x100066a, 17381 }, { 0x1000670, 17396 }, { 0x1000679, 17420 }, { 0x100067e, 17432 }, { 0x1000686, 17443 }, { 0x1000688, 17456 }, { 0x1000691, 17468 }, { 0x1000698, 17480 }, { 0x10006a4, 17491 }, { 0x10006a9, 17502 }, { 0x10006af, 17515 }, { 0x10006ba, 17526 }, { 0x10006be, 17545 }, { 0x10006c1, 17568 }, { 0x10006cc, 17584 }, { 0x10006cc, 17601 }, { 0x10006d2, 17611 }, { 0x10006d4, 17628 }, { 0x10006f0, 17644 }, { 0x10006f1, 17652 }, { 0x10006f2, 17660 }, { 0x10006f3, 17668 }, { 0x10006f4, 17676 }, { 0x10006f5, 17684 }, { 0x10006f6, 17692 }, { 0x10006f7, 17700 }, { 0x10006f8, 17708 }, { 0x10006f9, 17716 }, { 0x1000d82, 17724 }, { 0x1000d83, 17732 }, { 0x1000d85, 17740 }, { 0x1000d86, 17747 }, { 0x1000d87, 17755 }, { 0x1000d88, 17763 }, { 0x1000d89, 17772 }, { 0x1000d8a, 17779 }, { 0x1000d8b, 17787 }, { 0x1000d8c, 17794 }, { 0x1000d8d, 17802 }, { 0x1000d8e, 17810 }, { 0x1000d8f, 17819 }, { 0x1000d90, 17827 }, { 0x1000d91, 17836 }, { 0x1000d92, 17843 }, { 0x1000d93, 17851 }, { 0x1000d94, 17859 }, { 0x1000d95, 17866 }, { 0x1000d96, 17874 }, { 0x1000d9a, 17882 }, { 0x1000d9b, 17890 }, { 0x1000d9c, 17899 }, { 0x1000d9d, 17907 }, { 0x1000d9e, 17916 }, { 0x1000d9f, 17925 }, { 0x1000da0, 17934 }, { 0x1000da1, 17942 }, { 0x1000da2, 17951 }, { 0x1000da3, 17959 }, { 0x1000da4, 17968 }, { 0x1000da5, 17977 }, { 0x1000da6, 17987 }, { 0x1000da7, 17996 }, { 0x1000da8, 18005 }, { 0x1000da9, 18015 }, { 0x1000daa, 18024 }, { 0x1000dab, 18034 }, { 0x1000dac, 18043 }, { 0x1000dad, 18053 }, { 0x1000dae, 18062 }, { 0x1000daf, 18072 }, { 0x1000db0, 18081 }, { 0x1000db1, 18091 }, { 0x1000db3, 18099 }, { 0x1000db4, 18109 }, { 0x1000db5, 18117 }, { 0x1000db6, 18126 }, { 0x1000db7, 18134 }, { 0x1000db8, 18143 }, { 0x1000db9, 18151 }, { 0x1000dba, 18160 }, { 0x1000dbb, 18168 }, { 0x1000dbd, 18176 }, { 0x1000dc0, 18184 }, { 0x1000dc1, 18192 }, { 0x1000dc2, 18201 }, { 0x1000dc3, 18211 }, { 0x1000dc4, 18219 }, { 0x1000dc5, 18227 }, { 0x1000dc6, 18236 }, { 0x1000dca, 18244 }, { 0x1000dcf, 18252 }, { 0x1000dd0, 18261 }, { 0x1000dd1, 18270 }, { 0x1000dd2, 18280 }, { 0x1000dd3, 18288 }, { 0x1000dd4, 18297 }, { 0x1000dd6, 18305 }, { 0x1000dd8, 18314 }, { 0x1000dd9, 18323 }, { 0x1000dda, 18331 }, { 0x1000ddb, 18340 }, { 0x1000ddc, 18349 }, { 0x1000ddd, 18357 }, { 0x1000dde, 18366 }, { 0x1000ddf, 18375 }, { 0x1000df2, 18384 }, { 0x1000df3, 18394 }, { 0x1000df4, 18404 }, { 0x10010d0, 18420 }, { 0x10010d1, 18432 }, { 0x10010d2, 18445 }, { 0x10010d3, 18458 }, { 0x10010d4, 18471 }, { 0x10010d5, 18483 }, { 0x10010d6, 18496 }, { 0x10010d7, 18509 }, { 0x10010d8, 18522 }, { 0x10010d9, 18534 }, { 0x10010da, 18547 }, { 0x10010db, 18560 }, { 0x10010dc, 18573 }, { 0x10010dd, 18586 }, { 0x10010de, 18598 }, { 0x10010df, 18611 }, { 0x10010e0, 18625 }, { 0x10010e1, 18638 }, { 0x10010e2, 18651 }, { 0x10010e3, 18664 }, { 0x10010e4, 18676 }, { 0x10010e5, 18690 }, { 0x10010e6, 18704 }, { 0x10010e7, 18718 }, { 0x10010e8, 18731 }, { 0x10010e9, 18745 }, { 0x10010ea, 18759 }, { 0x10010eb, 18772 }, { 0x10010ec, 18785 }, { 0x10010ed, 18798 }, { 0x10010ee, 18812 }, { 0x10010ef, 18825 }, { 0x10010f0, 18839 }, { 0x10010f1, 18852 }, { 0x10010f2, 18864 }, { 0x10010f3, 18877 }, { 0x10010f4, 18889 }, { 0x10010f5, 18902 }, { 0x10010f6, 18915 }, { 0x1001e02, 18927 }, { 0x1001e03, 18937 }, { 0x1001e0a, 18947 }, { 0x1001e0b, 18957 }, { 0x1001e1e, 18967 }, { 0x1001e1f, 18977 }, { 0x1001e36, 18987 }, { 0x1001e37, 18997 }, { 0x1001e40, 19007 }, { 0x1001e41, 19017 }, { 0x1001e56, 19027 }, { 0x1001e57, 19037 }, { 0x1001e60, 19047 }, { 0x1001e61, 19057 }, { 0x1001e6a, 19067 }, { 0x1001e6b, 19077 }, { 0x1001e80, 19087 }, { 0x1001e81, 19094 }, { 0x1001e82, 19101 }, { 0x1001e83, 19108 }, { 0x1001e84, 19115 }, { 0x1001e85, 19126 }, { 0x1001e8a, 19137 }, { 0x1001e8b, 19147 }, { 0x1001ea0, 19157 }, { 0x1001ea1, 19167 }, { 0x1001ea2, 19177 }, { 0x1001ea3, 19183 }, { 0x1001ea4, 19189 }, { 0x1001ea5, 19206 }, { 0x1001ea6, 19223 }, { 0x1001ea7, 19240 }, { 0x1001ea8, 19257 }, { 0x1001ea9, 19273 }, { 0x1001eaa, 19289 }, { 0x1001eab, 19306 }, { 0x1001eac, 19323 }, { 0x1001ead, 19343 }, { 0x1001eae, 19363 }, { 0x1001eaf, 19375 }, { 0x1001eb0, 19387 }, { 0x1001eb1, 19399 }, { 0x1001eb2, 19411 }, { 0x1001eb3, 19422 }, { 0x1001eb4, 19433 }, { 0x1001eb5, 19445 }, { 0x1001eb6, 19457 }, { 0x1001eb7, 19472 }, { 0x1001eb8, 19487 }, { 0x1001eb9, 19497 }, { 0x1001eba, 19507 }, { 0x1001ebb, 19513 }, { 0x1001ebc, 19519 }, { 0x1001ebd, 19526 }, { 0x1001ebe, 19533 }, { 0x1001ebf, 19550 }, { 0x1001ec0, 19567 }, { 0x1001ec1, 19584 }, { 0x1001ec2, 19601 }, { 0x1001ec3, 19617 }, { 0x1001ec4, 19633 }, { 0x1001ec5, 19650 }, { 0x1001ec6, 19667 }, { 0x1001ec7, 19687 }, { 0x1001ec8, 19707 }, { 0x1001ec9, 19713 }, { 0x1001eca, 19719 }, { 0x1001ecb, 19729 }, { 0x1001ecc, 19739 }, { 0x1001ecd, 19749 }, { 0x1001ece, 19759 }, { 0x1001ecf, 19765 }, { 0x1001ed0, 19771 }, { 0x1001ed1, 19788 }, { 0x1001ed2, 19805 }, { 0x1001ed3, 19822 }, { 0x1001ed4, 19839 }, { 0x1001ed5, 19855 }, { 0x1001ed6, 19871 }, { 0x1001ed7, 19888 }, { 0x1001ed8, 19905 }, { 0x1001ed9, 19925 }, { 0x1001eda, 19945 }, { 0x1001edb, 19956 }, { 0x1001edc, 19967 }, { 0x1001edd, 19978 }, { 0x1001ede, 19989 }, { 0x1001edf, 19999 }, { 0x1001ee0, 20009 }, { 0x1001ee1, 20020 }, { 0x1001ee2, 20031 }, { 0x1001ee3, 20045 }, { 0x1001ee4, 20059 }, { 0x1001ee5, 20069 }, { 0x1001ee6, 20079 }, { 0x1001ee7, 20085 }, { 0x1001ee8, 20091 }, { 0x1001ee9, 20102 }, { 0x1001eea, 20113 }, { 0x1001eeb, 20124 }, { 0x1001eec, 20135 }, { 0x1001eed, 20145 }, { 0x1001eee, 20155 }, { 0x1001eef, 20166 }, { 0x1001ef0, 20177 }, { 0x1001ef1, 20191 }, { 0x1001ef2, 20205 }, { 0x1001ef3, 20212 }, { 0x1001ef4, 20219 }, { 0x1001ef5, 20229 }, { 0x1001ef6, 20239 }, { 0x1001ef7, 20245 }, { 0x1001ef8, 20251 }, { 0x1001ef9, 20258 }, { 0x1002070, 20265 }, { 0x1002074, 20278 }, { 0x1002075, 20291 }, { 0x1002076, 20304 }, { 0x1002077, 20316 }, { 0x1002078, 20330 }, { 0x1002079, 20344 }, { 0x1002080, 20357 }, { 0x1002081, 20371 }, { 0x1002082, 20384 }, { 0x1002083, 20397 }, { 0x1002084, 20412 }, { 0x1002085, 20426 }, { 0x1002086, 20440 }, { 0x1002087, 20453 }, { 0x1002088, 20468 }, { 0x1002089, 20483 }, { 0x10020a0, 20497 }, { 0x10020a1, 20505 }, { 0x10020a2, 20515 }, { 0x10020a3, 20528 }, { 0x10020a4, 20539 }, { 0x10020a5, 20548 }, { 0x10020a6, 20557 }, { 0x10020a7, 20567 }, { 0x10020a8, 20578 }, { 0x10020a9, 20588 }, { 0x10020aa, 20596 }, { 0x10020ab, 20610 }, { 0x1002202, 20619 }, { 0x1002205, 20636 }, { 0x1002208, 20645 }, { 0x1002209, 20655 }, { 0x100220b, 20668 }, { 0x100221a, 20679 }, { 0x100221b, 20690 }, { 0x100221c, 20699 }, { 0x100222c, 20710 }, { 0x100222d, 20720 }, { 0x1002235, 20730 }, { 0x1002247, 20738 }, { 0x1002248, 20750 }, { 0x1002262, 20759 }, { 0x1002263, 20772 }, { 0x1002800, 20781 }, { 0x1002801, 20795 }, { 0x1002802, 20810 }, { 0x1002803, 20825 }, { 0x1002804, 20841 }, { 0x1002805, 20856 }, { 0x1002806, 20872 }, { 0x1002807, 20888 }, { 0x1002808, 20905 }, { 0x1002809, 20920 }, { 0x100280a, 20936 }, { 0x100280b, 20952 }, { 0x100280c, 20969 }, { 0x100280d, 20985 }, { 0x100280e, 21002 }, { 0x100280f, 21019 }, { 0x1002810, 21037 }, { 0x1002811, 21052 }, { 0x1002812, 21068 }, { 0x1002813, 21084 }, { 0x1002814, 21101 }, { 0x1002815, 21117 }, { 0x1002816, 21134 }, { 0x1002817, 21151 }, { 0x1002818, 21169 }, { 0x1002819, 21185 }, { 0x100281a, 21202 }, { 0x100281b, 21219 }, { 0x100281c, 21237 }, { 0x100281d, 21254 }, { 0x100281e, 21272 }, { 0x100281f, 21290 }, { 0x1002820, 21309 }, { 0x1002821, 21324 }, { 0x1002822, 21340 }, { 0x1002823, 21356 }, { 0x1002824, 21373 }, { 0x1002825, 21389 }, { 0x1002826, 21406 }, { 0x1002827, 21423 }, { 0x1002828, 21441 }, { 0x1002829, 21457 }, { 0x100282a, 21474 }, { 0x100282b, 21491 }, { 0x100282c, 21509 }, { 0x100282d, 21526 }, { 0x100282e, 21544 }, { 0x100282f, 21562 }, { 0x1002830, 21581 }, { 0x1002831, 21597 }, { 0x1002832, 21614 }, { 0x1002833, 21631 }, { 0x1002834, 21649 }, { 0x1002835, 21666 }, { 0x1002836, 21684 }, { 0x1002837, 21702 }, { 0x1002838, 21721 }, { 0x1002839, 21738 }, { 0x100283a, 21756 }, { 0x100283b, 21774 }, { 0x100283c, 21793 }, { 0x100283d, 21811 }, { 0x100283e, 21830 }, { 0x100283f, 21849 }, { 0x1002840, 21869 }, { 0x1002841, 21884 }, { 0x1002842, 21900 }, { 0x1002843, 21916 }, { 0x1002844, 21933 }, { 0x1002845, 21949 }, { 0x1002846, 21966 }, { 0x1002847, 21983 }, { 0x1002848, 22001 }, { 0x1002849, 22017 }, { 0x100284a, 22034 }, { 0x100284b, 22051 }, { 0x100284c, 22069 }, { 0x100284d, 22086 }, { 0x100284e, 22104 }, { 0x100284f, 22122 }, { 0x1002850, 22141 }, { 0x1002851, 22157 }, { 0x1002852, 22174 }, { 0x1002853, 22191 }, { 0x1002854, 22209 }, { 0x1002855, 22226 }, { 0x1002856, 22244 }, { 0x1002857, 22262 }, { 0x1002858, 22281 }, { 0x1002859, 22298 }, { 0x100285a, 22316 }, { 0x100285b, 22334 }, { 0x100285c, 22353 }, { 0x100285d, 22371 }, { 0x100285e, 22390 }, { 0x100285f, 22409 }, { 0x1002860, 22429 }, { 0x1002861, 22445 }, { 0x1002862, 22462 }, { 0x1002863, 22479 }, { 0x1002864, 22497 }, { 0x1002865, 22514 }, { 0x1002866, 22532 }, { 0x1002867, 22550 }, { 0x1002868, 22569 }, { 0x1002869, 22586 }, { 0x100286a, 22604 }, { 0x100286b, 22622 }, { 0x100286c, 22641 }, { 0x100286d, 22659 }, { 0x100286e, 22678 }, { 0x100286f, 22697 }, { 0x1002870, 22717 }, { 0x1002871, 22734 }, { 0x1002872, 22752 }, { 0x1002873, 22770 }, { 0x1002874, 22789 }, { 0x1002875, 22807 }, { 0x1002876, 22826 }, { 0x1002877, 22845 }, { 0x1002878, 22865 }, { 0x1002879, 22883 }, { 0x100287a, 22902 }, { 0x100287b, 22921 }, { 0x100287c, 22941 }, { 0x100287d, 22960 }, { 0x100287e, 22980 }, { 0x100287f, 23000 }, { 0x1002880, 23021 }, { 0x1002881, 23036 }, { 0x1002882, 23052 }, { 0x1002883, 23068 }, { 0x1002884, 23085 }, { 0x1002885, 23101 }, { 0x1002886, 23118 }, { 0x1002887, 23135 }, { 0x1002888, 23153 }, { 0x1002889, 23169 }, { 0x100288a, 23186 }, { 0x100288b, 23203 }, { 0x100288c, 23221 }, { 0x100288d, 23238 }, { 0x100288e, 23256 }, { 0x100288f, 23274 }, { 0x1002890, 23293 }, { 0x1002891, 23309 }, { 0x1002892, 23326 }, { 0x1002893, 23343 }, { 0x1002894, 23361 }, { 0x1002895, 23378 }, { 0x1002896, 23396 }, { 0x1002897, 23414 }, { 0x1002898, 23433 }, { 0x1002899, 23450 }, { 0x100289a, 23468 }, { 0x100289b, 23486 }, { 0x100289c, 23505 }, { 0x100289d, 23523 }, { 0x100289e, 23542 }, { 0x100289f, 23561 }, { 0x10028a0, 23581 }, { 0x10028a1, 23597 }, { 0x10028a2, 23614 }, { 0x10028a3, 23631 }, { 0x10028a4, 23649 }, { 0x10028a5, 23666 }, { 0x10028a6, 23684 }, { 0x10028a7, 23702 }, { 0x10028a8, 23721 }, { 0x10028a9, 23738 }, { 0x10028aa, 23756 }, { 0x10028ab, 23774 }, { 0x10028ac, 23793 }, { 0x10028ad, 23811 }, { 0x10028ae, 23830 }, { 0x10028af, 23849 }, { 0x10028b0, 23869 }, { 0x10028b1, 23886 }, { 0x10028b2, 23904 }, { 0x10028b3, 23922 }, { 0x10028b4, 23941 }, { 0x10028b5, 23959 }, { 0x10028b6, 23978 }, { 0x10028b7, 23997 }, { 0x10028b8, 24017 }, { 0x10028b9, 24035 }, { 0x10028ba, 24054 }, { 0x10028bb, 24073 }, { 0x10028bc, 24093 }, { 0x10028bd, 24112 }, { 0x10028be, 24132 }, { 0x10028bf, 24152 }, { 0x10028c0, 24173 }, { 0x10028c1, 24189 }, { 0x10028c2, 24206 }, { 0x10028c3, 24223 }, { 0x10028c4, 24241 }, { 0x10028c5, 24258 }, { 0x10028c6, 24276 }, { 0x10028c7, 24294 }, { 0x10028c8, 24313 }, { 0x10028c9, 24330 }, { 0x10028ca, 24348 }, { 0x10028cb, 24366 }, { 0x10028cc, 24385 }, { 0x10028cd, 24403 }, { 0x10028ce, 24422 }, { 0x10028cf, 24441 }, { 0x10028d0, 24461 }, { 0x10028d1, 24478 }, { 0x10028d2, 24496 }, { 0x10028d3, 24514 }, { 0x10028d4, 24533 }, { 0x10028d5, 24551 }, { 0x10028d6, 24570 }, { 0x10028d7, 24589 }, { 0x10028d8, 24609 }, { 0x10028d9, 24627 }, { 0x10028da, 24646 }, { 0x10028db, 24665 }, { 0x10028dc, 24685 }, { 0x10028dd, 24704 }, { 0x10028de, 24724 }, { 0x10028df, 24744 }, { 0x10028e0, 24765 }, { 0x10028e1, 24782 }, { 0x10028e2, 24800 }, { 0x10028e3, 24818 }, { 0x10028e4, 24837 }, { 0x10028e5, 24855 }, { 0x10028e6, 24874 }, { 0x10028e7, 24893 }, { 0x10028e8, 24913 }, { 0x10028e9, 24931 }, { 0x10028ea, 24950 }, { 0x10028eb, 24969 }, { 0x10028ec, 24989 }, { 0x10028ed, 25008 }, { 0x10028ee, 25028 }, { 0x10028ef, 25048 }, { 0x10028f0, 25069 }, { 0x10028f1, 25087 }, { 0x10028f2, 25106 }, { 0x10028f3, 25125 }, { 0x10028f4, 25145 }, { 0x10028f5, 25164 }, { 0x10028f6, 25184 }, { 0x10028f7, 25204 }, { 0x10028f8, 25225 }, { 0x10028f9, 25244 }, { 0x10028fa, 25264 }, { 0x10028fb, 25284 }, { 0x10028fc, 25305 }, { 0x10028fd, 25325 }, { 0x10028fe, 25346 }, { 0x10028ff, 25367 }, { 0x1008fe01, 25389 }, { 0x1008fe02, 25401 }, { 0x1008fe03, 25413 }, { 0x1008fe04, 25425 }, { 0x1008fe05, 25437 }, { 0x1008fe06, 25449 }, { 0x1008fe07, 25461 }, { 0x1008fe08, 25473 }, { 0x1008fe09, 25485 }, { 0x1008fe0a, 25497 }, { 0x1008fe0b, 25510 }, { 0x1008fe0c, 25523 }, { 0x1008fe20, 25536 }, { 0x1008fe21, 25543 }, { 0x1008fe22, 25553 }, { 0x1008fe23, 25564 }, { 0x1008fe24, 25575 }, { 0x1008fe25, 25589 }, { 0x1008ff01, 25601 }, { 0x1008ff02, 25610 }, { 0x1008ff03, 25626 }, { 0x1008ff04, 25644 }, { 0x1008ff05, 25658 }, { 0x1008ff06, 25674 }, { 0x1008ff10, 25692 }, { 0x1008ff11, 25700 }, { 0x1008ff12, 25717 }, { 0x1008ff13, 25727 }, { 0x1008ff14, 25744 }, { 0x1008ff15, 25754 }, { 0x1008ff16, 25764 }, { 0x1008ff17, 25774 }, { 0x1008ff18, 25784 }, { 0x1008ff19, 25793 }, { 0x1008ff1a, 25798 }, { 0x1008ff1b, 25804 }, { 0x1008ff1c, 25811 }, { 0x1008ff1d, 25823 }, { 0x1008ff1e, 25834 }, { 0x1008ff1f, 25839 }, { 0x1008ff20, 25848 }, { 0x1008ff21, 25857 }, { 0x1008ff22, 25867 }, { 0x1008ff23, 25882 }, { 0x1008ff24, 25891 }, { 0x1008ff25, 25902 }, { 0x1008ff26, 25914 }, { 0x1008ff27, 25919 }, { 0x1008ff28, 25927 }, { 0x1008ff29, 25932 }, { 0x1008ff2a, 25940 }, { 0x1008ff2b, 25949 }, { 0x1008ff2c, 25956 }, { 0x1008ff2d, 25962 }, { 0x1008ff2e, 25974 }, { 0x1008ff2f, 25978 }, { 0x1008ff30, 25984 }, { 0x1008ff31, 25994 }, { 0x1008ff32, 26005 }, { 0x1008ff33, 26016 }, { 0x1008ff34, 26027 }, { 0x1008ff35, 26038 }, { 0x1008ff36, 26048 }, { 0x1008ff37, 26053 }, { 0x1008ff38, 26061 }, { 0x1008ff39, 26069 }, { 0x1008ff3a, 26081 }, { 0x1008ff3b, 26090 }, { 0x1008ff3c, 26107 }, { 0x1008ff3d, 26115 }, { 0x1008ff3e, 26125 }, { 0x1008ff3f, 26137 }, { 0x1008ff40, 26149 }, { 0x1008ff41, 26157 }, { 0x1008ff42, 26165 }, { 0x1008ff43, 26173 }, { 0x1008ff44, 26181 }, { 0x1008ff45, 26189 }, { 0x1008ff46, 26197 }, { 0x1008ff47, 26205 }, { 0x1008ff48, 26213 }, { 0x1008ff49, 26221 }, { 0x1008ff4a, 26229 }, { 0x1008ff4b, 26237 }, { 0x1008ff4c, 26245 }, { 0x1008ff4d, 26253 }, { 0x1008ff4e, 26261 }, { 0x1008ff4f, 26269 }, { 0x1008ff50, 26277 }, { 0x1008ff51, 26293 }, { 0x1008ff52, 26310 }, { 0x1008ff53, 26315 }, { 0x1008ff55, 26318 }, { 0x1008ff56, 26330 }, { 0x1008ff57, 26336 }, { 0x1008ff58, 26341 }, { 0x1008ff59, 26345 }, { 0x1008ff5a, 26353 }, { 0x1008ff5b, 26357 }, { 0x1008ff5c, 26367 }, { 0x1008ff5d, 26373 }, { 0x1008ff5e, 26382 }, { 0x1008ff5f, 26387 }, { 0x1008ff60, 26390 }, { 0x1008ff61, 26397 }, { 0x1008ff62, 26404 }, { 0x1008ff63, 26411 }, { 0x1008ff65, 26419 }, { 0x1008ff66, 26426 }, { 0x1008ff67, 26433 }, { 0x1008ff68, 26441 }, { 0x1008ff69, 26445 }, { 0x1008ff6a, 26450 }, { 0x1008ff6b, 26461 }, { 0x1008ff6c, 26466 }, { 0x1008ff6d, 26473 }, { 0x1008ff6e, 26479 }, { 0x1008ff72, 26485 }, { 0x1008ff73, 26491 }, { 0x1008ff74, 26498 }, { 0x1008ff75, 26512 }, { 0x1008ff76, 26523 }, { 0x1008ff77, 26534 }, { 0x1008ff78, 26539 }, { 0x1008ff79, 26548 }, { 0x1008ff7a, 26559 }, { 0x1008ff7b, 26571 }, { 0x1008ff7c, 26576 }, { 0x1008ff7d, 26582 }, { 0x1008ff7e, 26594 }, { 0x1008ff7f, 26602 }, { 0x1008ff80, 26611 }, { 0x1008ff81, 26620 }, { 0x1008ff82, 26626 }, { 0x1008ff84, 26633 }, { 0x1008ff85, 26640 }, { 0x1008ff86, 26648 }, { 0x1008ff87, 26656 }, { 0x1008ff88, 26662 }, { 0x1008ff89, 26674 }, { 0x1008ff8a, 26679 }, { 0x1008ff8b, 26684 }, { 0x1008ff8c, 26691 }, { 0x1008ff8d, 26699 }, { 0x1008ff8e, 26704 }, { 0x1008ff8f, 26714 }, { 0x1008ff90, 26721 }, { 0x1008ff91, 26733 }, { 0x1008ff92, 26742 }, { 0x1008ff93, 26748 }, { 0x1008ff94, 26756 }, { 0x1008ff95, 26766 }, { 0x1008ff96, 26771 }, { 0x1008ff97, 26775 }, { 0x1008ff98, 26788 }, { 0x1008ff99, 26800 }, { 0x1008ff9a, 26816 }, { 0x1008ff9b, 26825 }, { 0x1008ff9c, 26841 }, { 0x1008ff9d, 26852 }, { 0x1008ff9e, 26862 }, { 0x1008ff9f, 26875 }, { 0x1008ffa0, 26880 }, { 0x1008ffa1, 26893 }, { 0x1008ffa2, 26898 }, { 0x1008ffa3, 26906 }, { 0x1008ffa4, 26910 }, { 0x1008ffa5, 26916 }, { 0x1008ffa6, 26923 }, { 0x1008ffa7, 26928 }, { 0x1008ffa8, 26936 }, { 0x1008ffa9, 26946 }, { 0x1008ffb0, 26961 }, { 0x1008ffb1, 26972 }, { 0x1008ffb2, 26984 }, { 0xffffff, 26997 } }; static const gdk_key gdk_keys_by_name[] = { { 0x000030, 140 }, { 0x000031, 142 }, { 0x000032, 144 }, { 0x000033, 146 }, { 0x00fd10, 11296 }, { 0x00fd0e, 11269 }, { 0x00fd05, 11168 }, { 0x00fd19, 11399 }, { 0x00fd15, 11356 }, { 0x00fd0f, 11279 }, { 0x00fd1c, 11447 }, { 0x00fd1a, 11417 }, { 0x00fd01, 11115 }, { 0x00fd1e, 11482 }, { 0x00fd06, 11181 }, { 0x00fd07, 11195 }, { 0x00fd1b, 11433 }, { 0x00fd02, 11130 }, { 0x00fd13, 11335 }, { 0x00fd12, 11325 }, { 0x00fd11, 11311 }, { 0x00fd04, 11157 }, { 0x00fd0a, 11232 }, { 0x00fd0b, 11241 }, { 0x00fd0c, 11250 }, { 0x00fd16, 11366 }, { 0x00fd1d, 11465 }, { 0x00fd09, 11222 }, { 0x00fd18, 11387 }, { 0x00fd08, 11211 }, { 0x00fd03, 11145 }, { 0x00fd14, 11346 }, { 0x00fd17, 11376 }, { 0x00fd0d, 11259 }, { 0x000034, 148 }, { 0x000035, 150 }, { 0x000036, 152 }, { 0x000037, 154 }, { 0x000038, 156 }, { 0x000039, 158 }, { 0x000041, 207 }, { 0x0000c6, 787 }, { 0x0000c1, 744 }, { 0x1001ea0, 19157 }, { 0x0001c3, 1489 }, { 0x1001eae, 19363 }, { 0x1001eb6, 19457 }, { 0x1001eb0, 19387 }, { 0x1001eb2, 19411 }, { 0x1001eb4, 19433 }, { 0x00fe70, 12738 }, { 0x00fe71, 12753 }, { 0x0000c2, 751 }, { 0x1001ea4, 19189 }, { 0x1001eac, 19323 }, { 0x1001ea6, 19223 }, { 0x1001ea8, 19257 }, { 0x1001eaa, 19289 }, { 0x1008ff39, 26069 }, { 0x0000c4, 770 }, { 0x0000c0, 737 }, { 0x1001ea2, 19177 }, { 0x00ffe9, 15064 }, { 0x00ffea, 15070 }, { 0x0003c0, 2084 }, { 0x0001a1, 1297 }, { 0x1008ff50, 26277 }, { 0x1008ff51, 26293 }, { 0x1000660, 17291 }, { 0x1000661, 17300 }, { 0x1000662, 17309 }, { 0x1000663, 17318 }, { 0x1000664, 17327 }, { 0x1000665, 17336 }, { 0x1000666, 17345 }, { 0x1000667, 17354 }, { 0x1000668, 17363 }, { 0x1000669, 17372 }, { 0x0005d9, 3237 }, { 0x0005c7, 3024 }, { 0x0005e9, 3376 }, { 0x0005c8, 3036 }, { 0x0005ac, 2864 }, { 0x0005d6, 3204 }, { 0x0005cf, 3123 }, { 0x0005ef, 3467 }, { 0x0005ec, 3422 }, { 0x1000688, 17456 }, { 0x10006cc, 17584 }, { 0x0005ee, 3454 }, { 0x0005eb, 3406 }, { 0x0005e1, 3276 }, { 0x10006d4, 17628 }, { 0x10006af, 17515 }, { 0x0005da, 3248 }, { 0x0005e7, 3344 }, { 0x0005cd, 3100 }, { 0x0005c1, 2915 }, { 0x1000654, 17253 }, { 0x1000655, 17272 }, { 0x0005c3, 2947 }, { 0x0005c4, 2966 }, { 0x0005c6, 3006 }, { 0x0005c5, 2984 }, { 0x0005e7, 3354 }, { 0x10006be, 17545 }, { 0x10006c1, 17568 }, { 0x0005cc, 3088 }, { 0x1000698, 17480 }, { 0x0005e3, 3298 }, { 0x0005f0, 3480 }, { 0x0005ed, 3438 }, { 0x10006a9, 17502 }, { 0x0005ce, 3111 }, { 0x0005e4, 3309 }, { 0x1000653, 17234 }, { 0x0005c2, 2928 }, { 0x0005e5, 3320 }, { 0x0005e6, 3332 }, { 0x10006ba, 17526 }, { 0x100067e, 17432 }, { 0x100066a, 17381 }, { 0x0005e2, 3287 }, { 0x0005bf, 2894 }, { 0x0005d1, 3146 }, { 0x1000691, 17468 }, { 0x0005d5, 3193 }, { 0x0005d3, 3168 }, { 0x0005bb, 2877 }, { 0x0005f1, 3493 }, { 0x0005d4, 3180 }, { 0x0005f2, 3507 }, { 0x1000670, 17396 }, { 0x00ff7e, 14373 }, { 0x0005d7, 3215 }, { 0x0005e0, 3261 }, { 0x1000686, 17443 }, { 0x0005ca, 3065 }, { 0x0005c9, 3047 }, { 0x0005d0, 3134 }, { 0x0005cb, 3076 }, { 0x1000679, 17420 }, { 0x10006a4, 17491 }, { 0x0005e8, 3365 }, { 0x0005ea, 3395 }, { 0x10006d2, 17611 }, { 0x0005d8, 3226 }, { 0x0005d2, 3156 }, { 0x0000c5, 781 }, { 0x1000538, 16110 }, { 0x1000531, 16022 }, { 0x1000532, 16035 }, { 0x1000549, 16328 }, { 0x1000534, 16061 }, { 0x1000541, 16225 }, { 0x1000537, 16099 }, { 0x1000556, 16492 }, { 0x1000542, 16238 }, { 0x1000533, 16048 }, { 0x1000545, 16279 }, { 0x1000540, 16213 }, { 0x100053b, 16147 }, { 0x100054b, 16353 }, { 0x1000554, 16469 }, { 0x100053f, 16200 }, { 0x100053d, 16174 }, { 0x100053c, 16160 }, { 0x1000544, 16266 }, { 0x1000546, 16291 }, { 0x1000555, 16481 }, { 0x100054a, 16341 }, { 0x1000553, 16455 }, { 0x100054c, 16365 }, { 0x1000550, 16416 }, { 0x100054d, 16377 }, { 0x1000547, 16303 }, { 0x1000543, 16252 }, { 0x1000539, 16122 }, { 0x100053e, 16187 }, { 0x1000551, 16428 }, { 0x100054f, 16402 }, { 0x100054e, 16389 }, { 0x1000548, 16316 }, { 0x1000552, 16441 }, { 0x1000535, 16073 }, { 0x1000536, 16087 }, { 0x100053a, 16134 }, { 0x100055b, 16524 }, { 0x100055c, 16556 }, { 0x100055a, 16504 }, { 0x1000568, 16748 }, { 0x1000561, 16660 }, { 0x1000562, 16673 }, { 0x100055d, 16588 }, { 0x1000579, 16966 }, { 0x1000564, 16699 }, { 0x1000571, 16863 }, { 0x1000567, 16737 }, { 0x100055c, 16572 }, { 0x1000586, 17130 }, { 0x1000589, 17163 }, { 0x1000572, 16876 }, { 0x1000563, 16686 }, { 0x1000575, 16917 }, { 0x1000570, 16851 }, { 0x100058a, 17200 }, { 0x100056b, 16785 }, { 0x100057b, 16991 }, { 0x1000584, 17107 }, { 0x100056f, 16838 }, { 0x100056d, 16812 }, { 0x1000587, 17142 }, { 0x100056c, 16798 }, { 0x1000574, 16904 }, { 0x1000576, 16929 }, { 0x1000585, 17119 }, { 0x100055e, 16626 }, { 0x100057a, 16979 }, { 0x1000583, 17093 }, { 0x100055e, 16642 }, { 0x100057c, 17003 }, { 0x1000580, 17054 }, { 0x100057d, 17015 }, { 0x100055d, 16601 }, { 0x1000577, 16941 }, { 0x100055b, 16540 }, { 0x1000573, 16890 }, { 0x1000569, 16760 }, { 0x100056e, 16825 }, { 0x1000581, 17066 }, { 0x100057f, 17040 }, { 0x1000589, 17182 }, { 0x100057e, 17027 }, { 0x1000578, 16954 }, { 0x1000582, 17079 }, { 0x1000565, 16711 }, { 0x100058a, 17216 }, { 0x1000566, 16725 }, { 0x100056a, 16772 }, { 0x0000c3, 763 }, { 0x00fe7a, 12919 }, { 0x1008ff9b, 26825 }, { 0x1008ff97, 26775 }, { 0x1008ff11, 25700 }, { 0x1008ff32, 26005 }, { 0x1008ffb2, 26984 }, { 0x1008ff12, 25717 }, { 0x1008ff17, 25774 }, { 0x1008ff31, 25994 }, { 0x1008ff14, 25744 }, { 0x1008ff16, 25764 }, { 0x1008ff13, 25727 }, { 0x1008ff99, 26800 }, { 0x1008ff1c, 25811 }, { 0x1008ff98, 26788 }, { 0x1008ff3e, 26125 }, { 0x1008ff15, 25754 }, { 0x1008ff8d, 26699 }, { 0x000042, 209 }, { 0x1001e02, 18927 }, { 0x1008ff26, 25914 }, { 0x1008ff3f, 26137 }, { 0x00ff08, 13669 }, { 0x1008ff93, 26748 }, { 0x00ff58, 14301 }, { 0x1008ffa6, 26923 }, { 0x1008ff94, 26756 }, { 0x1008ff52, 26310 }, { 0x00fe74, 12811 }, { 0x00ff6b, 14367 }, { 0x1008ff3b, 26090 }, { 0x0006be, 4079 }, { 0x0006ae, 3771 }, { 0x000043, 211 }, { 0x1008ff53, 26315 }, { 0x00fea2, 13061 }, { 0x00fea5, 13072 }, { 0x00fea4, 13068 }, { 0x0002c5, 1842 }, { 0x0001c6, 1503 }, { 0x1008ff1d, 25823 }, { 0x1008ff20, 25848 }, { 0x00ff69, 14355 }, { 0x00ffe5, 15029 }, { 0x0001c8, 1510 }, { 0x0000c7, 790 }, { 0x0002c6, 1852 }, { 0x00fea1, 13058 }, { 0x00ff0b, 13692 }, { 0x1008fe21, 25543 }, { 0x1008ff56, 26330 }, { 0x00ff37, 13986 }, { 0x10020a1, 20505 }, { 0x1008ff3d, 26115 }, { 0x1008ff22, 25867 }, { 0x00ffe3, 15009 }, { 0x00ffe4, 15019 }, { 0x1008ff57, 26336 }, { 0x10020a2, 20515 }, { 0x1008ff58, 26341 }, { 0x1008ff9c, 26841 }, { 0x0006e1, 4542 }, { 0x0006e2, 4553 }, { 0x0006fe, 4904 }, { 0x10004b6, 15768 }, { 0x10004b8, 15814 }, { 0x0006e4, 4578 }, { 0x0006bf, 4099 }, { 0x0006fc, 4878 }, { 0x0006e6, 4602 }, { 0x0006ec, 4678 }, { 0x0006ed, 4690 }, { 0x0006ee, 4702 }, { 0x10004a2, 15592 }, { 0x0006f2, 4749 }, { 0x0006f3, 4761 }, { 0x0006e7, 4614 }, { 0x1000492, 15422 }, { 0x0006e8, 4627 }, { 0x0006ff, 4917 }, { 0x10004b2, 15724 }, { 0x0006e9, 4639 }, { 0x0006e5, 4590 }, { 0x0006b3, 3854 }, { 0x10004e2, 15920 }, { 0x0006b8, 3953 }, { 0x0006eb, 4666 }, { 0x100049a, 15502 }, { 0x100049c, 15546 }, { 0x0006b9, 3976 }, { 0x0006ba, 4001 }, { 0x0006ef, 4714 }, { 0x10004e8, 15956 }, { 0x0006f0, 4725 }, { 0x10004d8, 15890 }, { 0x0006fb, 4865 }, { 0x0006fd, 4889 }, { 0x10004ba, 15862 }, { 0x0006ea, 4650 }, { 0x0006f8, 4821 }, { 0x0006f4, 4773 }, { 0x0006e3, 4565 }, { 0x0006f5, 4785 }, { 0x10004ee, 15986 }, { 0x10004ae, 15636 }, { 0x10004b0, 15676 }, { 0x0006f7, 4809 }, { 0x0006f1, 4737 }, { 0x0006f9, 4839 }, { 0x0006e0, 4530 }, { 0x0006fa, 4853 }, { 0x0006f6, 4796 }, { 0x1000496, 15456 }, { 0x0006c1, 4137 }, { 0x0006c2, 4148 }, { 0x0006de, 4499 }, { 0x10004b7, 15791 }, { 0x10004b9, 15838 }, { 0x0006c4, 4173 }, { 0x0006af, 3791 }, { 0x0006dc, 4473 }, { 0x0006c6, 4197 }, { 0x0006cc, 4273 }, { 0x0006cd, 4285 }, { 0x0006ce, 4297 }, { 0x10004a3, 15614 }, { 0x0006d2, 4344 }, { 0x0006d3, 4356 }, { 0x0006c7, 4209 }, { 0x1000493, 15439 }, { 0x0006c8, 4222 }, { 0x10004b3, 15746 }, { 0x0006df, 4512 }, { 0x0006c9, 4234 }, { 0x10004e3, 15938 }, { 0x0006c5, 4185 }, { 0x0006a3, 3546 }, { 0x0006a8, 3645 }, { 0x0006cb, 4261 }, { 0x100049b, 15524 }, { 0x100049d, 15569 }, { 0x0006a9, 3668 }, { 0x0006aa, 3693 }, { 0x0006cf, 4309 }, { 0x10004e9, 15971 }, { 0x0006d0, 4320 }, { 0x10004d9, 15905 }, { 0x0006db, 4460 }, { 0x0006dd, 4484 }, { 0x10004bb, 15876 }, { 0x0006ca, 4245 }, { 0x0006d8, 4416 }, { 0x0006d4, 4368 }, { 0x0006c3, 4160 }, { 0x0006d5, 4380 }, { 0x10004ef, 16004 }, { 0x10004af, 15656 }, { 0x10004b1, 15700 }, { 0x0006d7, 4404 }, { 0x0006d1, 4332 }, { 0x0006d9, 4434 }, { 0x0006c0, 4125 }, { 0x0006da, 4448 }, { 0x0006d6, 4391 }, { 0x1000497, 15479 }, { 0x000044, 213 }, { 0x1008ff5a, 26353 }, { 0x1001e0a, 18947 }, { 0x0001cf, 1532 }, { 0x00ffff, 15249 }, { 0x1008ff59, 26345 }, { 0x1008ff5b, 26357 }, { 0x10020ab, 20610 }, { 0x00ff54, 14263 }, { 0x0001d0, 1539 }, { 0x000045, 215 }, { 0x0003bd, 2076 }, { 0x0000d0, 877 }, { 0x10001b7, 15372 }, { 0x0003cc, 2100 }, { 0x0000c9, 806 }, { 0x1001eb8, 19487 }, { 0x0001cc, 1525 }, { 0x0000ca, 813 }, { 0x1001ebe, 19533 }, { 0x1001ec6, 19667 }, { 0x1001ec0, 19567 }, { 0x1001ec2, 19601 }, { 0x1001ec4, 19633 }, { 0x10020a0, 20497 }, { 0x0000cb, 825 }, { 0x0000c8, 799 }, { 0x1001eba, 19507 }, { 0x00ff2f, 13893 }, { 0x00ff30, 13904 }, { 0x1008ff2c, 25956 }, { 0x0003aa, 2003 }, { 0x00ff57, 14297 }, { 0x0001ca, 1517 }, { 0x00ff1b, 13731 }, { 0x0000d0, 873 }, { 0x1001ebc, 19519 }, { 0x0020ac, 11106 }, { 0x1008ff5c, 26367 }, { 0x00ff62, 14320 }, { 0x1008ff5d, 26373 }, { 0x000046, 217 }, { 0x00ffbe, 14780 }, { 0x00ffc7, 14807 }, { 0x00ffc8, 14811 }, { 0x00ffc9, 14818 }, { 0x00ffca, 14825 }, { 0x00ffcb, 14832 }, { 0x00ffcc, 14839 }, { 0x00ffcd, 14846 }, { 0x00ffce, 14853 }, { 0x00ffcf, 14860 }, { 0x00ffd0, 14867 }, { 0x00ffbf, 14783 }, { 0x00ffd1, 14874 }, { 0x00ffd2, 14882 }, { 0x00ffd3, 14889 }, { 0x00ffd4, 14896 }, { 0x00ffd5, 14903 }, { 0x00ffd6, 14910 }, { 0x00ffd7, 14917 }, { 0x00ffd8, 14924 }, { 0x00ffd9, 14931 }, { 0x00ffda, 14938 }, { 0x00ffc0, 14786 }, { 0x00ffdb, 14945 }, { 0x00ffdc, 14953 }, { 0x00ffdd, 14961 }, { 0x00ffde, 14969 }, { 0x00ffdf, 14977 }, { 0x00ffe0, 14985 }, { 0x00ffc1, 14789 }, { 0x00ffc2, 14792 }, { 0x00ffc3, 14795 }, { 0x00ffc4, 14798 }, { 0x00ffc5, 14801 }, { 0x00ffc6, 14804 }, { 0x10020a3, 20528 }, { 0x1001e1e, 18967 }, { 0x10006f0, 17644 }, { 0x10006f1, 17652 }, { 0x10006f2, 17660 }, { 0x10006f3, 17668 }, { 0x10006f4, 17676 }, { 0x10006f5, 17684 }, { 0x10006f6, 17692 }, { 0x10006f7, 17700 }, { 0x10006f8, 17708 }, { 0x10006f9, 17716 }, { 0x10006cc, 17601 }, { 0x1008ff30, 25984 }, { 0x1008ff3c, 26107 }, { 0x00ff68, 14350 }, { 0x00fed0, 13076 }, { 0x1008ff27, 25919 }, { 0x1008ff9d, 26852 }, { 0x1008ff9e, 26862 }, { 0x000047, 219 }, { 0x0002d5, 1864 }, { 0x1008ff5e, 26382 }, { 0x0002ab, 1775 }, { 0x10001e6, 15390 }, { 0x0003ab, 2011 }, { 0x0002d8, 1874 }, { 0x10010d0, 18420 }, { 0x10010d1, 18432 }, { 0x10010ea, 18759 }, { 0x10010ed, 18798 }, { 0x10010e9, 18745 }, { 0x10010ec, 18785 }, { 0x10010d3, 18458 }, { 0x10010d4, 18471 }, { 0x10010f6, 18915 }, { 0x10010d2, 18445 }, { 0x10010e6, 18704 }, { 0x10010f0, 18839 }, { 0x10010f4, 18889 }, { 0x10010f1, 18852 }, { 0x10010f2, 18864 }, { 0x10010f5, 18902 }, { 0x10010d8, 18522 }, { 0x10010ef, 18825 }, { 0x10010eb, 18772 }, { 0x10010d9, 18534 }, { 0x10010e5, 18690 }, { 0x10010da, 18547 }, { 0x10010db, 18560 }, { 0x10010dc, 18573 }, { 0x10010dd, 18586 }, { 0x10010de, 18598 }, { 0x10010e4, 18676 }, { 0x10010e7, 18718 }, { 0x10010e0, 18625 }, { 0x10010e1, 18638 }, { 0x10010e8, 18731 }, { 0x10010d7, 18509 }, { 0x10010e2, 18651 }, { 0x10010e3, 18664 }, { 0x10010d5, 18483 }, { 0x10010f3, 18877 }, { 0x10010ee, 18812 }, { 0x10010d6, 18496 }, { 0x10010df, 18611 }, { 0x1008ff5f, 26387 }, { 0x0007c1, 5384 }, { 0x0007a1, 4935 }, { 0x0007c2, 5396 }, { 0x0007d7, 5632 }, { 0x0007c4, 5419 }, { 0x0007c5, 5431 }, { 0x0007a2, 4953 }, { 0x0007c7, 5456 }, { 0x0007a3, 4973 }, { 0x0007c3, 5407 }, { 0x0007c9, 5478 }, { 0x0007a4, 4989 }, { 0x0007a5, 5006 }, { 0x0007a5, 5026 }, { 0x0007ca, 5489 }, { 0x0007cb, 5501 }, { 0x0007cb, 5514 }, { 0x0007cc, 5526 }, { 0x0007cd, 5535 }, { 0x0007d9, 5652 }, { 0x0007ab, 5107 }, { 0x0007cf, 5553 }, { 0x0007a7, 5045 }, { 0x0007d6, 5622 }, { 0x0007d0, 5567 }, { 0x0007d8, 5642 }, { 0x0007d1, 5576 }, { 0x0007d2, 5586 }, { 0x0007d4, 5598 }, { 0x0007c8, 5466 }, { 0x0007d5, 5608 }, { 0x0007a8, 5065 }, { 0x0007a9, 5085 }, { 0x0007ce, 5544 }, { 0x0007c6, 5445 }, { 0x0007ae, 5125 }, { 0x0007e1, 5664 }, { 0x0007b1, 5161 }, { 0x0007e2, 5676 }, { 0x0007f7, 5934 }, { 0x0007e4, 5699 }, { 0x0007e5, 5711 }, { 0x0007b2, 5179 }, { 0x0007e7, 5736 }, { 0x0007b3, 5199 }, { 0x0007f3, 5878 }, { 0x0007e3, 5687 }, { 0x0007af, 5146 }, { 0x0007e9, 5758 }, { 0x0007b4, 5215 }, { 0x0007b6, 5251 }, { 0x0007b5, 5232 }, { 0x0007ea, 5769 }, { 0x0007eb, 5781 }, { 0x0007eb, 5794 }, { 0x0007ec, 5806 }, { 0x0007ed, 5815 }, { 0x0007f9, 5954 }, { 0x0007bb, 5366 }, { 0x0007ef, 5833 }, { 0x0007b7, 5276 }, { 0x0007f6, 5924 }, { 0x0007f0, 5847 }, { 0x0007f8, 5944 }, { 0x0007f1, 5856 }, { 0x0007f2, 5866 }, { 0x00ff7e, 14387 }, { 0x0007f4, 5900 }, { 0x0007e8, 5746 }, { 0x0007f5, 5910 }, { 0x0007b8, 5296 }, { 0x0007ba, 5338 }, { 0x0007b9, 5316 }, { 0x0007ee, 5824 }, { 0x0007e6, 5725 }, { 0x1008ffa4, 26910 }, { 0x000048, 221 }, { 0x00ff31, 13916 }, { 0x000ebf, 10145 }, { 0x000ec0, 10154 }, { 0x000ef6, 10986 }, { 0x000ef7, 10999 }, { 0x00ff39, 14040 }, { 0x000eba, 10078 }, { 0x00ff37, 13996 }, { 0x000ea7, 9771 }, { 0x000ec4, 10195 }, { 0x000ec3, 10185 }, { 0x000ed1, 10325 }, { 0x00ff33, 13936 }, { 0x00ff34, 13947 }, { 0x000ebe, 10132 }, { 0x000ed3, 10345 }, { 0x000eb7, 10034 }, { 0x000eea, 10750 }, { 0x000eda, 10466 }, { 0x000eee, 10812 }, { 0x000ee8, 10720 }, { 0x000ee9, 10735 }, { 0x000eeb, 10765 }, { 0x000ed4, 10354 }, { 0x000ed6, 10391 }, { 0x000ef9, 11030 }, { 0x000ee3, 10638 }, { 0x000ed7, 10411 }, { 0x000ed9, 10446 }, { 0x000ed8, 10426 }, { 0x000ef8, 11013 }, { 0x000eed, 10796 }, { 0x000ee4, 10653 }, { 0x000ee5, 10668 }, { 0x000edb, 10482 }, { 0x000ee2, 10618 }, { 0x000edc, 10497 }, { 0x000edd, 10518 }, { 0x000ee1, 10597 }, { 0x000ede, 10538 }, { 0x000edf, 10558 }, { 0x000ee0, 10577 }, { 0x000ee6, 10687 }, { 0x000ed5, 10370 }, { 0x000ee7, 10701 }, { 0x000eec, 10781 }, { 0x000efa, 11057 }, { 0x00ff35, 13960 }, { 0x00ff38, 14026 }, { 0x000eb8, 10047 }, { 0x000ebb, 10091 }, { 0x000ea1, 9671 }, { 0x000ea3, 9704 }, { 0x000ef3, 10916 }, { 0x000eb1, 9944 }, { 0x00ff3d, 14125 }, { 0x000ea4, 9722 }, { 0x000ea6, 9753 }, { 0x000ea5, 9735 }, { 0x000ec7, 10225 }, { 0x000eca, 10255 }, { 0x000ef2, 10901 }, { 0x000ebd, 10118 }, { 0x000eb2, 9957 }, { 0x000eb4, 9988 }, { 0x00ff3b, 14069 }, { 0x00ff3a, 14053 }, { 0x00ff3e, 14177 }, { 0x000ea9, 9804 }, { 0x000eb0, 9926 }, { 0x000eaa, 9817 }, { 0x000eab, 9836 }, { 0x000eaf, 9907 }, { 0x000eac, 9854 }, { 0x000ead, 9872 }, { 0x000eae, 9889 }, { 0x000eef, 10827 }, { 0x00ff36, 13972 }, { 0x00ff3c, 14086 }, { 0x000eb5, 10005 }, { 0x00ff3f, 14229 }, { 0x000ea8, 9785 }, { 0x000eb9, 10060 }, { 0x000ea2, 9685 }, { 0x000eb3, 9970 }, { 0x000eb6, 10017 }, { 0x00ff32, 13923 }, { 0x000ef0, 10851 }, { 0x000ef4, 10941 }, { 0x000ef1, 10876 }, { 0x000ebc, 10105 }, { 0x000ecc, 10275 }, { 0x000ec8, 10234 }, { 0x000ec9, 10244 }, { 0x000ece, 10295 }, { 0x000ecd, 10284 }, { 0x000ecf, 10305 }, { 0x000ec1, 10164 }, { 0x000ec2, 10174 }, { 0x000ec6, 10215 }, { 0x000ec5, 10204 }, { 0x000ed2, 10335 }, { 0x000ecb, 10265 }, { 0x000ed0, 10315 }, { 0x000ef5, 10967 }, { 0x00ff7e, 14400 }, { 0x00ff29, 13833 }, { 0x0002a6, 1753 }, { 0x00ff7e, 14414 }, { 0x00ff6a, 14362 }, { 0x00ff23, 13763 }, { 0x00ff23, 13770 }, { 0x1008ffa8, 26936 }, { 0x00ff25, 13789 }, { 0x00ff27, 13807 }, { 0x1008ff37, 26053 }, { 0x00ff50, 14244 }, { 0x1008ff18, 25784 }, { 0x1008ff3a, 26081 }, { 0x0002a1, 1745 }, { 0x00ffed, 15092 }, { 0x00ffee, 15100 }, { 0x000049, 223 }, { 0x00fe33, 12195 }, { 0x00fe30, 12128 }, { 0x00fe31, 12153 }, { 0x00fe32, 12181 }, { 0x00fe34, 12213 }, { 0x00fe2f, 12107 }, { 0x00fe2c, 12045 }, { 0x00fe2d, 12066 }, { 0x00fe2e, 12088 }, { 0x00fe0c, 11670 }, { 0x00fe0d, 11686 }, { 0x00fe06, 11569 }, { 0x00fe07, 11585 }, { 0x00ff7e, 14428 }, { 0x00fe0e, 11707 }, { 0x00fe0f, 11722 }, { 0x00fe20, 11792 }, { 0x00fe02, 11502 }, { 0x00fe04, 11536 }, { 0x00fe05, 11553 }, { 0x00fe03, 11519 }, { 0x00fe12, 11759 }, { 0x00fe13, 11776 }, { 0x00fe11, 11742 }, { 0x00fe01, 11493 }, { 0x00fe22, 11822 }, { 0x00fe21, 11805 }, { 0x00fe08, 11600 }, { 0x00fe09, 11615 }, { 0x00fe24, 11861 }, { 0x00fe23, 11841 }, { 0x00fe25, 11883 }, { 0x00fe26, 11906 }, { 0x00fe0a, 11635 }, { 0x00fe0b, 11650 }, { 0x00fe2b, 12020 }, { 0x00fe29, 11971 }, { 0x00fe2a, 11995 }, { 0x00fe27, 11930 }, { 0x00fe28, 11950 }, { 0x0002a9, 1765 }, { 0x0000cd, 843 }, { 0x1001eca, 19719 }, { 0x100012c, 15256 }, { 0x0000ce, 850 }, { 0x0000cf, 862 }, { 0x0000cc, 836 }, { 0x1001ec8, 19707 }, { 0x0003cf, 2110 }, { 0x00ff63, 14328 }, { 0x0003c7, 2092 }, { 0x0003a5, 1987 }, { 0x00004a, 225 }, { 0x0002ac, 1782 }, { 0x00004b, 227 }, { 0x00ffb0, 14721 }, { 0x00ffb1, 14726 }, { 0x00ffb2, 14731 }, { 0x00ffb3, 14736 }, { 0x00ffb4, 14741 }, { 0x00ffb5, 14746 }, { 0x00ffb6, 14751 }, { 0x00ffb7, 14756 }, { 0x00ffb8, 14761 }, { 0x00ffb9, 14766 }, { 0x00ffab, 14668 }, { 0x00ff9d, 14627 }, { 0x00ffae, 14700 }, { 0x00ff9f, 14646 }, { 0x00ffaf, 14711 }, { 0x00ff99, 14571 }, { 0x00ff9c, 14620 }, { 0x00ff8d, 14507 }, { 0x00ffbd, 14771 }, { 0x00ff91, 14516 }, { 0x00ff92, 14522 }, { 0x00ff93, 14528 }, { 0x00ff94, 14534 }, { 0x00ff95, 14540 }, { 0x00ff9e, 14636 }, { 0x00ff96, 14548 }, { 0x00ffaa, 14656 }, { 0x00ff9b, 14599 }, { 0x00ff9b, 14607 }, { 0x00ff9a, 14579 }, { 0x00ff9a, 14590 }, { 0x00ff98, 14562 }, { 0x00ffac, 14675 }, { 0x00ff80, 14491 }, { 0x00ffad, 14688 }, { 0x00ff89, 14500 }, { 0x00ff97, 14556 }, { 0x00ff2d, 13872 }, { 0x00ff2e, 13882 }, { 0x00ff21, 13748 }, { 0x00ff37, 14013 }, { 0x00ff26, 13798 }, { 0x1008ff06, 25674 }, { 0x1008ff05, 25658 }, { 0x1008ff04, 25644 }, { 0x0003d3, 2135 }, { 0x000eff, 11078 }, { 0x00004c, 229 }, { 0x00ffc8, 14815 }, { 0x00ffd1, 14878 }, { 0x00ffc9, 14822 }, { 0x00ffca, 14829 }, { 0x00ffcb, 14836 }, { 0x00ffcc, 14843 }, { 0x00ffcd, 14850 }, { 0x00ffce, 14857 }, { 0x00ffcf, 14864 }, { 0x00ffd0, 14871 }, { 0x0001c5, 1496 }, { 0x00fed4, 13137 }, { 0x1008ff40, 26149 }, { 0x1008ff41, 26157 }, { 0x1008ff42, 26165 }, { 0x1008ff43, 26173 }, { 0x1008ff44, 26181 }, { 0x1008ff45, 26189 }, { 0x1008ff46, 26197 }, { 0x1008ff47, 26205 }, { 0x1008ff48, 26213 }, { 0x1008ff49, 26221 }, { 0x1008ff4a, 26229 }, { 0x1008ff4b, 26237 }, { 0x1008ff4c, 26245 }, { 0x1008ff4d, 26253 }, { 0x1008ff4e, 26261 }, { 0x1008ff4f, 26269 }, { 0x1001e36, 18987 }, { 0x0001a5, 1319 }, { 0x0003a6, 1994 }, { 0x00ff51, 14249 }, { 0x1008ff35, 26038 }, { 0x00ff0a, 13683 }, { 0x10020a4, 20539 }, { 0x1008fe25, 25589 }, { 0x1008ff61, 26397 }, { 0x1008fe24, 25575 }, { 0x0001a3, 1311 }, { 0x00004d, 231 }, { 0x1001e40, 19007 }, { 0x0006b5, 3891 }, { 0x0006b2, 3840 }, { 0x0006bc, 4039 }, { 0x0006a5, 3583 }, { 0x0006a2, 3532 }, { 0x0006ac, 3731 }, { 0x00ff3e, 14202 }, { 0x1008ff19, 25793 }, { 0x1008ff90, 26721 }, { 0x1008ff62, 26404 }, { 0x00ff2c, 13865 }, { 0x1008ff63, 26411 }, { 0x1008ff1e, 25834 }, { 0x00ff67, 14345 }, { 0x1008ff65, 26419 }, { 0x1008ff66, 26426 }, { 0x1008ff8e, 26704 }, { 0x00ffe7, 15050 }, { 0x00ffe8, 15057 }, { 0x10020a5, 20548 }, { 0x1008ff01, 25601 }, { 0x00ff7e, 14456 }, { 0x1008ff03, 25626 }, { 0x1008ff02, 25610 }, { 0x00fe77, 12864 }, { 0x00fe76, 12847 }, { 0x00ff22, 13754 }, { 0x00ff20, 13738 }, { 0x00ff3d, 14150 }, { 0x1008ff92, 26742 }, { 0x1008ff33, 26016 }, { 0x1008ff67, 26433 }, { 0x00004e, 233 }, { 0x0001d1, 1547 }, { 0x10020a6, 20557 }, { 0x0001d2, 1554 }, { 0x0003d1, 2118 }, { 0x1008ff68, 26441 }, { 0x10020aa, 20596 }, { 0x1008ff69, 26445 }, { 0x00ff56, 14292 }, { 0x1008fe22, 25553 }, { 0x00fed2, 13117 }, { 0x0000d1, 881 }, { 0x00ff7f, 14482 }, { 0x00004f, 235 }, { 0x0013bc, 11089 }, { 0x0000d3, 895 }, { 0x100019f, 15324 }, { 0x1001ecc, 19739 }, { 0x10001d1, 15376 }, { 0x0000d4, 902 }, { 0x1001ed0, 19771 }, { 0x1001ed8, 19905 }, { 0x1001ed2, 19805 }, { 0x1001ed4, 19839 }, { 0x1001ed6, 19871 }, { 0x0000d6, 921 }, { 0x0001d5, 1561 }, { 0x1008ff6a, 26450 }, { 0x0000d2, 888 }, { 0x1001ece, 19759 }, { 0x10001a0, 15332 }, { 0x1001eda, 19945 }, { 0x1001ee2, 20031 }, { 0x1001edc, 19967 }, { 0x1001ede, 19989 }, { 0x1001ee0, 20009 }, { 0x0003d2, 2127 }, { 0x0000d8, 941 }, { 0x1008ff6b, 26461 }, { 0x1008ff38, 26061 }, { 0x1008ff6c, 26466 }, { 0x0000d8, 950 }, { 0x0000d5, 914 }, { 0x00fe78, 12887 }, { 0x00fe79, 12903 }, { 0x000050, 237 }, { 0x1001e56, 19027 }, { 0x00ff56, 14282 }, { 0x00ff55, 14268 }, { 0x1008ff6d, 26473 }, { 0x00ff13, 13705 }, { 0x10020a7, 20567 }, { 0x1008ff6e, 26479 }, { 0x1008ff91, 26733 }, { 0x00fefa, 13596 }, { 0x00fee9, 13311 }, { 0x00feea, 13327 }, { 0x00feeb, 13343 }, { 0x00feec, 13359 }, { 0x00feed, 13375 }, { 0x00fee8, 13291 }, { 0x00feef, 13413 }, { 0x00fef0, 13431 }, { 0x00fef1, 13449 }, { 0x00fef2, 13467 }, { 0x00fef3, 13485 }, { 0x00feee, 13391 }, { 0x00fefb, 13615 }, { 0x00fefc, 13635 }, { 0x00fee3, 13212 }, { 0x00fee6, 13256 }, { 0x00fee7, 13273 }, { 0x00fef5, 13521 }, { 0x00fef6, 13535 }, { 0x00fef7, 13549 }, { 0x00fef8, 13563 }, { 0x00fefd, 13655 }, { 0x00fef4, 13503 }, { 0x00fef9, 13577 }, { 0x00fee0, 13174 }, { 0x00fee1, 13187 }, { 0x00fee2, 13201 }, { 0x00fee4, 13225 }, { 0x00fee5, 13240 }, { 0x1008ff21, 25857 }, { 0x1008ff2a, 25940 }, { 0x1008fe23, 25564 }, { 0x00fed1, 13097 }, { 0x00ff3e, 14211 }, { 0x00ff61, 14314 }, { 0x00ff55, 14276 }, { 0x000051, 239 }, { 0x000052, 241 }, { 0x00ffd2, 14886 }, { 0x00ffdb, 14949 }, { 0x00ffdc, 14957 }, { 0x00ffdd, 14965 }, { 0x00ffde, 14973 }, { 0x00ffdf, 14981 }, { 0x00ffe0, 14989 }, { 0x00ffd3, 14893 }, { 0x00ffd4, 14900 }, { 0x00ffd5, 14907 }, { 0x00ffd6, 14914 }, { 0x00ffd7, 14921 }, { 0x00ffd8, 14928 }, { 0x00ffd9, 14935 }, { 0x00ffda, 14942 }, { 0x0001c0, 1482 }, { 0x0001d8, 1574 }, { 0x0003a3, 1978 }, { 0x1008ffa3, 26906 }, { 0x00ff66, 14340 }, { 0x1008ff29, 25932 }, { 0x1008ff73, 26491 }, { 0x00fe72, 12777 }, { 0x1008ff72, 26485 }, { 0x00ff0d, 13698 }, { 0x00ff53, 14257 }, { 0x1008ff24, 25891 }, { 0x1008ff25, 25902 }, { 0x1008ff23, 25882 }, { 0x00ff24, 13782 }, { 0x1008ff74, 26498 }, { 0x1008ff76, 26523 }, { 0x1008ff75, 26512 }, { 0x10020a8, 20578 }, { 0x000053, 243 }, { 0x100018f, 15318 }, { 0x1001e60, 19047 }, { 0x0001a6, 1326 }, { 0x1008ff77, 26534 }, { 0x0001a9, 1333 }, { 0x0001aa, 1340 }, { 0x0002de, 1893 }, { 0x1008ff2d, 25962 }, { 0x1008ff7a, 26559 }, { 0x1008ff79, 26548 }, { 0x1008ff78, 26539 }, { 0x00ff14, 13711 }, { 0x1008ff1b, 25804 }, { 0x00ff60, 14307 }, { 0x1008ffa0, 26880 }, { 0x1008ff7b, 26571 }, { 0x0006b1, 3828 }, { 0x0006bf, 4113 }, { 0x0006b8, 3965 }, { 0x0006b9, 3989 }, { 0x0006ba, 4014 }, { 0x0006bb, 4026 }, { 0x0006a1, 3520 }, { 0x0006af, 3805 }, { 0x0006a8, 3657 }, { 0x0006a9, 3681 }, { 0x0006aa, 3706 }, { 0x0006ab, 3718 }, { 0x00ffe1, 14993 }, { 0x00ffe6, 15039 }, { 0x00ffe2, 15001 }, { 0x1008ff36, 26048 }, { 0x00ff3c, 14109 }, { 0x1000d85, 17740 }, { 0x1000d86, 17747 }, { 0x1000dcf, 18252 }, { 0x1000d87, 17755 }, { 0x1000dd0, 18261 }, { 0x1000d88, 17763 }, { 0x1000dd1, 18270 }, { 0x1000d93, 17851 }, { 0x1000ddb, 18340 }, { 0x1000dca, 18244 }, { 0x1000d96, 17874 }, { 0x1000dde, 18366 }, { 0x1000db6, 18126 }, { 0x1000db7, 18134 }, { 0x1000da0, 17934 }, { 0x1000da1, 17942 }, { 0x1000da9, 18015 }, { 0x1000daa, 18024 }, { 0x1000daf, 18072 }, { 0x1000db0, 18081 }, { 0x1000d91, 17836 }, { 0x1000dd9, 18323 }, { 0x1000d92, 17843 }, { 0x1000dda, 18331 }, { 0x1000dc6, 18236 }, { 0x1000d9c, 17899 }, { 0x1000d9d, 17907 }, { 0x1000d83, 17732 }, { 0x1000dc4, 18219 }, { 0x1000d89, 17772 }, { 0x1000dd2, 18280 }, { 0x1000d8a, 17779 }, { 0x1000dd3, 18288 }, { 0x1000da2, 17951 }, { 0x1000da3, 17959 }, { 0x1000da5, 17977 }, { 0x1000d9a, 17882 }, { 0x1000d9b, 17890 }, { 0x1000df4, 18404 }, { 0x1000dbd, 18176 }, { 0x1000dc5, 18227 }, { 0x1000d8f, 17819 }, { 0x1000ddf, 18375 }, { 0x1000d90, 17827 }, { 0x1000df3, 18394 }, { 0x1000db8, 18143 }, { 0x1000db9, 18151 }, { 0x1000db1, 18091 }, { 0x1000dac, 18043 }, { 0x1000db3, 18099 }, { 0x1000d82, 17724 }, { 0x1000d9e, 17916 }, { 0x1000d9f, 17925 }, { 0x1000da6, 17987 }, { 0x1000dab, 18034 }, { 0x1000da4, 17968 }, { 0x1000d94, 17859 }, { 0x1000ddc, 18349 }, { 0x1000d95, 17866 }, { 0x1000ddd, 18357 }, { 0x1000db4, 18109 }, { 0x1000db5, 18117 }, { 0x1000dbb, 18168 }, { 0x1000d8d, 17802 }, { 0x1000d8e, 17810 }, { 0x1000dd8, 18314 }, { 0x1000df2, 18384 }, { 0x1000dc3, 18211 }, { 0x1000dc1, 18192 }, { 0x1000dc2, 18201 }, { 0x1000dad, 18053 }, { 0x1000dae, 18062 }, { 0x1000da7, 17996 }, { 0x1000da8, 18005 }, { 0x1000d8b, 17787 }, { 0x1000dd4, 18297 }, { 0x1000d8c, 17794 }, { 0x1000dd6, 18305 }, { 0x1000dc0, 18184 }, { 0x1000dba, 18160 }, { 0x1008ff2f, 25978 }, { 0x00fe73, 12795 }, { 0x1008ff7c, 26576 }, { 0x1008ff7d, 26582 }, { 0x1008ff10, 25692 }, { 0x1008ff1a, 25798 }, { 0x00fe75, 12829 }, { 0x1008ff28, 25927 }, { 0x1008ff9a, 26816 }, { 0x00ffeb, 15076 }, { 0x00ffec, 15084 }, { 0x1008ff7e, 26594 }, { 0x1008ffa7, 26928 }, { 0x1008fe01, 25389 }, { 0x1008fe0a, 25497 }, { 0x1008fe0b, 25510 }, { 0x1008fe0c, 25523 }, { 0x1008fe02, 25401 }, { 0x1008fe03, 25413 }, { 0x1008fe04, 25425 }, { 0x1008fe05, 25437 }, { 0x1008fe06, 25449 }, { 0x1008fe07, 25461 }, { 0x1008fe08, 25473 }, { 0x1008fe09, 25485 }, { 0x00ff15, 13723 }, { 0x000054, 245 }, { 0x0000de, 1007 }, { 0x00ff09, 13679 }, { 0x1001e6a, 19067 }, { 0x1008ff7f, 26602 }, { 0x0001ab, 1349 }, { 0x0001de, 1600 }, { 0x1008ff80, 26611 }, { 0x00fed5, 13157 }, { 0x000ddf, 9337 }, { 0x000dba, 8920 }, { 0x000da8, 8684 }, { 0x000daa, 8711 }, { 0x000da9, 8697 }, { 0x000dac, 8735 }, { 0x000dae, 8760 }, { 0x000db4, 8845 }, { 0x000dbd, 8959 }, { 0x000dbf, 8982 }, { 0x000dcb, 9116 }, { 0x000dce, 9150 }, { 0x000da2, 8602 }, { 0x000da5, 8643 }, { 0x000da3, 8615 }, { 0x000da4, 8629 }, { 0x000da6, 8656 }, { 0x000da1, 8591 }, { 0x000de5, 9420 }, { 0x000df7, 9633 }, { 0x000df5, 9610 }, { 0x000df6, 9621 }, { 0x000df9, 9659 }, { 0x000df1, 9561 }, { 0x000df8, 9646 }, { 0x000df3, 9587 }, { 0x000df4, 9599 }, { 0x000df2, 9574 }, { 0x000df0, 9549 }, { 0x000dcc, 9127 }, { 0x000dc5, 9049 }, { 0x000dc6, 9061 }, { 0x000deb, 9501 }, { 0x000de8, 9466 }, { 0x000dd1, 9190 }, { 0x000dde, 9314 }, { 0x000de7, 9451 }, { 0x000de9, 9477 }, { 0x000dea, 9489 }, { 0x000de6, 9437 }, { 0x000dc1, 9009 }, { 0x000da7, 8672 }, { 0x000ded, 9535 }, { 0x000db3, 8834 }, { 0x000db9, 8910 }, { 0x000dcd, 9140 }, { 0x000dcf, 9164 }, { 0x000dda, 9301 }, { 0x000dbe, 8969 }, { 0x000dbc, 8945 }, { 0x000dc0, 8993 }, { 0x000dbb, 8934 }, { 0x000dc3, 9030 }, { 0x000dc4, 9041 }, { 0x000dd0, 9179 }, { 0x000dd2, 9206 }, { 0x000de1, 9358 }, { 0x000de4, 9400 }, { 0x000de3, 9381 }, { 0x000dd3, 9218 }, { 0x000de0, 9347 }, { 0x000dd4, 9230 }, { 0x000dd5, 9241 }, { 0x000de2, 9370 }, { 0x000dd8, 9278 }, { 0x000dd6, 9253 }, { 0x000dd7, 9265 }, { 0x000dd9, 9289 }, { 0x000dc9, 9093 }, { 0x000dc8, 9081 }, { 0x000dab, 8725 }, { 0x000dca, 9105 }, { 0x000dec, 9518 }, { 0x000db1, 8799 }, { 0x000db2, 8818 }, { 0x000db7, 8881 }, { 0x000db0, 8786 }, { 0x000db8, 8896 }, { 0x000db6, 8867 }, { 0x000daf, 8773 }, { 0x000db5, 8856 }, { 0x000dc7, 9069 }, { 0x000dc2, 9019 }, { 0x000dad, 8748 }, { 0x0000de, 1001 }, { 0x1008ff9f, 26875 }, { 0x1008ff1f, 25839 }, { 0x1008ff81, 26620 }, { 0x1008ffa2, 26898 }, { 0x1008ffb1, 26972 }, { 0x1008ffb0, 26961 }, { 0x1008ffa9, 26946 }, { 0x00ff2b, 13857 }, { 0x1008ff82, 26626 }, { 0x0003ac, 2020 }, { 0x000055, 247 }, { 0x1008ff96, 26771 }, { 0x0000da, 964 }, { 0x1001ee4, 20059 }, { 0x0002dd, 1886 }, { 0x0000db, 971 }, { 0x0000dc, 983 }, { 0x0001db, 1587 }, { 0x0000d9, 957 }, { 0x1001ee6, 20079 }, { 0x10001af, 15344 }, { 0x1001ee8, 20091 }, { 0x1001ef0, 20177 }, { 0x1001eea, 20113 }, { 0x1001eec, 20135 }, { 0x1001eee, 20155 }, { 0x0006bd, 4053 }, { 0x0006b6, 3905 }, { 0x0006b4, 3866 }, { 0x0006b7, 3928 }, { 0x0006ad, 3745 }, { 0x0006a6, 3597 }, { 0x0006a4, 3558 }, { 0x0006a7, 3620 }, { 0x0006b6, 3917 }, { 0x0006b4, 3879 }, { 0x0006b7, 3941 }, { 0x0006a6, 3609 }, { 0x0006a4, 3571 }, { 0x0006a7, 3633 }, { 0x0003de, 2159 }, { 0x00ff65, 14335 }, { 0x1008fe20, 25536 }, { 0x0003d9, 2144 }, { 0x00ff52, 14254 }, { 0x0001d9, 1581 }, { 0x1008ff85, 26640 }, { 0x1008ff86, 26648 }, { 0x1008ff84, 26633 }, { 0x0003dd, 2152 }, { 0x000056, 249 }, { 0x1008ff34, 26027 }, { 0x1008ff87, 26656 }, { 0x1008ffa1, 26893 }, { 0xffffff, 26997 }, { 0x000057, 251 }, { 0x1008ff95, 26766 }, { 0x1008ff2e, 25974 }, { 0x1001e82, 19101 }, { 0x1008ff2b, 25949 }, { 0x1000174, 15270 }, { 0x1001e84, 19115 }, { 0x1008ff8f, 26714 }, { 0x1001e80, 19087 }, { 0x1008ff88, 26662 }, { 0x1008ff55, 26318 }, { 0x10020a9, 20588 }, { 0x1008ff89, 26674 }, { 0x000058, 253 }, { 0x1001e8a, 19137 }, { 0x1008ff8a, 26679 }, { 0x000059, 255 }, { 0x0000dd, 994 }, { 0x1001ef4, 20219 }, { 0x1000176, 15294 }, { 0x0013be, 11095 }, { 0x1008ffa5, 26916 }, { 0x1001ef2, 20205 }, { 0x1001ef6, 20239 }, { 0x1001ef8, 20251 }, { 0x00005a, 257 }, { 0x0001af, 1370 }, { 0x0001ac, 1356 }, { 0x0001ae, 1363 }, { 0x00ff3d, 14168 }, { 0x00ff28, 13825 }, { 0x00ff2a, 13841 }, { 0x1008ff8b, 26684 }, { 0x1008ff8c, 26691 }, { 0x10001b5, 15356 }, { 0x000061, 333 }, { 0x0000e1, 1027 }, { 0x1001ea1, 19167 }, { 0x0001ff, 1736 }, { 0x0001e3, 1616 }, { 0x1001eaf, 19375 }, { 0x1001eb7, 19472 }, { 0x1001eb1, 19399 }, { 0x1001eb3, 19422 }, { 0x1001eb5, 19445 }, { 0x0000e2, 1034 }, { 0x1001ea5, 19206 }, { 0x1001ead, 19343 }, { 0x1001ea7, 19240 }, { 0x1001ea9, 19273 }, { 0x1001eab, 19306 }, { 0x0000b4, 612 }, { 0x0000e4, 1053 }, { 0x0000e6, 1070 }, { 0x0000e0, 1020 }, { 0x1001ea3, 19183 }, { 0x0003e0, 2167 }, { 0x000026, 48 }, { 0x0001b1, 1380 }, { 0x000027, 58 }, { 0x1002248, 20750 }, { 0x0008c8, 6444 }, { 0x0000e5, 1064 }, { 0x00005e, 294 }, { 0x00007e, 410 }, { 0x00002a, 101 }, { 0x000040, 204 }, { 0x0000e3, 1046 }, { 0x000062, 335 }, { 0x1001e03, 18937 }, { 0x00005c, 271 }, { 0x000af4, 7769 }, { 0x00007c, 395 }, { 0x1002235, 20730 }, { 0x0009df, 6630 }, { 0x0008a5, 6020 }, { 0x0008ac, 6130 }, { 0x0008a8, 6063 }, { 0x0008b2, 6234 }, { 0x0008ae, 6159 }, { 0x0008aa, 6098 }, { 0x0008b6, 6321 }, { 0x0009f6, 6838 }, { 0x0008b4, 6277 }, { 0x00007b, 385 }, { 0x00007d, 399 }, { 0x00005b, 259 }, { 0x00005d, 281 }, { 0x1002800, 20781 }, { 0x00fff1, 15108 }, { 0x00fffa, 15234 }, { 0x00fff2, 15122 }, { 0x00fff3, 15136 }, { 0x00fff4, 15150 }, { 0x00fff5, 15164 }, { 0x00fff6, 15178 }, { 0x00fff7, 15192 }, { 0x00fff8, 15206 }, { 0x00fff9, 15220 }, { 0x1002801, 20795 }, { 0x1002803, 20825 }, { 0x1002807, 20888 }, { 0x100280f, 21019 }, { 0x100281f, 21290 }, { 0x100283f, 21849 }, { 0x100287f, 23000 }, { 0x10028ff, 25367 }, { 0x10028bf, 24152 }, { 0x100285f, 22409 }, { 0x10028df, 24744 }, { 0x100289f, 23561 }, { 0x100282f, 21562 }, { 0x100286f, 22697 }, { 0x10028ef, 25048 }, { 0x10028af, 23849 }, { 0x100284f, 22122 }, { 0x10028cf, 24441 }, { 0x100288f, 23274 }, { 0x1002817, 21151 }, { 0x1002837, 21702 }, { 0x1002877, 22845 }, { 0x10028f7, 25204 }, { 0x10028b7, 23997 }, { 0x1002857, 22262 }, { 0x10028d7, 24589 }, { 0x1002897, 23414 }, { 0x1002827, 21423 }, { 0x1002867, 22550 }, { 0x10028e7, 24893 }, { 0x10028a7, 23702 }, { 0x1002847, 21983 }, { 0x10028c7, 24294 }, { 0x1002887, 23135 }, { 0x100280b, 20952 }, { 0x100281b, 21219 }, { 0x100283b, 21774 }, { 0x100287b, 22921 }, { 0x10028fb, 25284 }, { 0x10028bb, 24073 }, { 0x100285b, 22334 }, { 0x10028db, 24665 }, { 0x100289b, 23486 }, { 0x100282b, 21491 }, { 0x100286b, 22622 }, { 0x10028eb, 24969 }, { 0x10028ab, 23774 }, { 0x100284b, 22051 }, { 0x10028cb, 24366 }, { 0x100288b, 23203 }, { 0x1002813, 21084 }, { 0x1002833, 21631 }, { 0x1002873, 22770 }, { 0x10028f3, 25125 }, { 0x10028b3, 23922 }, { 0x1002853, 22191 }, { 0x10028d3, 24514 }, { 0x1002893, 23343 }, { 0x1002823, 21356 }, { 0x1002863, 22479 }, { 0x10028e3, 24818 }, { 0x10028a3, 23631 }, { 0x1002843, 21916 }, { 0x10028c3, 24223 }, { 0x1002883, 23068 }, { 0x1002805, 20856 }, { 0x100280d, 20985 }, { 0x100281d, 21254 }, { 0x100283d, 21811 }, { 0x100287d, 22960 }, { 0x10028fd, 25325 }, { 0x10028bd, 24112 }, { 0x100285d, 22371 }, { 0x10028dd, 24704 }, { 0x100289d, 23523 }, { 0x100282d, 21526 }, { 0x100286d, 22659 }, { 0x10028ed, 25008 }, { 0x10028ad, 23811 }, { 0x100284d, 22086 }, { 0x10028cd, 24403 }, { 0x100288d, 23238 }, { 0x1002815, 21117 }, { 0x1002835, 21666 }, { 0x1002875, 22807 }, { 0x10028f5, 25164 }, { 0x10028b5, 23959 }, { 0x1002855, 22226 }, { 0x10028d5, 24551 }, { 0x1002895, 23378 }, { 0x1002825, 21389 }, { 0x1002865, 22514 }, { 0x10028e5, 24855 }, { 0x10028a5, 23666 }, { 0x1002845, 21949 }, { 0x10028c5, 24258 }, { 0x1002885, 23101 }, { 0x1002809, 20920 }, { 0x1002819, 21185 }, { 0x1002839, 21738 }, { 0x1002879, 22883 }, { 0x10028f9, 25244 }, { 0x10028b9, 24035 }, { 0x1002859, 22298 }, { 0x10028d9, 24627 }, { 0x1002899, 23450 }, { 0x1002829, 21457 }, { 0x1002869, 22586 }, { 0x10028e9, 24931 }, { 0x10028a9, 23738 }, { 0x1002849, 22017 }, { 0x10028c9, 24330 }, { 0x1002889, 23169 }, { 0x1002811, 21052 }, { 0x1002831, 21597 }, { 0x1002871, 22734 }, { 0x10028f1, 25087 }, { 0x10028b1, 23886 }, { 0x1002851, 22157 }, { 0x10028d1, 24478 }, { 0x1002891, 23309 }, { 0x1002821, 21324 }, { 0x1002861, 22445 }, { 0x10028e1, 24782 }, { 0x10028a1, 23597 }, { 0x1002841, 21884 }, { 0x10028c1, 24189 }, { 0x1002881, 23036 }, { 0x1002802, 20810 }, { 0x1002806, 20872 }, { 0x100280e, 21002 }, { 0x100281e, 21272 }, { 0x100283e, 21830 }, { 0x100287e, 22980 }, { 0x10028fe, 25346 }, { 0x10028be, 24132 }, { 0x100285e, 22390 }, { 0x10028de, 24724 }, { 0x100289e, 23542 }, { 0x100282e, 21544 }, { 0x100286e, 22678 }, { 0x10028ee, 25028 }, { 0x10028ae, 23830 }, { 0x100284e, 22104 }, { 0x10028ce, 24422 }, { 0x100288e, 23256 }, { 0x1002816, 21134 }, { 0x1002836, 21684 }, { 0x1002876, 22826 }, { 0x10028f6, 25184 }, { 0x10028b6, 23978 }, { 0x1002856, 22244 }, { 0x10028d6, 24570 }, { 0x1002896, 23396 }, { 0x1002826, 21406 }, { 0x1002866, 22532 }, { 0x10028e6, 24874 }, { 0x10028a6, 23684 }, { 0x1002846, 21966 }, { 0x10028c6, 24276 }, { 0x1002886, 23118 }, { 0x100280a, 20936 }, { 0x100281a, 21202 }, { 0x100283a, 21756 }, { 0x100287a, 22902 }, { 0x10028fa, 25264 }, { 0x10028ba, 24054 }, { 0x100285a, 22316 }, { 0x10028da, 24646 }, { 0x100289a, 23468 }, { 0x100282a, 21474 }, { 0x100286a, 22604 }, { 0x10028ea, 24950 }, { 0x10028aa, 23756 }, { 0x100284a, 22034 }, { 0x10028ca, 24348 }, { 0x100288a, 23186 }, { 0x1002812, 21068 }, { 0x1002832, 21614 }, { 0x1002872, 22752 }, { 0x10028f2, 25106 }, { 0x10028b2, 23904 }, { 0x1002852, 22174 }, { 0x10028d2, 24496 }, { 0x1002892, 23326 }, { 0x1002822, 21340 }, { 0x1002862, 22462 }, { 0x10028e2, 24800 }, { 0x10028a2, 23614 }, { 0x1002842, 21900 }, { 0x10028c2, 24206 }, { 0x1002882, 23052 }, { 0x1002804, 20841 }, { 0x100280c, 20969 }, { 0x100281c, 21237 }, { 0x100283c, 21793 }, { 0x100287c, 22941 }, { 0x10028fc, 25305 }, { 0x10028bc, 24093 }, { 0x100285c, 22353 }, { 0x10028dc, 24685 }, { 0x100289c, 23505 }, { 0x100282c, 21509 }, { 0x100286c, 22641 }, { 0x10028ec, 24989 }, { 0x10028ac, 23793 }, { 0x100284c, 22069 }, { 0x10028cc, 24385 }, { 0x100288c, 23221 }, { 0x1002814, 21101 }, { 0x1002834, 21649 }, { 0x1002874, 22789 }, { 0x10028f4, 25145 }, { 0x10028b4, 23941 }, { 0x1002854, 22209 }, { 0x10028d4, 24533 }, { 0x1002894, 23361 }, { 0x1002824, 21373 }, { 0x1002864, 22497 }, { 0x10028e4, 24837 }, { 0x10028a4, 23649 }, { 0x1002844, 21933 }, { 0x10028c4, 24241 }, { 0x1002884, 23085 }, { 0x1002808, 20905 }, { 0x1002818, 21169 }, { 0x1002838, 21721 }, { 0x1002878, 22865 }, { 0x10028f8, 25225 }, { 0x10028b8, 24017 }, { 0x1002858, 22281 }, { 0x10028d8, 24609 }, { 0x1002898, 23433 }, { 0x1002828, 21441 }, { 0x1002868, 22569 }, { 0x10028e8, 24913 }, { 0x10028a8, 23721 }, { 0x1002848, 22001 }, { 0x10028c8, 24313 }, { 0x1002888, 23153 }, { 0x1002810, 21037 }, { 0x1002830, 21581 }, { 0x1002870, 22717 }, { 0x10028f0, 25069 }, { 0x10028b0, 23869 }, { 0x1002850, 22141 }, { 0x10028d0, 24461 }, { 0x1002890, 23293 }, { 0x1002820, 21309 }, { 0x1002860, 22429 }, { 0x10028e0, 24765 }, { 0x10028a0, 23581 }, { 0x1002840, 21869 }, { 0x10028c0, 24173 }, { 0x1002880, 23021 }, { 0x0001a2, 1305 }, { 0x0000a6, 472 }, { 0x000063, 337 }, { 0x00fea3, 13064 }, { 0x0002e5, 1905 }, { 0x0001e6, 1630 }, { 0x000ab8, 7064 }, { 0x000afc, 7878 }, { 0x0001b7, 1417 }, { 0x0001e8, 1637 }, { 0x0000e7, 1073 }, { 0x0002e6, 1915 }, { 0x0000b8, 646 }, { 0x0000a2, 445 }, { 0x00fea0, 13055 }, { 0x0009e1, 6649 }, { 0x000af3, 7759 }, { 0x000bcf, 8027 }, { 0x000aec, 7707 }, { 0x00003a, 160 }, { 0x00002c, 115 }, { 0x100220b, 20668 }, { 0x0000a9, 500 }, { 0x0009e4, 6668 }, { 0x0009ee, 6736 }, { 0x100221b, 20690 }, { 0x0000a4, 459 }, { 0x000aff, 7922 }, { 0x000064, 339 }, { 0x1001e0b, 18957 }, { 0x000af1, 7739 }, { 0x0001ef, 1659 }, { 0x00fe81, 12945 }, { 0x00fe83, 12959 }, { 0x00fe85, 12973 }, { 0x00fe87, 12987 }, { 0x00fe89, 13001 }, { 0x00fe80, 12938 }, { 0x00fe64, 12505 }, { 0x00fe56, 12312 }, { 0x00fe65, 12532 }, { 0x00fe58, 12341 }, { 0x00fe51, 12234 }, { 0x00fe6b, 12653 }, { 0x00fe69, 12616 }, { 0x00fe6e, 12708 }, { 0x00fe6c, 12669 }, { 0x00fe60, 12459 }, { 0x00fe68, 12599 }, { 0x00fe67, 12584 }, { 0x00fe6a, 12637 }, { 0x00fe55, 12301 }, { 0x00fe8b, 13025 }, { 0x00fe5a, 12373 }, { 0x00fe5b, 12384 }, { 0x00fe52, 12245 }, { 0x00fe6f, 12724 }, { 0x00fe65, 12556 }, { 0x00fe57, 12326 }, { 0x00fe59, 12356 }, { 0x00fe66, 12567 }, { 0x00fe82, 12952 }, { 0x00fe50, 12223 }, { 0x00fe8c, 13044 }, { 0x00fe61, 12473 }, { 0x00fe62, 12483 }, { 0x00fe84, 12966 }, { 0x00fe6d, 12689 }, { 0x00fe5d, 12409 }, { 0x00fe54, 12289 }, { 0x00fe86, 12980 }, { 0x00fe5c, 12397 }, { 0x00fe53, 12261 }, { 0x00fe64, 12521 }, { 0x00fe5f, 12437 }, { 0x00fe8a, 13008 }, { 0x00fe63, 12493 }, { 0x00fe53, 12278 }, { 0x00fe88, 12994 }, { 0x00fe5e, 12419 }, { 0x000abd, 7096 }, { 0x0000b0, 569 }, { 0x0000a8, 490 }, { 0x000aed, 7712 }, { 0x000aa5, 6890 }, { 0x100222c, 20710 }, { 0x0000f7, 1211 }, { 0x000024, 33 }, { 0x000aaf, 6967 }, { 0x0001bd, 1453 }, { 0x000af2, 7746 }, { 0x000afe, 7903 }, { 0x0008fe, 6620 }, { 0x000ba8, 7950 }, { 0x000bd6, 8042 }, { 0x000bc4, 7992 }, { 0x000bc2, 7976 }, { 0x0001f0, 1666 }, { 0x000065, 341 }, { 0x0003ec, 2183 }, { 0x0000e9, 1089 }, { 0x1001eb9, 19497 }, { 0x0001ec, 1652 }, { 0x0000ea, 1096 }, { 0x1001ebf, 19550 }, { 0x1001ec7, 19687 }, { 0x1001ec1, 19584 }, { 0x1001ec3, 19617 }, { 0x1001ec5, 19650 }, { 0x0000eb, 1108 }, { 0x0000e8, 1082 }, { 0x1001ebb, 19513 }, { 0x1002088, 20468 }, { 0x1002078, 20330 }, { 0x1002208, 20645 }, { 0x000aae, 6958 }, { 0x000aa3, 6872 }, { 0x000aa4, 6881 }, { 0x0003ba, 2052 }, { 0x000aa9, 6932 }, { 0x000ade, 7486 }, { 0x000adf, 7501 }, { 0x000ace, 7259 }, { 0x000acf, 7272 }, { 0x1002205, 20636 }, { 0x000aa1, 6856 }, { 0x000aaa, 6939 }, { 0x000ae6, 7608 }, { 0x000ae7, 7627 }, { 0x0003bf, 2080 }, { 0x000ae0, 7514 }, { 0x000ae1, 7531 }, { 0x000aa2, 6864 }, { 0x0001ea, 1644 }, { 0x00003d, 181 }, { 0x0000f0, 1156 }, { 0x1001ebd, 19526 }, { 0x000021, 6 }, { 0x0000a1, 434 }, { 0x1000292, 15418 }, { 0x000066, 343 }, { 0x1001e1f, 18977 }, { 0x000af8, 7817 }, { 0x0009e3, 6665 }, { 0x000abb, 7071 }, { 0x000adc, 7445 }, { 0x000adb, 7428 }, { 0x000add, 7465 }, { 0x000ae9, 7662 }, { 0x000ae8, 7644 }, { 0x000ac5, 7157 }, { 0x000ab7, 7053 }, { 0x1002085, 20426 }, { 0x1002075, 20291 }, { 0x000ab5, 7033 }, { 0x1002084, 20412 }, { 0x1002074, 20278 }, { 0x100221c, 20699 }, { 0x0008f6, 6582 }, { 0x000067, 345 }, { 0x0002f5, 1927 }, { 0x0002bb, 1823 }, { 0x10001e7, 15397 }, { 0x0003bb, 2060 }, { 0x0002f8, 1937 }, { 0x000060, 317 }, { 0x00003e, 187 }, { 0x0008be, 6383 }, { 0x0000ab, 522 }, { 0x0000bb, 676 }, { 0x000068, 347 }, { 0x000aa8, 6922 }, { 0x0002b6, 1802 }, { 0x000aee, 7720 }, { 0x000ce0, 8110 }, { 0x000cf2, 8427 }, { 0x000ce1, 8123 }, { 0x000ce1, 8134 }, { 0x000ce7, 8246 }, { 0x000ce3, 8173 }, { 0x000ce3, 8186 }, { 0x000cdf, 8089 }, { 0x000cea, 8303 }, { 0x000ced, 8345 }, { 0x000cef, 8372 }, { 0x000cf3, 8439 }, { 0x000cf5, 8464 }, { 0x000cf5, 8481 }, { 0x000ce2, 8146 }, { 0x000ce2, 8159 }, { 0x000ce4, 8200 }, { 0x000ce7, 8258 }, { 0x000ceb, 8320 }, { 0x000cf7, 8522 }, { 0x000cec, 8332 }, { 0x000cee, 8361 }, { 0x000cf0, 8388 }, { 0x000cf4, 8454 }, { 0x000cf7, 8533 }, { 0x000cf8, 8545 }, { 0x000cf1, 8399 }, { 0x000cf1, 8413 }, { 0x000cf9, 8557 }, { 0x000cfa, 8569 }, { 0x000cfa, 8580 }, { 0x000ce8, 8269 }, { 0x000ce8, 8280 }, { 0x000ce5, 8210 }, { 0x000ce9, 8292 }, { 0x000cf6, 8498 }, { 0x000cf6, 8510 }, { 0x000ce6, 8221 }, { 0x000ce6, 8233 }, { 0x000ada, 7419 }, { 0x0008a3, 5993 }, { 0x0009ef, 6750 }, { 0x0009f0, 6765 }, { 0x0009f1, 6780 }, { 0x0009f2, 6795 }, { 0x0009f3, 6810 }, { 0x0002b1, 1794 }, { 0x0009e2, 6662 }, { 0x0000ad, 544 }, { 0x000069, 349 }, { 0x1008ff60, 26390 }, { 0x0000ed, 1126 }, { 0x1001ecb, 19729 }, { 0x100012d, 15263 }, { 0x0000ee, 1133 }, { 0x0008cf, 6486 }, { 0x0000ef, 1145 }, { 0x0002b9, 1814 }, { 0x0008cd, 6469 }, { 0x0000ec, 1119 }, { 0x1001ec9, 19713 }, { 0x0003ef, 2193 }, { 0x0008ce, 6478 }, { 0x0008da, 6504 }, { 0x0008db, 6515 }, { 0x0008c2, 6429 }, { 0x0008bf, 6400 }, { 0x0008dc, 6524 }, { 0x0003e7, 2175 }, { 0x0003b5, 2036 }, { 0x00006a, 351 }, { 0x0002bc, 1830 }, { 0x000bca, 8011 }, { 0x00006b, 353 }, { 0x0004b1, 2455 }, { 0x0004c1, 2579 }, { 0x0004b4, 2476 }, { 0x0004cc, 2685 }, { 0x0004ca, 2669 }, { 0x0004cd, 2701 }, { 0x0004cb, 2677 }, { 0x0004ce, 2709 }, { 0x0004cc, 2693 }, { 0x0004b2, 2462 }, { 0x0004b6, 2490 }, { 0x0004b9, 2514 }, { 0x0004b7, 2498 }, { 0x0004ba, 2522 }, { 0x0004b8, 2506 }, { 0x0004cf, 2717 }, { 0x0004d2, 2741 }, { 0x0004d0, 2725 }, { 0x0004d3, 2749 }, { 0x0004d1, 2733 }, { 0x0004dd, 2829 }, { 0x0004c5, 2629 }, { 0x0004c8, 2653 }, { 0x0004c6, 2637 }, { 0x0004c9, 2661 }, { 0x0004c7, 2645 }, { 0x0004b5, 2483 }, { 0x0004d7, 2781 }, { 0x0004da, 2805 }, { 0x0004d8, 2789 }, { 0x0004db, 2813 }, { 0x0004d9, 2797 }, { 0x0004bb, 2530 }, { 0x0004be, 2555 }, { 0x0004bc, 2538 }, { 0x0004bf, 2563 }, { 0x0004bd, 2547 }, { 0x0004c0, 2571 }, { 0x0004c3, 2613 }, { 0x0004c1, 2588 }, { 0x0004c4, 2621 }, { 0x0004c2, 2596 }, { 0x0004c2, 2605 }, { 0x0004b3, 2469 }, { 0x0004dc, 2821 }, { 0x0004a6, 2356 }, { 0x0004d4, 2757 }, { 0x0004d6, 2773 }, { 0x0004d5, 2765 }, { 0x0004a7, 2364 }, { 0x0004a3, 2293 }, { 0x0004a4, 2313 }, { 0x0004a5, 2324 }, { 0x0004aa, 2385 }, { 0x0004a1, 2259 }, { 0x0004a8, 2371 }, { 0x0004a5, 2341 }, { 0x0004ab, 2392 }, { 0x0004a2, 2273 }, { 0x00ff7e, 14444 }, { 0x0004af, 2423 }, { 0x0004af, 2432 }, { 0x0004a9, 2378 }, { 0x0004ac, 2399 }, { 0x0004ae, 2415 }, { 0x0004ad, 2407 }, { 0x0003a2, 1968 }, { 0x0003f3, 2218 }, { 0x0003a2, 1974 }, { 0x00006c, 355 }, { 0x0001e5, 1623 }, { 0x000ad9, 7408 }, { 0x1001e37, 18997 }, { 0x0001b5, 1403 }, { 0x0003b6, 2043 }, { 0x000abc, 7079 }, { 0x0008fb, 6591 }, { 0x000ba3, 7929 }, { 0x000ad2, 7329 }, { 0x0008af, 6174 }, { 0x000acc, 7224 }, { 0x000aea, 7682 }, { 0x0008a1, 5966 }, { 0x000bda, 8061 }, { 0x000ad0, 7288 }, { 0x0009f4, 6825 }, { 0x000bdc, 8070 }, { 0x00003c, 176 }, { 0x0008bc, 6360 }, { 0x0009e5, 6671 }, { 0x0008de, 6543 }, { 0x0008df, 6554 }, { 0x0009ed, 6722 }, { 0x0009ea, 6680 }, { 0x0001b3, 1395 }, { 0x00006d, 357 }, { 0x1001e41, 19017 }, { 0x0000af, 562 }, { 0x000af7, 7806 }, { 0x000af0, 7726 }, { 0x000abf, 7127 }, { 0x0000ba, 666 }, { 0x00002d, 121 }, { 0x000ad6, 7392 }, { 0x0000b5, 618 }, { 0x0000d7, 932 }, { 0x000af6, 7794 }, { 0x000af5, 7781 }, { 0x00006e, 359 }, { 0x0008c5, 6438 }, { 0x0001f1, 1674 }, { 0x0001f2, 1681 }, { 0x0003f1, 2201 }, { 0x1002089, 20483 }, { 0x1002079, 20344 }, { 0x0009e8, 6674 }, { 0x0000a0, 421 }, { 0x1002247, 20738 }, { 0x1002209, 20655 }, { 0x0008bd, 6374 }, { 0x1002262, 20759 }, { 0x0000ac, 536 }, { 0x0000f1, 1160 }, { 0x000023, 22 }, { 0x0006b0, 3817 }, { 0x00006f, 361 }, { 0x0000f3, 1174 }, { 0x1000275, 15410 }, { 0x1001ecd, 19749 }, { 0x10001d2, 15383 }, { 0x0000f4, 1181 }, { 0x1001ed1, 19788 }, { 0x1001ed9, 19925 }, { 0x1001ed3, 19822 }, { 0x1001ed5, 19855 }, { 0x1001ed7, 19888 }, { 0x0000f6, 1200 }, { 0x0001f5, 1688 }, { 0x0013bd, 11092 }, { 0x0001b2, 1388 }, { 0x0000f2, 1167 }, { 0x1001ecf, 19765 }, { 0x10001a1, 15338 }, { 0x1001edb, 19956 }, { 0x1001ee3, 20045 }, { 0x1001edd, 19978 }, { 0x1001edf, 19999 }, { 0x1001ee1, 20020 }, { 0x0003f2, 2210 }, { 0x000ac3, 7134 }, { 0x000ab2, 7002 }, { 0x0000bd, 702 }, { 0x0000bc, 691 }, { 0x000ab6, 7044 }, { 0x1002081, 20371 }, { 0x0000b9, 654 }, { 0x000ab0, 6983 }, { 0x0000f8, 1220 }, { 0x000ae2, 7550 }, { 0x000ae5, 7599 }, { 0x000ae4, 7581 }, { 0x000ae3, 7565 }, { 0x0000aa, 510 }, { 0x0000f8, 1229 }, { 0x0000f5, 1193 }, { 0x000bc0, 7968 }, { 0x00047e, 2250 }, { 0x000070, 363 }, { 0x1001e57, 19037 }, { 0x0000b6, 621 }, { 0x000028, 80 }, { 0x000029, 90 }, { 0x1002202, 20619 }, { 0x0008ef, 6564 }, { 0x000025, 40 }, { 0x00002e, 127 }, { 0x0000b7, 631 }, { 0x000ad5, 7383 }, { 0x000afb, 7858 }, { 0x00002b, 110 }, { 0x0000b1, 576 }, { 0x000ad4, 7370 }, { 0x0004b0, 2440 }, { 0x000aa6, 6901 }, { 0x000071, 365 }, { 0x000bcc, 8015 }, { 0x00003f, 195 }, { 0x0000bf, 724 }, { 0x000022, 13 }, { 0x000060, 323 }, { 0x000027, 69 }, { 0x000072, 367 }, { 0x0001e0, 1609 }, { 0x0008d6, 6496 }, { 0x0001f8, 1701 }, { 0x0003b3, 2027 }, { 0x0000ae, 551 }, { 0x000abe, 7109 }, { 0x0008fd, 6609 }, { 0x000ba6, 7939 }, { 0x000ad3, 7349 }, { 0x0008b0, 6195 }, { 0x0008b7, 6339 }, { 0x000acd, 7241 }, { 0x000aeb, 7694 }, { 0x000bd8, 8051 }, { 0x000ad1, 7308 }, { 0x0009f5, 6831 }, { 0x000bfc, 8079 }, { 0x000073, 369 }, { 0x1001e61, 19057 }, { 0x0001b6, 1410 }, { 0x0001b9, 1423 }, { 0x0001ba, 1430 }, { 0x1000259, 15404 }, { 0x0002fe, 1956 }, { 0x00ff7e, 14468 }, { 0x000ad7, 7400 }, { 0x0000a7, 482 }, { 0x00003b, 166 }, { 0x0004df, 2848 }, { 0x000ac6, 7169 }, { 0x1002087, 20453 }, { 0x1002077, 20316 }, { 0x000aca, 7192 }, { 0x000aac, 6946 }, { 0x0008c9, 6456 }, { 0x000afd, 7884 }, { 0x1002086, 20440 }, { 0x1002076, 20304 }, { 0x00002f, 134 }, { 0x0009e0, 6636 }, { 0x000020, 0 }, { 0x100221a, 20679 }, { 0x0000df, 1013 }, { 0x0000a3, 450 }, { 0x1002263, 20772 }, { 0x000074, 371 }, { 0x1001e6b, 19077 }, { 0x0001bb, 1439 }, { 0x0001fe, 1727 }, { 0x000af9, 7830 }, { 0x000afa, 7840 }, { 0x0008c0, 6409 }, { 0x000aa7, 6912 }, { 0x0000fe, 1280 }, { 0x000ac4, 7144 }, { 0x000ab4, 7021 }, { 0x0000be, 710 }, { 0x1002083, 20397 }, { 0x0000b3, 598 }, { 0x100222d, 20720 }, { 0x0008a4, 6008 }, { 0x0008ab, 6116 }, { 0x0008a2, 5978 }, { 0x0008a7, 6046 }, { 0x0008b1, 6217 }, { 0x0008ad, 6144 }, { 0x0008a9, 6080 }, { 0x0008b5, 6303 }, { 0x0009f7, 6843 }, { 0x0008b3, 6251 }, { 0x000ac9, 7182 }, { 0x000acb, 7206 }, { 0x0003bc, 2069 }, { 0x000ab3, 7011 }, { 0x1002082, 20384 }, { 0x0000b2, 586 }, { 0x000ab1, 6992 }, { 0x000075, 373 }, { 0x0000fa, 1243 }, { 0x1001ee5, 20069 }, { 0x0002fd, 1949 }, { 0x0000fb, 1250 }, { 0x0000fc, 1262 }, { 0x0001fb, 1714 }, { 0x0000f9, 1236 }, { 0x1001ee7, 20085 }, { 0x10001b0, 15350 }, { 0x1001ee9, 20102 }, { 0x1001ef1, 20191 }, { 0x1001eeb, 20124 }, { 0x1001eed, 20145 }, { 0x1001eef, 20166 }, { 0x0003fe, 2242 }, { 0x000bc6, 8002 }, { 0x00005f, 306 }, { 0x0008dd, 6537 }, { 0x0003f9, 2227 }, { 0x0008fc, 6601 }, { 0x000ba9, 7960 }, { 0x0009ec, 6709 }, { 0x0009eb, 6695 }, { 0x000bc3, 7985 }, { 0x000bd3, 8034 }, { 0x000bce, 8020 }, { 0x0001f9, 1708 }, { 0x0003fd, 2235 }, { 0x000076, 375 }, { 0x0008c1, 6419 }, { 0x0009f8, 6848 }, { 0x0008a6, 6032 }, { 0x0004de, 2836 }, { 0x0009e9, 6677 }, { 0x000077, 377 }, { 0x1001e83, 19108 }, { 0x1000175, 15282 }, { 0x1001e85, 19126 }, { 0x1001e81, 19094 }, { 0x000078, 379 }, { 0x1001e8b, 19147 }, { 0x000079, 381 }, { 0x0000fd, 1273 }, { 0x1001ef5, 20229 }, { 0x1000177, 15306 }, { 0x0000ff, 1286 }, { 0x0000a5, 468 }, { 0x1001ef3, 20212 }, { 0x1001ef7, 20245 }, { 0x1001ef9, 20258 }, { 0x00007a, 383 }, { 0x0001bf, 1472 }, { 0x0001bc, 1446 }, { 0x0001be, 1465 }, { 0x1002080, 20357 }, { 0x1002070, 20265 }, { 0x10001b6, 15364 }}; #if 0 /* * Translators, the strings in the “keyboard label†context are * display names for keyboard keys. Some of them have prefixes like * XF86 or ISO_ - these should be removed in the translation. Similarly, * underscores should be replaced by spaces. The prefix “KP_†stands * for “key pad†and you may want to include that in your translation. * Here are some examples of English translations: * XF86AudioMute - Audio mute * Scroll_lock - Scroll lock * KP_Space - Space (keypad) */ NC_("keyboard label", "BackSpace") NC_("keyboard label", "Tab") NC_("keyboard label", "Return") NC_("keyboard label", "Pause") NC_("keyboard label", "Scroll_Lock") NC_("keyboard label", "Sys_Req") NC_("keyboard label", "Escape") NC_("keyboard label", "Multi_key") NC_("keyboard label", "Home") NC_("keyboard label", "Left") NC_("keyboard label", "Up") NC_("keyboard label", "Right") NC_("keyboard label", "Down") NC_("keyboard label", "Page_Up") NC_("keyboard label", "Page_Down") NC_("keyboard label", "End") NC_("keyboard label", "Begin") NC_("keyboard label", "Print") NC_("keyboard label", "Insert") NC_("keyboard label", "Num_Lock") /* Translators: KP_ means 'key pad' here */ NC_("keyboard label", "KP_Space") NC_("keyboard label", "KP_Tab") NC_("keyboard label", "KP_Enter") NC_("keyboard label", "KP_Home") NC_("keyboard label", "KP_Left") NC_("keyboard label", "KP_Up") NC_("keyboard label", "KP_Right") NC_("keyboard label", "KP_Down") NC_("keyboard label", "KP_Page_Up") NC_("keyboard label", "KP_Prior") NC_("keyboard label", "KP_Page_Down") NC_("keyboard label", "KP_Next") NC_("keyboard label", "KP_End") NC_("keyboard label", "KP_Begin") NC_("keyboard label", "KP_Insert") NC_("keyboard label", "KP_Delete") NC_("keyboard label", "Delete") NC_("keyboard label", "MonBrightnessUp") NC_("keyboard label", "MonBrightnessDown") NC_("keyboard label", "KbdBrightnessUp") NC_("keyboard label", "KbdBrightnessDown") NC_("keyboard label", "AudioMute") NC_("keyboard label", "AudioMicMute") NC_("keyboard label", "AudioLowerVolume") NC_("keyboard label", "AudioRaiseVolume") NC_("keyboard label", "AudioPlay") NC_("keyboard label", "AudioStop") NC_("keyboard label", "AudioNext") NC_("keyboard label", "AudioPrev") NC_("keyboard label", "AudioRecord") NC_("keyboard label", "AudioPause") NC_("keyboard label", "AudioRewind") NC_("keyboard label", "AudioMedia") NC_("keyboard label", "ScreenSaver") NC_("keyboard label", "Battery") NC_("keyboard label", "Launch1") NC_("keyboard label", "Forward") NC_("keyboard label", "Back") NC_("keyboard label", "Sleep") NC_("keyboard label", "Hibernate") NC_("keyboard label", "WLAN") NC_("keyboard label", "WebCam") NC_("keyboard label", "Display") NC_("keyboard label", "TouchpadToggle") NC_("keyboard label", "WakeUp") NC_("keyboard label", "Suspend") #endif ibus-1.5.11/src/ibusengine.c0000644000000000000000000016646212551654123012536 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusengine.h" #include #include #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" #define IBUS_ENGINE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE, IBusEnginePrivate)) enum { PROCESS_KEY_EVENT, FOCUS_IN, FOCUS_OUT, RESET, ENABLE, DISABLE, SET_CURSOR_LOCATION, SET_CAPABILITIES, PAGE_UP, PAGE_DOWN, CURSOR_UP, CURSOR_DOWN, PROPERTY_ACTIVATE, PROPERTY_SHOW, PROPERTY_HIDE, CANDIDATE_CLICKED, SET_SURROUNDING_TEXT, PROCESS_HAND_WRITING_EVENT, CANCEL_HAND_WRITING, SET_CONTENT_TYPE, LAST_SIGNAL, }; enum { PROP_0, PROP_ENGINE_NAME, }; /* IBusEnginePriv */ struct _IBusEnginePrivate { gchar *engine_name; GDBusConnection *connection; /* cached surrounding text (see also IBusInputContextPrivate and BusEngineProxy) */ IBusText *surrounding_text; guint surrounding_cursor_pos; guint selection_anchor_pos; /* cached content-type */ guint content_purpose; guint content_hints; }; static guint engine_signals[LAST_SIGNAL] = { 0 }; static IBusText *text_empty = NULL; /* functions prototype */ static void ibus_engine_destroy (IBusEngine *engine); static void ibus_engine_set_property (IBusEngine *engine, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_engine_get_property (IBusEngine *engine, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_engine_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *ibus_engine_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean ibus_engine_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static gboolean ibus_engine_process_key_event (IBusEngine *engine, guint keyval, guint keycode, guint state); static void ibus_engine_focus_in (IBusEngine *engine); static void ibus_engine_focus_out (IBusEngine *engine); static void ibus_engine_reset (IBusEngine *engine); static void ibus_engine_enable (IBusEngine *engine); static void ibus_engine_disable (IBusEngine *engine); static void ibus_engine_set_cursor_location (IBusEngine *engine, gint x, gint y, gint w, gint h); static void ibus_engine_set_capabilities (IBusEngine *engine, guint caps); static void ibus_engine_page_up (IBusEngine *engine); static void ibus_engine_page_down (IBusEngine *engine); static void ibus_engine_cursor_up (IBusEngine *engine); static void ibus_engine_cursor_down (IBusEngine *engine); static void ibus_engine_candidate_clicked (IBusEngine *engine, guint index, guint button, guint state); static void ibus_engine_property_activate (IBusEngine *engine, const gchar *prop_name, guint prop_state); static void ibus_engine_property_show (IBusEngine *engine, const gchar *prop_name); static void ibus_engine_property_hide (IBusEngine *engine, const gchar *prop_name); static void ibus_engine_set_surrounding_text (IBusEngine *engine, IBusText *text, guint cursor_pos, guint anchor_pos); static void ibus_engine_process_hand_writing_event (IBusEngine *engine, const gdouble *coordinates, guint coordinates_len); static void ibus_engine_cancel_hand_writing (IBusEngine *engine, guint n_strokes); static void ibus_engine_set_content_type (IBusEngine *engine, guint purpose, guint hints); static void ibus_engine_emit_signal (IBusEngine *engine, const gchar *signal_name, GVariant *parameters); static void ibus_engine_dbus_property_changed (IBusEngine *engine, const gchar *property_name, GVariant *value); G_DEFINE_TYPE (IBusEngine, ibus_engine, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" " " /* FIXME methods */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* FIXME signals */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* FIXME properties */ " " " " ""; static void ibus_engine_class_init (IBusEngineClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_engine_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_engine_get_property; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_destroy; IBUS_SERVICE_CLASS (class)->service_method_call = ibus_engine_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = ibus_engine_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = ibus_engine_service_set_property; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); class->process_key_event = ibus_engine_process_key_event; class->focus_in = ibus_engine_focus_in; class->focus_out = ibus_engine_focus_out; class->reset = ibus_engine_reset; class->enable = ibus_engine_enable; class->disable = ibus_engine_disable; class->page_up = ibus_engine_page_up; class->page_down = ibus_engine_page_down; class->cursor_up = ibus_engine_cursor_up; class->cursor_down = ibus_engine_cursor_down; class->candidate_clicked = ibus_engine_candidate_clicked; class->property_activate = ibus_engine_property_activate; class->property_show = ibus_engine_property_show; class->property_hide = ibus_engine_property_hide; class->set_cursor_location = ibus_engine_set_cursor_location; class->set_capabilities = ibus_engine_set_capabilities; class->set_surrounding_text = ibus_engine_set_surrounding_text; class->process_hand_writing_event = ibus_engine_process_hand_writing_event; class->cancel_hand_writing = ibus_engine_cancel_hand_writing; class->set_content_type = ibus_engine_set_content_type; /* install properties */ /** * IBusEngine:name: * * Name of this IBusEngine. */ g_object_class_install_property (gobject_class, PROP_ENGINE_NAME, g_param_spec_string ("engine-name", "engine name", "engine name", "noname", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); /* install signals */ /** * IBusEngine::process-key-event: * @engine: An IBusEngine. * @keyval: Key symbol of the key press. * @keycode: KeyCode of the key press. * @state: Key modifier flags. * * Emitted when a key event is received. * Implement the member function IBusEngineClass::process_key_event * in extended class to receive this signal. * Both the key symbol and keycode are passed to the member function. * See ibus_input_context_process_key_event() for further explanation of * key symbol, keycode and which to use. * * Returns: %TRUE for successfully process the key; %FALSE otherwise. * See also: ibus_input_context_process_key_event(). * * Argument @user_data is ignored in this function. */ engine_signals[PROCESS_KEY_EVENT] = g_signal_new (I_("process-key-event"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, process_key_event), g_signal_accumulator_true_handled, NULL, _ibus_marshal_BOOL__UINT_UINT_UINT, G_TYPE_BOOLEAN, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusEngine::focus-in: * @engine: An IBusEngine. * * Emitted when the client application get the focus. * Implement the member function IBusEngineClass::focus_in * in extended class to receive this signal. * * See also: ibus_input_context_focus_in() * Argument @user_data is ignored in this function. */ engine_signals[FOCUS_IN] = g_signal_new (I_("focus-in"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, focus_in), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::focus-out: * @engine: An IBusEngine. * * Emitted when the client application lost the focus. * Implement the member function IBusEngineClass::focus_out * in extended class to receive this signal. * * See also: ibus_input_context_focus_out() * Argument @user_data is ignored in this function. */ engine_signals[FOCUS_OUT] = g_signal_new (I_("focus-out"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, focus_out), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::reset: * @engine: An IBusEngine. * * Emitted when the IME is reset. * Implement the member function IBusEngineClass::reset * in extended class to receive this signal. * * See also: ibus_input_context_reset(). * Argument @user_data is ignored in this function. */ engine_signals[RESET] = g_signal_new (I_("reset"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, reset), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::enable: * @engine: An IBusEngine. * * Emitted when the IME is enabled. * Implement the member function IBusEngineClass::enable * in extended class to receive this signal. * * See also: ibus_bus_set_global_engine(). * Argument @user_data is ignored in this function. */ engine_signals[ENABLE] = g_signal_new (I_("enable"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, enable), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::disable: * @engine: An IBusEngine. * * Emitted when the IME is disabled. * Implement the member function IBusEngineClass::disable * in extended class to receive this signal. * * See also: ibus_bus_set_global_engine(). * Argument @user_data is ignored in this function. */ engine_signals[DISABLE] = g_signal_new (I_("disable"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, disable), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::set-cursor-location: * @engine: An IBusEngine. * @x: X coordinate of the cursor. * @y: Y coordinate of the cursor. * @w: Width of the cursor. * @h: Height of the cursor. * * Emitted when the location of IME is set. * Implement the member function IBusEngineClass::set_cursor_location * in extended class to receive this signal. * * See also: ibus_input_context_set_cursor_location(). * Argument @user_data is ignored in this function. */ engine_signals[SET_CURSOR_LOCATION] = g_signal_new (I_("set-cursor-location"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, set_cursor_location), NULL, NULL, _ibus_marshal_VOID__INT_INT_INT_INT, G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); /** * IBusEngine::set-capabilities: * @engine: An IBusEngine. * @caps: Capabilities flags of IBusEngine, see #IBusCapabilite * * Emitted when the client application capabilities is set. * Implement the member function IBusEngineClass::set_capabilities * in extended class to receive this signal. * * See also: ibus_input_context_set_capabilities(). * Argument @user_data is ignored in this function. */ engine_signals[SET_CAPABILITIES] = g_signal_new (I_("set-capabilities"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, set_capabilities), NULL, NULL, _ibus_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); /** * IBusEngine::page-up: * @engine: An IBusEngine. * * Emitted when the page-up button is pressed. * Implement the member function IBusEngineClass::page_up * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PAGE_UP] = g_signal_new (I_("page-up"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, page_up), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::page-down: * @engine: An IBusEngine. * * Emitted when the page-down button is pressed. * Implement the member function IBusEngineClass::page_down * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PAGE_DOWN] = g_signal_new (I_("page-down"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, page_down), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::cursor-up: * @engine: An IBusEngine. * * Emitted when the up cursor button is pressed. * Implement the member function IBusEngineClass::cursor_up * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[CURSOR_UP] = g_signal_new (I_("cursor-up"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, cursor_up), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::cursor-down: * @engine: An IBusEngine. * * Emitted when the down cursor button is pressed. * Implement the member function IBusEngineClass::cursor_down * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[CURSOR_DOWN] = g_signal_new (I_("cursor-down"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, cursor_down), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusEngine::candidate-clicked: * @engine: An IBusEngine. * @index: Index of candidate be clicked. * @button: Mouse button. * @state: Keyboard state. * * Emitted when candidate on lookup table is clicked. * Implement the member function IBusEngineClass::candidate_clicked * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[CANDIDATE_CLICKED] = g_signal_new (I_("candidate-clicked"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, candidate_clicked), NULL, NULL, _ibus_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusEngine::property-activate: * @engine: An IBusEngine. * @name: Property name. * @state: Property state. * * Emitted when a property is activated or change changed. * Implement the member function IBusEngineClass::property_activate * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PROPERTY_ACTIVATE] = g_signal_new (I_("property-activate"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, property_activate), NULL, NULL, _ibus_marshal_VOID__STRING_UINT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_UINT); /** * IBusEngine::property-show: * @engine: An IBusEngine. * @name: Property name. * * Emitted when a property is shown. * Implement the member function IBusEngineClass::property_side * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PROPERTY_SHOW] = g_signal_new (I_("property-show"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, property_show), NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusEngine::property-hide: * @engine: An IBusEngine. * @name: Property name. * * Emitted when a property is hidden. * Implement the member function IBusEngineClass::property_hide * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PROPERTY_HIDE] = g_signal_new (I_("property-hide"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, property_hide), NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusEngine::process-hand-writing-event: * @engine: An IBusEngine. * @coordinates: An array of double (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]). * @coordinates_len: The number of elements in the array. * * Emitted when a hand writing operation is cancelled. * Implement the member function IBusEngineClass::cancel_hand_writing * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[PROCESS_HAND_WRITING_EVENT] = g_signal_new (I_("process-hand-writing-event"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, process_hand_writing_event), NULL, NULL, _ibus_marshal_VOID__POINTER_UINT, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT); /** * IBusEngine::cancel-hand-writing: * @engine: An IBusEngine. * @n_strokes: The number of strokes to be removed. 0 means "remove all". * * Emitted when a hand writing operation is cancelled. * Implement the member function IBusEngineClass::cancel_hand_writing * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ engine_signals[CANCEL_HAND_WRITING] = g_signal_new (I_("cancel-hand-writing"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, cancel_hand_writing), NULL, NULL, _ibus_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); /** * IBusEngine::set-surrounding-text: * @engine: An IBusEngine. * @text: The surrounding text. * @cursor_pos: The cursor position on surrounding text. * @anchor_pos: The anchor position on selection area. * * Emitted when a surrounding text is set. * Implement the member function IBusEngineClass::set_surrounding_text * in extended class to receive this signal. * If anchor_pos equals to cursor_pos, it means "there are no selection" * or "does not support selection retrival". * * Argument @user_data is ignored in this function. */ engine_signals[SET_SURROUNDING_TEXT] = g_signal_new (I_("set-surrounding-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, set_surrounding_text), NULL, NULL, _ibus_marshal_VOID__OBJECT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_OBJECT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusEngine::set-content-type: * @engine: An #IBusEngine. * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. * @hints: Hints that augment @purpose, as an #IBusInputHints. * * Emitted when the client application content-type (primary * purpose and hints) is set. The engine could change the * behavior according to the content-type. Implement the member * function IBusEngineClass::set_content_type * in extended class to receive this signal. * * For example, if the client application wants to restrict input * to numbers, this signal will be emitted with @purpose set to * #IBUS_INPUT_PURPOSE_NUMBER, so the engine can switch the input * mode to latin. * * Argument @user_data is ignored in this * function. */ engine_signals[SET_CONTENT_TYPE] = g_signal_new (I_("set-content-type"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, set_content_type), NULL, NULL, _ibus_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); g_type_class_add_private (class, sizeof (IBusEnginePrivate)); text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); } static void ibus_engine_init (IBusEngine *engine) { engine->priv = IBUS_ENGINE_GET_PRIVATE (engine); engine->priv->surrounding_text = g_object_ref_sink (text_empty); } static void ibus_engine_destroy (IBusEngine *engine) { g_free (engine->priv->engine_name); engine->priv->engine_name = NULL; if (engine->priv->surrounding_text) { g_object_unref (engine->priv->surrounding_text); engine->priv->surrounding_text = NULL; } IBUS_OBJECT_CLASS(ibus_engine_parent_class)->destroy (IBUS_OBJECT (engine)); } static void ibus_engine_set_property (IBusEngine *engine, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_ENGINE_NAME: engine->priv->engine_name = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec); } } static void ibus_engine_get_property (IBusEngine *engine, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_ENGINE_NAME: g_value_set_string (value, engine->priv->engine_name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec); } } static void ibus_engine_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusEngine *engine = IBUS_ENGINE (service); if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) { IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> service_method_call (service, connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } if (g_strcmp0 (method_name, "ProcessKeyEvent") == 0) { guint keyval, keycode, state; gboolean retval = FALSE; g_variant_get (parameters, "(uuu)", &keyval, &keycode, &state); g_signal_emit (engine, engine_signals[PROCESS_KEY_EVENT], 0, keyval, keycode, state, &retval); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", retval)); return; } static const struct { gchar *member; guint signal_id; } no_arg_methods[] = { { "FocusIn", FOCUS_IN }, { "FocusOut", FOCUS_OUT }, { "Reset", RESET }, { "Enable", ENABLE }, { "Disable", DISABLE }, { "PageUp", PAGE_UP }, { "PageDown", PAGE_DOWN }, { "CursorUp", CURSOR_UP }, { "CursorDown", CURSOR_DOWN }, }; gint i; for (i = 0; i < G_N_ELEMENTS (no_arg_methods); i++) { if (g_strcmp0 (method_name, no_arg_methods[i].member) == 0) { g_signal_emit (engine, engine_signals[no_arg_methods[i].signal_id], 0); g_dbus_method_invocation_return_value (invocation, NULL); return; } } if (g_strcmp0 (method_name, "CandidateClicked") == 0) { guint index, button, state; g_variant_get (parameters, "(uuu)", &index, &button, &state); g_signal_emit (engine, engine_signals[CANDIDATE_CLICKED], 0, index, button, state); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "PropertyActivate") == 0) { gchar *name; guint state; g_variant_get (parameters, "(&su)", &name, &state); g_signal_emit (engine, engine_signals[PROPERTY_ACTIVATE], 0, name, state); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "PropertyShow") == 0) { gchar *name; g_variant_get (parameters, "(&s)", &name); g_signal_emit (engine, engine_signals[PROPERTY_SHOW], 0, name); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "PropertyHide") == 0) { gchar *name; g_variant_get (parameters, "(&s)", &name); g_signal_emit (engine, engine_signals[PROPERTY_HIDE], 0, name); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "SetCursorLocation") == 0) { gint x, y, w, h; g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); engine->cursor_area.x = x; engine->cursor_area.y = y; engine->cursor_area.width = w; engine->cursor_area.height = h; g_signal_emit (engine, engine_signals[SET_CURSOR_LOCATION], 0, x, y, w, h); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "SetCapabilities") == 0) { guint caps; g_variant_get (parameters, "(u)", &caps); engine->client_capabilities = caps; g_signal_emit (engine, engine_signals[SET_CAPABILITIES], 0, caps); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "SetSurroundingText") == 0) { GVariant *variant = NULL; IBusText *text; guint cursor_pos; guint anchor_pos; g_variant_get (parameters, "(vuu)", &variant, &cursor_pos, &anchor_pos); text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (engine, engine_signals[SET_SURROUNDING_TEXT], 0, text, cursor_pos, anchor_pos); if (g_object_is_floating (text)) { g_object_unref (text); } g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "ProcessHandWritingEvent") == 0) { const gdouble *coordinates; gsize coordinates_len = 0; coordinates = g_variant_get_fixed_array (g_variant_get_child_value (parameters, 0), &coordinates_len, sizeof (gdouble)); g_return_if_fail (coordinates != NULL); g_return_if_fail (coordinates_len >= 4); /* The array should contain at least one line. */ g_return_if_fail (coordinates_len <= G_MAXUINT); /* to prevent overflow in the cast in g_signal_emit */ g_return_if_fail ((coordinates_len & 1) == 0); g_signal_emit (engine, engine_signals[PROCESS_HAND_WRITING_EVENT], 0, coordinates, (guint) coordinates_len); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "CancelHandWriting") == 0) { guint n_strokes = 0; g_variant_get (parameters, "(u)", &n_strokes); g_signal_emit (engine, engine_signals[CANCEL_HAND_WRITING], 0, n_strokes); g_dbus_method_invocation_return_value (invocation, NULL); return; } /* should not be reached */ g_return_if_reached (); } static GVariant * ibus_engine_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { return IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } static gboolean ibus_engine_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { IBusEngine *engine = IBUS_ENGINE (service); if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) { return IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } if (g_strcmp0 (property_name, "ContentType") == 0) { guint purpose = 0; guint hints = 0; g_variant_get (value, "(uu)", &purpose, &hints); if (purpose != engine->priv->content_purpose || hints != engine->priv->content_hints) { engine->priv->content_purpose = purpose; engine->priv->content_hints = hints; g_signal_emit (engine, engine_signals[SET_CONTENT_TYPE], 0, purpose, hints); ibus_engine_dbus_property_changed (engine, "ContentType", value); } return TRUE; } g_return_val_if_reached (FALSE); } static gboolean ibus_engine_process_key_event (IBusEngine *engine, guint keyval, guint keycode, guint state) { return FALSE; } static void ibus_engine_focus_in (IBusEngine *engine) { // g_debug ("focus-in"); } static void ibus_engine_focus_out (IBusEngine *engine) { // g_debug ("focus-out"); } static void ibus_engine_reset (IBusEngine *engine) { // g_debug ("reset"); } static void ibus_engine_enable (IBusEngine *engine) { // g_debug ("enable"); } static void ibus_engine_disable (IBusEngine *engine) { // g_debug ("disable"); } static void ibus_engine_set_cursor_location (IBusEngine *engine, gint x, gint y, gint w, gint h) { // g_debug ("set-cursor-location (%d, %d, %d, %d)", x, y, w, h); } static void ibus_engine_set_capabilities (IBusEngine *engine, guint caps) { // g_debug ("set-capabilities (0x%04x)", caps); } static void ibus_engine_page_up (IBusEngine *engine) { // g_debug ("page-up"); } static void ibus_engine_page_down (IBusEngine *engine) { // g_debug ("page-down"); } static void ibus_engine_cursor_up (IBusEngine *engine) { // g_debug ("cursor-up"); } static void ibus_engine_cursor_down (IBusEngine *engine) { // g_debug ("cursor-down"); } static void ibus_engine_candidate_clicked (IBusEngine *engine, guint index, guint button, guint state) { // g_debug ("candidate-clicked"); } static void ibus_engine_property_activate (IBusEngine *engine, const gchar *prop_name, guint prop_state) { // g_debug ("property-activate ('%s', %d)", prop_name, prop_state); } static void ibus_engine_property_show (IBusEngine *engine, const gchar *prop_name) { // g_debug ("property-show ('%s')", prop_name); } static void ibus_engine_property_hide (IBusEngine *engine, const gchar *prop_name) { // g_debug ("property-hide ('%s')", prop_name); } static void ibus_engine_set_surrounding_text (IBusEngine *engine, IBusText *text, guint cursor_pos, guint anchor_pos) { g_assert (IBUS_IS_ENGINE (engine)); if (engine->priv->surrounding_text) { g_object_unref (engine->priv->surrounding_text); } engine->priv->surrounding_text = (IBusText *) g_object_ref_sink (text ? text : text_empty); engine->priv->surrounding_cursor_pos = cursor_pos; engine->priv->selection_anchor_pos = anchor_pos; // g_debug ("set-surrounding-text ('%s', %d, %d)", text->text, cursor_pos, anchor_pos); } static void ibus_engine_process_hand_writing_event (IBusEngine *engine, const gdouble *coordinates, guint coordinates_len) { // guint i; // g_debug ("process-hand-writing-event (%u)", coordinates_len); // for (i = 0; i < coordinates_len; i++) // g_debug (" %lf", coordinates[i]); } static void ibus_engine_cancel_hand_writing (IBusEngine *engine, guint n_strokes) { // g_debug ("cancel-hand-writing (%u)", n_strokes); } static void ibus_engine_set_content_type (IBusEngine *engine, guint purpose, guint hints) { // g_debug ("set-content-type (%u %u)", purpose, hints); } static void ibus_engine_emit_signal (IBusEngine *engine, const gchar *signal_name, GVariant *parameters) { ibus_service_emit_signal ((IBusService *)engine, NULL, IBUS_INTERFACE_ENGINE, signal_name, parameters, NULL); } static void ibus_engine_dbus_property_changed (IBusEngine *engine, const gchar *property_name, GVariant *value) { const gchar *object_path; GDBusConnection *connection; GDBusMessage *message; GVariantBuilder *builder; gboolean retval; GError *error; /* we cannot use ibus_service_emit_signal() here, since we need to set sender of the signal so that GDBusProxy can properly track the property change. */ object_path = ibus_service_get_object_path ((IBusService *)engine); message = g_dbus_message_new_signal (object_path, "org.freedesktop.DBus.Properties", "PropertiesChanged"); g_dbus_message_set_sender (message, "org.freedesktop.IBus"); builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); g_variant_builder_add (builder, "{sv}", property_name, value); g_dbus_message_set_body (message, g_variant_new ("(sa{sv}as)", IBUS_INTERFACE_ENGINE, builder, NULL)); g_variant_builder_unref (builder); error = NULL; connection = ibus_service_get_connection ((IBusService *)engine); retval = g_dbus_connection_send_message (connection, message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, &error); if (!retval) { g_warning ("Failed to emit PropertiesChanged signal: %s", error->message); g_error_free (error); } g_object_unref (message); } IBusEngine * ibus_engine_new (const gchar *engine_name, const gchar *object_path, GDBusConnection *connection) { return ibus_engine_new_with_type (IBUS_TYPE_ENGINE, engine_name, object_path, connection); } IBusEngine * ibus_engine_new_with_type (GType engine_type, const gchar *engine_name, const gchar *object_path, GDBusConnection *connection) { g_return_val_if_fail (g_type_is_a (engine_type, IBUS_TYPE_ENGINE), NULL); g_return_val_if_fail (engine_name != NULL, NULL); g_return_val_if_fail (object_path != NULL, NULL); g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); GObject *object = g_object_new (engine_type, "engine-name", engine_name, "object-path", object_path, "connection", connection, NULL); return IBUS_ENGINE (object); } void ibus_engine_commit_text (IBusEngine *engine, IBusText *text) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_TEXT (text)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); ibus_engine_emit_signal (engine, "CommitText", g_variant_new ("(v)", variant)); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_engine_update_preedit_text (IBusEngine *engine, IBusText *text, guint cursor_pos, gboolean visible) { ibus_engine_update_preedit_text_with_mode (engine, text, cursor_pos, visible, IBUS_ENGINE_PREEDIT_CLEAR); } void ibus_engine_update_preedit_text_with_mode (IBusEngine *engine, IBusText *text, guint cursor_pos, gboolean visible, IBusPreeditFocusMode mode) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_TEXT (text)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); ibus_engine_emit_signal (engine, "UpdatePreeditText", g_variant_new ("(vubu)", variant, cursor_pos, visible, mode)); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_engine_update_auxiliary_text (IBusEngine *engine, IBusText *text, gboolean visible) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_TEXT (text)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); ibus_engine_emit_signal (engine, "UpdateAuxiliaryText", g_variant_new ("(vb)", variant, visible)); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_engine_update_lookup_table (IBusEngine *engine, IBusLookupTable *table, gboolean visible) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)table); ibus_engine_emit_signal (engine, "UpdateLookupTable", g_variant_new ("(vb)", variant, visible)); if (g_object_is_floating (table)) { g_object_unref (table); } } void ibus_engine_update_lookup_table_fast (IBusEngine *engine, IBusLookupTable *table, gboolean visible) { /* Note: gnome shell needs the previous page and next page to correctly show the page up/down arrows, send three pages instead of one page. */ g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); IBusLookupTable *new_table; IBusText *text; gint page_begin; gint cursor_pos; gint i; if (table->candidates->len < table->page_size << 2) { ibus_engine_update_lookup_table (engine, table, visible); return; } page_begin = (table->cursor_pos / table->page_size) * table->page_size; cursor_pos = ibus_lookup_table_get_cursor_in_page (table); if (table->cursor_pos >= table->page_size) { /* has previous page, adjust the value. */ page_begin -= table->page_size; cursor_pos += table->page_size; } new_table = ibus_lookup_table_new (table->page_size, 0, table->cursor_visible, table->round); /* '3' means the previous page, current page and next page. */ for (i = page_begin; i < page_begin + 3 * table->page_size && i < table->candidates->len; i++) { ibus_lookup_table_append_candidate (new_table, ibus_lookup_table_get_candidate (table, i)); } for (i = 0; (text = ibus_lookup_table_get_label (table, i)) != NULL; i++) { ibus_lookup_table_append_label (new_table, text); } ibus_lookup_table_set_cursor_pos (new_table, cursor_pos); ibus_lookup_table_set_orientation (new_table, ibus_lookup_table_get_orientation (table)); ibus_engine_update_lookup_table (engine, new_table, visible); if (g_object_is_floating (table)) { g_object_unref (table); } } void ibus_engine_forward_key_event (IBusEngine *engine, guint keyval, guint keycode, guint state) { g_return_if_fail (IBUS_IS_ENGINE (engine)); ibus_engine_emit_signal (engine, "ForwardKeyEvent", g_variant_new ("(uuu)", keyval, keycode, state)); } void ibus_engine_delete_surrounding_text (IBusEngine *engine, gint offset_from_cursor, guint nchars) { IBusEnginePrivate *priv; g_return_if_fail (IBUS_IS_ENGINE (engine)); priv = IBUS_ENGINE_GET_PRIVATE (engine); /* Update surrounding-text cache. This is necessary since some engines call ibus_engine_get_surrounding_text() immediately after ibus_engine_delete_surrounding_text(). */ if (priv->surrounding_text) { IBusText *text; glong cursor_pos, len; cursor_pos = priv->surrounding_cursor_pos + offset_from_cursor; len = ibus_text_get_length (priv->surrounding_text); if (cursor_pos >= 0 && len - cursor_pos >= nchars) { gunichar *ucs; ucs = g_utf8_to_ucs4_fast (priv->surrounding_text->text, -1, NULL); memmove (&ucs[cursor_pos], &ucs[cursor_pos + nchars], sizeof(gunichar) * (len - cursor_pos - nchars)); ucs[len - nchars] = 0; text = ibus_text_new_from_ucs4 (ucs); g_free (ucs); priv->surrounding_cursor_pos = cursor_pos; } else { text = text_empty; priv->surrounding_cursor_pos = 0; } g_object_unref (priv->surrounding_text); priv->surrounding_text = g_object_ref_sink (text); } ibus_engine_emit_signal (engine, "DeleteSurroundingText", g_variant_new ("(iu)", offset_from_cursor, nchars)); } void ibus_engine_get_surrounding_text (IBusEngine *engine, IBusText **text, guint *cursor_pos, guint *anchor_pos) { IBusEnginePrivate *priv; g_return_if_fail (IBUS_IS_ENGINE (engine)); const gboolean signal_only = (text == NULL); g_return_if_fail (( signal_only && (cursor_pos == NULL)) || (!signal_only && (cursor_pos != NULL))); g_return_if_fail (( signal_only && (anchor_pos == NULL)) || (!signal_only && (anchor_pos != NULL))); priv = IBUS_ENGINE_GET_PRIVATE (engine); if (!signal_only) { *text = g_object_ref (priv->surrounding_text); *cursor_pos = priv->surrounding_cursor_pos; *anchor_pos = priv->selection_anchor_pos; } /* tell the client that this engine will utilize surrounding-text * feature, which causes periodical update. Note that the client * should request the initial surrounding-text when the engine is * enabled (see ibus_im_context_focus_in() and * _ibus_context_enabled_cb() in client/gtk2/ibusimcontext.c). */ ibus_engine_emit_signal (engine, "RequireSurroundingText", NULL); // g_debug ("get-surrounding-text ('%s', %d, %d)", (*text)->text, *cursor_pos, *anchor_pos); } void ibus_engine_get_content_type (IBusEngine *engine, guint *purpose, guint *hints) { g_return_if_fail (IBUS_IS_ENGINE (engine)); *purpose = engine->priv->content_purpose; *hints = engine->priv->content_hints; } void ibus_engine_register_properties (IBusEngine *engine, IBusPropList *prop_list) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_PROP_LIST (prop_list)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)prop_list); ibus_engine_emit_signal (engine, "RegisterProperties", g_variant_new ("(v)", variant)); if (g_object_is_floating (prop_list)) { g_object_unref (prop_list); } } void ibus_engine_update_property (IBusEngine *engine, IBusProperty *prop) { g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_PROPERTY (prop)); GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)prop); ibus_engine_emit_signal (engine, "UpdateProperty", g_variant_new ("(v)", variant)); if (g_object_is_floating (prop)) { g_object_unref (prop); } } #define DEFINE_FUNC(name, Name) \ void \ ibus_engine_##name (IBusEngine *engine) \ { \ g_return_if_fail (IBUS_IS_ENGINE (engine)); \ ibus_engine_emit_signal (engine, \ #Name, \ NULL); \ } DEFINE_FUNC (show_preedit_text, ShowPreeditText) DEFINE_FUNC (hide_preedit_text, HidePreeditText) DEFINE_FUNC (show_auxiliary_text, ShowAuxiliaryText) DEFINE_FUNC (hide_auxiliary_text, HideAuxiliaryText) DEFINE_FUNC (show_lookup_table, ShowLookupTable) DEFINE_FUNC (hide_lookup_table, HideLookupTable) #undef DEFINE_FUNC const gchar * ibus_engine_get_name (IBusEngine *engine) { g_return_val_if_fail (IBUS_IS_ENGINE (engine), NULL); return engine->priv->engine_name; } ibus-1.5.11/src/ibusattrlist.c0000644000000000000000000001346112551654123013125 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusattrlist.h" /* functions prototype */ static void ibus_attr_list_destroy (IBusAttrList *attr_list); static gboolean ibus_attr_list_serialize (IBusAttrList *attr_list, GVariantBuilder *builder); static gint ibus_attr_list_deserialize (IBusAttrList *attr_list, GVariant *variant); static gboolean ibus_attr_list_copy (IBusAttrList *dest, const IBusAttrList *src); G_DEFINE_TYPE (IBusAttrList, ibus_attr_list, IBUS_TYPE_SERIALIZABLE) static void ibus_attr_list_class_init (IBusAttrListClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_attr_list_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_attr_list_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_attr_list_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_attr_list_copy; } static void ibus_attr_list_init (IBusAttrList *attr_list) { attr_list->attributes = g_array_new (TRUE, TRUE, sizeof (IBusAttribute *)); } static void ibus_attr_list_destroy (IBusAttrList *attr_list) { g_assert (IBUS_IS_ATTR_LIST (attr_list)); gint i; for (i = 0;; i++) { IBusAttribute *attr; attr = ibus_attr_list_get (attr_list, i); if (attr == NULL) break; g_object_unref (attr); } g_array_free (attr_list->attributes, TRUE); IBUS_OBJECT_CLASS (ibus_attr_list_parent_class)->destroy ((IBusObject *)attr_list); } static gboolean ibus_attr_list_serialize (IBusAttrList *attr_list, GVariantBuilder *builder) { gboolean retval; guint i; retval = IBUS_SERIALIZABLE_CLASS (ibus_attr_list_parent_class)->serialize ((IBusSerializable *)attr_list, builder); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_ATTR_LIST (attr_list), FALSE); GVariantBuilder array; g_variant_builder_init (&array, G_VARIANT_TYPE ("av")); for (i = 0;; i++) { IBusAttribute *attr; attr = ibus_attr_list_get (attr_list, i); if (attr == NULL) break; g_variant_builder_add (&array, "v", ibus_serializable_serialize ((IBusSerializable *)attr)); } g_variant_builder_add (builder, "av", &array); return TRUE; } static gint ibus_attr_list_deserialize (IBusAttrList *attr_list, GVariant *variant) { gint retval = IBUS_SERIALIZABLE_CLASS (ibus_attr_list_parent_class)->deserialize ((IBusSerializable *)attr_list, variant); g_return_val_if_fail (retval, 0); GVariantIter *iter = NULL; g_variant_get_child (variant, retval++, "av", &iter); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusAttribute *attr = IBUS_ATTRIBUTE (ibus_serializable_deserialize (var)); ibus_attr_list_append (attr_list, attr); } g_variant_iter_free (iter); return retval; } static gboolean ibus_attr_list_copy (IBusAttrList *dest, const IBusAttrList *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_attr_list_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_ATTR_LIST (dest), FALSE); g_return_val_if_fail (IBUS_IS_ATTR_LIST (src), FALSE); gint i; for (i = 0; ; i++) { IBusAttribute *attr = ibus_attr_list_get ((IBusAttrList *)src, i); if (attr == NULL) { break; } attr = (IBusAttribute *) ibus_serializable_copy ((IBusSerializable *) attr); if (attr == NULL) { g_warning ("can not copy attribute"); continue; } ibus_attr_list_append (dest, attr); } return TRUE; } IBusAttrList * ibus_attr_list_new () { IBusAttrList *attr_list; attr_list = g_object_new (IBUS_TYPE_ATTR_LIST, NULL); return attr_list; } void ibus_attr_list_append (IBusAttrList *attr_list, IBusAttribute *attr) { g_assert (IBUS_IS_ATTR_LIST (attr_list)); g_assert (IBUS_IS_ATTRIBUTE (attr)); g_object_ref_sink (attr); g_array_append_val (attr_list->attributes, attr); } IBusAttribute * ibus_attr_list_get (IBusAttrList *attr_list, guint index) { g_assert (IBUS_IS_ATTR_LIST (attr_list)); IBusAttribute *attr = NULL; if (index < attr_list->attributes->len) { attr = g_array_index (attr_list->attributes, IBusAttribute *, index); } return attr; } ibus-1.5.11/src/ibusxml.c0000644000000000000000000002036012551654123012053 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include "ibusxml.h" static GMarkupParser parser; G_DEFINE_BOXED_TYPE (IBusXML, ibus_xml, ibus_xml_copy, ibus_xml_free); XMLNode* ibus_xml_copy (const XMLNode *node) { XMLNode *ret; if (node == NULL) return NULL; ret = g_slice_new (XMLNode); *ret = *node; return ret; } void ibus_xml_free (XMLNode *node) { g_free (node->name); g_free (node->text); g_strfreev (node->attributes); g_list_free_full (node->sub_nodes, (GDestroyNotify) ibus_xml_free); g_slice_free (XMLNode, node); } static void _start_root_element_cb (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error) { XMLNode **node = (XMLNode **) user_data; g_assert (node != NULL); XMLNode *p = g_slice_new0 (XMLNode); p->name = g_strdup (element_name); GArray *attributes = g_array_new (TRUE, TRUE, sizeof (gchar *)); while (*attribute_names != NULL && *attribute_values != NULL) { gchar *p; p = g_strdup (*attribute_names++); g_array_append_val (attributes, p); p = g_strdup (*attribute_values++); g_array_append_val (attributes, p); } p->attributes = (gchar **) g_array_free (attributes, FALSE); g_markup_parse_context_push (context, &parser, p); *node = p; } static void _start_element_cb (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error) { XMLNode *node = (XMLNode *) user_data; if (node->text) { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, " "); return; } XMLNode *p = g_slice_new0 (XMLNode); node->sub_nodes = g_list_append (node->sub_nodes, p); g_markup_parse_context_push (context, &parser, p); p->name = g_strdup (element_name); GArray *attributes = g_array_new (TRUE, TRUE, sizeof (gchar *)); while (*attribute_names != NULL && *attribute_values != NULL) { gchar *p; p = g_strdup (*attribute_names++); g_array_append_val (attributes, p); p = g_strdup (*attribute_values++); g_array_append_val (attributes, p); } p->attributes = (gchar **)g_array_free (attributes, FALSE); } static void _end_element_cb (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error) { XMLNode *p = (XMLNode *) g_markup_parse_context_pop (context); if (p->text && p->sub_nodes) { g_warning ("Error"); } if (p->text == NULL && p->sub_nodes == NULL) { p->text = g_strdup (""); } } static gboolean _is_space (const gchar *text, gsize text_len) { gsize i = 0; for (i = 0; text[i] != '\0' && i < text_len; i++) { switch (text[i]) { case '\t': case ' ': case '\n': case '\r': continue; default: return FALSE; } } return TRUE; } static void _text_cb (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error) { XMLNode *p = (XMLNode *)user_data; if (_is_space (text, text_len)) { return; } if (p->sub_nodes || p->text) { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, " "); return; } p->text = g_strndup (text, text_len); } static GMarkupParser parser = { _start_element_cb, _end_element_cb, _text_cb, 0, 0, }; XMLNode * ibus_xml_parse_file (const gchar *filename) { gboolean retval = FALSE; GError *error = NULL; FILE *pf = fopen (filename, "r"); if (pf == NULL) { return NULL; } GMarkupParseContext *context; XMLNode *node; const static GMarkupParser root_parser = { _start_root_element_cb, _end_element_cb, _text_cb, 0, 0, }; do { context = g_markup_parse_context_new (&root_parser, 0, &node, 0); while (!feof (pf)) { gchar buf[1024]; gssize len = 0; len = fread (buf, 1, sizeof (buf), pf); retval = g_markup_parse_context_parse (context, buf, len, &error); if (!retval) break; } fclose (pf); if (!retval) break; retval = g_markup_parse_context_end_parse (context, &error); if (!retval) break; g_markup_parse_context_free (context); return node; } while (0); g_warning ("Parse %s failed: %s", filename, error->message); g_error_free (error); g_markup_parse_context_free (context); return NULL; } XMLNode * ibus_xml_parse_buffer (const gchar *buffer) { gboolean retval; GError *error = NULL; GMarkupParseContext *context; XMLNode *node; const static GMarkupParser root_parser = { _start_root_element_cb, _end_element_cb, _text_cb, 0, 0, }; context = g_markup_parse_context_new (&root_parser, 0, &node, 0); do { retval = g_markup_parse_context_parse (context, buffer, strlen (buffer), &error); if (!retval) break; retval = g_markup_parse_context_end_parse (context, &error); if (!retval) break; g_markup_parse_context_free (context); return node; } while (0); g_warning ("Parse buffer failed: %s", error->message); g_error_free (error); g_markup_parse_context_free (context); return NULL; } static void output_indent (int level, GString *output) { gint i; for (i = 0; i < level; i++) { g_string_append (output, " "); } } static void xml_output_indent (const XMLNode *node, int level, GString *output) { gchar **attrs; output_indent (level, output); g_string_append_printf (output, "<%s", node->name); attrs = node->attributes; while (attrs != NULL && *attrs != NULL) { g_string_append_printf (output, " %s", *(attrs++)); g_string_append_printf (output, "=\"%s\"", *(attrs++)); } if (node->sub_nodes != NULL){ g_string_append (output, ">\n"); GList *sub_node; for (sub_node = node->sub_nodes; sub_node != NULL; sub_node = sub_node->next) { xml_output_indent (sub_node->data, level + 1, output); } output_indent (level, output); g_string_append_printf (output, "\n",node->name); } else if (node->text != NULL) { gchar *text = g_markup_escape_text (node->text, -1); g_string_append_printf (output, ">%s\n", text, node->name); g_free (text); } else { g_string_append (output, "/>\n"); } } void ibus_xml_output (const XMLNode *node, GString *output) { xml_output_indent (node, 0, output); } ibus-1.5.11/src/ibuscomposetable.h0000644000000000000000000000511212551654123013733 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2013-2014 Peng Huang * Copyright (C) 2013-2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_COMPOSETABLE_H_ #define __IBUS_COMPOSETABLE_H_ /* if ibus_compose_seqs[N - 1] is an outputed compose character, * ibus_compose_seqs[N * 2 - 1] is also an outputed compose character. * and ibus_compose_seqs[0] to ibus_compose_seqs[0 + N - 3] are the * sequences and call ibus_engine_simple_add_table: * ibus_engine_simple_add_table(engine, ibus_compose_seqs, * N - 2, G_N_ELEMENTS(ibus_compose_seqs) / N) * The compose sequences are allowed within G_MAXUINT16 */ #define IBUS_MAX_COMPOSE_LEN 7 typedef struct _IBusComposeTable IBusComposeTable; struct _IBusComposeTable { const guint16 *data; gint max_seq_len; gint n_seqs; }; typedef struct _IBusComposeTableCompact IBusComposeTableCompact; struct _IBusComposeTableCompact { const guint16 *data; gint max_seq_len; gint n_index_size; gint n_index_stride; }; /* This file contains the table of the compose sequences, * static const guint16 ibus_compose_seqs_compact[] = {} * IT is generated from the compose-parse.py script. */ #include "gtkimcontextsimpleseqs.h" /* From the values below, the value 30 means the number of different first keysyms * that exist in the Compose file (from Xorg). When running compose-parse.py without * parameters, you get the count that you can put here. Needed when updating the * gtkimcontextsimpleseqs.h header file (contains the compose sequences). */ static const IBusComposeTableCompact ibus_compose_table_compact = { gtk_compose_seqs_compact, 5, 30, 6 }; IBusComposeTable* ibus_compose_table_new_with_file (const gchar *compose_file); #endif ibus-1.5.11/src/ibusattribute.c0000644000000000000000000001366012551654123013263 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusattribute.h" /* functions prototype */ // static void ibus_attribute_destroy (IBusAttribute *attr); static gboolean ibus_attribute_serialize (IBusAttribute *attr, GVariantBuilder *builder); static gint ibus_attribute_deserialize (IBusAttribute *attr, GVariant *variant); static gboolean ibus_attribute_copy (IBusAttribute *dest, const IBusAttribute *src); G_DEFINE_TYPE (IBusAttribute, ibus_attribute, IBUS_TYPE_SERIALIZABLE) static void ibus_attribute_class_init (IBusAttributeClass *class) { IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_attribute_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_attribute_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_attribute_copy; } static void ibus_attribute_init (IBusAttribute *attr) { } static gboolean ibus_attribute_serialize (IBusAttribute *attr, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_attribute_parent_class)->serialize ((IBusSerializable *) attr, builder); g_return_val_if_fail (retval, FALSE); g_variant_builder_add (builder, "u", attr->type); g_variant_builder_add (builder, "u", attr->value); g_variant_builder_add (builder, "u", attr->start_index); g_variant_builder_add (builder, "u", attr->end_index); return TRUE; } static gint ibus_attribute_deserialize (IBusAttribute *attr, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_attribute_parent_class)->deserialize ((IBusSerializable *) attr, variant); g_return_val_if_fail (retval, 0); g_variant_get_child (variant, retval++, "u", &attr->type); g_variant_get_child (variant, retval++, "u", &attr->value); g_variant_get_child (variant, retval++, "u", &attr->start_index); g_variant_get_child (variant, retval++, "u", &attr->end_index); return retval; } static gboolean ibus_attribute_copy (IBusAttribute *dest, const IBusAttribute *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_attribute_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_ATTRIBUTE (dest), FALSE); g_return_val_if_fail (IBUS_IS_ATTRIBUTE (src), FALSE); dest->type = src->type; dest->value = src->value; dest->start_index = src->start_index; dest->end_index = src->end_index; return TRUE; } IBusAttribute * ibus_attribute_new (guint type, guint value, guint start_index, guint end_index) { g_return_val_if_fail ( type == IBUS_ATTR_TYPE_UNDERLINE || type == IBUS_ATTR_TYPE_FOREGROUND || type == IBUS_ATTR_TYPE_BACKGROUND, NULL); IBusAttribute *attr = IBUS_ATTRIBUTE (g_object_new (IBUS_TYPE_ATTRIBUTE, NULL)); attr->type = type; attr->value = value; attr->start_index = start_index; attr->end_index = end_index; return attr; } guint ibus_attribute_get_attr_type (IBusAttribute *attr) { return attr->type; } guint ibus_attribute_get_value (IBusAttribute *attr) { return attr->value; } guint ibus_attribute_get_start_index (IBusAttribute *attr) { return attr->start_index; } guint ibus_attribute_get_end_index (IBusAttribute *attr) { return attr->end_index; } IBusAttribute * ibus_attr_underline_new (guint underline_type, guint start_index, guint end_index) { g_return_val_if_fail ( underline_type == IBUS_ATTR_UNDERLINE_NONE || underline_type == IBUS_ATTR_UNDERLINE_SINGLE || underline_type == IBUS_ATTR_UNDERLINE_DOUBLE || underline_type == IBUS_ATTR_UNDERLINE_LOW, NULL); return ibus_attribute_new (IBUS_ATTR_TYPE_UNDERLINE, underline_type, start_index, end_index); } IBusAttribute * ibus_attr_foreground_new (guint color, guint start_index, guint end_index) { return ibus_attribute_new (IBUS_ATTR_TYPE_FOREGROUND, color, start_index, end_index); } IBusAttribute * ibus_attr_background_new (guint color, guint start_index, guint end_index) { return ibus_attribute_new (IBUS_ATTR_TYPE_BACKGROUND, color, start_index, end_index); } ibus-1.5.11/src/ibusutil.h0000644000000000000000000000343512551654123012241 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2010-2015 Takao Fujiwara * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_UTIL_H_ #define __IBUS_UTIL_H_ /** * SECTION: ibusutil * @short_description: Utilities with C-Language. * @stability: Unstable * * Utilized functions are available for miscellaneous purposes. */ /** * ibus_get_untranslated_language_name: * @_locale: A const locale name. * * Returns: untranslated language name */ const gchar * ibus_get_untranslated_language_name (const gchar *_locale); /** * ibus_get_language_name: * @_locale: A const locale name. * * Returns: translated language name */ const gchar * ibus_get_language_name (const gchar *_locale); #endif ibus-1.5.11/src/ibusversion.h.in0000644000000000000000000000370312551654123013354 00000000000000/* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_VERSION_H_ #define __IBUS_VERSION_H_ /** * SECTION: ibusversion * @short_description: Current version of IBus. * @stability: Stable * * IBusVersion shows the current IBus version. */ /* compile time version */ /** * IBUS_MAJOR_VERSION: * * IBus major version. */ #define IBUS_MAJOR_VERSION (@IBUS_MAJOR_VERSION@) /** * IBUS_MINOR_VERSION: * * IBus minor version. */ #define IBUS_MINOR_VERSION (@IBUS_MINOR_VERSION@) /** * IBUS_MICRO_VERSION: * * IBus micro version. */ #define IBUS_MICRO_VERSION (@IBUS_MICRO_VERSION@) /** * IBUS_CHECK_VERSION: * @major: Major version of ibus. * @minor: Minor version of ibus. * @micro: Micro version of ibus. * * Check whether the current IBus version is equal to or greater than * given major.minor.micro. */ #define IBUS_CHECK_VERSION(major,minor,micro) \ (IBUS_MAJOR_VERSION > (major) || \ (IBUS_MAJOR_VERSION == (major) && IBUS_MINOR_VERSION > (minor)) || \ (IBUS_MAJOR_VERSION == (major) && IBUS_MINOR_VERSION == (minor) && \ IBUS_MICRO_VERSION >= (micro))) #endif ibus-1.5.11/src/ibusconfig.h0000644000000000000000000003173212551654123012532 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_CONFIG_H_ #define __IBUS_CONFIG_H_ /** * SECTION: ibusconfig * @title: IBusConfig * @short_description: IBus engine configuration module. * * An IBusConfig provides engine configuration methods * such as get and set the configure settings to configuration file. * * Currently, IBusConfig supports gconf. */ #include "ibusproxy.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_CONFIG \ (ibus_config_get_type ()) #define IBUS_CONFIG(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG, IBusConfig)) #define IBUS_CONFIG_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG, IBusConfigClass)) #define IBUS_IS_CONFIG(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG)) #define IBUS_IS_CONFIG_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG)) #define IBUS_CONFIG_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG, IBusConfigClass)) G_BEGIN_DECLS typedef struct _IBusConfig IBusConfig; typedef struct _IBusConfigClass IBusConfigClass; typedef struct _IBusConfigPrivate IBusConfigPrivate; /** * IBusConfig: * * An opaque data type representing an IBusConfig. */ struct _IBusConfig { /*< private >*/ IBusProxy parent; IBusConfigPrivate *priv; /* instance members */ }; struct _IBusConfigClass { /*< private >*/ IBusProxyClass parent; /* class members */ }; GType ibus_config_get_type (void); /** * ibus_config_new: * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Create a new #IBusConfig from existing #GDBusConnection. * * Returns: A newly allocated #IBusConfig corresponding to @connection. */ IBusConfig *ibus_config_new (GDBusConnection *connection, GCancellable *cancellable, GError **error); /** * ibus_config_new_async: * @connection: An #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * The callback should not be %NULL. * @user_data: The data to pass to callback. * * New an #IBusConfig asynchronously. */ void ibus_config_new_async (GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_config_new_async_finish: * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback pass to * ibus_config_new_async(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_config_new_async(). * * Returns: A newly allocated #IBusConfig. */ IBusConfig *ibus_config_new_async_finish (GAsyncResult *res, GError **error); /** * ibus_config_get_value: * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option. * * Get the value of a configuration option synchronously. * * GConf stores configure options in a tree-like structure, * and the IBus related setting is at /desktop/ibus, * thus, @section here is a path from there, * while @name is the key of that configuration option. * * ibus-chewing, for example, stores its setting in /desktop/ibus/engine/Chewing, * so the section name for it is "engine/Chewing". * See also: ibus_config_set_value(). * * Returns: A #GVariant or %NULL. Free with g_variant_unref(). */ GVariant *ibus_config_get_value (IBusConfig *config, const gchar *section, const gchar *name); /** * ibus_config_get_value_async: * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option. * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: Callback function to invoke when the return value is ready. * @user_data: The data to pass to callback. * * Get the value of a configuration option asynchronously. * * See also: ibus_config_get_value(). */ void ibus_config_get_value_async (IBusConfig *config, const gchar *section, const gchar *name, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_config_get_value_async_finish: * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. * * Finish get value of a configuration option. * * Returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). * * See also: ibus_config_get_value_async(). */ GVariant *ibus_config_get_value_async_finish (IBusConfig *config, GAsyncResult *result, GError **error); /** * ibus_config_get_values: * @config: An #IBusConfig * @section: Section name of the configuration option. * * Get all values in a section synchronously. * * Returns: A #GVariant or %NULL. Free with g_variant_unref(). * * See also: ibus_config_set_value(). */ GVariant *ibus_config_get_values (IBusConfig *config, const gchar *section); /** * ibus_config_get_values_async: * @config: An #IBusConfig * @section: Section name of the configuration option. * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: Callback function to invoke when the return value is ready. * @user_data: The data to pass to callback. * * Get all values in a section asynchronously. * * See also: ibus_config_get_values(). */ void ibus_config_get_values_async(IBusConfig *config, const gchar *section, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_config_get_values_async_finish: * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. * * Finish get values in a section. * * Returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). * * See also: ibus_config_get_values_async(). */ GVariant *ibus_config_get_values_async_finish (IBusConfig *config, GAsyncResult *result, GError **error); /** * ibus_config_set_value: * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option its self. * @value: A #GVariant that holds the value. If the value is floating, the * function takes ownership of it. * * Set the value of a configuration option synchronously. * * Returns: %TRUE if succeed; %FALSE otherwise. * * See also: ibus_config_get_value(). */ gboolean ibus_config_set_value (IBusConfig *config, const gchar *section, const gchar *name, GVariant *value); /** * ibus_config_set_value_async: * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option. * @value: A #GVariant that holds the value. If the value is floating, the * function takes ownership of it. * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. * @callback: Callback function to invoke when the return value is ready. * @user_data: The data to pass to callback. * * Set the value of a configuration option asynchronously. * * See also: ibus_config_set_value(). */ void ibus_config_set_value_async (IBusConfig *config, const gchar *section, const gchar *name, GVariant *value, gint timeout_ms, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); /** * ibus_config_set_value_async_finish: * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. * * Finish set value of a configuration option. * * Returns: %TRUE or %FALSE if error is set. * * See also: ibus_config_set_value_async(). */ gboolean ibus_config_set_value_async_finish (IBusConfig *config, GAsyncResult *result, GError **error); /** * ibus_config_unset: * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option its self. * * Remove an entry of a configuration option. * * Returns: %TRUE if succeed; %FALSE otherwise. * * See also: ibus_config_get_value(). */ gboolean ibus_config_unset (IBusConfig *config, const gchar *section, const gchar *name); /* FIXME add an asynchronous version of unset */ /** * ibus_config_watch: * @config: An #IBusConfig * @section: (allow-none): Section name of the configuration option. * @name: (allow-none): Name of the configure option its self. * * Subscribe to the configuration option change notification. * * Until this function is called, every change will be notified to the * client through #IBusConfig::value-changed signal. Clients should * call ibus_config_watch() with the sections they are interested in, * to reduce the number of D-Bus messages. * * Returns: %TRUE if succeed; %FALSE otherwise. * * See also: ibus_config_unwatch(). */ gboolean ibus_config_watch (IBusConfig *config, const gchar *section, const gchar *name); /* FIXME add an asynchronous version of watch */ /** * ibus_config_unwatch: * @config: An #IBusConfig * @section: (allow-none): Section name of the configuration option. * @name: (allow-none): Name of the configure option its self. * * Unsubscribe from the configuration option change notification. * * Returns: %TRUE if succeed; %FALSE otherwise. * * See also: ibus_config_watch. */ gboolean ibus_config_unwatch (IBusConfig *config, const gchar *section, const gchar *name); /* FIXME add an asynchronous version of unwatch */ G_END_DECLS #endif ibus-1.5.11/src/ibuskeysyms-compat.h0000644000000000000000000020351512551654123014252 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_KEYSYMS_COMPAT_H__ #define __IBUS_KEYSYMS_COMPAT_H__ /** * SECTION: ibuskeysyms * @short_description: Key symbol definition. * @title: IBusKeysyms * @stability: Stable * * This section defines the key symbols (keysym) used in IBus. * Those keysym data is converted from keysymdef.h in * FreeDesktop. * * Most of the key symbols are not explicit documented, * because they are self-explaining. * * see_also: #IBusKeymap, #IBusHotkeyProfile * */ #define IBUS_VoidSymbol 0xffffff #define IBUS_BackSpace 0xff08 #define IBUS_Tab 0xff09 #define IBUS_Linefeed 0xff0a #define IBUS_Clear 0xff0b #define IBUS_Return 0xff0d #define IBUS_Pause 0xff13 #define IBUS_Scroll_Lock 0xff14 #define IBUS_Sys_Req 0xff15 #define IBUS_Escape 0xff1b #define IBUS_Delete 0xffff /** * IBUS_Multi_key: * * Key for composing characters. * A.k.a. Compose Key. */ #define IBUS_Multi_key 0xff20 /** * IBUS_Codeinput: * * International and multi-key character composition. */ #define IBUS_Codeinput 0xff37 #define IBUS_SingleCandidate 0xff3c #define IBUS_MultipleCandidate 0xff3d #define IBUS_PreviousCandidate 0xff3e /** * IBUS_Kanji: * * Japanese keyboard support. */ #define IBUS_Kanji 0xff21 /** * IBUS_Muhenkan: * * Japanese keyboard support. */ #define IBUS_Muhenkan 0xff22 /** * IBUS_Henkan_Mode: * * Japanese keyboard support. */ #define IBUS_Henkan_Mode 0xff23 /** * IBUS_Henkan: * * Japanese keyboard support. */ #define IBUS_Henkan 0xff23 /** * IBUS_Romaji: * * Japanese keyboard support. */ #define IBUS_Romaji 0xff24 /** * IBUS_Hiragana: * * Japanese keyboard support. */ #define IBUS_Hiragana 0xff25 /** * IBUS_Katakana: * * Japanese keyboard support. */ #define IBUS_Katakana 0xff26 /** * IBUS_Hiragana_Katakana: * * Japanese keyboard support. */ #define IBUS_Hiragana_Katakana 0xff27 #define IBUS_Zenkaku 0xff28 #define IBUS_Hankaku 0xff29 #define IBUS_Zenkaku_Hankaku 0xff2a #define IBUS_Touroku 0xff2b #define IBUS_Massyo 0xff2c #define IBUS_Kana_Lock 0xff2d #define IBUS_Kana_Shift 0xff2e #define IBUS_Eisu_Shift 0xff2f #define IBUS_Eisu_toggle 0xff30 #define IBUS_Kanji_Bangou 0xff37 #define IBUS_Zen_Koho 0xff3d #define IBUS_Mae_Koho 0xff3e #define IBUS_Home 0xff50 #define IBUS_Left 0xff51 #define IBUS_Up 0xff52 #define IBUS_Right 0xff53 #define IBUS_Down 0xff54 #define IBUS_Prior 0xff55 #define IBUS_Page_Up 0xff55 #define IBUS_Next 0xff56 #define IBUS_Page_Down 0xff56 #define IBUS_End 0xff57 #define IBUS_Begin 0xff58 #define IBUS_Select 0xff60 #define IBUS_Print 0xff61 #define IBUS_Execute 0xff62 #define IBUS_Insert 0xff63 #define IBUS_Undo 0xff65 #define IBUS_Redo 0xff66 #define IBUS_Menu 0xff67 #define IBUS_Find 0xff68 #define IBUS_Cancel 0xff69 #define IBUS_Help 0xff6a #define IBUS_Break 0xff6b #define IBUS_Mode_switch 0xff7e #define IBUS_script_switch 0xff7e #define IBUS_Num_Lock 0xff7f #define IBUS_KP_Space 0xff80 #define IBUS_KP_Tab 0xff89 #define IBUS_KP_Enter 0xff8d #define IBUS_KP_F1 0xff91 #define IBUS_KP_F2 0xff92 #define IBUS_KP_F3 0xff93 #define IBUS_KP_F4 0xff94 #define IBUS_KP_Home 0xff95 #define IBUS_KP_Left 0xff96 #define IBUS_KP_Up 0xff97 #define IBUS_KP_Right 0xff98 #define IBUS_KP_Down 0xff99 #define IBUS_KP_Prior 0xff9a #define IBUS_KP_Page_Up 0xff9a #define IBUS_KP_Next 0xff9b #define IBUS_KP_Page_Down 0xff9b #define IBUS_KP_End 0xff9c #define IBUS_KP_Begin 0xff9d #define IBUS_KP_Insert 0xff9e #define IBUS_KP_Delete 0xff9f #define IBUS_KP_Equal 0xffbd #define IBUS_KP_Multiply 0xffaa #define IBUS_KP_Add 0xffab #define IBUS_KP_Separator 0xffac #define IBUS_KP_Subtract 0xffad #define IBUS_KP_Decimal 0xffae #define IBUS_KP_Divide 0xffaf #define IBUS_KP_0 0xffb0 #define IBUS_KP_1 0xffb1 #define IBUS_KP_2 0xffb2 #define IBUS_KP_3 0xffb3 #define IBUS_KP_4 0xffb4 #define IBUS_KP_5 0xffb5 #define IBUS_KP_6 0xffb6 #define IBUS_KP_7 0xffb7 #define IBUS_KP_8 0xffb8 #define IBUS_KP_9 0xffb9 #define IBUS_F1 0xffbe #define IBUS_F2 0xffbf #define IBUS_F3 0xffc0 #define IBUS_F4 0xffc1 #define IBUS_F5 0xffc2 #define IBUS_F6 0xffc3 #define IBUS_F7 0xffc4 #define IBUS_F8 0xffc5 #define IBUS_F9 0xffc6 #define IBUS_F10 0xffc7 #define IBUS_F11 0xffc8 #define IBUS_L1 0xffc8 #define IBUS_F12 0xffc9 #define IBUS_L2 0xffc9 #define IBUS_F13 0xffca #define IBUS_L3 0xffca #define IBUS_F14 0xffcb #define IBUS_L4 0xffcb #define IBUS_F15 0xffcc #define IBUS_L5 0xffcc #define IBUS_F16 0xffcd #define IBUS_L6 0xffcd #define IBUS_F17 0xffce #define IBUS_L7 0xffce #define IBUS_F18 0xffcf #define IBUS_L8 0xffcf #define IBUS_F19 0xffd0 #define IBUS_L9 0xffd0 #define IBUS_F20 0xffd1 #define IBUS_L10 0xffd1 #define IBUS_F21 0xffd2 #define IBUS_R1 0xffd2 #define IBUS_F22 0xffd3 #define IBUS_R2 0xffd3 #define IBUS_F23 0xffd4 #define IBUS_R3 0xffd4 #define IBUS_F24 0xffd5 #define IBUS_R4 0xffd5 #define IBUS_F25 0xffd6 #define IBUS_R5 0xffd6 #define IBUS_F26 0xffd7 #define IBUS_R6 0xffd7 #define IBUS_F27 0xffd8 #define IBUS_R7 0xffd8 #define IBUS_F28 0xffd9 #define IBUS_R8 0xffd9 #define IBUS_F29 0xffda #define IBUS_R9 0xffda #define IBUS_F30 0xffdb #define IBUS_R10 0xffdb #define IBUS_F31 0xffdc #define IBUS_R11 0xffdc #define IBUS_F32 0xffdd #define IBUS_R12 0xffdd #define IBUS_F33 0xffde #define IBUS_R13 0xffde #define IBUS_F34 0xffdf #define IBUS_R14 0xffdf #define IBUS_F35 0xffe0 #define IBUS_R15 0xffe0 #define IBUS_Shift_L 0xffe1 #define IBUS_Shift_R 0xffe2 #define IBUS_Control_L 0xffe3 #define IBUS_Control_R 0xffe4 #define IBUS_Caps_Lock 0xffe5 #define IBUS_Shift_Lock 0xffe6 #define IBUS_Meta_L 0xffe7 #define IBUS_Meta_R 0xffe8 #define IBUS_Alt_L 0xffe9 #define IBUS_Alt_R 0xffea #define IBUS_Super_L 0xffeb #define IBUS_Super_R 0xffec #define IBUS_Hyper_L 0xffed #define IBUS_Hyper_R 0xffee #define IBUS_ISO_Lock 0xfe01 #define IBUS_ISO_Level2_Latch 0xfe02 #define IBUS_ISO_Level3_Shift 0xfe03 #define IBUS_ISO_Level3_Latch 0xfe04 #define IBUS_ISO_Level3_Lock 0xfe05 #define IBUS_ISO_Level5_Shift 0xfe11 #define IBUS_ISO_Level5_Latch 0xfe12 #define IBUS_ISO_Level5_Lock 0xfe13 #define IBUS_ISO_Group_Shift 0xff7e #define IBUS_ISO_Group_Latch 0xfe06 #define IBUS_ISO_Group_Lock 0xfe07 #define IBUS_ISO_Next_Group 0xfe08 #define IBUS_ISO_Next_Group_Lock 0xfe09 #define IBUS_ISO_Prev_Group 0xfe0a #define IBUS_ISO_Prev_Group_Lock 0xfe0b #define IBUS_ISO_First_Group 0xfe0c #define IBUS_ISO_First_Group_Lock 0xfe0d #define IBUS_ISO_Last_Group 0xfe0e #define IBUS_ISO_Last_Group_Lock 0xfe0f #define IBUS_ISO_Left_Tab 0xfe20 #define IBUS_ISO_Move_Line_Up 0xfe21 #define IBUS_ISO_Move_Line_Down 0xfe22 #define IBUS_ISO_Partial_Line_Up 0xfe23 #define IBUS_ISO_Partial_Line_Down 0xfe24 #define IBUS_ISO_Partial_Space_Left 0xfe25 #define IBUS_ISO_Partial_Space_Right 0xfe26 #define IBUS_ISO_Set_Margin_Left 0xfe27 #define IBUS_ISO_Set_Margin_Right 0xfe28 #define IBUS_ISO_Release_Margin_Left 0xfe29 #define IBUS_ISO_Release_Margin_Right 0xfe2a #define IBUS_ISO_Release_Both_Margins 0xfe2b #define IBUS_ISO_Fast_Cursor_Left 0xfe2c #define IBUS_ISO_Fast_Cursor_Right 0xfe2d #define IBUS_ISO_Fast_Cursor_Up 0xfe2e #define IBUS_ISO_Fast_Cursor_Down 0xfe2f #define IBUS_ISO_Continuous_Underline 0xfe30 #define IBUS_ISO_Discontinuous_Underline 0xfe31 #define IBUS_ISO_Emphasize 0xfe32 #define IBUS_ISO_Center_Object 0xfe33 #define IBUS_ISO_Enter 0xfe34 #define IBUS_dead_grave 0xfe50 #define IBUS_dead_acute 0xfe51 #define IBUS_dead_circumflex 0xfe52 #define IBUS_dead_tilde 0xfe53 #define IBUS_dead_perispomeni 0xfe53 #define IBUS_dead_macron 0xfe54 #define IBUS_dead_breve 0xfe55 #define IBUS_dead_abovedot 0xfe56 #define IBUS_dead_diaeresis 0xfe57 #define IBUS_dead_abovering 0xfe58 #define IBUS_dead_doubleacute 0xfe59 #define IBUS_dead_caron 0xfe5a #define IBUS_dead_cedilla 0xfe5b #define IBUS_dead_ogonek 0xfe5c #define IBUS_dead_iota 0xfe5d #define IBUS_dead_voiced_sound 0xfe5e #define IBUS_dead_semivoiced_sound 0xfe5f #define IBUS_dead_belowdot 0xfe60 #define IBUS_dead_hook 0xfe61 #define IBUS_dead_horn 0xfe62 #define IBUS_dead_stroke 0xfe63 #define IBUS_dead_abovecomma 0xfe64 #define IBUS_dead_psili 0xfe64 #define IBUS_dead_abovereversedcomma 0xfe65 #define IBUS_dead_dasia 0xfe65 #define IBUS_dead_belowring 0xfe67 #define IBUS_dead_belowmacron 0xfe68 #define IBUS_dead_belowcircumflex 0xfe69 #define IBUS_dead_belowtilde 0xfe6a #define IBUS_dead_belowbreve 0xfe6b #define IBUS_dead_belowdiaeresis 0xfe6c #define IBUS_First_Virtual_Screen 0xfed0 #define IBUS_Prev_Virtual_Screen 0xfed1 #define IBUS_Next_Virtual_Screen 0xfed2 #define IBUS_Last_Virtual_Screen 0xfed4 #define IBUS_Terminate_Server 0xfed5 #define IBUS_AccessX_Enable 0xfe70 #define IBUS_AccessX_Feedback_Enable 0xfe71 #define IBUS_RepeatKeys_Enable 0xfe72 #define IBUS_SlowKeys_Enable 0xfe73 #define IBUS_BounceKeys_Enable 0xfe74 #define IBUS_StickyKeys_Enable 0xfe75 #define IBUS_MouseKeys_Enable 0xfe76 #define IBUS_MouseKeys_Accel_Enable 0xfe77 #define IBUS_Overlay1_Enable 0xfe78 #define IBUS_Overlay2_Enable 0xfe79 #define IBUS_AudibleBell_Enable 0xfe7a #define IBUS_Pointer_Left 0xfee0 #define IBUS_Pointer_Right 0xfee1 #define IBUS_Pointer_Up 0xfee2 #define IBUS_Pointer_Down 0xfee3 #define IBUS_Pointer_UpLeft 0xfee4 #define IBUS_Pointer_UpRight 0xfee5 #define IBUS_Pointer_DownLeft 0xfee6 #define IBUS_Pointer_DownRight 0xfee7 #define IBUS_Pointer_Button_Dflt 0xfee8 #define IBUS_Pointer_Button1 0xfee9 #define IBUS_Pointer_Button2 0xfeea #define IBUS_Pointer_Button3 0xfeeb #define IBUS_Pointer_Button4 0xfeec #define IBUS_Pointer_Button5 0xfeed #define IBUS_Pointer_DblClick_Dflt 0xfeee #define IBUS_Pointer_DblClick1 0xfeef #define IBUS_Pointer_DblClick2 0xfef0 #define IBUS_Pointer_DblClick3 0xfef1 #define IBUS_Pointer_DblClick4 0xfef2 #define IBUS_Pointer_DblClick5 0xfef3 #define IBUS_Pointer_Drag_Dflt 0xfef4 #define IBUS_Pointer_Drag1 0xfef5 #define IBUS_Pointer_Drag2 0xfef6 #define IBUS_Pointer_Drag3 0xfef7 #define IBUS_Pointer_Drag4 0xfef8 #define IBUS_Pointer_Drag5 0xfefd #define IBUS_Pointer_EnableKeys 0xfef9 #define IBUS_Pointer_Accelerate 0xfefa #define IBUS_Pointer_DfltBtnNext 0xfefb #define IBUS_Pointer_DfltBtnPrev 0xfefc #define IBUS_3270_Duplicate 0xfd01 #define IBUS_3270_FieldMark 0xfd02 #define IBUS_3270_Right2 0xfd03 #define IBUS_3270_Left2 0xfd04 #define IBUS_3270_BackTab 0xfd05 #define IBUS_3270_EraseEOF 0xfd06 #define IBUS_3270_EraseInput 0xfd07 #define IBUS_3270_Reset 0xfd08 #define IBUS_3270_Quit 0xfd09 #define IBUS_3270_PA1 0xfd0a #define IBUS_3270_PA2 0xfd0b #define IBUS_3270_PA3 0xfd0c #define IBUS_3270_Test 0xfd0d #define IBUS_3270_Attn 0xfd0e #define IBUS_3270_CursorBlink 0xfd0f #define IBUS_3270_AltCursor 0xfd10 #define IBUS_3270_KeyClick 0xfd11 #define IBUS_3270_Jump 0xfd12 #define IBUS_3270_Ident 0xfd13 #define IBUS_3270_Rule 0xfd14 #define IBUS_3270_Copy 0xfd15 #define IBUS_3270_Play 0xfd16 #define IBUS_3270_Setup 0xfd17 #define IBUS_3270_Record 0xfd18 #define IBUS_3270_ChangeScreen 0xfd19 #define IBUS_3270_DeleteWord 0xfd1a #define IBUS_3270_ExSelect 0xfd1b #define IBUS_3270_CursorSelect 0xfd1c #define IBUS_3270_PrintScreen 0xfd1d #define IBUS_3270_Enter 0xfd1e #define IBUS_space 0x020 #define IBUS_exclam 0x021 #define IBUS_quotedbl 0x022 #define IBUS_numbersign 0x023 #define IBUS_dollar 0x024 #define IBUS_percent 0x025 #define IBUS_ampersand 0x026 #define IBUS_apostrophe 0x027 #define IBUS_quoteright 0x027 #define IBUS_parenleft 0x028 #define IBUS_parenright 0x029 #define IBUS_asterisk 0x02a #define IBUS_plus 0x02b #define IBUS_comma 0x02c #define IBUS_minus 0x02d #define IBUS_period 0x02e #define IBUS_slash 0x02f #define IBUS_0 0x030 #define IBUS_1 0x031 #define IBUS_2 0x032 #define IBUS_3 0x033 #define IBUS_4 0x034 #define IBUS_5 0x035 #define IBUS_6 0x036 #define IBUS_7 0x037 #define IBUS_8 0x038 #define IBUS_9 0x039 #define IBUS_colon 0x03a #define IBUS_semicolon 0x03b #define IBUS_less 0x03c #define IBUS_equal 0x03d #define IBUS_greater 0x03e #define IBUS_question 0x03f #define IBUS_at 0x040 #define IBUS_A 0x041 #define IBUS_B 0x042 #define IBUS_C 0x043 #define IBUS_D 0x044 #define IBUS_E 0x045 #define IBUS_F 0x046 #define IBUS_G 0x047 #define IBUS_H 0x048 #define IBUS_I 0x049 #define IBUS_J 0x04a #define IBUS_K 0x04b #define IBUS_L 0x04c #define IBUS_M 0x04d #define IBUS_N 0x04e #define IBUS_O 0x04f #define IBUS_P 0x050 #define IBUS_Q 0x051 #define IBUS_R 0x052 #define IBUS_S 0x053 #define IBUS_T 0x054 #define IBUS_U 0x055 #define IBUS_V 0x056 #define IBUS_W 0x057 #define IBUS_X 0x058 #define IBUS_Y 0x059 #define IBUS_Z 0x05a #define IBUS_bracketleft 0x05b #define IBUS_backslash 0x05c #define IBUS_bracketright 0x05d #define IBUS_asciicircum 0x05e #define IBUS_underscore 0x05f #define IBUS_grave 0x060 #define IBUS_quoteleft 0x060 #define IBUS_a 0x061 #define IBUS_b 0x062 #define IBUS_c 0x063 #define IBUS_d 0x064 #define IBUS_e 0x065 #define IBUS_f 0x066 #define IBUS_g 0x067 #define IBUS_h 0x068 #define IBUS_i 0x069 #define IBUS_j 0x06a #define IBUS_k 0x06b #define IBUS_l 0x06c #define IBUS_m 0x06d #define IBUS_n 0x06e #define IBUS_o 0x06f #define IBUS_p 0x070 #define IBUS_q 0x071 #define IBUS_r 0x072 #define IBUS_s 0x073 #define IBUS_t 0x074 #define IBUS_u 0x075 #define IBUS_v 0x076 #define IBUS_w 0x077 #define IBUS_x 0x078 #define IBUS_y 0x079 #define IBUS_z 0x07a #define IBUS_braceleft 0x07b #define IBUS_bar 0x07c #define IBUS_braceright 0x07d #define IBUS_asciitilde 0x07e #define IBUS_nobreakspace 0x0a0 #define IBUS_exclamdown 0x0a1 #define IBUS_cent 0x0a2 #define IBUS_sterling 0x0a3 #define IBUS_currency 0x0a4 #define IBUS_yen 0x0a5 #define IBUS_brokenbar 0x0a6 #define IBUS_section 0x0a7 #define IBUS_diaeresis 0x0a8 #define IBUS_copyright 0x0a9 #define IBUS_ordfeminine 0x0aa #define IBUS_guillemotleft 0x0ab #define IBUS_notsign 0x0ac #define IBUS_hyphen 0x0ad #define IBUS_registered 0x0ae #define IBUS_macron 0x0af #define IBUS_degree 0x0b0 #define IBUS_plusminus 0x0b1 #define IBUS_twosuperior 0x0b2 #define IBUS_threesuperior 0x0b3 #define IBUS_acute 0x0b4 #define IBUS_mu 0x0b5 #define IBUS_paragraph 0x0b6 #define IBUS_periodcentered 0x0b7 #define IBUS_cedilla 0x0b8 #define IBUS_onesuperior 0x0b9 #define IBUS_masculine 0x0ba #define IBUS_guillemotright 0x0bb #define IBUS_onequarter 0x0bc #define IBUS_onehalf 0x0bd #define IBUS_threequarters 0x0be #define IBUS_questiondown 0x0bf #define IBUS_Agrave 0x0c0 #define IBUS_Aacute 0x0c1 #define IBUS_Acircumflex 0x0c2 #define IBUS_Atilde 0x0c3 #define IBUS_Adiaeresis 0x0c4 #define IBUS_Aring 0x0c5 #define IBUS_AE 0x0c6 #define IBUS_Ccedilla 0x0c7 #define IBUS_Egrave 0x0c8 #define IBUS_Eacute 0x0c9 #define IBUS_Ecircumflex 0x0ca #define IBUS_Ediaeresis 0x0cb #define IBUS_Igrave 0x0cc #define IBUS_Iacute 0x0cd #define IBUS_Icircumflex 0x0ce #define IBUS_Idiaeresis 0x0cf #define IBUS_ETH 0x0d0 #define IBUS_Eth 0x0d0 #define IBUS_Ntilde 0x0d1 #define IBUS_Ograve 0x0d2 #define IBUS_Oacute 0x0d3 #define IBUS_Ocircumflex 0x0d4 #define IBUS_Otilde 0x0d5 #define IBUS_Odiaeresis 0x0d6 #define IBUS_multiply 0x0d7 #define IBUS_Oslash 0x0d8 #define IBUS_Ooblique 0x0d8 #define IBUS_Ugrave 0x0d9 #define IBUS_Uacute 0x0da #define IBUS_Ucircumflex 0x0db #define IBUS_Udiaeresis 0x0dc #define IBUS_Yacute 0x0dd #define IBUS_THORN 0x0de #define IBUS_Thorn 0x0de #define IBUS_ssharp 0x0df #define IBUS_agrave 0x0e0 #define IBUS_aacute 0x0e1 #define IBUS_acircumflex 0x0e2 #define IBUS_atilde 0x0e3 #define IBUS_adiaeresis 0x0e4 #define IBUS_aring 0x0e5 #define IBUS_ae 0x0e6 #define IBUS_ccedilla 0x0e7 #define IBUS_egrave 0x0e8 #define IBUS_eacute 0x0e9 #define IBUS_ecircumflex 0x0ea #define IBUS_ediaeresis 0x0eb #define IBUS_igrave 0x0ec #define IBUS_iacute 0x0ed #define IBUS_icircumflex 0x0ee #define IBUS_idiaeresis 0x0ef #define IBUS_eth 0x0f0 #define IBUS_ntilde 0x0f1 #define IBUS_ograve 0x0f2 #define IBUS_oacute 0x0f3 #define IBUS_ocircumflex 0x0f4 #define IBUS_otilde 0x0f5 #define IBUS_odiaeresis 0x0f6 #define IBUS_division 0x0f7 #define IBUS_oslash 0x0f8 #define IBUS_ooblique 0x0f8 #define IBUS_ugrave 0x0f9 #define IBUS_uacute 0x0fa #define IBUS_ucircumflex 0x0fb #define IBUS_udiaeresis 0x0fc #define IBUS_yacute 0x0fd #define IBUS_thorn 0x0fe #define IBUS_ydiaeresis 0x0ff #define IBUS_Aogonek 0x1a1 #define IBUS_breve 0x1a2 #define IBUS_Lstroke 0x1a3 #define IBUS_Lcaron 0x1a5 #define IBUS_Sacute 0x1a6 #define IBUS_Scaron 0x1a9 #define IBUS_Scedilla 0x1aa #define IBUS_Tcaron 0x1ab #define IBUS_Zacute 0x1ac #define IBUS_Zcaron 0x1ae #define IBUS_Zabovedot 0x1af #define IBUS_aogonek 0x1b1 #define IBUS_ogonek 0x1b2 #define IBUS_lstroke 0x1b3 #define IBUS_lcaron 0x1b5 #define IBUS_sacute 0x1b6 #define IBUS_caron 0x1b7 #define IBUS_scaron 0x1b9 #define IBUS_scedilla 0x1ba #define IBUS_tcaron 0x1bb #define IBUS_zacute 0x1bc #define IBUS_doubleacute 0x1bd #define IBUS_zcaron 0x1be #define IBUS_zabovedot 0x1bf #define IBUS_Racute 0x1c0 #define IBUS_Abreve 0x1c3 #define IBUS_Lacute 0x1c5 #define IBUS_Cacute 0x1c6 #define IBUS_Ccaron 0x1c8 #define IBUS_Eogonek 0x1ca #define IBUS_Ecaron 0x1cc #define IBUS_Dcaron 0x1cf #define IBUS_Dstroke 0x1d0 #define IBUS_Nacute 0x1d1 #define IBUS_Ncaron 0x1d2 #define IBUS_Odoubleacute 0x1d5 #define IBUS_Rcaron 0x1d8 #define IBUS_Uring 0x1d9 #define IBUS_Udoubleacute 0x1db #define IBUS_Tcedilla 0x1de #define IBUS_racute 0x1e0 #define IBUS_abreve 0x1e3 #define IBUS_lacute 0x1e5 #define IBUS_cacute 0x1e6 #define IBUS_ccaron 0x1e8 #define IBUS_eogonek 0x1ea #define IBUS_ecaron 0x1ec #define IBUS_dcaron 0x1ef #define IBUS_dstroke 0x1f0 #define IBUS_nacute 0x1f1 #define IBUS_ncaron 0x1f2 #define IBUS_odoubleacute 0x1f5 #define IBUS_udoubleacute 0x1fb #define IBUS_rcaron 0x1f8 #define IBUS_uring 0x1f9 #define IBUS_tcedilla 0x1fe #define IBUS_abovedot 0x1ff #define IBUS_Hstroke 0x2a1 #define IBUS_Hcircumflex 0x2a6 #define IBUS_Iabovedot 0x2a9 #define IBUS_Gbreve 0x2ab #define IBUS_Jcircumflex 0x2ac #define IBUS_hstroke 0x2b1 #define IBUS_hcircumflex 0x2b6 #define IBUS_idotless 0x2b9 #define IBUS_gbreve 0x2bb #define IBUS_jcircumflex 0x2bc #define IBUS_Cabovedot 0x2c5 #define IBUS_Ccircumflex 0x2c6 #define IBUS_Gabovedot 0x2d5 #define IBUS_Gcircumflex 0x2d8 #define IBUS_Ubreve 0x2dd #define IBUS_Scircumflex 0x2de #define IBUS_cabovedot 0x2e5 #define IBUS_ccircumflex 0x2e6 #define IBUS_gabovedot 0x2f5 #define IBUS_gcircumflex 0x2f8 #define IBUS_ubreve 0x2fd #define IBUS_scircumflex 0x2fe #define IBUS_kra 0x3a2 #define IBUS_kappa 0x3a2 #define IBUS_Rcedilla 0x3a3 #define IBUS_Itilde 0x3a5 #define IBUS_Lcedilla 0x3a6 #define IBUS_Emacron 0x3aa #define IBUS_Gcedilla 0x3ab #define IBUS_Tslash 0x3ac #define IBUS_rcedilla 0x3b3 #define IBUS_itilde 0x3b5 #define IBUS_lcedilla 0x3b6 #define IBUS_emacron 0x3ba #define IBUS_gcedilla 0x3bb #define IBUS_tslash 0x3bc #define IBUS_ENG 0x3bd #define IBUS_eng 0x3bf #define IBUS_Amacron 0x3c0 #define IBUS_Iogonek 0x3c7 #define IBUS_Eabovedot 0x3cc #define IBUS_Imacron 0x3cf #define IBUS_Ncedilla 0x3d1 #define IBUS_Omacron 0x3d2 #define IBUS_Kcedilla 0x3d3 #define IBUS_Uogonek 0x3d9 #define IBUS_Utilde 0x3dd #define IBUS_Umacron 0x3de #define IBUS_amacron 0x3e0 #define IBUS_iogonek 0x3e7 #define IBUS_eabovedot 0x3ec #define IBUS_imacron 0x3ef #define IBUS_ncedilla 0x3f1 #define IBUS_omacron 0x3f2 #define IBUS_kcedilla 0x3f3 #define IBUS_uogonek 0x3f9 #define IBUS_utilde 0x3fd #define IBUS_umacron 0x3fe #define IBUS_Babovedot 0x1001e02 #define IBUS_babovedot 0x1001e03 #define IBUS_Dabovedot 0x1001e0a #define IBUS_Wgrave 0x1001e80 #define IBUS_Wacute 0x1001e82 #define IBUS_dabovedot 0x1001e0b #define IBUS_Ygrave 0x1001ef2 #define IBUS_Fabovedot 0x1001e1e #define IBUS_fabovedot 0x1001e1f #define IBUS_Mabovedot 0x1001e40 #define IBUS_mabovedot 0x1001e41 #define IBUS_Pabovedot 0x1001e56 #define IBUS_wgrave 0x1001e81 #define IBUS_pabovedot 0x1001e57 #define IBUS_wacute 0x1001e83 #define IBUS_Sabovedot 0x1001e60 #define IBUS_ygrave 0x1001ef3 #define IBUS_Wdiaeresis 0x1001e84 #define IBUS_wdiaeresis 0x1001e85 #define IBUS_sabovedot 0x1001e61 #define IBUS_Wcircumflex 0x1000174 #define IBUS_Tabovedot 0x1001e6a #define IBUS_Ycircumflex 0x1000176 #define IBUS_wcircumflex 0x1000175 #define IBUS_tabovedot 0x1001e6b #define IBUS_ycircumflex 0x1000177 #define IBUS_OE 0x13bc #define IBUS_oe 0x13bd #define IBUS_Ydiaeresis 0x13be #define IBUS_overline 0x47e #define IBUS_kana_fullstop 0x4a1 #define IBUS_kana_openingbracket 0x4a2 #define IBUS_kana_closingbracket 0x4a3 #define IBUS_kana_comma 0x4a4 #define IBUS_kana_conjunctive 0x4a5 #define IBUS_kana_middledot 0x4a5 #define IBUS_kana_WO 0x4a6 #define IBUS_kana_a 0x4a7 #define IBUS_kana_i 0x4a8 #define IBUS_kana_u 0x4a9 #define IBUS_kana_e 0x4aa #define IBUS_kana_o 0x4ab #define IBUS_kana_ya 0x4ac #define IBUS_kana_yu 0x4ad #define IBUS_kana_yo 0x4ae #define IBUS_kana_tsu 0x4af #define IBUS_kana_tu 0x4af #define IBUS_prolongedsound 0x4b0 #define IBUS_kana_A 0x4b1 #define IBUS_kana_I 0x4b2 #define IBUS_kana_U 0x4b3 #define IBUS_kana_E 0x4b4 #define IBUS_kana_O 0x4b5 #define IBUS_kana_KA 0x4b6 #define IBUS_kana_KI 0x4b7 #define IBUS_kana_KU 0x4b8 #define IBUS_kana_KE 0x4b9 #define IBUS_kana_KO 0x4ba #define IBUS_kana_SA 0x4bb #define IBUS_kana_SHI 0x4bc #define IBUS_kana_SU 0x4bd #define IBUS_kana_SE 0x4be #define IBUS_kana_SO 0x4bf #define IBUS_kana_TA 0x4c0 #define IBUS_kana_CHI 0x4c1 #define IBUS_kana_TI 0x4c1 #define IBUS_kana_TSU 0x4c2 #define IBUS_kana_TU 0x4c2 #define IBUS_kana_TE 0x4c3 #define IBUS_kana_TO 0x4c4 #define IBUS_kana_NA 0x4c5 #define IBUS_kana_NI 0x4c6 #define IBUS_kana_NU 0x4c7 #define IBUS_kana_NE 0x4c8 #define IBUS_kana_NO 0x4c9 #define IBUS_kana_HA 0x4ca #define IBUS_kana_HI 0x4cb #define IBUS_kana_FU 0x4cc #define IBUS_kana_HU 0x4cc #define IBUS_kana_HE 0x4cd #define IBUS_kana_HO 0x4ce #define IBUS_kana_MA 0x4cf #define IBUS_kana_MI 0x4d0 #define IBUS_kana_MU 0x4d1 #define IBUS_kana_ME 0x4d2 #define IBUS_kana_MO 0x4d3 #define IBUS_kana_YA 0x4d4 #define IBUS_kana_YU 0x4d5 #define IBUS_kana_YO 0x4d6 #define IBUS_kana_RA 0x4d7 #define IBUS_kana_RI 0x4d8 #define IBUS_kana_RU 0x4d9 #define IBUS_kana_RE 0x4da #define IBUS_kana_RO 0x4db #define IBUS_kana_WA 0x4dc #define IBUS_kana_N 0x4dd #define IBUS_voicedsound 0x4de #define IBUS_semivoicedsound 0x4df #define IBUS_kana_switch 0xff7e #define IBUS_Farsi_0 0x10006f0 #define IBUS_Farsi_1 0x10006f1 #define IBUS_Farsi_2 0x10006f2 #define IBUS_Farsi_3 0x10006f3 #define IBUS_Farsi_4 0x10006f4 #define IBUS_Farsi_5 0x10006f5 #define IBUS_Farsi_6 0x10006f6 #define IBUS_Farsi_7 0x10006f7 #define IBUS_Farsi_8 0x10006f8 #define IBUS_Farsi_9 0x10006f9 #define IBUS_Arabic_percent 0x100066a #define IBUS_Arabic_superscript_alef 0x1000670 #define IBUS_Arabic_tteh 0x1000679 #define IBUS_Arabic_peh 0x100067e #define IBUS_Arabic_tcheh 0x1000686 #define IBUS_Arabic_ddal 0x1000688 #define IBUS_Arabic_rreh 0x1000691 #define IBUS_Arabic_comma 0x5ac #define IBUS_Arabic_fullstop 0x10006d4 #define IBUS_Arabic_0 0x1000660 #define IBUS_Arabic_1 0x1000661 #define IBUS_Arabic_2 0x1000662 #define IBUS_Arabic_3 0x1000663 #define IBUS_Arabic_4 0x1000664 #define IBUS_Arabic_5 0x1000665 #define IBUS_Arabic_6 0x1000666 #define IBUS_Arabic_7 0x1000667 #define IBUS_Arabic_8 0x1000668 #define IBUS_Arabic_9 0x1000669 #define IBUS_Arabic_semicolon 0x5bb #define IBUS_Arabic_question_mark 0x5bf #define IBUS_Arabic_hamza 0x5c1 #define IBUS_Arabic_maddaonalef 0x5c2 #define IBUS_Arabic_hamzaonalef 0x5c3 #define IBUS_Arabic_hamzaonwaw 0x5c4 #define IBUS_Arabic_hamzaunderalef 0x5c5 #define IBUS_Arabic_hamzaonyeh 0x5c6 #define IBUS_Arabic_alef 0x5c7 #define IBUS_Arabic_beh 0x5c8 #define IBUS_Arabic_tehmarbuta 0x5c9 #define IBUS_Arabic_teh 0x5ca #define IBUS_Arabic_theh 0x5cb #define IBUS_Arabic_jeem 0x5cc #define IBUS_Arabic_hah 0x5cd #define IBUS_Arabic_khah 0x5ce #define IBUS_Arabic_dal 0x5cf #define IBUS_Arabic_thal 0x5d0 #define IBUS_Arabic_ra 0x5d1 #define IBUS_Arabic_zain 0x5d2 #define IBUS_Arabic_seen 0x5d3 #define IBUS_Arabic_sheen 0x5d4 #define IBUS_Arabic_sad 0x5d5 #define IBUS_Arabic_dad 0x5d6 #define IBUS_Arabic_tah 0x5d7 #define IBUS_Arabic_zah 0x5d8 #define IBUS_Arabic_ain 0x5d9 #define IBUS_Arabic_ghain 0x5da #define IBUS_Arabic_tatweel 0x5e0 #define IBUS_Arabic_feh 0x5e1 #define IBUS_Arabic_qaf 0x5e2 #define IBUS_Arabic_kaf 0x5e3 #define IBUS_Arabic_lam 0x5e4 #define IBUS_Arabic_meem 0x5e5 #define IBUS_Arabic_noon 0x5e6 #define IBUS_Arabic_ha 0x5e7 #define IBUS_Arabic_heh 0x5e7 #define IBUS_Arabic_waw 0x5e8 #define IBUS_Arabic_alefmaksura 0x5e9 #define IBUS_Arabic_yeh 0x5ea #define IBUS_Arabic_fathatan 0x5eb #define IBUS_Arabic_dammatan 0x5ec #define IBUS_Arabic_kasratan 0x5ed #define IBUS_Arabic_fatha 0x5ee #define IBUS_Arabic_damma 0x5ef #define IBUS_Arabic_kasra 0x5f0 #define IBUS_Arabic_shadda 0x5f1 #define IBUS_Arabic_sukun 0x5f2 #define IBUS_Arabic_madda_above 0x1000653 #define IBUS_Arabic_hamza_above 0x1000654 #define IBUS_Arabic_hamza_below 0x1000655 #define IBUS_Arabic_jeh 0x1000698 #define IBUS_Arabic_veh 0x10006a4 #define IBUS_Arabic_keheh 0x10006a9 #define IBUS_Arabic_gaf 0x10006af #define IBUS_Arabic_noon_ghunna 0x10006ba #define IBUS_Arabic_heh_doachashmee 0x10006be #define IBUS_Farsi_yeh 0x10006cc #define IBUS_Arabic_farsi_yeh 0x10006cc #define IBUS_Arabic_yeh_baree 0x10006d2 #define IBUS_Arabic_heh_goal 0x10006c1 #define IBUS_Arabic_switch 0xff7e #define IBUS_Cyrillic_GHE_bar 0x1000492 #define IBUS_Cyrillic_ghe_bar 0x1000493 #define IBUS_Cyrillic_ZHE_descender 0x1000496 #define IBUS_Cyrillic_zhe_descender 0x1000497 #define IBUS_Cyrillic_KA_descender 0x100049a #define IBUS_Cyrillic_ka_descender 0x100049b #define IBUS_Cyrillic_KA_vertstroke 0x100049c #define IBUS_Cyrillic_ka_vertstroke 0x100049d #define IBUS_Cyrillic_EN_descender 0x10004a2 #define IBUS_Cyrillic_en_descender 0x10004a3 #define IBUS_Cyrillic_U_straight 0x10004ae #define IBUS_Cyrillic_u_straight 0x10004af #define IBUS_Cyrillic_U_straight_bar 0x10004b0 #define IBUS_Cyrillic_u_straight_bar 0x10004b1 #define IBUS_Cyrillic_HA_descender 0x10004b2 #define IBUS_Cyrillic_ha_descender 0x10004b3 #define IBUS_Cyrillic_CHE_descender 0x10004b6 #define IBUS_Cyrillic_che_descender 0x10004b7 #define IBUS_Cyrillic_CHE_vertstroke 0x10004b8 #define IBUS_Cyrillic_che_vertstroke 0x10004b9 #define IBUS_Cyrillic_SHHA 0x10004ba #define IBUS_Cyrillic_shha 0x10004bb #define IBUS_Cyrillic_SCHWA 0x10004d8 #define IBUS_Cyrillic_schwa 0x10004d9 #define IBUS_Cyrillic_I_macron 0x10004e2 #define IBUS_Cyrillic_i_macron 0x10004e3 #define IBUS_Cyrillic_O_bar 0x10004e8 #define IBUS_Cyrillic_o_bar 0x10004e9 #define IBUS_Cyrillic_U_macron 0x10004ee #define IBUS_Cyrillic_u_macron 0x10004ef #define IBUS_Serbian_dje 0x6a1 #define IBUS_Macedonia_gje 0x6a2 #define IBUS_Cyrillic_io 0x6a3 #define IBUS_Ukrainian_ie 0x6a4 #define IBUS_Ukranian_je 0x6a4 #define IBUS_Macedonia_dse 0x6a5 #define IBUS_Ukrainian_i 0x6a6 #define IBUS_Ukranian_i 0x6a6 #define IBUS_Ukrainian_yi 0x6a7 #define IBUS_Ukranian_yi 0x6a7 #define IBUS_Cyrillic_je 0x6a8 #define IBUS_Serbian_je 0x6a8 #define IBUS_Cyrillic_lje 0x6a9 #define IBUS_Serbian_lje 0x6a9 #define IBUS_Cyrillic_nje 0x6aa #define IBUS_Serbian_nje 0x6aa #define IBUS_Serbian_tshe 0x6ab #define IBUS_Macedonia_kje 0x6ac #define IBUS_Ukrainian_ghe_with_upturn 0x6ad #define IBUS_Byelorussian_shortu 0x6ae #define IBUS_Cyrillic_dzhe 0x6af #define IBUS_Serbian_dze 0x6af #define IBUS_numerosign 0x6b0 #define IBUS_Serbian_DJE 0x6b1 #define IBUS_Macedonia_GJE 0x6b2 #define IBUS_Cyrillic_IO 0x6b3 #define IBUS_Ukrainian_IE 0x6b4 #define IBUS_Ukranian_JE 0x6b4 #define IBUS_Macedonia_DSE 0x6b5 #define IBUS_Ukrainian_I 0x6b6 #define IBUS_Ukranian_I 0x6b6 #define IBUS_Ukrainian_YI 0x6b7 #define IBUS_Ukranian_YI 0x6b7 #define IBUS_Cyrillic_JE 0x6b8 #define IBUS_Serbian_JE 0x6b8 #define IBUS_Cyrillic_LJE 0x6b9 #define IBUS_Serbian_LJE 0x6b9 #define IBUS_Cyrillic_NJE 0x6ba #define IBUS_Serbian_NJE 0x6ba #define IBUS_Serbian_TSHE 0x6bb #define IBUS_Macedonia_KJE 0x6bc #define IBUS_Ukrainian_GHE_WITH_UPTURN 0x6bd #define IBUS_Byelorussian_SHORTU 0x6be #define IBUS_Cyrillic_DZHE 0x6bf #define IBUS_Serbian_DZE 0x6bf #define IBUS_Cyrillic_yu 0x6c0 #define IBUS_Cyrillic_a 0x6c1 #define IBUS_Cyrillic_be 0x6c2 #define IBUS_Cyrillic_tse 0x6c3 #define IBUS_Cyrillic_de 0x6c4 #define IBUS_Cyrillic_ie 0x6c5 #define IBUS_Cyrillic_ef 0x6c6 #define IBUS_Cyrillic_ghe 0x6c7 #define IBUS_Cyrillic_ha 0x6c8 #define IBUS_Cyrillic_i 0x6c9 #define IBUS_Cyrillic_shorti 0x6ca #define IBUS_Cyrillic_ka 0x6cb #define IBUS_Cyrillic_el 0x6cc #define IBUS_Cyrillic_em 0x6cd #define IBUS_Cyrillic_en 0x6ce #define IBUS_Cyrillic_o 0x6cf #define IBUS_Cyrillic_pe 0x6d0 #define IBUS_Cyrillic_ya 0x6d1 #define IBUS_Cyrillic_er 0x6d2 #define IBUS_Cyrillic_es 0x6d3 #define IBUS_Cyrillic_te 0x6d4 #define IBUS_Cyrillic_u 0x6d5 #define IBUS_Cyrillic_zhe 0x6d6 #define IBUS_Cyrillic_ve 0x6d7 #define IBUS_Cyrillic_softsign 0x6d8 #define IBUS_Cyrillic_yeru 0x6d9 #define IBUS_Cyrillic_ze 0x6da #define IBUS_Cyrillic_sha 0x6db #define IBUS_Cyrillic_e 0x6dc #define IBUS_Cyrillic_shcha 0x6dd #define IBUS_Cyrillic_che 0x6de #define IBUS_Cyrillic_hardsign 0x6df #define IBUS_Cyrillic_YU 0x6e0 #define IBUS_Cyrillic_A 0x6e1 #define IBUS_Cyrillic_BE 0x6e2 #define IBUS_Cyrillic_TSE 0x6e3 #define IBUS_Cyrillic_DE 0x6e4 #define IBUS_Cyrillic_IE 0x6e5 #define IBUS_Cyrillic_EF 0x6e6 #define IBUS_Cyrillic_GHE 0x6e7 #define IBUS_Cyrillic_HA 0x6e8 #define IBUS_Cyrillic_I 0x6e9 #define IBUS_Cyrillic_SHORTI 0x6ea #define IBUS_Cyrillic_KA 0x6eb #define IBUS_Cyrillic_EL 0x6ec #define IBUS_Cyrillic_EM 0x6ed #define IBUS_Cyrillic_EN 0x6ee #define IBUS_Cyrillic_O 0x6ef #define IBUS_Cyrillic_PE 0x6f0 #define IBUS_Cyrillic_YA 0x6f1 #define IBUS_Cyrillic_ER 0x6f2 #define IBUS_Cyrillic_ES 0x6f3 #define IBUS_Cyrillic_TE 0x6f4 #define IBUS_Cyrillic_U 0x6f5 #define IBUS_Cyrillic_ZHE 0x6f6 #define IBUS_Cyrillic_VE 0x6f7 #define IBUS_Cyrillic_SOFTSIGN 0x6f8 #define IBUS_Cyrillic_YERU 0x6f9 #define IBUS_Cyrillic_ZE 0x6fa #define IBUS_Cyrillic_SHA 0x6fb #define IBUS_Cyrillic_E 0x6fc #define IBUS_Cyrillic_SHCHA 0x6fd #define IBUS_Cyrillic_CHE 0x6fe #define IBUS_Cyrillic_HARDSIGN 0x6ff #define IBUS_Greek_ALPHAaccent 0x7a1 #define IBUS_Greek_EPSILONaccent 0x7a2 #define IBUS_Greek_ETAaccent 0x7a3 #define IBUS_Greek_IOTAaccent 0x7a4 #define IBUS_Greek_IOTAdieresis 0x7a5 #define IBUS_Greek_IOTAdiaeresis 0x7a5 #define IBUS_Greek_OMICRONaccent 0x7a7 #define IBUS_Greek_UPSILONaccent 0x7a8 #define IBUS_Greek_UPSILONdieresis 0x7a9 #define IBUS_Greek_OMEGAaccent 0x7ab #define IBUS_Greek_accentdieresis 0x7ae #define IBUS_Greek_horizbar 0x7af #define IBUS_Greek_alphaaccent 0x7b1 #define IBUS_Greek_epsilonaccent 0x7b2 #define IBUS_Greek_etaaccent 0x7b3 #define IBUS_Greek_iotaaccent 0x7b4 #define IBUS_Greek_iotadieresis 0x7b5 #define IBUS_Greek_iotaaccentdieresis 0x7b6 #define IBUS_Greek_omicronaccent 0x7b7 #define IBUS_Greek_upsilonaccent 0x7b8 #define IBUS_Greek_upsilondieresis 0x7b9 #define IBUS_Greek_upsilonaccentdieresis 0x7ba #define IBUS_Greek_omegaaccent 0x7bb #define IBUS_Greek_ALPHA 0x7c1 #define IBUS_Greek_BETA 0x7c2 #define IBUS_Greek_GAMMA 0x7c3 #define IBUS_Greek_DELTA 0x7c4 #define IBUS_Greek_EPSILON 0x7c5 #define IBUS_Greek_ZETA 0x7c6 #define IBUS_Greek_ETA 0x7c7 #define IBUS_Greek_THETA 0x7c8 #define IBUS_Greek_IOTA 0x7c9 #define IBUS_Greek_KAPPA 0x7ca #define IBUS_Greek_LAMDA 0x7cb #define IBUS_Greek_LAMBDA 0x7cb #define IBUS_Greek_MU 0x7cc #define IBUS_Greek_NU 0x7cd #define IBUS_Greek_XI 0x7ce #define IBUS_Greek_OMICRON 0x7cf #define IBUS_Greek_PI 0x7d0 #define IBUS_Greek_RHO 0x7d1 #define IBUS_Greek_SIGMA 0x7d2 #define IBUS_Greek_TAU 0x7d4 #define IBUS_Greek_UPSILON 0x7d5 #define IBUS_Greek_PHI 0x7d6 #define IBUS_Greek_CHI 0x7d7 #define IBUS_Greek_PSI 0x7d8 #define IBUS_Greek_OMEGA 0x7d9 #define IBUS_Greek_alpha 0x7e1 #define IBUS_Greek_beta 0x7e2 #define IBUS_Greek_gamma 0x7e3 #define IBUS_Greek_delta 0x7e4 #define IBUS_Greek_epsilon 0x7e5 #define IBUS_Greek_zeta 0x7e6 #define IBUS_Greek_eta 0x7e7 #define IBUS_Greek_theta 0x7e8 #define IBUS_Greek_iota 0x7e9 #define IBUS_Greek_kappa 0x7ea #define IBUS_Greek_lamda 0x7eb #define IBUS_Greek_lambda 0x7eb #define IBUS_Greek_mu 0x7ec #define IBUS_Greek_nu 0x7ed #define IBUS_Greek_xi 0x7ee #define IBUS_Greek_omicron 0x7ef #define IBUS_Greek_pi 0x7f0 #define IBUS_Greek_rho 0x7f1 #define IBUS_Greek_sigma 0x7f2 #define IBUS_Greek_finalsmallsigma 0x7f3 #define IBUS_Greek_tau 0x7f4 #define IBUS_Greek_upsilon 0x7f5 #define IBUS_Greek_phi 0x7f6 #define IBUS_Greek_chi 0x7f7 #define IBUS_Greek_psi 0x7f8 #define IBUS_Greek_omega 0x7f9 #define IBUS_Greek_switch 0xff7e #define IBUS_leftradical 0x8a1 #define IBUS_topleftradical 0x8a2 #define IBUS_horizconnector 0x8a3 #define IBUS_topintegral 0x8a4 #define IBUS_botintegral 0x8a5 #define IBUS_vertconnector 0x8a6 #define IBUS_topleftsqbracket 0x8a7 #define IBUS_botleftsqbracket 0x8a8 #define IBUS_toprightsqbracket 0x8a9 #define IBUS_botrightsqbracket 0x8aa #define IBUS_topleftparens 0x8ab #define IBUS_botleftparens 0x8ac #define IBUS_toprightparens 0x8ad #define IBUS_botrightparens 0x8ae #define IBUS_leftmiddlecurlybrace 0x8af #define IBUS_rightmiddlecurlybrace 0x8b0 #define IBUS_topleftsummation 0x8b1 #define IBUS_botleftsummation 0x8b2 #define IBUS_topvertsummationconnector 0x8b3 #define IBUS_botvertsummationconnector 0x8b4 #define IBUS_toprightsummation 0x8b5 #define IBUS_botrightsummation 0x8b6 #define IBUS_rightmiddlesummation 0x8b7 #define IBUS_lessthanequal 0x8bc #define IBUS_notequal 0x8bd #define IBUS_greaterthanequal 0x8be #define IBUS_integral 0x8bf #define IBUS_therefore 0x8c0 #define IBUS_variation 0x8c1 #define IBUS_infinity 0x8c2 #define IBUS_nabla 0x8c5 #define IBUS_approximate 0x8c8 #define IBUS_similarequal 0x8c9 #define IBUS_ifonlyif 0x8cd #define IBUS_implies 0x8ce #define IBUS_identical 0x8cf #define IBUS_radical 0x8d6 #define IBUS_includedin 0x8da #define IBUS_includes 0x8db #define IBUS_intersection 0x8dc #define IBUS_union 0x8dd #define IBUS_logicaland 0x8de #define IBUS_logicalor 0x8df #define IBUS_partialderivative 0x8ef #define IBUS_function 0x8f6 #define IBUS_leftarrow 0x8fb #define IBUS_uparrow 0x8fc #define IBUS_rightarrow 0x8fd #define IBUS_downarrow 0x8fe #define IBUS_blank 0x9df #define IBUS_soliddiamond 0x9e0 #define IBUS_checkerboard 0x9e1 #define IBUS_ht 0x9e2 #define IBUS_ff 0x9e3 #define IBUS_cr 0x9e4 #define IBUS_lf 0x9e5 #define IBUS_nl 0x9e8 #define IBUS_vt 0x9e9 #define IBUS_lowrightcorner 0x9ea #define IBUS_uprightcorner 0x9eb #define IBUS_upleftcorner 0x9ec #define IBUS_lowleftcorner 0x9ed #define IBUS_crossinglines 0x9ee #define IBUS_horizlinescan1 0x9ef #define IBUS_horizlinescan3 0x9f0 #define IBUS_horizlinescan5 0x9f1 #define IBUS_horizlinescan7 0x9f2 #define IBUS_horizlinescan9 0x9f3 #define IBUS_leftt 0x9f4 #define IBUS_rightt 0x9f5 #define IBUS_bott 0x9f6 #define IBUS_topt 0x9f7 #define IBUS_vertbar 0x9f8 #define IBUS_emspace 0xaa1 #define IBUS_enspace 0xaa2 #define IBUS_em3space 0xaa3 #define IBUS_em4space 0xaa4 #define IBUS_digitspace 0xaa5 #define IBUS_punctspace 0xaa6 #define IBUS_thinspace 0xaa7 #define IBUS_hairspace 0xaa8 #define IBUS_emdash 0xaa9 #define IBUS_endash 0xaaa #define IBUS_signifblank 0xaac #define IBUS_ellipsis 0xaae #define IBUS_doubbaselinedot 0xaaf #define IBUS_onethird 0xab0 #define IBUS_twothirds 0xab1 #define IBUS_onefifth 0xab2 #define IBUS_twofifths 0xab3 #define IBUS_threefifths 0xab4 #define IBUS_fourfifths 0xab5 #define IBUS_onesixth 0xab6 #define IBUS_fivesixths 0xab7 #define IBUS_careof 0xab8 #define IBUS_figdash 0xabb #define IBUS_leftanglebracket 0xabc #define IBUS_decimalpoint 0xabd #define IBUS_rightanglebracket 0xabe #define IBUS_marker 0xabf #define IBUS_oneeighth 0xac3 #define IBUS_threeeighths 0xac4 #define IBUS_fiveeighths 0xac5 #define IBUS_seveneighths 0xac6 #define IBUS_trademark 0xac9 #define IBUS_signaturemark 0xaca #define IBUS_trademarkincircle 0xacb #define IBUS_leftopentriangle 0xacc #define IBUS_rightopentriangle 0xacd #define IBUS_emopencircle 0xace #define IBUS_emopenrectangle 0xacf #define IBUS_leftsinglequotemark 0xad0 #define IBUS_rightsinglequotemark 0xad1 #define IBUS_leftdoublequotemark 0xad2 #define IBUS_rightdoublequotemark 0xad3 #define IBUS_prescription 0xad4 #define IBUS_minutes 0xad6 #define IBUS_seconds 0xad7 #define IBUS_latincross 0xad9 #define IBUS_hexagram 0xada #define IBUS_filledrectbullet 0xadb #define IBUS_filledlefttribullet 0xadc #define IBUS_filledrighttribullet 0xadd #define IBUS_emfilledcircle 0xade #define IBUS_emfilledrect 0xadf #define IBUS_enopencircbullet 0xae0 #define IBUS_enopensquarebullet 0xae1 #define IBUS_openrectbullet 0xae2 #define IBUS_opentribulletup 0xae3 #define IBUS_opentribulletdown 0xae4 #define IBUS_openstar 0xae5 #define IBUS_enfilledcircbullet 0xae6 #define IBUS_enfilledsqbullet 0xae7 #define IBUS_filledtribulletup 0xae8 #define IBUS_filledtribulletdown 0xae9 #define IBUS_leftpointer 0xaea #define IBUS_rightpointer 0xaeb #define IBUS_club 0xaec #define IBUS_diamond 0xaed #define IBUS_heart 0xaee #define IBUS_maltesecross 0xaf0 #define IBUS_dagger 0xaf1 #define IBUS_doubledagger 0xaf2 #define IBUS_checkmark 0xaf3 #define IBUS_ballotcross 0xaf4 #define IBUS_musicalsharp 0xaf5 #define IBUS_musicalflat 0xaf6 #define IBUS_malesymbol 0xaf7 #define IBUS_femalesymbol 0xaf8 #define IBUS_telephone 0xaf9 #define IBUS_telephonerecorder 0xafa #define IBUS_phonographcopyright 0xafb #define IBUS_caret 0xafc #define IBUS_singlelowquotemark 0xafd #define IBUS_doublelowquotemark 0xafe #define IBUS_cursor 0xaff #define IBUS_leftcaret 0xba3 #define IBUS_rightcaret 0xba6 #define IBUS_downcaret 0xba8 #define IBUS_upcaret 0xba9 #define IBUS_overbar 0xbc0 #define IBUS_downtack 0xbc2 #define IBUS_upshoe 0xbc3 #define IBUS_downstile 0xbc4 #define IBUS_underbar 0xbc6 #define IBUS_jot 0xbca #define IBUS_quad 0xbcc #define IBUS_uptack 0xbce #define IBUS_circle 0xbcf #define IBUS_upstile 0xbd3 #define IBUS_downshoe 0xbd6 #define IBUS_rightshoe 0xbd8 #define IBUS_leftshoe 0xbda #define IBUS_lefttack 0xbdc #define IBUS_righttack 0xbfc #define IBUS_hebrew_doublelowline 0xcdf #define IBUS_hebrew_aleph 0xce0 #define IBUS_hebrew_bet 0xce1 #define IBUS_hebrew_beth 0xce1 #define IBUS_hebrew_gimel 0xce2 #define IBUS_hebrew_gimmel 0xce2 #define IBUS_hebrew_dalet 0xce3 #define IBUS_hebrew_daleth 0xce3 #define IBUS_hebrew_he 0xce4 #define IBUS_hebrew_waw 0xce5 #define IBUS_hebrew_zain 0xce6 #define IBUS_hebrew_zayin 0xce6 #define IBUS_hebrew_chet 0xce7 #define IBUS_hebrew_het 0xce7 #define IBUS_hebrew_tet 0xce8 #define IBUS_hebrew_teth 0xce8 #define IBUS_hebrew_yod 0xce9 #define IBUS_hebrew_finalkaph 0xcea #define IBUS_hebrew_kaph 0xceb #define IBUS_hebrew_lamed 0xcec #define IBUS_hebrew_finalmem 0xced #define IBUS_hebrew_mem 0xcee #define IBUS_hebrew_finalnun 0xcef #define IBUS_hebrew_nun 0xcf0 #define IBUS_hebrew_samech 0xcf1 #define IBUS_hebrew_samekh 0xcf1 #define IBUS_hebrew_ayin 0xcf2 #define IBUS_hebrew_finalpe 0xcf3 #define IBUS_hebrew_pe 0xcf4 #define IBUS_hebrew_finalzade 0xcf5 #define IBUS_hebrew_finalzadi 0xcf5 #define IBUS_hebrew_zade 0xcf6 #define IBUS_hebrew_zadi 0xcf6 #define IBUS_hebrew_qoph 0xcf7 #define IBUS_hebrew_kuf 0xcf7 #define IBUS_hebrew_resh 0xcf8 #define IBUS_hebrew_shin 0xcf9 #define IBUS_hebrew_taw 0xcfa #define IBUS_hebrew_taf 0xcfa #define IBUS_Hebrew_switch 0xff7e #define IBUS_Thai_kokai 0xda1 #define IBUS_Thai_khokhai 0xda2 #define IBUS_Thai_khokhuat 0xda3 #define IBUS_Thai_khokhwai 0xda4 #define IBUS_Thai_khokhon 0xda5 #define IBUS_Thai_khorakhang 0xda6 #define IBUS_Thai_ngongu 0xda7 #define IBUS_Thai_chochan 0xda8 #define IBUS_Thai_choching 0xda9 #define IBUS_Thai_chochang 0xdaa #define IBUS_Thai_soso 0xdab #define IBUS_Thai_chochoe 0xdac #define IBUS_Thai_yoying 0xdad #define IBUS_Thai_dochada 0xdae #define IBUS_Thai_topatak 0xdaf #define IBUS_Thai_thothan 0xdb0 #define IBUS_Thai_thonangmontho 0xdb1 #define IBUS_Thai_thophuthao 0xdb2 #define IBUS_Thai_nonen 0xdb3 #define IBUS_Thai_dodek 0xdb4 #define IBUS_Thai_totao 0xdb5 #define IBUS_Thai_thothung 0xdb6 #define IBUS_Thai_thothahan 0xdb7 #define IBUS_Thai_thothong 0xdb8 #define IBUS_Thai_nonu 0xdb9 #define IBUS_Thai_bobaimai 0xdba #define IBUS_Thai_popla 0xdbb #define IBUS_Thai_phophung 0xdbc #define IBUS_Thai_fofa 0xdbd #define IBUS_Thai_phophan 0xdbe #define IBUS_Thai_fofan 0xdbf #define IBUS_Thai_phosamphao 0xdc0 #define IBUS_Thai_moma 0xdc1 #define IBUS_Thai_yoyak 0xdc2 #define IBUS_Thai_rorua 0xdc3 #define IBUS_Thai_ru 0xdc4 #define IBUS_Thai_loling 0xdc5 #define IBUS_Thai_lu 0xdc6 #define IBUS_Thai_wowaen 0xdc7 #define IBUS_Thai_sosala 0xdc8 #define IBUS_Thai_sorusi 0xdc9 #define IBUS_Thai_sosua 0xdca #define IBUS_Thai_hohip 0xdcb #define IBUS_Thai_lochula 0xdcc #define IBUS_Thai_oang 0xdcd #define IBUS_Thai_honokhuk 0xdce #define IBUS_Thai_paiyannoi 0xdcf #define IBUS_Thai_saraa 0xdd0 #define IBUS_Thai_maihanakat 0xdd1 #define IBUS_Thai_saraaa 0xdd2 #define IBUS_Thai_saraam 0xdd3 #define IBUS_Thai_sarai 0xdd4 #define IBUS_Thai_saraii 0xdd5 #define IBUS_Thai_saraue 0xdd6 #define IBUS_Thai_sarauee 0xdd7 #define IBUS_Thai_sarau 0xdd8 #define IBUS_Thai_sarauu 0xdd9 #define IBUS_Thai_phinthu 0xdda #define IBUS_Thai_maihanakat_maitho 0xdde #define IBUS_Thai_baht 0xddf #define IBUS_Thai_sarae 0xde0 #define IBUS_Thai_saraae 0xde1 #define IBUS_Thai_sarao 0xde2 #define IBUS_Thai_saraaimaimuan 0xde3 #define IBUS_Thai_saraaimaimalai 0xde4 #define IBUS_Thai_lakkhangyao 0xde5 #define IBUS_Thai_maiyamok 0xde6 #define IBUS_Thai_maitaikhu 0xde7 #define IBUS_Thai_maiek 0xde8 #define IBUS_Thai_maitho 0xde9 #define IBUS_Thai_maitri 0xdea #define IBUS_Thai_maichattawa 0xdeb #define IBUS_Thai_thanthakhat 0xdec #define IBUS_Thai_nikhahit 0xded #define IBUS_Thai_leksun 0xdf0 #define IBUS_Thai_leknung 0xdf1 #define IBUS_Thai_leksong 0xdf2 #define IBUS_Thai_leksam 0xdf3 #define IBUS_Thai_leksi 0xdf4 #define IBUS_Thai_lekha 0xdf5 #define IBUS_Thai_lekhok 0xdf6 #define IBUS_Thai_lekchet 0xdf7 #define IBUS_Thai_lekpaet 0xdf8 #define IBUS_Thai_lekkao 0xdf9 #define IBUS_Hangul 0xff31 #define IBUS_Hangul_Start 0xff32 #define IBUS_Hangul_End 0xff33 #define IBUS_Hangul_Hanja 0xff34 #define IBUS_Hangul_Jamo 0xff35 #define IBUS_Hangul_Romaja 0xff36 #define IBUS_Hangul_Codeinput 0xff37 #define IBUS_Hangul_Jeonja 0xff38 #define IBUS_Hangul_Banja 0xff39 #define IBUS_Hangul_PreHanja 0xff3a #define IBUS_Hangul_PostHanja 0xff3b #define IBUS_Hangul_SingleCandidate 0xff3c #define IBUS_Hangul_MultipleCandidate 0xff3d #define IBUS_Hangul_PreviousCandidate 0xff3e #define IBUS_Hangul_Special 0xff3f #define IBUS_Hangul_switch 0xff7e #define IBUS_Hangul_Kiyeog 0xea1 #define IBUS_Hangul_SsangKiyeog 0xea2 #define IBUS_Hangul_KiyeogSios 0xea3 #define IBUS_Hangul_Nieun 0xea4 #define IBUS_Hangul_NieunJieuj 0xea5 #define IBUS_Hangul_NieunHieuh 0xea6 #define IBUS_Hangul_Dikeud 0xea7 #define IBUS_Hangul_SsangDikeud 0xea8 #define IBUS_Hangul_Rieul 0xea9 #define IBUS_Hangul_RieulKiyeog 0xeaa #define IBUS_Hangul_RieulMieum 0xeab #define IBUS_Hangul_RieulPieub 0xeac #define IBUS_Hangul_RieulSios 0xead #define IBUS_Hangul_RieulTieut 0xeae #define IBUS_Hangul_RieulPhieuf 0xeaf #define IBUS_Hangul_RieulHieuh 0xeb0 #define IBUS_Hangul_Mieum 0xeb1 #define IBUS_Hangul_Pieub 0xeb2 #define IBUS_Hangul_SsangPieub 0xeb3 #define IBUS_Hangul_PieubSios 0xeb4 #define IBUS_Hangul_Sios 0xeb5 #define IBUS_Hangul_SsangSios 0xeb6 #define IBUS_Hangul_Ieung 0xeb7 #define IBUS_Hangul_Jieuj 0xeb8 #define IBUS_Hangul_SsangJieuj 0xeb9 #define IBUS_Hangul_Cieuc 0xeba #define IBUS_Hangul_Khieuq 0xebb #define IBUS_Hangul_Tieut 0xebc #define IBUS_Hangul_Phieuf 0xebd #define IBUS_Hangul_Hieuh 0xebe #define IBUS_Hangul_A 0xebf #define IBUS_Hangul_AE 0xec0 #define IBUS_Hangul_YA 0xec1 #define IBUS_Hangul_YAE 0xec2 #define IBUS_Hangul_EO 0xec3 #define IBUS_Hangul_E 0xec4 #define IBUS_Hangul_YEO 0xec5 #define IBUS_Hangul_YE 0xec6 #define IBUS_Hangul_O 0xec7 #define IBUS_Hangul_WA 0xec8 #define IBUS_Hangul_WAE 0xec9 #define IBUS_Hangul_OE 0xeca #define IBUS_Hangul_YO 0xecb #define IBUS_Hangul_U 0xecc #define IBUS_Hangul_WEO 0xecd #define IBUS_Hangul_WE 0xece #define IBUS_Hangul_WI 0xecf #define IBUS_Hangul_YU 0xed0 #define IBUS_Hangul_EU 0xed1 #define IBUS_Hangul_YI 0xed2 #define IBUS_Hangul_I 0xed3 #define IBUS_Hangul_J_Kiyeog 0xed4 #define IBUS_Hangul_J_SsangKiyeog 0xed5 #define IBUS_Hangul_J_KiyeogSios 0xed6 #define IBUS_Hangul_J_Nieun 0xed7 #define IBUS_Hangul_J_NieunJieuj 0xed8 #define IBUS_Hangul_J_NieunHieuh 0xed9 #define IBUS_Hangul_J_Dikeud 0xeda #define IBUS_Hangul_J_Rieul 0xedb #define IBUS_Hangul_J_RieulKiyeog 0xedc #define IBUS_Hangul_J_RieulMieum 0xedd #define IBUS_Hangul_J_RieulPieub 0xede #define IBUS_Hangul_J_RieulSios 0xedf #define IBUS_Hangul_J_RieulTieut 0xee0 #define IBUS_Hangul_J_RieulPhieuf 0xee1 #define IBUS_Hangul_J_RieulHieuh 0xee2 #define IBUS_Hangul_J_Mieum 0xee3 #define IBUS_Hangul_J_Pieub 0xee4 #define IBUS_Hangul_J_PieubSios 0xee5 #define IBUS_Hangul_J_Sios 0xee6 #define IBUS_Hangul_J_SsangSios 0xee7 #define IBUS_Hangul_J_Ieung 0xee8 #define IBUS_Hangul_J_Jieuj 0xee9 #define IBUS_Hangul_J_Cieuc 0xeea #define IBUS_Hangul_J_Khieuq 0xeeb #define IBUS_Hangul_J_Tieut 0xeec #define IBUS_Hangul_J_Phieuf 0xeed #define IBUS_Hangul_J_Hieuh 0xeee #define IBUS_Hangul_RieulYeorinHieuh 0xeef #define IBUS_Hangul_SunkyeongeumMieum 0xef0 #define IBUS_Hangul_SunkyeongeumPieub 0xef1 #define IBUS_Hangul_PanSios 0xef2 #define IBUS_Hangul_KkogjiDalrinIeung 0xef3 #define IBUS_Hangul_SunkyeongeumPhieuf 0xef4 #define IBUS_Hangul_YeorinHieuh 0xef5 #define IBUS_Hangul_AraeA 0xef6 #define IBUS_Hangul_AraeAE 0xef7 #define IBUS_Hangul_J_PanSios 0xef8 #define IBUS_Hangul_J_KkogjiDalrinIeung 0xef9 #define IBUS_Hangul_J_YeorinHieuh 0xefa #define IBUS_Korean_Won 0xeff #define IBUS_Armenian_ligature_ew 0x1000587 #define IBUS_Armenian_full_stop 0x1000589 #define IBUS_Armenian_verjaket 0x1000589 #define IBUS_Armenian_separation_mark 0x100055d #define IBUS_Armenian_but 0x100055d #define IBUS_Armenian_hyphen 0x100058a #define IBUS_Armenian_yentamna 0x100058a #define IBUS_Armenian_exclam 0x100055c #define IBUS_Armenian_amanak 0x100055c #define IBUS_Armenian_accent 0x100055b #define IBUS_Armenian_shesht 0x100055b #define IBUS_Armenian_question 0x100055e #define IBUS_Armenian_paruyk 0x100055e #define IBUS_Armenian_AYB 0x1000531 #define IBUS_Armenian_ayb 0x1000561 #define IBUS_Armenian_BEN 0x1000532 #define IBUS_Armenian_ben 0x1000562 #define IBUS_Armenian_GIM 0x1000533 #define IBUS_Armenian_gim 0x1000563 #define IBUS_Armenian_DA 0x1000534 #define IBUS_Armenian_da 0x1000564 #define IBUS_Armenian_YECH 0x1000535 #define IBUS_Armenian_yech 0x1000565 #define IBUS_Armenian_ZA 0x1000536 #define IBUS_Armenian_za 0x1000566 #define IBUS_Armenian_E 0x1000537 #define IBUS_Armenian_e 0x1000567 #define IBUS_Armenian_AT 0x1000538 #define IBUS_Armenian_at 0x1000568 #define IBUS_Armenian_TO 0x1000539 #define IBUS_Armenian_to 0x1000569 #define IBUS_Armenian_ZHE 0x100053a #define IBUS_Armenian_zhe 0x100056a #define IBUS_Armenian_INI 0x100053b #define IBUS_Armenian_ini 0x100056b #define IBUS_Armenian_LYUN 0x100053c #define IBUS_Armenian_lyun 0x100056c #define IBUS_Armenian_KHE 0x100053d #define IBUS_Armenian_khe 0x100056d #define IBUS_Armenian_TSA 0x100053e #define IBUS_Armenian_tsa 0x100056e #define IBUS_Armenian_KEN 0x100053f #define IBUS_Armenian_ken 0x100056f #define IBUS_Armenian_HO 0x1000540 #define IBUS_Armenian_ho 0x1000570 #define IBUS_Armenian_DZA 0x1000541 #define IBUS_Armenian_dza 0x1000571 #define IBUS_Armenian_GHAT 0x1000542 #define IBUS_Armenian_ghat 0x1000572 #define IBUS_Armenian_TCHE 0x1000543 #define IBUS_Armenian_tche 0x1000573 #define IBUS_Armenian_MEN 0x1000544 #define IBUS_Armenian_men 0x1000574 #define IBUS_Armenian_HI 0x1000545 #define IBUS_Armenian_hi 0x1000575 #define IBUS_Armenian_NU 0x1000546 #define IBUS_Armenian_nu 0x1000576 #define IBUS_Armenian_SHA 0x1000547 #define IBUS_Armenian_sha 0x1000577 #define IBUS_Armenian_VO 0x1000548 #define IBUS_Armenian_vo 0x1000578 #define IBUS_Armenian_CHA 0x1000549 #define IBUS_Armenian_cha 0x1000579 #define IBUS_Armenian_PE 0x100054a #define IBUS_Armenian_pe 0x100057a #define IBUS_Armenian_JE 0x100054b #define IBUS_Armenian_je 0x100057b #define IBUS_Armenian_RA 0x100054c #define IBUS_Armenian_ra 0x100057c #define IBUS_Armenian_SE 0x100054d #define IBUS_Armenian_se 0x100057d #define IBUS_Armenian_VEV 0x100054e #define IBUS_Armenian_vev 0x100057e #define IBUS_Armenian_TYUN 0x100054f #define IBUS_Armenian_tyun 0x100057f #define IBUS_Armenian_RE 0x1000550 #define IBUS_Armenian_re 0x1000580 #define IBUS_Armenian_TSO 0x1000551 #define IBUS_Armenian_tso 0x1000581 #define IBUS_Armenian_VYUN 0x1000552 #define IBUS_Armenian_vyun 0x1000582 #define IBUS_Armenian_PYUR 0x1000553 #define IBUS_Armenian_pyur 0x1000583 #define IBUS_Armenian_KE 0x1000554 #define IBUS_Armenian_ke 0x1000584 #define IBUS_Armenian_O 0x1000555 #define IBUS_Armenian_o 0x1000585 #define IBUS_Armenian_FE 0x1000556 #define IBUS_Armenian_fe 0x1000586 #define IBUS_Armenian_apostrophe 0x100055a #define IBUS_Georgian_an 0x10010d0 #define IBUS_Georgian_ban 0x10010d1 #define IBUS_Georgian_gan 0x10010d2 #define IBUS_Georgian_don 0x10010d3 #define IBUS_Georgian_en 0x10010d4 #define IBUS_Georgian_vin 0x10010d5 #define IBUS_Georgian_zen 0x10010d6 #define IBUS_Georgian_tan 0x10010d7 #define IBUS_Georgian_in 0x10010d8 #define IBUS_Georgian_kan 0x10010d9 #define IBUS_Georgian_las 0x10010da #define IBUS_Georgian_man 0x10010db #define IBUS_Georgian_nar 0x10010dc #define IBUS_Georgian_on 0x10010dd #define IBUS_Georgian_par 0x10010de #define IBUS_Georgian_zhar 0x10010df #define IBUS_Georgian_rae 0x10010e0 #define IBUS_Georgian_san 0x10010e1 #define IBUS_Georgian_tar 0x10010e2 #define IBUS_Georgian_un 0x10010e3 #define IBUS_Georgian_phar 0x10010e4 #define IBUS_Georgian_khar 0x10010e5 #define IBUS_Georgian_ghan 0x10010e6 #define IBUS_Georgian_qar 0x10010e7 #define IBUS_Georgian_shin 0x10010e8 #define IBUS_Georgian_chin 0x10010e9 #define IBUS_Georgian_can 0x10010ea #define IBUS_Georgian_jil 0x10010eb #define IBUS_Georgian_cil 0x10010ec #define IBUS_Georgian_char 0x10010ed #define IBUS_Georgian_xan 0x10010ee #define IBUS_Georgian_jhan 0x10010ef #define IBUS_Georgian_hae 0x10010f0 #define IBUS_Georgian_he 0x10010f1 #define IBUS_Georgian_hie 0x10010f2 #define IBUS_Georgian_we 0x10010f3 #define IBUS_Georgian_har 0x10010f4 #define IBUS_Georgian_hoe 0x10010f5 #define IBUS_Georgian_fi 0x10010f6 #define IBUS_Xabovedot 0x1001e8a #define IBUS_Ibreve 0x100012c #define IBUS_Zstroke 0x10001b5 #define IBUS_Gcaron 0x10001e6 #define IBUS_Ocaron 0x10001d1 #define IBUS_Obarred 0x100019f #define IBUS_xabovedot 0x1001e8b #define IBUS_ibreve 0x100012d #define IBUS_zstroke 0x10001b6 #define IBUS_gcaron 0x10001e7 #define IBUS_ocaron 0x10001d2 #define IBUS_obarred 0x1000275 #define IBUS_SCHWA 0x100018f #define IBUS_schwa 0x1000259 #define IBUS_Lbelowdot 0x1001e36 #define IBUS_lbelowdot 0x1001e37 #define IBUS_Abelowdot 0x1001ea0 #define IBUS_abelowdot 0x1001ea1 #define IBUS_Ahook 0x1001ea2 #define IBUS_ahook 0x1001ea3 #define IBUS_Acircumflexacute 0x1001ea4 #define IBUS_acircumflexacute 0x1001ea5 #define IBUS_Acircumflexgrave 0x1001ea6 #define IBUS_acircumflexgrave 0x1001ea7 #define IBUS_Acircumflexhook 0x1001ea8 #define IBUS_acircumflexhook 0x1001ea9 #define IBUS_Acircumflextilde 0x1001eaa #define IBUS_acircumflextilde 0x1001eab #define IBUS_Acircumflexbelowdot 0x1001eac #define IBUS_acircumflexbelowdot 0x1001ead #define IBUS_Abreveacute 0x1001eae #define IBUS_abreveacute 0x1001eaf #define IBUS_Abrevegrave 0x1001eb0 #define IBUS_abrevegrave 0x1001eb1 #define IBUS_Abrevehook 0x1001eb2 #define IBUS_abrevehook 0x1001eb3 #define IBUS_Abrevetilde 0x1001eb4 #define IBUS_abrevetilde 0x1001eb5 #define IBUS_Abrevebelowdot 0x1001eb6 #define IBUS_abrevebelowdot 0x1001eb7 #define IBUS_Ebelowdot 0x1001eb8 #define IBUS_ebelowdot 0x1001eb9 #define IBUS_Ehook 0x1001eba #define IBUS_ehook 0x1001ebb #define IBUS_Etilde 0x1001ebc #define IBUS_etilde 0x1001ebd #define IBUS_Ecircumflexacute 0x1001ebe #define IBUS_ecircumflexacute 0x1001ebf #define IBUS_Ecircumflexgrave 0x1001ec0 #define IBUS_ecircumflexgrave 0x1001ec1 #define IBUS_Ecircumflexhook 0x1001ec2 #define IBUS_ecircumflexhook 0x1001ec3 #define IBUS_Ecircumflextilde 0x1001ec4 #define IBUS_ecircumflextilde 0x1001ec5 #define IBUS_Ecircumflexbelowdot 0x1001ec6 #define IBUS_ecircumflexbelowdot 0x1001ec7 #define IBUS_Ihook 0x1001ec8 #define IBUS_ihook 0x1001ec9 #define IBUS_Ibelowdot 0x1001eca #define IBUS_ibelowdot 0x1001ecb #define IBUS_Obelowdot 0x1001ecc #define IBUS_obelowdot 0x1001ecd #define IBUS_Ohook 0x1001ece #define IBUS_ohook 0x1001ecf #define IBUS_Ocircumflexacute 0x1001ed0 #define IBUS_ocircumflexacute 0x1001ed1 #define IBUS_Ocircumflexgrave 0x1001ed2 #define IBUS_ocircumflexgrave 0x1001ed3 #define IBUS_Ocircumflexhook 0x1001ed4 #define IBUS_ocircumflexhook 0x1001ed5 #define IBUS_Ocircumflextilde 0x1001ed6 #define IBUS_ocircumflextilde 0x1001ed7 #define IBUS_Ocircumflexbelowdot 0x1001ed8 #define IBUS_ocircumflexbelowdot 0x1001ed9 #define IBUS_Ohornacute 0x1001eda #define IBUS_ohornacute 0x1001edb #define IBUS_Ohorngrave 0x1001edc #define IBUS_ohorngrave 0x1001edd #define IBUS_Ohornhook 0x1001ede #define IBUS_ohornhook 0x1001edf #define IBUS_Ohorntilde 0x1001ee0 #define IBUS_ohorntilde 0x1001ee1 #define IBUS_Ohornbelowdot 0x1001ee2 #define IBUS_ohornbelowdot 0x1001ee3 #define IBUS_Ubelowdot 0x1001ee4 #define IBUS_ubelowdot 0x1001ee5 #define IBUS_Uhook 0x1001ee6 #define IBUS_uhook 0x1001ee7 #define IBUS_Uhornacute 0x1001ee8 #define IBUS_uhornacute 0x1001ee9 #define IBUS_Uhorngrave 0x1001eea #define IBUS_uhorngrave 0x1001eeb #define IBUS_Uhornhook 0x1001eec #define IBUS_uhornhook 0x1001eed #define IBUS_Uhorntilde 0x1001eee #define IBUS_uhorntilde 0x1001eef #define IBUS_Uhornbelowdot 0x1001ef0 #define IBUS_uhornbelowdot 0x1001ef1 #define IBUS_Ybelowdot 0x1001ef4 #define IBUS_ybelowdot 0x1001ef5 #define IBUS_Yhook 0x1001ef6 #define IBUS_yhook 0x1001ef7 #define IBUS_Ytilde 0x1001ef8 #define IBUS_ytilde 0x1001ef9 #define IBUS_Ohorn 0x10001a0 #define IBUS_ohorn 0x10001a1 #define IBUS_Uhorn 0x10001af #define IBUS_uhorn 0x10001b0 #define IBUS_EcuSign 0x10020a0 #define IBUS_ColonSign 0x10020a1 #define IBUS_CruzeiroSign 0x10020a2 #define IBUS_FFrancSign 0x10020a3 #define IBUS_LiraSign 0x10020a4 #define IBUS_MillSign 0x10020a5 #define IBUS_NairaSign 0x10020a6 #define IBUS_PesetaSign 0x10020a7 #define IBUS_RupeeSign 0x10020a8 #define IBUS_WonSign 0x10020a9 #define IBUS_NewSheqelSign 0x10020aa #define IBUS_DongSign 0x10020ab #define IBUS_EuroSign 0x20ac #define IBUS_zerosuperior 0x1002070 #define IBUS_foursuperior 0x1002074 #define IBUS_fivesuperior 0x1002075 #define IBUS_sixsuperior 0x1002076 #define IBUS_sevensuperior 0x1002077 #define IBUS_eightsuperior 0x1002078 #define IBUS_ninesuperior 0x1002079 #define IBUS_zerosubscript 0x1002080 #define IBUS_onesubscript 0x1002081 #define IBUS_twosubscript 0x1002082 #define IBUS_threesubscript 0x1002083 #define IBUS_foursubscript 0x1002084 #define IBUS_fivesubscript 0x1002085 #define IBUS_sixsubscript 0x1002086 #define IBUS_sevensubscript 0x1002087 #define IBUS_eightsubscript 0x1002088 #define IBUS_ninesubscript 0x1002089 #define IBUS_partdifferential 0x1002202 #define IBUS_emptyset 0x1002205 #define IBUS_elementof 0x1002208 #define IBUS_notelementof 0x1002209 #define IBUS_containsas 0x100220b #define IBUS_squareroot 0x100221a #define IBUS_cuberoot 0x100221b #define IBUS_fourthroot 0x100221c #define IBUS_dintegral 0x100222c #define IBUS_tintegral 0x100222d #define IBUS_because 0x1002235 #define IBUS_approxeq 0x1002248 #define IBUS_notapproxeq 0x1002247 #define IBUS_notidentical 0x1002262 #define IBUS_stricteq 0x1002263 #define IBUS_braille_dot_1 0xfff1 #define IBUS_braille_dot_2 0xfff2 #define IBUS_braille_dot_3 0xfff3 #define IBUS_braille_dot_4 0xfff4 #define IBUS_braille_dot_5 0xfff5 #define IBUS_braille_dot_6 0xfff6 #define IBUS_braille_dot_7 0xfff7 #define IBUS_braille_dot_8 0xfff8 #define IBUS_braille_dot_9 0xfff9 #define IBUS_braille_dot_10 0xfffa #define IBUS_braille_blank 0x1002800 #define IBUS_braille_dots_1 0x1002801 #define IBUS_braille_dots_2 0x1002802 #define IBUS_braille_dots_12 0x1002803 #define IBUS_braille_dots_3 0x1002804 #define IBUS_braille_dots_13 0x1002805 #define IBUS_braille_dots_23 0x1002806 #define IBUS_braille_dots_123 0x1002807 #define IBUS_braille_dots_4 0x1002808 #define IBUS_braille_dots_14 0x1002809 #define IBUS_braille_dots_24 0x100280a #define IBUS_braille_dots_124 0x100280b #define IBUS_braille_dots_34 0x100280c #define IBUS_braille_dots_134 0x100280d #define IBUS_braille_dots_234 0x100280e #define IBUS_braille_dots_1234 0x100280f #define IBUS_braille_dots_5 0x1002810 #define IBUS_braille_dots_15 0x1002811 #define IBUS_braille_dots_25 0x1002812 #define IBUS_braille_dots_125 0x1002813 #define IBUS_braille_dots_35 0x1002814 #define IBUS_braille_dots_135 0x1002815 #define IBUS_braille_dots_235 0x1002816 #define IBUS_braille_dots_1235 0x1002817 #define IBUS_braille_dots_45 0x1002818 #define IBUS_braille_dots_145 0x1002819 #define IBUS_braille_dots_245 0x100281a #define IBUS_braille_dots_1245 0x100281b #define IBUS_braille_dots_345 0x100281c #define IBUS_braille_dots_1345 0x100281d #define IBUS_braille_dots_2345 0x100281e #define IBUS_braille_dots_12345 0x100281f #define IBUS_braille_dots_6 0x1002820 #define IBUS_braille_dots_16 0x1002821 #define IBUS_braille_dots_26 0x1002822 #define IBUS_braille_dots_126 0x1002823 #define IBUS_braille_dots_36 0x1002824 #define IBUS_braille_dots_136 0x1002825 #define IBUS_braille_dots_236 0x1002826 #define IBUS_braille_dots_1236 0x1002827 #define IBUS_braille_dots_46 0x1002828 #define IBUS_braille_dots_146 0x1002829 #define IBUS_braille_dots_246 0x100282a #define IBUS_braille_dots_1246 0x100282b #define IBUS_braille_dots_346 0x100282c #define IBUS_braille_dots_1346 0x100282d #define IBUS_braille_dots_2346 0x100282e #define IBUS_braille_dots_12346 0x100282f #define IBUS_braille_dots_56 0x1002830 #define IBUS_braille_dots_156 0x1002831 #define IBUS_braille_dots_256 0x1002832 #define IBUS_braille_dots_1256 0x1002833 #define IBUS_braille_dots_356 0x1002834 #define IBUS_braille_dots_1356 0x1002835 #define IBUS_braille_dots_2356 0x1002836 #define IBUS_braille_dots_12356 0x1002837 #define IBUS_braille_dots_456 0x1002838 #define IBUS_braille_dots_1456 0x1002839 #define IBUS_braille_dots_2456 0x100283a #define IBUS_braille_dots_12456 0x100283b #define IBUS_braille_dots_3456 0x100283c #define IBUS_braille_dots_13456 0x100283d #define IBUS_braille_dots_23456 0x100283e #define IBUS_braille_dots_123456 0x100283f #define IBUS_braille_dots_7 0x1002840 #define IBUS_braille_dots_17 0x1002841 #define IBUS_braille_dots_27 0x1002842 #define IBUS_braille_dots_127 0x1002843 #define IBUS_braille_dots_37 0x1002844 #define IBUS_braille_dots_137 0x1002845 #define IBUS_braille_dots_237 0x1002846 #define IBUS_braille_dots_1237 0x1002847 #define IBUS_braille_dots_47 0x1002848 #define IBUS_braille_dots_147 0x1002849 #define IBUS_braille_dots_247 0x100284a #define IBUS_braille_dots_1247 0x100284b #define IBUS_braille_dots_347 0x100284c #define IBUS_braille_dots_1347 0x100284d #define IBUS_braille_dots_2347 0x100284e #define IBUS_braille_dots_12347 0x100284f #define IBUS_braille_dots_57 0x1002850 #define IBUS_braille_dots_157 0x1002851 #define IBUS_braille_dots_257 0x1002852 #define IBUS_braille_dots_1257 0x1002853 #define IBUS_braille_dots_357 0x1002854 #define IBUS_braille_dots_1357 0x1002855 #define IBUS_braille_dots_2357 0x1002856 #define IBUS_braille_dots_12357 0x1002857 #define IBUS_braille_dots_457 0x1002858 #define IBUS_braille_dots_1457 0x1002859 #define IBUS_braille_dots_2457 0x100285a #define IBUS_braille_dots_12457 0x100285b #define IBUS_braille_dots_3457 0x100285c #define IBUS_braille_dots_13457 0x100285d #define IBUS_braille_dots_23457 0x100285e #define IBUS_braille_dots_123457 0x100285f #define IBUS_braille_dots_67 0x1002860 #define IBUS_braille_dots_167 0x1002861 #define IBUS_braille_dots_267 0x1002862 #define IBUS_braille_dots_1267 0x1002863 #define IBUS_braille_dots_367 0x1002864 #define IBUS_braille_dots_1367 0x1002865 #define IBUS_braille_dots_2367 0x1002866 #define IBUS_braille_dots_12367 0x1002867 #define IBUS_braille_dots_467 0x1002868 #define IBUS_braille_dots_1467 0x1002869 #define IBUS_braille_dots_2467 0x100286a #define IBUS_braille_dots_12467 0x100286b #define IBUS_braille_dots_3467 0x100286c #define IBUS_braille_dots_13467 0x100286d #define IBUS_braille_dots_23467 0x100286e #define IBUS_braille_dots_123467 0x100286f #define IBUS_braille_dots_567 0x1002870 #define IBUS_braille_dots_1567 0x1002871 #define IBUS_braille_dots_2567 0x1002872 #define IBUS_braille_dots_12567 0x1002873 #define IBUS_braille_dots_3567 0x1002874 #define IBUS_braille_dots_13567 0x1002875 #define IBUS_braille_dots_23567 0x1002876 #define IBUS_braille_dots_123567 0x1002877 #define IBUS_braille_dots_4567 0x1002878 #define IBUS_braille_dots_14567 0x1002879 #define IBUS_braille_dots_24567 0x100287a #define IBUS_braille_dots_124567 0x100287b #define IBUS_braille_dots_34567 0x100287c #define IBUS_braille_dots_134567 0x100287d #define IBUS_braille_dots_234567 0x100287e #define IBUS_braille_dots_1234567 0x100287f #define IBUS_braille_dots_8 0x1002880 #define IBUS_braille_dots_18 0x1002881 #define IBUS_braille_dots_28 0x1002882 #define IBUS_braille_dots_128 0x1002883 #define IBUS_braille_dots_38 0x1002884 #define IBUS_braille_dots_138 0x1002885 #define IBUS_braille_dots_238 0x1002886 #define IBUS_braille_dots_1238 0x1002887 #define IBUS_braille_dots_48 0x1002888 #define IBUS_braille_dots_148 0x1002889 #define IBUS_braille_dots_248 0x100288a #define IBUS_braille_dots_1248 0x100288b #define IBUS_braille_dots_348 0x100288c #define IBUS_braille_dots_1348 0x100288d #define IBUS_braille_dots_2348 0x100288e #define IBUS_braille_dots_12348 0x100288f #define IBUS_braille_dots_58 0x1002890 #define IBUS_braille_dots_158 0x1002891 #define IBUS_braille_dots_258 0x1002892 #define IBUS_braille_dots_1258 0x1002893 #define IBUS_braille_dots_358 0x1002894 #define IBUS_braille_dots_1358 0x1002895 #define IBUS_braille_dots_2358 0x1002896 #define IBUS_braille_dots_12358 0x1002897 #define IBUS_braille_dots_458 0x1002898 #define IBUS_braille_dots_1458 0x1002899 #define IBUS_braille_dots_2458 0x100289a #define IBUS_braille_dots_12458 0x100289b #define IBUS_braille_dots_3458 0x100289c #define IBUS_braille_dots_13458 0x100289d #define IBUS_braille_dots_23458 0x100289e #define IBUS_braille_dots_123458 0x100289f #define IBUS_braille_dots_68 0x10028a0 #define IBUS_braille_dots_168 0x10028a1 #define IBUS_braille_dots_268 0x10028a2 #define IBUS_braille_dots_1268 0x10028a3 #define IBUS_braille_dots_368 0x10028a4 #define IBUS_braille_dots_1368 0x10028a5 #define IBUS_braille_dots_2368 0x10028a6 #define IBUS_braille_dots_12368 0x10028a7 #define IBUS_braille_dots_468 0x10028a8 #define IBUS_braille_dots_1468 0x10028a9 #define IBUS_braille_dots_2468 0x10028aa #define IBUS_braille_dots_12468 0x10028ab #define IBUS_braille_dots_3468 0x10028ac #define IBUS_braille_dots_13468 0x10028ad #define IBUS_braille_dots_23468 0x10028ae #define IBUS_braille_dots_123468 0x10028af #define IBUS_braille_dots_568 0x10028b0 #define IBUS_braille_dots_1568 0x10028b1 #define IBUS_braille_dots_2568 0x10028b2 #define IBUS_braille_dots_12568 0x10028b3 #define IBUS_braille_dots_3568 0x10028b4 #define IBUS_braille_dots_13568 0x10028b5 #define IBUS_braille_dots_23568 0x10028b6 #define IBUS_braille_dots_123568 0x10028b7 #define IBUS_braille_dots_4568 0x10028b8 #define IBUS_braille_dots_14568 0x10028b9 #define IBUS_braille_dots_24568 0x10028ba #define IBUS_braille_dots_124568 0x10028bb #define IBUS_braille_dots_34568 0x10028bc #define IBUS_braille_dots_134568 0x10028bd #define IBUS_braille_dots_234568 0x10028be #define IBUS_braille_dots_1234568 0x10028bf #define IBUS_braille_dots_78 0x10028c0 #define IBUS_braille_dots_178 0x10028c1 #define IBUS_braille_dots_278 0x10028c2 #define IBUS_braille_dots_1278 0x10028c3 #define IBUS_braille_dots_378 0x10028c4 #define IBUS_braille_dots_1378 0x10028c5 #define IBUS_braille_dots_2378 0x10028c6 #define IBUS_braille_dots_12378 0x10028c7 #define IBUS_braille_dots_478 0x10028c8 #define IBUS_braille_dots_1478 0x10028c9 #define IBUS_braille_dots_2478 0x10028ca #define IBUS_braille_dots_12478 0x10028cb #define IBUS_braille_dots_3478 0x10028cc #define IBUS_braille_dots_13478 0x10028cd #define IBUS_braille_dots_23478 0x10028ce #define IBUS_braille_dots_123478 0x10028cf #define IBUS_braille_dots_578 0x10028d0 #define IBUS_braille_dots_1578 0x10028d1 #define IBUS_braille_dots_2578 0x10028d2 #define IBUS_braille_dots_12578 0x10028d3 #define IBUS_braille_dots_3578 0x10028d4 #define IBUS_braille_dots_13578 0x10028d5 #define IBUS_braille_dots_23578 0x10028d6 #define IBUS_braille_dots_123578 0x10028d7 #define IBUS_braille_dots_4578 0x10028d8 #define IBUS_braille_dots_14578 0x10028d9 #define IBUS_braille_dots_24578 0x10028da #define IBUS_braille_dots_124578 0x10028db #define IBUS_braille_dots_34578 0x10028dc #define IBUS_braille_dots_134578 0x10028dd #define IBUS_braille_dots_234578 0x10028de #define IBUS_braille_dots_1234578 0x10028df #define IBUS_braille_dots_678 0x10028e0 #define IBUS_braille_dots_1678 0x10028e1 #define IBUS_braille_dots_2678 0x10028e2 #define IBUS_braille_dots_12678 0x10028e3 #define IBUS_braille_dots_3678 0x10028e4 #define IBUS_braille_dots_13678 0x10028e5 #define IBUS_braille_dots_23678 0x10028e6 #define IBUS_braille_dots_123678 0x10028e7 #define IBUS_braille_dots_4678 0x10028e8 #define IBUS_braille_dots_14678 0x10028e9 #define IBUS_braille_dots_24678 0x10028ea #define IBUS_braille_dots_124678 0x10028eb #define IBUS_braille_dots_34678 0x10028ec #define IBUS_braille_dots_134678 0x10028ed #define IBUS_braille_dots_234678 0x10028ee #define IBUS_braille_dots_1234678 0x10028ef #define IBUS_braille_dots_5678 0x10028f0 #define IBUS_braille_dots_15678 0x10028f1 #define IBUS_braille_dots_25678 0x10028f2 #define IBUS_braille_dots_125678 0x10028f3 #define IBUS_braille_dots_35678 0x10028f4 #define IBUS_braille_dots_135678 0x10028f5 #define IBUS_braille_dots_235678 0x10028f6 #define IBUS_braille_dots_1235678 0x10028f7 #define IBUS_braille_dots_45678 0x10028f8 #define IBUS_braille_dots_145678 0x10028f9 #define IBUS_braille_dots_245678 0x10028fa #define IBUS_braille_dots_1245678 0x10028fb #define IBUS_braille_dots_345678 0x10028fc #define IBUS_braille_dots_1345678 0x10028fd #define IBUS_braille_dots_2345678 0x10028fe #define IBUS_braille_dots_12345678 0x10028ff #endif /* __IBUS_KEYSYMS_COMPAT_H__ */ ibus-1.5.11/src/ibusenginedesc.c0000644000000000000000000007676712551654123013405 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include "ibusenginedesc.h" #include "ibusinternal.h" #include "ibusxml.h" enum { LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_NAME, PROP_LONGNAME, PROP_DESCRIPTION, PROP_LANGUAGE, PROP_LICENSE, PROP_AUTHOR, PROP_ICON, PROP_LAYOUT, PROP_LAYOUT_VARIANT, PROP_LAYOUT_OPTION, PROP_RANK, PROP_HOTKEYS, PROP_SYMBOL, PROP_SETUP, PROP_VERSION, PROP_TEXTDOMAIN, PROP_ICON_PROP_KEY }; /* IBusEngineDescPriv */ struct _IBusEngineDescPrivate { gchar *name; gchar *longname; gchar *description; gchar *language; gchar *license; gchar *author; gchar *icon; gchar *layout; gchar *layout_variant; gchar *layout_option; guint rank; gchar *hotkeys; gchar *symbol; gchar *setup; gchar *version; gchar *textdomain; gchar *icon_prop_key; }; #define IBUS_ENGINE_DESC_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE_DESC, IBusEngineDescPrivate)) // static guint _signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_engine_desc_set_property (IBusEngineDesc *desc, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_engine_desc_get_property (IBusEngineDesc *desc, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_engine_desc_destroy (IBusEngineDesc *desc); static gboolean ibus_engine_desc_serialize (IBusEngineDesc *desc, GVariantBuilder *builder); static gint ibus_engine_desc_deserialize (IBusEngineDesc *desc, GVariant *variant); static gboolean ibus_engine_desc_copy (IBusEngineDesc *dest, const IBusEngineDesc *src); static gboolean ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, XMLNode *node); G_DEFINE_TYPE (IBusEngineDesc, ibus_engine_desc, IBUS_TYPE_SERIALIZABLE) static void ibus_engine_desc_class_init (IBusEngineDescClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_engine_desc_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_engine_desc_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_desc_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_engine_desc_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_engine_desc_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_engine_desc_copy; g_type_class_add_private (class, sizeof (IBusEngineDescPrivate)); /* install properties */ /** * IBusEngineDesc:name: * * The name of engine description */ g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "description name", "The name of engine description", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:longname: * * The longname of engine description */ g_object_class_install_property (gobject_class, PROP_LONGNAME, g_param_spec_string ("longname", "description longname", "The longname of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:description: * * The description of engine description */ g_object_class_install_property (gobject_class, PROP_DESCRIPTION, g_param_spec_string ("description", "description description", "The description of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:language: * * The language of engine description */ g_object_class_install_property (gobject_class, PROP_LANGUAGE, g_param_spec_string ("language", "description language", "The language of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:license: * * The license of engine description */ g_object_class_install_property (gobject_class, PROP_LICENSE, g_param_spec_string ("license", "description license", "The license of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:author: * * The author of engine description */ g_object_class_install_property (gobject_class, PROP_AUTHOR, g_param_spec_string ("author", "description author", "The author of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:icon: * * The icon of engine description */ g_object_class_install_property (gobject_class, PROP_ICON, g_param_spec_string ("icon", "description icon", "The icon of engine description", "ibus-engine", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:layout: * * The layout of engine description */ g_object_class_install_property (gobject_class, PROP_LAYOUT, g_param_spec_string ("layout", "description layout", "The layout of engine description", "us", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:layout-variant: * * The keyboard variant of engine description */ g_object_class_install_property (gobject_class, PROP_LAYOUT_VARIANT, g_param_spec_string ("layout-variant", "description keyboard variant", "The keyboard variant of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:layout-option: * * The keyboard option of engine description */ g_object_class_install_property (gobject_class, PROP_LAYOUT_OPTION, g_param_spec_string ("layout-option", "description keyboard option", "The keyboard option of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:rank: * * The rank of engine description */ g_object_class_install_property (gobject_class, PROP_RANK, g_param_spec_uint ("rank", "description rank", "The rank of engine description", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:hotkeys: * * The hotkeys of engine description */ g_object_class_install_property (gobject_class, PROP_HOTKEYS, g_param_spec_string ("hotkeys", "description hotkeys", "The hotkeys of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:symbol: * * The symbol chars of engine description instead of icon image */ g_object_class_install_property (gobject_class, PROP_SYMBOL, g_param_spec_string ("symbol", "description symbol", "The icon symbol chars of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:setup: * * The exec lists of the engine setup command */ g_object_class_install_property (gobject_class, PROP_SETUP, g_param_spec_string ("setup", "setup args", "The exec lists of the engine setup command", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:version: * * The version number of engine description */ g_object_class_install_property (gobject_class, PROP_VERSION, g_param_spec_string ("version", "version number", "The version number of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:textdomain: * * The textdomain of engine description */ g_object_class_install_property (gobject_class, PROP_TEXTDOMAIN, g_param_spec_string ("textdomain", "textdomain", "The textdomain of engine description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEngineDesc:icon-prop-key: * * The key of IBusProperty to change panel icon dynamically. */ g_object_class_install_property (gobject_class, PROP_ICON_PROP_KEY, g_param_spec_string ("icon-prop-key", "icon property key", "The key of IBusProperty for the dynamic panel icon", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void ibus_engine_desc_init (IBusEngineDesc *desc) { desc->priv = IBUS_ENGINE_DESC_GET_PRIVATE (desc); desc->priv->name = NULL; desc->priv->longname = NULL; desc->priv->description = NULL; desc->priv->language = NULL; desc->priv->license = NULL; desc->priv->author = NULL; desc->priv->icon = NULL; desc->priv->layout = NULL; desc->priv->layout_variant = NULL; desc->priv->layout_option = NULL; desc->priv->rank = 0; desc->priv->hotkeys = NULL; desc->priv->symbol = NULL; desc->priv->setup = NULL; desc->priv->version = NULL; desc->priv->textdomain = NULL; desc->priv->icon_prop_key = NULL; } static void ibus_engine_desc_destroy (IBusEngineDesc *desc) { g_free (desc->priv->name); g_free (desc->priv->longname); g_free (desc->priv->description); g_free (desc->priv->language); g_free (desc->priv->license); g_free (desc->priv->author); g_free (desc->priv->icon); g_free (desc->priv->layout); g_free (desc->priv->layout_variant); g_free (desc->priv->layout_option); g_free (desc->priv->hotkeys); g_free (desc->priv->symbol); g_free (desc->priv->setup); g_free (desc->priv->version); g_free (desc->priv->textdomain); g_free (desc->priv->icon_prop_key); IBUS_OBJECT_CLASS (ibus_engine_desc_parent_class)->destroy (IBUS_OBJECT (desc)); } static void ibus_engine_desc_set_property (IBusEngineDesc *desc, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_NAME: g_assert (desc->priv->name == NULL); desc->priv->name = g_value_dup_string (value); break; case PROP_LONGNAME: g_assert (desc->priv->longname == NULL); desc->priv->longname = g_value_dup_string (value); break; case PROP_DESCRIPTION: g_assert (desc->priv->description == NULL); desc->priv->description = g_value_dup_string (value); break; case PROP_LANGUAGE: g_assert (desc->priv->language == NULL); desc->priv->language = g_value_dup_string (value); break; case PROP_LICENSE: g_assert (desc->priv->license == NULL); desc->priv->license = g_value_dup_string (value); break; case PROP_AUTHOR: g_assert (desc->priv->author == NULL); desc->priv->author = g_value_dup_string (value); break; case PROP_ICON: g_assert (desc->priv->icon == NULL); desc->priv->icon = g_value_dup_string (value); break; case PROP_LAYOUT: g_assert (desc->priv->layout == NULL); desc->priv->layout = g_value_dup_string (value); break; case PROP_LAYOUT_VARIANT: g_assert (desc->priv->layout_variant == NULL); desc->priv->layout_variant = g_value_dup_string (value); break; case PROP_LAYOUT_OPTION: g_assert (desc->priv->layout_option == NULL); desc->priv->layout_option = g_value_dup_string (value); break; case PROP_RANK: desc->priv->rank = g_value_get_uint (value); break; case PROP_HOTKEYS: g_assert (desc->priv->hotkeys == NULL); desc->priv->hotkeys = g_value_dup_string (value); break; case PROP_SYMBOL: g_assert (desc->priv->symbol == NULL); desc->priv->symbol = g_value_dup_string (value); break; case PROP_SETUP: g_assert (desc->priv->setup == NULL); desc->priv->setup = g_value_dup_string (value); break; case PROP_VERSION: g_assert (desc->priv->version == NULL); desc->priv->version = g_value_dup_string (value); break; case PROP_TEXTDOMAIN: g_assert (desc->priv->textdomain == NULL); desc->priv->textdomain = g_value_dup_string (value); break; case PROP_ICON_PROP_KEY: g_assert (desc->priv->icon_prop_key == NULL); desc->priv->icon_prop_key = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec); } } static void ibus_engine_desc_get_property (IBusEngineDesc *desc, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_NAME: g_value_set_string (value, ibus_engine_desc_get_name (desc)); break; case PROP_LONGNAME: g_value_set_string (value, ibus_engine_desc_get_longname (desc)); break; case PROP_DESCRIPTION: g_value_set_string (value, ibus_engine_desc_get_description (desc)); break; case PROP_LANGUAGE: g_value_set_string (value, ibus_engine_desc_get_language (desc)); break; case PROP_LICENSE: g_value_set_string (value, ibus_engine_desc_get_license (desc)); break; case PROP_AUTHOR: g_value_set_string (value, ibus_engine_desc_get_author (desc)); break; case PROP_ICON: g_value_set_string (value, ibus_engine_desc_get_icon (desc)); break; case PROP_LAYOUT: g_value_set_string (value, ibus_engine_desc_get_layout (desc)); break; case PROP_LAYOUT_VARIANT: g_value_set_string (value, ibus_engine_desc_get_layout_variant (desc)); break; case PROP_LAYOUT_OPTION: g_value_set_string (value, ibus_engine_desc_get_layout_option (desc)); break; case PROP_RANK: g_value_set_uint (value, ibus_engine_desc_get_rank (desc)); break; case PROP_HOTKEYS: g_value_set_string (value, ibus_engine_desc_get_hotkeys (desc)); break; case PROP_SYMBOL: g_value_set_string (value, ibus_engine_desc_get_symbol (desc)); break; case PROP_SETUP: g_value_set_string (value, ibus_engine_desc_get_setup (desc)); break; case PROP_VERSION: g_value_set_string (value, ibus_engine_desc_get_version (desc)); break; case PROP_TEXTDOMAIN: g_value_set_string (value, ibus_engine_desc_get_textdomain (desc)); break; case PROP_ICON_PROP_KEY: g_value_set_string (value, ibus_engine_desc_get_icon_prop_key (desc)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec); } } static gboolean ibus_engine_desc_serialize (IBusEngineDesc *desc, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->serialize ((IBusSerializable *)desc, builder); g_return_val_if_fail (retval, FALSE); /* End dict iter */ #define NOTNULL(s) ((s) != NULL ? (s) : "") /* If you will add a new property, you can append it at the end and * you should not change the serialized order of name, longname, * description, ... because the order is also used in other applications * likes ibus-qt. */ g_variant_builder_add (builder, "s", NOTNULL (desc->priv->name)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->longname)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->description)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->language)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->license)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->author)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->icon)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout)); g_variant_builder_add (builder, "u", desc->priv->rank); /* The serialized order should be kept. */ g_variant_builder_add (builder, "s", NOTNULL (desc->priv->hotkeys)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->symbol)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->setup)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout_variant)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout_option)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->version)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->textdomain)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->icon_prop_key)); #undef NOTNULL return TRUE; } static gint ibus_engine_desc_deserialize (IBusEngineDesc *desc, GVariant *variant) { gint retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->deserialize ((IBusSerializable *)desc, variant); g_return_val_if_fail (retval, 0); /* If you will add a new property, you can append it at the end and * you should not change the serialized order of name, longname, * description, ... because the order is also used in other applications * likes ibus-qt. */ ibus_g_variant_get_child_string (variant, retval++, &desc->priv->name); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->longname); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->description); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->language); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->license); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->author); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->icon); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->layout); g_variant_get_child (variant, retval++, "u", &desc->priv->rank); /* The serialized order should be kept. */ ibus_g_variant_get_child_string (variant, retval++, &desc->priv->hotkeys); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->symbol); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->setup); if (g_variant_n_children (variant) < retval + 2) return retval; ibus_g_variant_get_child_string (variant, retval++, &desc->priv->layout_variant); ibus_g_variant_get_child_string (variant, retval++, &desc->priv->layout_option); if (g_variant_n_children (variant) < retval + 1) return retval; ibus_g_variant_get_child_string (variant, retval++, &desc->priv->version); if (g_variant_n_children (variant) < retval + 1) return retval; ibus_g_variant_get_child_string (variant, retval++, &desc->priv->textdomain); if (g_variant_n_children (variant) < retval + 1) return retval; ibus_g_variant_get_child_string (variant, retval++, &desc->priv->icon_prop_key); return retval; } static gboolean ibus_engine_desc_copy (IBusEngineDesc *dest, const IBusEngineDesc *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->name = g_strdup (src->priv->name); dest->priv->longname = g_strdup (src->priv->longname); dest->priv->description = g_strdup (src->priv->description); dest->priv->language = g_strdup (src->priv->language); dest->priv->license = g_strdup (src->priv->license); dest->priv->author = g_strdup (src->priv->author); dest->priv->icon = g_strdup (src->priv->icon); dest->priv->layout = g_strdup (src->priv->layout); dest->priv->layout_variant = g_strdup (src->priv->layout_variant); dest->priv->layout_option = g_strdup (src->priv->layout_option); dest->priv->rank = src->priv->rank; dest->priv->hotkeys = g_strdup (src->priv->hotkeys); dest->priv->symbol = g_strdup (src->priv->symbol); dest->priv->setup = g_strdup (src->priv->setup); dest->priv->version = g_strdup (src->priv->version); dest->priv->textdomain = g_strdup (src->priv->textdomain); dest->priv->icon_prop_key = g_strdup (src->priv->icon_prop_key); return TRUE; } #define g_string_append_indent(string, indent) \ { \ gint i; \ for (i = 0; i < (indent); i++) { \ g_string_append (string, " "); \ } \ } void ibus_engine_desc_output (IBusEngineDesc *desc, GString *output, gint indent) { g_string_append_indent (output, indent); g_string_append (output, "\n"); #define OUTPUT_ENTRY(field, element) \ { \ gchar *escape_text = g_markup_escape_text ( \ desc->priv->field ? desc->priv->field : "", -1); \ g_string_append_indent (output, indent + 1); \ g_string_append_printf (output, "<"element">%s\n", \ escape_text); \ g_free (escape_text); \ } #define OUTPUT_ENTRY_1(name) OUTPUT_ENTRY(name, #name) OUTPUT_ENTRY_1(name); OUTPUT_ENTRY_1(longname); OUTPUT_ENTRY_1(description); OUTPUT_ENTRY_1(language); OUTPUT_ENTRY_1(license); OUTPUT_ENTRY_1(author); OUTPUT_ENTRY_1(icon); OUTPUT_ENTRY_1(layout); OUTPUT_ENTRY_1(layout_variant); OUTPUT_ENTRY_1(layout_option); OUTPUT_ENTRY_1(hotkeys); OUTPUT_ENTRY_1(symbol); OUTPUT_ENTRY_1(setup); OUTPUT_ENTRY_1(version); OUTPUT_ENTRY_1(textdomain); OUTPUT_ENTRY_1(icon_prop_key); g_string_append_indent (output, indent + 1); g_string_append_printf (output, "%u\n", desc->priv->rank); #undef OUTPUT_ENTRY #undef OUTPUT_ENTRY_1 g_string_append_indent (output, indent); g_string_append (output, "\n"); } static gboolean ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, XMLNode *node) { GList *p; for (p = node->sub_nodes; p != NULL; p = p->next) { XMLNode *sub_node = (XMLNode *) p->data; #define PARSE_ENTRY(field_name, element_name) \ if (g_strcmp0 (sub_node->name, element_name) == 0) { \ g_free (desc->priv->field_name); \ desc->priv->field_name = g_strdup (sub_node->text); \ continue; \ } #define PARSE_ENTRY_1(name) PARSE_ENTRY(name, #name) PARSE_ENTRY_1(name); PARSE_ENTRY_1(longname); PARSE_ENTRY_1(description); PARSE_ENTRY_1(language); PARSE_ENTRY_1(license); PARSE_ENTRY_1(author); PARSE_ENTRY_1(icon); PARSE_ENTRY_1(layout); PARSE_ENTRY_1(layout_variant); PARSE_ENTRY_1(layout_option); PARSE_ENTRY_1(hotkeys); PARSE_ENTRY_1(symbol); PARSE_ENTRY_1(setup); PARSE_ENTRY_1(version); PARSE_ENTRY_1(textdomain); PARSE_ENTRY_1(icon_prop_key); #undef PARSE_ENTRY #undef PARSE_ENTRY_1 if (g_strcmp0 (sub_node->name , "rank") == 0) { desc->priv->rank = atoi (sub_node->text); continue; } g_warning (" element contains invalidate element <%s>", sub_node->name); } return TRUE; } #define IBUS_ENGINE_DESC_GET_PROPERTY(property, return_type) \ return_type \ ibus_engine_desc_get_ ## property (IBusEngineDesc *desc) \ { \ return desc->priv->property; \ } IBUS_ENGINE_DESC_GET_PROPERTY (name, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (longname, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (description, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (language, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (license, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (author, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (icon, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (layout, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (layout_variant, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (layout_option, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (rank, guint) IBUS_ENGINE_DESC_GET_PROPERTY (hotkeys, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (symbol, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (setup, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (version, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (textdomain, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (icon_prop_key, const gchar *) #undef IBUS_ENGINE_DESC_GET_PROPERTY IBusEngineDesc * ibus_engine_desc_new (const gchar *name, const gchar *longname, const gchar *description, const gchar *language, const gchar *license, const gchar *author, const gchar *icon, const gchar *layout) { return ibus_engine_desc_new_varargs ("name", name, "longname", longname, "description", description, "language", language, "license", license, "author", author, "icon", icon, "layout", layout, NULL); } IBusEngineDesc * ibus_engine_desc_new_varargs (const gchar *first_property_name, ...) { va_list var_args; IBusEngineDesc *desc; g_assert (first_property_name); va_start (var_args, first_property_name); desc = (IBusEngineDesc *) g_object_new_valist (IBUS_TYPE_ENGINE_DESC, first_property_name, var_args); va_end (var_args); /* name is required. Other properties are set in class_init by default. */ g_assert (desc->priv->name); g_assert (desc->priv->longname); g_assert (desc->priv->description); g_assert (desc->priv->language); g_assert (desc->priv->license); g_assert (desc->priv->author); g_assert (desc->priv->icon); g_assert (desc->priv->layout); g_assert (desc->priv->layout_variant); g_assert (desc->priv->layout_option); g_assert (desc->priv->hotkeys); g_assert (desc->priv->symbol); g_assert (desc->priv->setup); g_assert (desc->priv->version); g_assert (desc->priv->textdomain); g_assert (desc->priv->icon_prop_key); return desc; } IBusEngineDesc * ibus_engine_desc_new_from_xml_node (XMLNode *node) { g_assert (node); IBusEngineDesc *desc; if (G_UNLIKELY (g_strcmp0 (node->name, "engine") != 0)) { return NULL; } desc = (IBusEngineDesc *)g_object_new (IBUS_TYPE_ENGINE_DESC, NULL); if (!ibus_engine_desc_parse_xml_node (desc, node)) { g_object_unref (desc); desc = NULL; } return desc; } ibus-1.5.11/src/ibusproxy.c0000644000000000000000000001675112551654123012445 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusproxy.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusobject.h" #define IBUS_PROXY_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_PROXY, IBusProxyPrivate)) enum { DESTROY, LAST_SIGNAL, }; static guint proxy_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_proxy_dispose (GObject *object); static void ibus_proxy_real_destroy (IBusProxy *proxy); static void ibus_proxy_connection_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, IBusProxy *proxy); static void initable_iface_init (GInitableIface *initable_iface); static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface); G_DEFINE_TYPE_WITH_CODE (IBusProxy, ibus_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init) ); static void ibus_proxy_class_init (IBusProxyClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); gobject_class->dispose = ibus_proxy_dispose; class->destroy = ibus_proxy_real_destroy; /* install signals */ /** * IBusProxy::destroy: * @object: An IBusProxy. * * Destroy and free an IBusProxy * * See also: ibus_proxy_destroy(). * * Argument @user_data is ignored in this function. */ proxy_signals[DESTROY] = g_signal_new (I_("destroy"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusProxyClass, destroy), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void ibus_proxy_init (IBusProxy *proxy) { proxy->own = TRUE; } /** * ibus_proxy_dispose: * * Override GObject's dispose function. */ static void ibus_proxy_dispose (GObject *object) { if (! (IBUS_PROXY_FLAGS (object) & IBUS_IN_DESTRUCTION)) { IBUS_PROXY_SET_FLAGS (object, IBUS_IN_DESTRUCTION); if (! (IBUS_PROXY_FLAGS (object) & IBUS_DESTROYED)) { g_signal_emit (object, proxy_signals[DESTROY], 0); IBUS_PROXY_SET_FLAGS (object, IBUS_DESTROYED); } IBUS_PROXY_UNSET_FLAGS (object, IBUS_IN_DESTRUCTION); } G_OBJECT_CLASS(ibus_proxy_parent_class)->dispose (object); } /** * ibus_proxy_real_destroy: * * Handle "destroy" signal which is emitted by ibus_proxy_dispose. */ static void ibus_proxy_real_destroy (IBusProxy *proxy) { GDBusConnection *connection = g_dbus_proxy_get_connection ((GDBusProxy *) proxy); g_assert (connection != NULL); if (!g_dbus_connection_is_closed (connection) && proxy->own) { g_dbus_proxy_call ((GDBusProxy *)proxy, "org.freedesktop.IBus.Service.Destroy", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } g_signal_handlers_disconnect_by_func (connection, (GCallback) ibus_proxy_connection_closed_cb, proxy); } static void ibus_proxy_connection_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, IBusProxy *proxy) { ibus_proxy_destroy (proxy); } void ibus_proxy_destroy (IBusProxy *proxy) { g_assert (IBUS_IS_PROXY (proxy)); if (! (IBUS_PROXY_FLAGS (proxy) & IBUS_IN_DESTRUCTION)) { g_object_run_dispose (G_OBJECT (proxy)); } } static gboolean ibus_proxy_init_finish (IBusProxy *proxy, GError **error) { g_assert (IBUS_IS_PROXY (proxy)); g_assert (error == NULL || *error == NULL); GDBusConnection *connection = g_dbus_proxy_get_connection ((GDBusProxy *)proxy); if (connection == NULL || g_dbus_connection_is_closed (connection)) { /* * When proxy is created asynchronously, the connection may be closed * before proxy is ready. In this case, we need override interfaces * GInitable and GAsyncInitable to report the error. */ if (error != NULL) *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Connection is closed."); return FALSE; } g_signal_connect (connection, "closed", G_CALLBACK (ibus_proxy_connection_closed_cb), proxy); return TRUE; } static GInitableIface *initable_iface_parent = NULL; static gboolean initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { if (!initable_iface_parent->init (initable, cancellable, error)) return FALSE; return ibus_proxy_init_finish ((IBusProxy *)initable, error); } static void initable_iface_init (GInitableIface *initable_iface) { initable_iface_parent = g_type_interface_peek_parent (initable_iface); initable_iface->init = initable_init; } static GAsyncInitableIface *async_initable_iface_parent = NULL; static void async_initable_init_async (GAsyncInitable *initable, gint io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { async_initable_iface_parent->init_async (initable, io_priority, cancellable, callback, user_data); } static gboolean async_initable_init_finish (GAsyncInitable *initable, GAsyncResult *res, GError **error) { if (!async_initable_iface_parent->init_finish (initable, res, error)) return FALSE; return ibus_proxy_init_finish ((IBusProxy *)initable, error); } static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface) { async_initable_iface_parent = g_type_interface_peek_parent (async_initable_iface); async_initable_iface->init_async = async_initable_init_async; async_initable_iface->init_finish = async_initable_init_finish; } ibus-1.5.11/src/ibusxml.h0000644000000000000000000000627712551654123012073 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_XML_H__ #define __IBUS_XML_H__ /** * SECTION: ibusxml * @short_description: XML handling functions for IBus. * @stability: Stable * * IBusXML lists data structure and handling function for XML in IBus. */ #include #include #define IBUS_TYPE_XML (ibus_xml_get_type ()) G_BEGIN_DECLS /** * IBusXML: * @name: Name of XML tag. * @text: Text enclosed by XML start tag and end tag. i.e. text. * @attributes: Attributes of the XML node. * @sub_nodes: Children node of this XML node. * * A data type representing an XML node. */ typedef struct { gchar *name; gchar *text; gchar **attributes; GList *sub_nodes; } IBusXML; #define XMLNode IBusXML GType ibus_xml_get_type (void) G_GNUC_CONST; /** * ibus_xml_copy: * @node: Root node of an XML tree. * * Creates a copy of @node, which should be freed with * ibus_xml_free(). Primarily used by language bindings, * not that useful otherwise (since @node can just be copied * by assignment in C). * * Returns: the newly allocated #IBusXML, which should * be freed with ibus_xml_free(), or %NULL * if @node was %NULL. **/ XMLNode *ibus_xml_copy (const XMLNode *node); /** * ibus_xml_parse_file: * @name: File name to be parsed. * * Parse an XML file and return a corresponding XML tree. * * Returns: Root node of parsed XML tree. */ XMLNode *ibus_xml_parse_file (const gchar *name); /** * ibus_xml_parse_buffer: * @buffer: Buffer to be parsed. * * Parse a string buffer which contains an XML-formatted string, * and return a corresponding XML tree. * * Returns: Root node of parsed XML tree. */ XMLNode *ibus_xml_parse_buffer (const gchar *buffer); /** * ibus_xml_free: * @node: Root node of an XML tree. * * Free an XML tree. */ void ibus_xml_free (XMLNode *node); /** * ibus_xml_output: * @node: Root node of an XML tree. * @output: GString which stores the output. * * Output an XML tree to a GString. */ void ibus_xml_output (const XMLNode *node, GString *output); G_END_DECLS #endif ibus-1.5.11/src/ibusenumtypes.h.template0000644000000000000000000000145412551654123015126 00000000000000/*** BEGIN file-header ***/ #ifndef __IBUS_ENUM_TYPES_H__ #define __IBUS_ENUM_TYPES_H__ #include G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ /** * @enum_name@_get_type: * @returns: GType of @ENUMPREFIX@@ENUMSHORT@ * * Returns the type of @ENUMPREFIX@@ENUMSHORT@ as GType. */ GType @enum_name@_get_type (void) G_GNUC_CONST; /** * @ENUMPREFIX@_TYPE_@ENUMSHORT@: * @returns: GType of @ENUMPREFIX@@ENUMSHORT@ * * Returns the type of @ENUMPREFIX@@ENUMSHORT@ as GType. */ #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) /*** END value-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /* __IBUS_ENUM_TYPES_H__ */ /*** END file-tail ***/ ibus-1.5.11/src/ibuspanelservice.h0000644000000000000000000002161612551654123013745 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (c) 2009-2014 Google Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_PANEL_SERVICE_H_ #define __IBUS_PANEL_SERVICE_H_ /** * SECTION: ibuspanelservice * @short_description: Panel service back-end. * @stability: Stable * * An IBusPanelService is a base class for UI services. * Developers can "extend" this class for panel UI development. */ #include "ibuslookuptable.h" #include "ibusservice.h" #include "ibusproplist.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_PANEL_SERVICE \ (ibus_panel_service_get_type ()) #define IBUS_PANEL_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PANEL_SERVICE, IBusPanelService)) #define IBUS_PANEL_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PANEL_SERVICE, IBusPanelServiceClass)) #define IBUS_IS_PANEL_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PANEL_SERVICE)) #define IBUS_IS_PANEL_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PANEL_SERVICE)) #define IBUS_PANEL_SERVICE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PANEL_SERVICE, IBusPanelServiceClass)) G_BEGIN_DECLS typedef struct _IBusPanelService IBusPanelService; typedef struct _IBusPanelServiceClass IBusPanelServiceClass; /** * IBusPanelService: * * An opaque data type representing an IBusPanelService. */ struct _IBusPanelService { IBusService parent; /* instance members */ }; struct _IBusPanelServiceClass { IBusServiceClass parent; /* class members */ void (* focus_in) (IBusPanelService *panel, const gchar *input_context_path); void (* focus_out) (IBusPanelService *panel, const gchar *input_context_path); void (* register_properties) (IBusPanelService *panel, IBusPropList *prop_list); void (* set_cursor_location) (IBusPanelService *panel, gint x, gint y, gint w, gint h); void (* update_auxiliary_text) (IBusPanelService *panel, IBusText *text, gboolean visible); void (* update_lookup_table) (IBusPanelService *panel, IBusLookupTable *lookup_table, gboolean visible); void (* update_preedit_text) (IBusPanelService *panel, IBusText *text, guint cursor_pos, gboolean visible); void (* update_property) (IBusPanelService *panel, IBusProperty *prop); void (* cursor_down_lookup_table) (IBusPanelService *panel); void (* cursor_up_lookup_table) (IBusPanelService *panel); void (* hide_auxiliary_text) (IBusPanelService *panel); void (* hide_language_bar) (IBusPanelService *panel); void (* hide_lookup_table) (IBusPanelService *panel); void (* hide_preedit_text) (IBusPanelService *panel); void (* page_down_lookup_table) (IBusPanelService *panel); void (* page_up_lookup_table) (IBusPanelService *panel); void (* reset) (IBusPanelService *panel); void (* show_auxiliary_text) (IBusPanelService *panel); void (* show_language_bar) (IBusPanelService *panel); void (* show_lookup_table) (IBusPanelService *panel); void (* show_preedit_text) (IBusPanelService *panel); void (* start_setup) (IBusPanelService *panel); void (* state_changed) (IBusPanelService *panel); void (* destroy_context) (IBusPanelService *panel, const gchar *input_context_path); void (* set_content_type) (IBusPanelService *panel, guint purpose, guint hints); /*< private >*/ /* padding */ gpointer pdummy[6]; // We can add 8 pointers without breaking the ABI. }; GType ibus_panel_service_get_type (void); /** * ibus_panel_service_new: * @connection: An GDBusConnection. * * Creates a new #IBusPanelService from an #GDBusConnection. * * Returns: A newly allocated #IBusPanelService. */ IBusPanelService *ibus_panel_service_new (GDBusConnection *connection); /** * ibus_panel_service_candidate_clicked: * @panel: An IBusPanelService * @index: Index in the Lookup table * @button: GdkEventButton::button (1: left button, etc.) * @state: GdkEventButton::state (key modifier flags) * * Notify that a candidate is clicked * by sending a "CandidateClicked" to IBus service. */ void ibus_panel_service_candidate_clicked (IBusPanelService *panel, guint index, guint button, guint state); /** * ibus_panel_service_cursor_down: * @panel: An IBusPanelService * * Notify that the cursor is down * by sending a "CursorDown" to IBus service. */ void ibus_panel_service_cursor_down (IBusPanelService *panel); /** * ibus_panel_service_cursor_up: * @panel: An IBusPanelService * * Notify that the cursor is up * by sending a "CursorUp" to IBus service. */ void ibus_panel_service_cursor_up (IBusPanelService *panel); /** * ibus_panel_service_page_down: * @panel: An IBusPanelService * * Notify that the page is down * by sending a "PageDown" to IBus service. */ void ibus_panel_service_page_down (IBusPanelService *panel); /** * ibus_panel_service_page_up: * @panel: An IBusPanelService * * Notify that the page is up * by sending a "PageUp" to IBus service. */ void ibus_panel_service_page_up (IBusPanelService *panel); /** * ibus_panel_service_property_activate: * @panel: An IBusPanelService * @prop_name: A property name * @prop_state: State of the property * * Notify that a property is active * by sending a "PropertyActivate" message to IBus service. */ void ibus_panel_service_property_activate (IBusPanelService *panel, const gchar *prop_name, guint prop_state); /** * ibus_panel_service_property_show: * @panel: An IBusPanelService * @prop_name: A property name * * Notify that a property is shown * by sending a "ValueChanged" message to IBus service. */ void ibus_panel_service_property_show (IBusPanelService *panel, const gchar *prop_name); /** * ibus_panel_service_property_hide: * @panel: An IBusPanelService * @prop_name: A property name * * Notify that a property is hidden * by sending a "ValueChanged" message to IBus service. */ void ibus_panel_service_property_hide (IBusPanelService *panel, const gchar *prop_name); G_END_DECLS #endif ibus-1.5.11/src/ibusfactory.c0000644000000000000000000003603112551654123012724 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusfactory.h" #include "ibusengine.h" #include "ibusmarshalers.h" #include "ibusshare.h" #include "ibusinternal.h" #define IBUS_FACTORY_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_FACTORY, IBusFactoryPrivate)) enum { CREATE_ENGINE, LAST_SIGNAL, }; enum { PROP_0, }; /* IBusFactoryPriv */ struct _IBusFactoryPrivate { guint id; GList *engine_list; GHashTable *engine_table; }; static guint factory_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_factory_destroy (IBusFactory *factory); static void ibus_factory_set_property (IBusFactory *engine, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_factory_get_property (IBusFactory *factory, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_factory_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *ibus_factory_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean ibus_factory_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void ibus_factory_engine_destroy_cb (IBusEngine *engine, IBusFactory *factory); G_DEFINE_TYPE (IBusFactory, ibus_factory, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" " " " " " " " " " " " " ""; static IBusEngine * ibus_factory_real_create_engine (IBusFactory *factory, const gchar *engine_name) { GType engine_type; gchar *object_path = NULL; IBusEngine *engine = NULL; engine_type = (GType) g_hash_table_lookup (factory->priv->engine_table, engine_name); g_return_val_if_fail (engine_type != G_TYPE_INVALID, NULL); object_path = g_strdup_printf ("/org/freedesktop/IBus/Engine/%d", ++factory->priv->id); engine = ibus_engine_new_with_type (engine_type, engine_name, object_path, ibus_service_get_connection ((IBusService *)factory)); g_free (object_path); return engine; } static gboolean _ibus_factory_create_engine_accumulator (GSignalInvocationHint *ihint, GValue *return_accu, const GValue *handler_return, gpointer dummy) { gboolean retval = TRUE; GObject *object = g_value_get_object (handler_return); if (object != NULL) { g_value_copy (handler_return, return_accu); retval = FALSE; } return retval; } static void ibus_factory_class_init (IBusFactoryClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_factory_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_factory_get_property; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_factory_destroy; IBUS_SERVICE_CLASS (class)->service_method_call = ibus_factory_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = ibus_factory_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = ibus_factory_service_set_property; class->create_engine = ibus_factory_real_create_engine; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); g_type_class_add_private (class, sizeof (IBusFactoryPrivate)); /** * IBusFactory::create-engine: * @factory: the factory which received the signal * @engine_name: the engine_name which received the signal * @returns: (nullable) (transfer full): An IBusEngine * * The ::create-engine signal is a signal to create IBusEngine * with @engine_name, which gets emitted when IBusFactory * received CreateEngine dbus method. The callback functions * will be called until a callback returns a non-null object * of IBusEngine. */ factory_signals[CREATE_ENGINE] = g_signal_new (I_("create-engine"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusFactoryClass, create_engine), _ibus_factory_create_engine_accumulator, NULL, _ibus_marshal_OBJECT__STRING, IBUS_TYPE_ENGINE, 1, G_TYPE_STRING); } static void ibus_factory_init (IBusFactory *factory) { factory->priv = IBUS_FACTORY_GET_PRIVATE (factory); factory->priv->engine_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); } static void ibus_factory_destroy (IBusFactory *factory) { GList *list; list = g_list_copy (factory->priv->engine_list); g_list_free_full (list, (GDestroyNotify)ibus_object_destroy); g_list_free(factory->priv->engine_list); factory->priv->engine_list = NULL; if (factory->priv->engine_table) { g_hash_table_destroy (factory->priv->engine_table); } IBUS_OBJECT_CLASS(ibus_factory_parent_class)->destroy (IBUS_OBJECT (factory)); } static void ibus_factory_set_property (IBusFactory *factory, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (factory, prop_id, pspec); } } static void ibus_factory_get_property (IBusFactory *factory, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (factory, prop_id, pspec); } } static void ibus_factory_engine_destroy_cb (IBusEngine *engine, IBusFactory *factory) { factory->priv->engine_list = g_list_remove (factory->priv->engine_list, engine); g_object_unref (engine); } static void ibus_factory_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusFactory *factory = IBUS_FACTORY (service); if (g_strcmp0 (method_name, "CreateEngine") == 0) { gchar *engine_name = NULL; IBusEngine *engine = NULL; g_variant_get (parameters, "(&s)", &engine_name); g_signal_emit (factory, factory_signals[CREATE_ENGINE], 0, engine_name, &engine); if (engine != NULL) { gchar *object_path = NULL; GValue value = { 0, }; g_value_init (&value, G_TYPE_STRING); g_object_get_property (G_OBJECT (engine), "object-path", &value); object_path = g_value_dup_string (&value); g_value_unset (&value); g_assert (engine != NULL); g_assert (object_path != NULL); g_object_ref_sink (engine); factory->priv->engine_list = g_list_append (factory->priv->engine_list, engine); g_signal_connect (engine, "destroy", G_CALLBACK (ibus_factory_engine_destroy_cb), factory); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", object_path)); g_free (object_path); } else { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Cannot find engine %s", engine_name); } return; } IBUS_SERVICE_CLASS (ibus_factory_parent_class)-> service_method_call (service, connection, sender, object_path, interface_name, method_name, parameters, invocation); } static GVariant * ibus_factory_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { return IBUS_SERVICE_CLASS (ibus_factory_parent_class)-> service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } static gboolean ibus_factory_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { return IBUS_SERVICE_CLASS (ibus_factory_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } IBusFactory * ibus_factory_new (GDBusConnection *connection) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); IBusFactory *object = g_object_new (IBUS_TYPE_FACTORY, "object-path", IBUS_PATH_FACTORY, "connection", connection, NULL); return IBUS_FACTORY (object); } void ibus_factory_add_engine (IBusFactory *factory, const gchar *engine_name, GType engine_type) { g_return_if_fail (IBUS_IS_FACTORY (factory)); g_return_if_fail (engine_name != NULL); g_return_if_fail (g_type_is_a (engine_type, IBUS_TYPE_ENGINE)); g_hash_table_insert (factory->priv->engine_table, g_strdup (engine_name), (gpointer) engine_type); } IBusEngine * ibus_factory_create_engine (IBusFactory *factory, const gchar *engine_name) { IBusEngine *engine = NULL; g_assert (engine_name != NULL); g_signal_emit (factory, factory_signals[CREATE_ENGINE], 0, engine_name, &engine); return engine; } ibus-1.5.11/src/ibuserror.c0000644000000000000000000000273112551654123012406 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2011 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibuserror.h" #include #include "ibustypes.h" static const GDBusErrorEntry ibus_error_entries[] = { { IBUS_ERROR_NO_ENGINE, "org.freedesktop.IBus.Error.NoEngine" }, }; GQuark ibus_error_quark (void) { static volatile gsize quark_volatile = 0; g_dbus_error_register_error_domain ("ibus-error-quark", &quark_volatile, ibus_error_entries, G_N_ELEMENTS (ibus_error_entries)); return (GQuark) quark_volatile; } ibus-1.5.11/src/ibuskeynames.c0000644000000000000000000002615312551654123013075 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ /* * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ /* Key handling not part of the keymap */ #include #include #include #include #include "ibuskeysyms.h" #include "keyname-table.h" #include "ibuskeys.h" #define IBUS_NUM_KEYS G_N_ELEMENTS (gdk_keys_by_keyval) static int gdk_keys_keyval_compare (const void *pkey, const void *pbase) { return (*(int *) pkey) - ((gdk_key *) pbase)->keyval; } const gchar* ibus_keyval_name (guint keyval) { static gchar buf[100]; gdk_key *found; /* Check for directly encoded 24-bit UCS characters: */ if ((keyval & 0xff000000) == 0x01000000) { g_sprintf (buf, "U+%.04X", (keyval & 0x00ffffff)); return buf; } found = bsearch (&keyval, gdk_keys_by_keyval, IBUS_NUM_KEYS, sizeof (gdk_key), gdk_keys_keyval_compare); if (found != NULL) { while ((found > gdk_keys_by_keyval) && ((found - 1)->keyval == keyval)) found--; return (gchar *) (keynames + found->offset); } else if (keyval != 0) { g_sprintf (buf, "%#x", keyval); return buf; } return NULL; } static int gdk_keys_name_compare (const void *pkey, const void *pbase) { return strcmp ((const char *) pkey, (const char *) (keynames + ((const gdk_key *) pbase)->offset)); } guint ibus_keyval_from_name (const gchar *keyval_name) { gdk_key *found; g_return_val_if_fail (keyval_name != NULL, 0); found = bsearch (keyval_name, gdk_keys_by_name, IBUS_NUM_KEYS, sizeof (gdk_key), gdk_keys_name_compare); if (found != NULL) return found->keyval; else return IBUS_KEY_VoidSymbol; } static const gchar * modifier_name[] = { "Shift", // 0 "Lock", // 1 "Control", // 2 "Alt", // 3 "Mod2", // 4 "Mod3", // 5 "Mod4", // 6 "Mod5", // 7 "Button1", // 8 "Button2", // 9 "Button3", // 10 "Button4", // 11 "Button5", // 12 NULL, NULL, NULL, NULL, NULL, // 13 - 17 NULL, NULL, NULL, NULL, NULL, // 18 - 22 NULL, NULL, NULL, // 23 - 25 "Super", // 26 "Hyper", // 27 "Meta", // 28 NULL, // 29 "Release", // 30 NULL, // 31 }; const gchar * ibus_key_event_to_string (guint keyval, guint modifiers) { guint i; GString *str; const gchar *keyval_name; g_return_val_if_fail (keyval != IBUS_KEY_VoidSymbol, NULL); keyval_name = ibus_keyval_name (keyval); g_return_val_if_fail (keyval_name != NULL, NULL); str = g_string_new (""); for (i = 0; i < 32; i++) { guint mask = 1 << i; if ((modifiers & mask) == 0) continue; if (modifier_name[i] == NULL) continue; g_string_append (str, modifier_name[i]); g_string_append_c (str, '+'); } g_string_append (str, keyval_name); return g_string_free (str, FALSE); } gboolean ibus_key_event_from_string (const gchar *string, guint *keyval, guint *modifiers) { g_return_val_if_fail (string != NULL, FALSE); g_return_val_if_fail (keyval != NULL, FALSE); g_return_val_if_fail (modifiers != NULL, FALSE); gchar **tokens = NULL; gchar **p; gboolean retval = FALSE; tokens = g_strsplit (string, "+", 0); g_return_val_if_fail (tokens != NULL, FALSE); *keyval = 0; *modifiers = 0; for (p = tokens; *(p + 1) != NULL; p++) { gint i; for (i = 0; i < 32; i++) { if (g_strcmp0 (modifier_name[i], *p) != 0) continue; *modifiers |= (1 << i); break; } if (i == 32) { goto _out; } } *keyval = ibus_keyval_from_name (*p); if (*keyval != IBUS_KEY_VoidSymbol) retval = TRUE; _out: if (tokens) g_strfreev (tokens); return retval; } guint ibus_keyval_to_upper (guint keyval) { guint result; ibus_keyval_convert_case (keyval, NULL, &result); return result; } guint ibus_keyval_to_lower (guint keyval) { guint result; ibus_keyval_convert_case (keyval, &result, NULL); return result; } void ibus_keyval_convert_case (guint symbol, guint *lower, guint *upper) { guint xlower, xupper; xlower = symbol; xupper = symbol; /* Check for directly encoded 24-bit UCS characters: */ if ((symbol & 0xff000000) == 0x01000000) { if (lower) *lower = ibus_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); if (upper) *upper = ibus_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); return; } switch (symbol >> 8) { case 0: /* Latin 1 */ if ((symbol >= IBUS_KEY_A) && (symbol <= IBUS_KEY_Z)) xlower += (IBUS_KEY_a - IBUS_KEY_A); else if ((symbol >= IBUS_KEY_a) && (symbol <= IBUS_KEY_z)) xupper -= (IBUS_KEY_a - IBUS_KEY_A); else if ((symbol >= IBUS_KEY_Agrave) && (symbol <= IBUS_KEY_Odiaeresis)) xlower += (IBUS_KEY_agrave - IBUS_KEY_Agrave); else if ((symbol >= IBUS_KEY_agrave) && (symbol <= IBUS_KEY_odiaeresis)) xupper -= (IBUS_KEY_agrave - IBUS_KEY_Agrave); else if ((symbol >= IBUS_KEY_Ooblique) && (symbol <= IBUS_KEY_Thorn)) xlower += (IBUS_KEY_oslash - IBUS_KEY_Ooblique); else if ((symbol >= IBUS_KEY_oslash) && (symbol <= IBUS_KEY_thorn)) xupper -= (IBUS_KEY_oslash - IBUS_KEY_Ooblique); break; case 1: /* Latin 2 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (symbol == IBUS_KEY_Aogonek) xlower = IBUS_KEY_aogonek; else if (symbol >= IBUS_KEY_Lstroke && symbol <= IBUS_KEY_Sacute) xlower += (IBUS_KEY_lstroke - IBUS_KEY_Lstroke); else if (symbol >= IBUS_KEY_Scaron && symbol <= IBUS_KEY_Zacute) xlower += (IBUS_KEY_scaron - IBUS_KEY_Scaron); else if (symbol >= IBUS_KEY_Zcaron && symbol <= IBUS_KEY_Zabovedot) xlower += (IBUS_KEY_zcaron - IBUS_KEY_Zcaron); else if (symbol == IBUS_KEY_aogonek) xupper = IBUS_KEY_Aogonek; else if (symbol >= IBUS_KEY_lstroke && symbol <= IBUS_KEY_sacute) xupper -= (IBUS_KEY_lstroke - IBUS_KEY_Lstroke); else if (symbol >= IBUS_KEY_scaron && symbol <= IBUS_KEY_zacute) xupper -= (IBUS_KEY_scaron - IBUS_KEY_Scaron); else if (symbol >= IBUS_KEY_zcaron && symbol <= IBUS_KEY_zabovedot) xupper -= (IBUS_KEY_zcaron - IBUS_KEY_Zcaron); else if (symbol >= IBUS_KEY_Racute && symbol <= IBUS_KEY_Tcedilla) xlower += (IBUS_KEY_racute - IBUS_KEY_Racute); else if (symbol >= IBUS_KEY_racute && symbol <= IBUS_KEY_tcedilla) xupper -= (IBUS_KEY_racute - IBUS_KEY_Racute); break; case 2: /* Latin 3 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (symbol >= IBUS_KEY_Hstroke && symbol <= IBUS_KEY_Hcircumflex) xlower += (IBUS_KEY_hstroke - IBUS_KEY_Hstroke); else if (symbol >= IBUS_KEY_Gbreve && symbol <= IBUS_KEY_Jcircumflex) xlower += (IBUS_KEY_gbreve - IBUS_KEY_Gbreve); else if (symbol >= IBUS_KEY_hstroke && symbol <= IBUS_KEY_hcircumflex) xupper -= (IBUS_KEY_hstroke - IBUS_KEY_Hstroke); else if (symbol >= IBUS_KEY_gbreve && symbol <= IBUS_KEY_jcircumflex) xupper -= (IBUS_KEY_gbreve - IBUS_KEY_Gbreve); else if (symbol >= IBUS_KEY_Cabovedot && symbol <= IBUS_KEY_Scircumflex) xlower += (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot); else if (symbol >= IBUS_KEY_cabovedot && symbol <= IBUS_KEY_scircumflex) xupper -= (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot); break; case 3: /* Latin 4 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (symbol >= IBUS_KEY_Rcedilla && symbol <= IBUS_KEY_Tslash) xlower += (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla); else if (symbol >= IBUS_KEY_rcedilla && symbol <= IBUS_KEY_tslash) xupper -= (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla); else if (symbol == IBUS_KEY_ENG) xlower = IBUS_KEY_eng; else if (symbol == IBUS_KEY_eng) xupper = IBUS_KEY_ENG; else if (symbol >= IBUS_KEY_Amacron && symbol <= IBUS_KEY_Umacron) xlower += (IBUS_KEY_amacron - IBUS_KEY_Amacron); else if (symbol >= IBUS_KEY_amacron && symbol <= IBUS_KEY_umacron) xupper -= (IBUS_KEY_amacron - IBUS_KEY_Amacron); break; case 6: /* Cyrillic */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (symbol >= IBUS_KEY_Serbian_DJE && symbol <= IBUS_KEY_Serbian_DZE) xlower -= (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje); else if (symbol >= IBUS_KEY_Serbian_dje && symbol <= IBUS_KEY_Serbian_dze) xupper += (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje); else if (symbol >= IBUS_KEY_Cyrillic_YU && symbol <= IBUS_KEY_Cyrillic_HARDSIGN) xlower -= (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu); else if (symbol >= IBUS_KEY_Cyrillic_yu && symbol <= IBUS_KEY_Cyrillic_hardsign) xupper += (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu); break; case 7: /* Greek */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (symbol >= IBUS_KEY_Greek_ALPHAaccent && symbol <= IBUS_KEY_Greek_OMEGAaccent) xlower += (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent); else if (symbol >= IBUS_KEY_Greek_alphaaccent && symbol <= IBUS_KEY_Greek_omegaaccent && symbol != IBUS_KEY_Greek_iotaaccentdieresis && symbol != IBUS_KEY_Greek_upsilonaccentdieresis) xupper -= (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent); else if (symbol >= IBUS_KEY_Greek_ALPHA && symbol <= IBUS_KEY_Greek_OMEGA) xlower += (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA); else if (symbol >= IBUS_KEY_Greek_alpha && symbol <= IBUS_KEY_Greek_omega && symbol != IBUS_KEY_Greek_finalsmallsigma) xupper -= (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA); break; } if (lower) *lower = xlower; if (upper) *upper = xupper; } ibus-1.5.11/src/ibusenumtypes.c.template0000644000000000000000000000137112551654123015117 00000000000000/*** BEGIN file-header ***/ #include "ibus.h" /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); } return etype; } /*** END value-tail ***/ /*** BEGIN file-tail ***/ /*** END file-tail ***/ ibus-1.5.11/src/ibushotkey.c0000644000000000000000000004143212551654123012561 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang * Copyright (C) 2008-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibushotkey.h" #include "ibusmarshalers.h" #include "ibuskeysyms.h" #include "ibusinternal.h" #include "ibusshare.h" #define IBUS_HOTKEY_PROFILE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_HOTKEY_PROFILE, IBusHotkeyProfilePrivate)) enum { TRIGGER, LAST_SIGNAL, }; typedef struct _IBusHotkey IBusHotkey; typedef struct _IBusHotkeyEvent IBusHotkeyEvent; typedef struct _IBusHotkeyProfilePrivate IBusHotkeyProfilePrivate; struct _IBusHotkey { guint keyval; guint modifiers; }; struct _IBusHotkeyEvent { GQuark event; GList *hotkeys; }; struct _IBusHotkeyProfilePrivate { GTree *hotkeys; GArray *events; guint mask; }; /* functions prototype */ static IBusHotkey *ibus_hotkey_new (guint keyval, guint modifiers); static IBusHotkey *ibus_hotkey_copy (const IBusHotkey *src); static void ibus_hotkey_free (IBusHotkey *hotkey); static void ibus_hotkey_profile_class_init (IBusHotkeyProfileClass *class); static void ibus_hotkey_profile_init (IBusHotkeyProfile *profile); static void ibus_hotkey_profile_destroy (IBusHotkeyProfile *profile); static gboolean ibus_hotkey_profile_serialize (IBusHotkeyProfile *profile, GVariantBuilder *builder); static gint ibus_hotkey_profile_deserialize(IBusHotkeyProfile *profile, GVariant *variant); static gboolean ibus_hotkey_profile_copy (IBusHotkeyProfile *dest, const IBusHotkeyProfile*src); static void ibus_hotkey_profile_trigger (IBusHotkeyProfile *profile, GQuark event, gpointer user_data); // Normalize modifiers by setting necessary modifier bits according to keyval. static guint normalize_modifiers (guint keyval, guint modifiers); static gboolean is_modifier (guint keyval); static IBusSerializableClass *parent_class = NULL; static guint profile_signals[LAST_SIGNAL] = { 0 }; GType ibus_hotkey_get_type (void) { static GType type = 0; if (type == 0) { type = g_boxed_type_register_static ("IBusHotkey", (GBoxedCopyFunc) ibus_hotkey_copy, (GBoxedFreeFunc) ibus_hotkey_free); } return type; } static IBusHotkey * ibus_hotkey_new (guint keyval, guint modifiers) { IBusHotkey *hotkey = g_slice_new (IBusHotkey); hotkey->keyval = keyval; hotkey->modifiers = modifiers; return hotkey; } static void ibus_hotkey_free (IBusHotkey *hotkey) { g_slice_free (IBusHotkey, hotkey); } static IBusHotkey * ibus_hotkey_copy (const IBusHotkey *src) { return ibus_hotkey_new (src->keyval, src->modifiers); } static gint ibus_hotkey_cmp_with_data (IBusHotkey *hotkey1, IBusHotkey *hotkey2, gpointer user_data) { gint retval; if (hotkey1 == hotkey2) return 0; retval = hotkey1->keyval - hotkey2->keyval; if (retval == 0) retval = hotkey1->modifiers - hotkey2->modifiers; return retval; } GType ibus_hotkey_profile_get_type (void) { static GType type = 0; static const GTypeInfo type_info = { sizeof (IBusHotkeyProfileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_hotkey_profile_class_init, NULL, /* class finialize */ NULL, /* class data */ sizeof (IBusHotkeyProfile), 0, (GInstanceInitFunc) ibus_hotkey_profile_init, }; if (type == 0) { type = g_type_register_static (IBUS_TYPE_SERIALIZABLE, "IBusHotkeyProfile", &type_info, 0); } return type; } static void ibus_hotkey_profile_class_init (IBusHotkeyProfileClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); parent_class = (IBusSerializableClass *) g_type_class_peek_parent (class); g_type_class_add_private (class, sizeof (IBusHotkeyProfilePrivate)); object_class->destroy = (IBusObjectDestroyFunc) ibus_hotkey_profile_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_hotkey_profile_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_hotkey_profile_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_hotkey_profile_copy; class->trigger = ibus_hotkey_profile_trigger; /* install signals */ /** * IBusHotkeyProfile::trigger: * @profile: An IBusHotkeyProfile. * @event: An event in GQuark. * @user_data: User data for callback. * * Emitted when a hotkey is pressed and the hotkey is in profile. * Implement the member function trigger() in extended class to receive this signal. * * The last parameter, user_data is not actually a valid parameter. It is displayed because of GtkDoc bug. */ profile_signals[TRIGGER] = g_signal_new (I_("trigger"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, G_STRUCT_OFFSET (IBusHotkeyProfileClass, trigger), NULL, NULL, _ibus_marshal_VOID__UINT_POINTER, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_POINTER); } static void ibus_hotkey_profile_init (IBusHotkeyProfile *profile) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); priv->hotkeys = g_tree_new_full ((GCompareDataFunc) ibus_hotkey_cmp_with_data, NULL, (GDestroyNotify) ibus_hotkey_free, NULL); priv->events = g_array_new (TRUE, TRUE, sizeof (IBusHotkeyEvent)); priv->mask = IBUS_SHIFT_MASK | IBUS_CONTROL_MASK | IBUS_MOD1_MASK | IBUS_SUPER_MASK | IBUS_HYPER_MASK | IBUS_RELEASE_MASK; } static void ibus_hotkey_profile_destroy (IBusHotkeyProfile *profile) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); /* free events */ if (priv->events) { IBusHotkeyEvent *p; gint i; p = (IBusHotkeyEvent *)g_array_free (priv->events, FALSE); priv->events = NULL; for (i = 0; p[i].event != 0; i++) { g_list_free (p[i].hotkeys); } g_free (p); } if (priv->hotkeys) { g_tree_destroy (priv->hotkeys); priv->hotkeys = NULL; } IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)profile); } static gboolean ibus_hotkey_profile_serialize (IBusHotkeyProfile *profile, GVariantBuilder *builder) { gboolean retval; retval = parent_class->serialize ((IBusSerializable *) profile, builder); g_return_val_if_fail (retval, FALSE); return TRUE; } static gint ibus_hotkey_profile_deserialize (IBusHotkeyProfile *profile, GVariant *variant) { gint retval; retval = parent_class->deserialize ((IBusSerializable *) profile, variant); g_return_val_if_fail (retval, 0); return retval; } static gboolean ibus_hotkey_profile_copy (IBusHotkeyProfile *dest, const IBusHotkeyProfile *src) { gboolean retval; retval = parent_class->copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_HOTKEY_PROFILE (dest), FALSE); g_return_val_if_fail (IBUS_IS_HOTKEY_PROFILE (src), FALSE); return TRUE; } IBusHotkeyProfile * ibus_hotkey_profile_new (void) { IBusHotkeyProfile *profile = g_object_new (IBUS_TYPE_HOTKEY_PROFILE, NULL); return profile; } static void ibus_hotkey_profile_trigger (IBusHotkeyProfile *profile, GQuark event, gpointer user_data) { // g_debug ("%s is triggerred", g_quark_to_string (event)); } static guint normalize_modifiers (guint keyval, guint modifiers) { switch(keyval) { case IBUS_KEY_Control_L: case IBUS_KEY_Control_R: return modifiers | IBUS_CONTROL_MASK; case IBUS_KEY_Shift_L: case IBUS_KEY_Shift_R: return modifiers | IBUS_SHIFT_MASK; case IBUS_KEY_Alt_L: case IBUS_KEY_Alt_R: // Chrome OS does not have Meta key. Instead, shift+alt generates Meta keyval. case IBUS_KEY_Meta_L: case IBUS_KEY_Meta_R: return modifiers | IBUS_MOD1_MASK; case IBUS_KEY_Super_L: case IBUS_KEY_Super_R: return modifiers | IBUS_SUPER_MASK; case IBUS_KEY_Hyper_L: case IBUS_KEY_Hyper_R: return modifiers | IBUS_HYPER_MASK; default: return modifiers; } } static gboolean is_modifier (guint keyval) { switch(keyval) { case IBUS_KEY_Control_L: case IBUS_KEY_Control_R: case IBUS_KEY_Shift_L: case IBUS_KEY_Shift_R: case IBUS_KEY_Alt_L: case IBUS_KEY_Alt_R: case IBUS_KEY_Meta_L: case IBUS_KEY_Meta_R: case IBUS_KEY_Super_L: case IBUS_KEY_Super_R: case IBUS_KEY_Hyper_L: case IBUS_KEY_Hyper_R: return TRUE; default: return FALSE; } } gboolean ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers, GQuark event) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); IBusHotkey *hotkey = ibus_hotkey_new (keyval, normalize_modifiers (keyval, modifiers & priv->mask)); /* has the same hotkey in profile */ if (g_tree_lookup (priv->hotkeys, hotkey) != NULL) { ibus_hotkey_free (hotkey); g_return_val_if_reached (FALSE); } g_tree_insert (priv->hotkeys, (gpointer) hotkey, GUINT_TO_POINTER (event)); IBusHotkeyEvent *p = NULL; gint i; for ( i = 0; i < priv->events->len; i++) { p = &g_array_index (priv->events, IBusHotkeyEvent, i); if (p->event == event) break; } if (i >= priv->events->len) { g_array_set_size (priv->events, i + 1); p = &g_array_index (priv->events, IBusHotkeyEvent, i); p->event = event; } p->hotkeys = g_list_append (p->hotkeys, hotkey); return TRUE; } gboolean ibus_hotkey_profile_add_hotkey_from_string (IBusHotkeyProfile *profile, const gchar *str, GQuark event) { guint keyval; guint modifiers; if (ibus_key_event_from_string (str, &keyval, &modifiers) == FALSE) { return FALSE; } return ibus_hotkey_profile_add_hotkey (profile, keyval, modifiers, event); } gboolean ibus_hotkey_profile_remove_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); modifiers = normalize_modifiers (keyval, modifiers & priv->mask); IBusHotkey hotkey = { .keyval = keyval, .modifiers = modifiers }; IBusHotkey *p1; GQuark event; gboolean retval; retval = g_tree_lookup_extended (priv->hotkeys, &hotkey, (gpointer)&p1, (gpointer)&event); if (!retval) return FALSE; gint i; IBusHotkeyEvent *p2 = NULL; for ( i = 0; i < priv->events->len; i++) { p2 = &g_array_index (priv->events, IBusHotkeyEvent, i); if (p2->event == event) break; } g_assert (p2->event == event); p2->hotkeys = g_list_remove (p2->hotkeys, p1); if (p2->hotkeys == NULL) { g_array_remove_index_fast (priv->events, i); } g_tree_remove (priv->hotkeys, p1); return TRUE; } gboolean ibus_hotkey_profile_remove_hotkey_by_event (IBusHotkeyProfile *profile, GQuark event) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); gint i; IBusHotkeyEvent *p = NULL; for ( i = 0; i < priv->events->len; i++) { p = &g_array_index (priv->events, IBusHotkeyEvent, i); if (p->event == event) break; } if (p == NULL || p->event != event) return FALSE; GList *list; for (list = p->hotkeys; list != NULL; list = list->next) { g_tree_remove (priv->hotkeys, (IBusHotkey *)list->data); } g_list_free (p->hotkeys); g_array_remove_index_fast (priv->events, i); return TRUE; } GQuark ibus_hotkey_profile_filter_key_event (IBusHotkeyProfile *profile, guint keyval, guint modifiers, guint prev_keyval, guint prev_modifiers, gpointer user_data) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); modifiers = normalize_modifiers (keyval, modifiers & priv->mask); prev_modifiers = normalize_modifiers (prev_keyval, prev_modifiers & priv->mask); IBusHotkey hotkey = { .keyval = keyval, .modifiers = modifiers, }; if (modifiers & IBUS_RELEASE_MASK) { /* previous key event must be a press key event */ if (prev_modifiers & IBUS_RELEASE_MASK) return 0; /* modifiers should be same except the release bit */ if (modifiers != (prev_modifiers | IBUS_RELEASE_MASK)) return 0; /* If it is release key event, * we need check if keyval is equal to the prev keyval. * If keyval is not equal to the prev keyval, * but both keyvals are modifier keys, * we will still search it in hotkeys. * It is for matching some key sequences like: * Shift Down, Alt Down, Shift Up => Shift+Alt+Release - Shift hotkey **/ if ((keyval != prev_keyval) && (is_modifier (keyval) == FALSE || is_modifier (prev_keyval) == FALSE)) return 0; } GQuark event = (GQuark) GPOINTER_TO_UINT (g_tree_lookup (priv->hotkeys, &hotkey)); if (event != 0) { g_signal_emit (profile, profile_signals[TRIGGER], event, user_data); } return event; } GQuark ibus_hotkey_profile_lookup_hotkey (IBusHotkeyProfile *profile, guint keyval, guint modifiers) { IBusHotkeyProfilePrivate *priv; priv = IBUS_HOTKEY_PROFILE_GET_PRIVATE (profile); modifiers = normalize_modifiers (keyval, modifiers & priv->mask); IBusHotkey hotkey = { .keyval = keyval, .modifiers = modifiers, }; return (GQuark) GPOINTER_TO_UINT (g_tree_lookup (priv->hotkeys, &hotkey)); } ibus-1.5.11/src/Makefile.in0000644000000000000000000012512612551654261012302 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_INTROSPECTION_TRUE@am__append_1 = IBus-1.0.gir @HAVE_INTROSPECTION_TRUE@am__append_2 = $(dist_gir_DATA) $(typelibs_DATA) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_gir_DATA_DIST) \ $(ibusinclude_HEADERS) $(noinst_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = ibusversion.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" \ "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(ibusincludedir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libibus_1_0_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = am__objects_2 = ibusshare.lo ibusobject.lo ibusserializable.lo \ ibusproxy.lo ibusservice.lo ibusfactory.lo ibusengine.lo \ ibuserror.lo ibustext.lo ibuskeymap.lo ibusattribute.lo \ ibusattrlist.lo ibusproperty.lo ibusproplist.lo \ ibuslookuptable.lo ibusinputcontext.lo ibusconfig.lo \ ibusconfigservice.lo ibuspanelservice.lo ibusbus.lo \ ibuskeynames.lo ibuskeyuni.lo ibushotkey.lo ibusxml.lo \ ibusenginedesc.lo ibusobservedpath.lo ibuscomponent.lo \ ibusutil.lo ibusenginesimple.lo ibusregistry.lo \ $(am__objects_1) am_libibus_1_0_la_OBJECTS = ibusmarshalers.lo ibuscomposetable.lo \ ibusenumtypes.lo $(am__objects_2) $(am__objects_1) libibus_1_0_la_OBJECTS = $(am_libibus_1_0_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libibus_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libibus_1_0_la_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libibus_1_0_la_SOURCES) DIST_SOURCES = $(libibus_1_0_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_gir_DATA_DIST = IBus-1.0.gir DATA = $(dist_gir_DATA) $(typelibs_DATA) HEADERS = $(ibusinclude_HEADERS) $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = . tests am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ibusversion.h.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = @ENABLE_TESTS_TRUE@TESTS_DIR = tests SUBDIRS = . $(TESTS_DIR) # libibus = libibus-@IBUS_API_VERSION@.la libibus = libibus-1.0.la INTROSPECTION_SCANNER_ARGS = INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. \ $(NULL) INTROSPECTION_GIRS = $(am__append_1) CLEANFILES = $(am__append_2) $(BUILT_SOURCES) stamp-ibusmarshalers.h \ stamp-ibusenumtypes.h $(NULL) # C preprocessor flags AM_CPPFLAGS = \ -DG_LOG_DOMAIN=\"IBUS\" \ @GLIB2_CFLAGS@ \ @GOBJECT2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DIBUS_CACHE_DIR=\""$(localstatedir)/cache/ibus"\" \ -DIBUS_DATA_DIR=\"$(pkgdatadir)\" \ -DIBUS_DISABLE_DEPRECATION_WARNINGS \ -DIBUS_COMPILATION \ -DISOCODES_PREFIX=\"$(ISOCODES_PREFIX)\" \ $(NULL) # ibus library lib_LTLIBRARIES = $(libibus) libibus_1_0_la_LIBADD = \ @GLIB2_LIBS@ \ @GOBJECT2_LIBS@ \ @GIO2_LIBS@ \ $(NULL) libibus_1_0_la_LDFLAGS = \ -no-undefined \ -export-symbols-regex "ibus_.*" \ -version-info @LT_VERSION_INFO@ \ $(NULL) ibus_sources = \ ibusshare.c \ ibusobject.c \ ibusserializable.c \ ibusproxy.c \ ibusservice.c \ ibusfactory.c \ ibusengine.c \ ibuserror.c \ ibustext.c \ ibuskeymap.c \ ibusattribute.c \ ibusattrlist.c \ ibusproperty.c \ ibusproplist.c \ ibuslookuptable.c \ ibusinputcontext.c \ ibusconfig.c \ ibusconfigservice.c \ ibuspanelservice.c \ ibusbus.c \ ibuskeynames.c \ ibuskeyuni.c \ ibushotkey.c \ ibusxml.c \ ibusenginedesc.c \ ibusobservedpath.c \ ibuscomponent.c \ ibusutil.c \ ibusenginesimple.c \ ibusregistry.c \ $(NULL) libibus_1_0_la_SOURCES = \ ibusmarshalers.c \ ibuscomposetable.c \ ibusenumtypes.c \ $(ibus_sources) \ $(NULL) ibus_marshalers_sources = \ ibusmarshalers.h \ ibusmarshalers.c \ $(NULL) ibus_enumtypes_sources = \ ibusenumtypes.h \ ibusenumtypes.c \ $(NULL) ibus_headers = \ ibus.h \ ibusshare.h \ ibusdebug.h \ ibusobject.h \ ibusserializable.h \ ibusproxy.h \ ibusservice.h \ ibusfactory.h \ ibusengine.h \ ibuserror.h \ ibustext.h \ ibuskeymap.h \ ibusattribute.h \ ibusattrlist.h \ ibusproperty.h \ ibusproplist.h \ ibuslookuptable.h \ ibusinputcontext.h \ ibusconfig.h \ ibusconfigservice.h \ ibuspanelservice.h \ ibuskeysyms.h \ ibuskeysyms-compat.h \ ibuskeys.h \ ibustypes.h \ ibusbus.h \ ibushotkey.h \ ibusxml.h \ ibusenginedesc.h \ ibusobservedpath.h \ ibuscomponent.h \ ibusutil.h \ ibusenginesimple.h \ ibusregistry.h \ $(NULL) ibusincludedir = $(includedir)/ibus-@IBUS_API_VERSION@ ibus_public_headers = \ $(ibus_headers) \ ibusenumtypes.h \ ibusversion.h \ $(NULL) ibusinclude_HEADERS = \ $(ibus_public_headers) \ $(NULL) ibus_private_headers = \ ibuscomposetable.h \ ibusinternal.h \ keyname-table.h \ gtkimcontextsimpleseqs.h \ $(NULL) noinst_HEADERS = \ $(ibus_private_headers) \ $(NULL) BUILT_SOURCES = \ $(ibus_marshalers_sources) \ $(ibus_enumtypes_sources) \ $(NULL) @HAVE_INTROSPECTION_TRUE@introspection_sources = \ @HAVE_INTROSPECTION_TRUE@ $(ibus_headers) \ @HAVE_INTROSPECTION_TRUE@ $(ibus_sources) \ @HAVE_INTROSPECTION_TRUE@ $(NULL) @HAVE_INTROSPECTION_TRUE@built_introspection_sources = \ @HAVE_INTROSPECTION_TRUE@ $(ibus_enumtypes_sources) \ @HAVE_INTROSPECTION_TRUE@ ibusversion.h \ @HAVE_INTROSPECTION_TRUE@ $(NULL) @HAVE_INTROSPECTION_TRUE@IBus_1_0_gir_SCANNERFLAGS = --pkg-export=ibus-1.0 $(IBUS_GIR_SCANNERFLAGS) @HAVE_INTROSPECTION_TRUE@IBus_1_0_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 @HAVE_INTROSPECTION_TRUE@IBus_1_0_gir_LIBS = $(libibus) @HAVE_INTROSPECTION_TRUE@IBus_1_0_gir_FILES = \ @HAVE_INTROSPECTION_TRUE@ $(addprefix $(srcdir)/,$(introspection_sources)) \ @HAVE_INTROSPECTION_TRUE@ $(addprefix $(builddir)/,$(built_introspection_sources)) \ @HAVE_INTROSPECTION_TRUE@ $(NULL) @HAVE_INTROSPECTION_TRUE@IBus_1_0_gir_CFLAGS = -DIBUS_COMPILATION -I$(srcdir) -I$(builddir) @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0 @HAVE_INTROSPECTION_TRUE@dist_gir_DATA = $(INTROSPECTION_GIRS) @HAVE_INTROSPECTION_TRUE@typelibsdir = $(libdir)/girepository-1.0 @HAVE_INTROSPECTION_TRUE@typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) EXTRA_DIST = \ ibusversion.h.in \ ibusmarshalers.list \ ibusenumtypes.h.template \ ibusenumtypes.c.template \ $(NULL) DISTCLEANFILES = \ ibusversion.h \ $(NULL) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): ibusversion.h: $(top_builddir)/config.status $(srcdir)/ibusversion.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libibus-1.0.la: $(libibus_1_0_la_OBJECTS) $(libibus_1_0_la_DEPENDENCIES) $(EXTRA_libibus_1_0_la_DEPENDENCIES) $(AM_V_CCLD)$(libibus_1_0_la_LINK) -rpath $(libdir) $(libibus_1_0_la_OBJECTS) $(libibus_1_0_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusattribute.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusattrlist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusbus.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuscomponent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuscomposetable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusconfig.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusconfigservice.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusengine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenginedesc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenginesimple.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenumtypes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuserror.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusfactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibushotkey.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusinputcontext.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeymap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeynames.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeyuni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuslookuptable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusmarshalers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusobject.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusobservedpath.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuspanelservice.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproperty.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproplist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproxy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusregistry.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusserializable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusservice.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusshare.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibustext.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusxml.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_girDATA: $(dist_gir_DATA) @$(NORMAL_INSTALL) @list='$(dist_gir_DATA)'; test -n "$(girdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(girdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(girdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(girdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \ done uninstall-dist_girDATA: @$(NORMAL_UNINSTALL) @list='$(dist_gir_DATA)'; test -n "$(girdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) install-typelibsDATA: $(typelibs_DATA) @$(NORMAL_INSTALL) @list='$(typelibs_DATA)'; test -n "$(typelibsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(typelibsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(typelibsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(typelibsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibsdir)" || exit $$?; \ done uninstall-typelibsDATA: @$(NORMAL_UNINSTALL) @list='$(typelibs_DATA)'; test -n "$(typelibsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(typelibsdir)'; $(am__uninstall_files_from_dir) install-ibusincludeHEADERS: $(ibusinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(ibusinclude_HEADERS)'; test -n "$(ibusincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(ibusincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(ibusincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(ibusincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(ibusincludedir)" || exit $$?; \ done uninstall-ibusincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(ibusinclude_HEADERS)'; test -n "$(ibusincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(ibusincludedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(ibusincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_girDATA install-ibusincludeHEADERS \ install-typelibsDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_girDATA uninstall-ibusincludeHEADERS \ uninstall-libLTLIBRARIES uninstall-typelibsDATA .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_girDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-ibusincludeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-typelibsDATA \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_girDATA uninstall-ibusincludeHEADERS \ uninstall-libLTLIBRARIES uninstall-typelibsDATA .PRECIOUS: Makefile # gobject introspection -include $(INTROSPECTION_MAKEFILE) @HAVE_INTROSPECTION_TRUE@IBus-1.0.gir: $(libibus) Makefile # gen enum types ibusenumtypes.h: $(ibus_headers) ibusenumtypes.h.template $(AM_V_GEN) ( top_builddir=`cd $(top_builddir) && pwd`; \ cd $(srcdir) && $(GLIB_MKENUMS) --template ibusenumtypes.h.template $(ibus_headers) | \ sed 's/i_bus_/ibus_/g' | \ sed 's/I_TYPE_BUS_/IBUS_TYPE_/g') > \ ibusenumtypes.h.tmp && mv ibusenumtypes.h.tmp ibusenumtypes.h ibusenumtypes.c: $(ibus_headers) ibusenumtypes.c.template $(AM_V_GEN) ( top_builddir=`cd $(top_builddir) && pwd`; \ cd $(srcdir) && $(GLIB_MKENUMS) --template ibusenumtypes.c.template $(ibus_headers) | \ sed 's/i_bus_/ibus_/g' | \ sed 's/I_TYPE_BUS_/IBUS_TYPE_/g') > \ ibusenumtypes.c.tmp && mv ibusenumtypes.c.tmp ibusenumtypes.c # gen marshal ibusmarshalers.h: ibusmarshalers.list $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --header --internal > $@.tmp && \ mv $@.tmp $@ ibusmarshalers.c: ibusmarshalers.h ibusmarshalers.list $(AM_V_GEN) (echo "#include \"ibusmarshalers.h\""; \ $(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/src/Makefile.am0000644000000000000000000001705512551654123012267 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = if ENABLE_TESTS TESTS_DIR = tests endif SUBDIRS = . $(TESTS_DIR) # libibus = libibus-@IBUS_API_VERSION@.la libibus = libibus-1.0.la # gobject introspection -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_SCANNER_ARGS = INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. \ $(NULL) INTROSPECTION_GIRS = CLEANFILES = # C preprocessor flags AM_CPPFLAGS = \ -DG_LOG_DOMAIN=\"IBUS\" \ @GLIB2_CFLAGS@ \ @GOBJECT2_CFLAGS@ \ @GIO2_CFLAGS@ \ -DIBUS_CACHE_DIR=\""$(localstatedir)/cache/ibus"\" \ -DIBUS_DATA_DIR=\"$(pkgdatadir)\" \ -DIBUS_DISABLE_DEPRECATION_WARNINGS \ -DIBUS_COMPILATION \ -DISOCODES_PREFIX=\"$(ISOCODES_PREFIX)\" \ $(NULL) # ibus library lib_LTLIBRARIES = $(libibus) libibus_1_0_la_LIBADD = \ @GLIB2_LIBS@ \ @GOBJECT2_LIBS@ \ @GIO2_LIBS@ \ $(NULL) libibus_1_0_la_LDFLAGS = \ -no-undefined \ -export-symbols-regex "ibus_.*" \ -version-info @LT_VERSION_INFO@ \ $(NULL) ibus_sources = \ ibusshare.c \ ibusobject.c \ ibusserializable.c \ ibusproxy.c \ ibusservice.c \ ibusfactory.c \ ibusengine.c \ ibuserror.c \ ibustext.c \ ibuskeymap.c \ ibusattribute.c \ ibusattrlist.c \ ibusproperty.c \ ibusproplist.c \ ibuslookuptable.c \ ibusinputcontext.c \ ibusconfig.c \ ibusconfigservice.c \ ibuspanelservice.c \ ibusbus.c \ ibuskeynames.c \ ibuskeyuni.c \ ibushotkey.c \ ibusxml.c \ ibusenginedesc.c \ ibusobservedpath.c \ ibuscomponent.c \ ibusutil.c \ ibusenginesimple.c \ ibusregistry.c \ $(NULL) libibus_1_0_la_SOURCES = \ ibusmarshalers.c \ ibuscomposetable.c \ ibusenumtypes.c \ $(ibus_sources) \ $(NULL) ibus_marshalers_sources = \ ibusmarshalers.h \ ibusmarshalers.c \ $(NULL) ibus_enumtypes_sources = \ ibusenumtypes.h \ ibusenumtypes.c \ $(NULL) ibus_headers = \ ibus.h \ ibusshare.h \ ibusdebug.h \ ibusobject.h \ ibusserializable.h \ ibusproxy.h \ ibusservice.h \ ibusfactory.h \ ibusengine.h \ ibuserror.h \ ibustext.h \ ibuskeymap.h \ ibusattribute.h \ ibusattrlist.h \ ibusproperty.h \ ibusproplist.h \ ibuslookuptable.h \ ibusinputcontext.h \ ibusconfig.h \ ibusconfigservice.h \ ibuspanelservice.h \ ibuskeysyms.h \ ibuskeysyms-compat.h \ ibuskeys.h \ ibustypes.h \ ibusbus.h \ ibushotkey.h \ ibusxml.h \ ibusenginedesc.h \ ibusobservedpath.h \ ibuscomponent.h \ ibusutil.h \ ibusenginesimple.h \ ibusregistry.h \ $(NULL) ibusincludedir = $(includedir)/ibus-@IBUS_API_VERSION@ ibus_public_headers = \ $(ibus_headers) \ ibusenumtypes.h \ ibusversion.h \ $(NULL) ibusinclude_HEADERS = \ $(ibus_public_headers) \ $(NULL) ibus_private_headers = \ ibuscomposetable.h \ ibusinternal.h \ keyname-table.h \ gtkimcontextsimpleseqs.h \ $(NULL) noinst_HEADERS = \ $(ibus_private_headers) \ $(NULL) BUILT_SOURCES = \ $(ibus_marshalers_sources) \ $(ibus_enumtypes_sources) \ $(NULL) if HAVE_INTROSPECTION introspection_sources = \ $(ibus_headers) \ $(ibus_sources) \ $(NULL) built_introspection_sources = \ $(ibus_enumtypes_sources) \ ibusversion.h \ $(NULL) IBus-1.0.gir: $(libibus) Makefile IBus_1_0_gir_SCANNERFLAGS = --pkg-export=ibus-1.0 $(IBUS_GIR_SCANNERFLAGS) IBus_1_0_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 IBus_1_0_gir_LIBS = $(libibus) IBus_1_0_gir_FILES = \ $(addprefix $(srcdir)/,$(introspection_sources)) \ $(addprefix $(builddir)/,$(built_introspection_sources)) \ $(NULL) IBus_1_0_gir_CFLAGS = -DIBUS_COMPILATION -I$(srcdir) -I$(builddir) INTROSPECTION_GIRS += IBus-1.0.gir girdir = $(datadir)/gir-1.0 dist_gir_DATA = $(INTROSPECTION_GIRS) typelibsdir = $(libdir)/girepository-1.0 typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) CLEANFILES += $(dist_gir_DATA) $(typelibs_DATA) endif # gen enum types ibusenumtypes.h: $(ibus_headers) ibusenumtypes.h.template $(AM_V_GEN) ( top_builddir=`cd $(top_builddir) && pwd`; \ cd $(srcdir) && $(GLIB_MKENUMS) --template ibusenumtypes.h.template $(ibus_headers) | \ sed 's/i_bus_/ibus_/g' | \ sed 's/I_TYPE_BUS_/IBUS_TYPE_/g') > \ ibusenumtypes.h.tmp && mv ibusenumtypes.h.tmp ibusenumtypes.h ibusenumtypes.c: $(ibus_headers) ibusenumtypes.c.template $(AM_V_GEN) ( top_builddir=`cd $(top_builddir) && pwd`; \ cd $(srcdir) && $(GLIB_MKENUMS) --template ibusenumtypes.c.template $(ibus_headers) | \ sed 's/i_bus_/ibus_/g' | \ sed 's/I_TYPE_BUS_/IBUS_TYPE_/g') > \ ibusenumtypes.c.tmp && mv ibusenumtypes.c.tmp ibusenumtypes.c # gen marshal ibusmarshalers.h: ibusmarshalers.list $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --header --internal > $@.tmp && \ mv $@.tmp $@ ibusmarshalers.c: ibusmarshalers.h ibusmarshalers.list $(AM_V_GEN) (echo "#include \"ibusmarshalers.h\""; \ $(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ EXTRA_DIST = \ ibusversion.h.in \ ibusmarshalers.list \ ibusenumtypes.h.template \ ibusenumtypes.c.template \ $(NULL) CLEANFILES += \ $(BUILT_SOURCES) \ stamp-ibusmarshalers.h \ stamp-ibusenumtypes.h \ $(NULL) DISTCLEANFILES = \ ibusversion.h \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/src/ibuspanelservice.c0000644000000000000000000013706112551654123013742 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (c) 2009-2014 Google Inc. All rights reserved. * Copyright (C) 2010-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "ibusshare.h" #include "ibuspanelservice.h" #include "ibusmarshalers.h" #include "ibusinternal.h" enum { UPDATE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, UPDATE_LOOKUP_TABLE, FOCUS_IN, FOCUS_OUT, REGISTER_PROPERTIES, UPDATE_PROPERTY, SET_CURSOR_LOCATION, CURSOR_UP_LOOKUP_TABLE, CURSOR_DOWN_LOOKUP_TABLE, HIDE_AUXILIARY_TEXT, HIDE_LANGUAGE_BAR, HIDE_LOOKUP_TABLE, HIDE_PREEDIT_TEXT, PAGE_UP_LOOKUP_TABLE, PAGE_DOWN_LOOKUP_TABLE, RESET, SHOW_AUXILIARY_TEXT, SHOW_LANGUAGE_BAR, SHOW_LOOKUP_TABLE, SHOW_PREEDIT_TEXT, START_SETUP, STATE_CHANGED, DESTROY_CONTEXT, SET_CONTENT_TYPE, LAST_SIGNAL, }; enum { PROP_0, }; static guint panel_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ static void ibus_panel_service_set_property (IBusPanelService *panel, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_panel_service_get_property (IBusPanelService *panel, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_panel_service_real_destroy (IBusPanelService *panel); static void ibus_panel_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); static GVariant *ibus_panel_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); static gboolean ibus_panel_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); static void ibus_panel_service_not_implemented (IBusPanelService *panel); static void ibus_panel_service_focus_in (IBusPanelService *panel, const gchar *input_context_path); static void ibus_panel_service_focus_out (IBusPanelService *panel, const gchar *input_context_path); static void ibus_panel_service_destroy_context (IBusPanelService *panel, const gchar *input_context_path); static void ibus_panel_service_register_properties (IBusPanelService *panel, IBusPropList *prop_list); static void ibus_panel_service_set_cursor_location (IBusPanelService *panel, gint x, gint y, gint w, gint h); static void ibus_panel_service_update_auxiliary_text (IBusPanelService *panel, IBusText *text, gboolean visible); static void ibus_panel_service_update_lookup_table (IBusPanelService *panel, IBusLookupTable *lookup_table, gboolean visible); static void ibus_panel_service_update_preedit_text (IBusPanelService *panel, IBusText *text, guint cursor_pos, gboolean visible); static void ibus_panel_service_update_property (IBusPanelService *panel, IBusProperty *prop); static void ibus_panel_service_set_content_type (IBusPanelService *panel, guint purpose, guint hints); G_DEFINE_TYPE (IBusPanelService, ibus_panel_service, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" " " /* Methods */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* Signals */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static void ibus_panel_service_class_init (IBusPanelServiceClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); ibus_panel_service_parent_class = IBUS_SERVICE_CLASS (g_type_class_peek_parent (class)); gobject_class->set_property = (GObjectSetPropertyFunc) ibus_panel_service_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_panel_service_get_property; IBUS_OBJECT_CLASS (gobject_class)->destroy = (IBusObjectDestroyFunc) ibus_panel_service_real_destroy; IBUS_SERVICE_CLASS (class)->service_method_call = ibus_panel_service_service_method_call; IBUS_SERVICE_CLASS (class)->service_get_property = ibus_panel_service_service_get_property; IBUS_SERVICE_CLASS (class)->service_set_property = ibus_panel_service_service_set_property; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); class->focus_in = ibus_panel_service_focus_in; class->focus_out = ibus_panel_service_focus_out; class->destroy_context = ibus_panel_service_destroy_context; class->register_properties = ibus_panel_service_register_properties; class->set_cursor_location = ibus_panel_service_set_cursor_location; class->update_lookup_table = ibus_panel_service_update_lookup_table; class->update_auxiliary_text = ibus_panel_service_update_auxiliary_text; class->update_preedit_text = ibus_panel_service_update_preedit_text; class->update_property = ibus_panel_service_update_property; class->set_content_type = ibus_panel_service_set_content_type; class->cursor_down_lookup_table = ibus_panel_service_not_implemented; class->cursor_up_lookup_table = ibus_panel_service_not_implemented; class->hide_auxiliary_text = ibus_panel_service_not_implemented; class->hide_language_bar = ibus_panel_service_not_implemented; class->hide_lookup_table = ibus_panel_service_not_implemented; class->hide_preedit_text = ibus_panel_service_not_implemented; class->page_down_lookup_table = ibus_panel_service_not_implemented; class->page_up_lookup_table = ibus_panel_service_not_implemented; class->reset = ibus_panel_service_not_implemented; class->show_auxiliary_text = ibus_panel_service_not_implemented; class->show_language_bar = ibus_panel_service_not_implemented; class->show_lookup_table = ibus_panel_service_not_implemented; class->show_preedit_text = ibus_panel_service_not_implemented; class->start_setup = ibus_panel_service_not_implemented; class->state_changed = ibus_panel_service_not_implemented; /* install signals */ /** * IBusPanelService::update-preedit-text: * @panel: An #IBusPanelService * @text: A preedit text to be updated. * @cursor_pos: The cursor position of the text. * @visible: Whether the update is visible. * * Emitted when the client application get the ::update-preedit-text. * Implement the member function * IBusPanelServiceClass::update_preedit_text in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, update_preedit_text), NULL, NULL, _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN, G_TYPE_NONE, 3, IBUS_TYPE_TEXT, G_TYPE_UINT, G_TYPE_BOOLEAN); /** * IBusPanelService::update-auxiliary-text: * @panel: An #IBusPanelService * @text: A preedit text to be updated. * @visible: Whether the update is visible. * * Emitted when the client application get the ::update-auxiliary-text. * Implement the member function * IBusPanelServiceClass::update_auxiliary_text in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, update_auxiliary_text), NULL, NULL, _ibus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_TEXT, G_TYPE_BOOLEAN); /** * IBusPanelService::update-lookup-table: * @panel: An #IBusPanelService * @lookup_table: A lookup table to be updated. * @visible: Whether the update is visible. * * Emitted when the client application get the ::update-lookup-table. * Implement the member function * IBusPanelServiceClass::update_lookup_table in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, update_lookup_table), NULL, NULL, _ibus_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, IBUS_TYPE_LOOKUP_TABLE, G_TYPE_BOOLEAN); /** * IBusPanelService::focus-in: * @panel: An #IBusPanelService * @input_context_path: Object path of InputContext. * * Emitted when the client application get the ::focus-in. * Implement the member function * IBusPanelServiceClass::focus_in in extended class to receive * this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[FOCUS_IN] = g_signal_new (I_("focus-in"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, focus_in), NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusPanelService::focus-out: * @panel: An #IBusPanelService * @input_context_path: Object path of InputContext. * * Emitted when the client application get the ::focus-out. * Implement the member function * IBusPanelServiceClass::focus_out in extended class to receive * this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[FOCUS_OUT] = g_signal_new (I_("focus-out"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, focus_out), NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusPanelService::register-properties: * @panel: An #IBusPanelService * @prop_list: An IBusPropList that contains properties. * * Emitted when the client application get the ::register-properties. * Implement the member function * IBusPanelServiceClass::register_properties in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, register_properties), NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROP_LIST); /** * IBusPanelService::update-property: * @panel: An #IBusPanelService * @prop: The IBusProperty to be updated. * * Emitted when the client application get the ::update-property. * Implement the member function * IBusPanelServiceClass::update_property in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, update_property), NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROPERTY); /** * IBusPanelService::set-cursor-location: * @panel: An #IBusPanelService * @x: X coordinate of the cursor. * @y: Y coordinate of the cursor. * @w: Width of the cursor. * @h: Height of the cursor. * * Emitted when the client application get the ::set-cursor-location. * Implement the member function * IBusPanelServiceClass::set_cursor_location in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SET_CURSOR_LOCATION] = g_signal_new (I_("set-cursor-location"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, set_cursor_location), NULL, NULL, _ibus_marshal_VOID__INT_INT_INT_INT, G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); /** * IBusPanelService::cursor-up-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::cursor-up-lookup-table. * Implement the member function * IBusPanelServiceClass::cursor_up_lookup_table in extended * class to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[CURSOR_UP_LOOKUP_TABLE] = g_signal_new (I_("cursor-up-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, cursor_up_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::cursor-down-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::cursor-down-lookup-table. * Implement the member function * IBusPanelServiceClass::cursor_down_lookup_table in extended * class to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[CURSOR_DOWN_LOOKUP_TABLE] = g_signal_new (I_("cursor-down-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, cursor_down_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::hide-auxiliary-text: * @panel: An #IBusPanelService * * Emitted when the client application get the ::hide-auxiliary-text. * Implement the member function * IBusPanelServiceClass::hide_auxiliary_text in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[HIDE_AUXILIARY_TEXT] = g_signal_new (I_("hide-auxiliary-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, hide_auxiliary_text), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::hide-language-bar: * @panel: An #IBusPanelService * * Emitted when the client application get the ::hide-language-bar. * Implement the member function * IBusPanelServiceClass::hide_language_bar in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[HIDE_LANGUAGE_BAR] = g_signal_new (I_("hide-language-bar"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, hide_language_bar), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::hide-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::hide-lookup-table. * Implement the member function * IBusPanelServiceClass::hide_lookup_table in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[HIDE_LOOKUP_TABLE] = g_signal_new (I_("hide-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, hide_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::hide-preedit-text: * @panel: An #IBusPanelService * * Emitted when the client application get the ::hide-preedit-text. * Implement the member function * IBusPanelServiceClass::hide_preedit_text in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[HIDE_PREEDIT_TEXT] = g_signal_new (I_("hide-preedit-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, hide_preedit_text), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::page-up-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::page-up-lookup-table. * Implement the member function * IBusPanelServiceClass::page_up_lookup_table in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[PAGE_UP_LOOKUP_TABLE] = g_signal_new (I_("page-up-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, page_up_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::page-down-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::page-down-lookup-table. * Implement the member function * IBusPanelServiceClass::page_down_lookup_table in extended * class to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[PAGE_DOWN_LOOKUP_TABLE] = g_signal_new (I_("page-down-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, page_down_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::reset: * @panel: An #IBusPanelService * * Emitted when the client application get the ::reset. * Implement the member function * IBusPanelServiceClass::reset in extended class to receive this * signal. * * Argument @user_data is ignored in this function. * */ panel_signals[RESET] = g_signal_new (I_("reset"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, reset), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::show-auxiliary-text: * @panel: An #IBusPanelService * * Emitted when the client application get the ::show-auxiliary-text. * Implement the member function * IBusPanelServiceClass::show_auxiliary_text in extended class * to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SHOW_AUXILIARY_TEXT] = g_signal_new (I_("show-auxiliary-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, show_auxiliary_text), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::show-language-bar: * @panel: An #IBusPanelService * * Emitted when the client application get the ::show-language-bar. * Implement the member function * IBusPanelServiceClass::show_language_bar in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SHOW_LANGUAGE_BAR] = g_signal_new (I_("show-language-bar"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, show_language_bar), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::show-lookup-table: * @panel: An #IBusPanelService * * Emitted when the client application get the ::show-lookup-table. * Implement the member function * IBusPanelServiceClass::show_lookup_table in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SHOW_LOOKUP_TABLE] = g_signal_new (I_("show-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, show_lookup_table), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::show-preedit-text: * @panel: An #IBusPanelService * * Emitted when the client application get the ::show-preedit-text. * Implement the member function * IBusPanelServiceClass::show_preedit_text in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SHOW_PREEDIT_TEXT] = g_signal_new (I_("show-preedit-text"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, show_preedit_text), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::start-setup: * @panel: An #IBusPanelService * * Emitted when the client application get the ::start-setup. * Implement the member function * IBusPanelServiceClass::start_setup in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[START_SETUP] = g_signal_new (I_("start-setup"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, start_setup), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::state-changed: * @panel: An #IBusPanelService * * Emitted when the client application get the ::state-changed. * Implement the member function * IBusPanelServiceClass::state_changed in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[STATE_CHANGED] = g_signal_new (I_("state-changed"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, state_changed), NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * IBusPanelService::destroy-context: * @panel: An #IBusPanelService * @input_context_path: Object path of InputContext. * * Emitted when the client application destroys. * Implement the member function * IBusPanelServiceClass::destroy_context in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[DESTROY_CONTEXT] = g_signal_new (I_("destroy-context"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, destroy_context), NULL, NULL, _ibus_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * IBusPanelService::set-content-type: * @panel: An #IBusPanelService * @purpose: Input purpose. * @hints: Input hints. * * Emitted when the client application get the ::set-content-type. * Implement the member function * IBusPanelServiceClass::set_content_type in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SET_CONTENT_TYPE] = g_signal_new (I_("set-content-type"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, set_content_type), NULL, NULL, _ibus_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); } static void ibus_panel_service_init (IBusPanelService *panel) { } static void ibus_panel_service_set_property (IBusPanelService *panel, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (panel, prop_id, pspec); } } static void ibus_panel_service_get_property (IBusPanelService *panel, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (panel, prop_id, pspec); } } static void ibus_panel_service_real_destroy (IBusPanelService *panel) { IBUS_OBJECT_CLASS(ibus_panel_service_parent_class)->destroy (IBUS_OBJECT (panel)); } static void _g_object_unref_if_floating (gpointer instance) { if (g_object_is_floating (instance)) g_object_unref (instance); } static void ibus_panel_service_service_method_call (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusPanelService *panel = IBUS_PANEL_SERVICE (service); if (g_strcmp0 (interface_name, IBUS_INTERFACE_PANEL) != 0) { IBUS_SERVICE_CLASS (ibus_panel_service_parent_class)-> service_method_call (service, connection, sender, object_path, interface_name, method_name, parameters, invocation); return; } if (g_strcmp0 (method_name, "UpdatePreeditText") == 0) { GVariant *variant = NULL; guint cursor = 0; gboolean visible = FALSE; g_variant_get (parameters, "(vub)", &variant, &cursor, &visible); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (panel, panel_signals[UPDATE_PREEDIT_TEXT], 0, text, cursor, visible); _g_object_unref_if_floating (text); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "UpdateAuxiliaryText") == 0) { GVariant *variant = NULL; gboolean visible = FALSE; g_variant_get (parameters, "(vb)", &variant, &visible); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (panel, panel_signals[UPDATE_AUXILIARY_TEXT], 0, text, visible); _g_object_unref_if_floating (text); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "UpdateLookupTable") == 0) { GVariant *variant = NULL; gboolean visible = FALSE; g_variant_get (parameters, "(vb)", &variant, &visible); IBusLookupTable *table = IBUS_LOOKUP_TABLE (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (panel, panel_signals[UPDATE_LOOKUP_TABLE], 0, table, visible); _g_object_unref_if_floating (table); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "FocusIn") == 0) { const gchar *path; g_variant_get (parameters, "(&o)", &path); g_signal_emit (panel, panel_signals[FOCUS_IN], 0, path); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "FocusOut") == 0) { const gchar *path; g_variant_get (parameters, "(&o)", &path); g_signal_emit (panel, panel_signals[FOCUS_OUT], 0, path); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "DestroyContext") == 0) { const gchar *path; g_variant_get (parameters, "(&o)", &path); g_signal_emit (panel, panel_signals[DESTROY_CONTEXT], 0, path); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "RegisterProperties") == 0) { GVariant *variant = g_variant_get_child_value (parameters, 0); IBusPropList *prop_list = IBUS_PROP_LIST (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (panel, panel_signals[REGISTER_PROPERTIES], 0, prop_list); _g_object_unref_if_floating (prop_list); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "UpdateProperty") == 0) { GVariant *variant = g_variant_get_child_value (parameters, 0); IBusProperty *property = IBUS_PROPERTY (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (panel, panel_signals[UPDATE_PROPERTY], 0, property); _g_object_unref_if_floating (property); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "SetCursorLocation") == 0) { gint x, y, w, h; g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); g_signal_emit (panel, panel_signals[SET_CURSOR_LOCATION], 0, x, y, w, h); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "ContentType") == 0) { guint purpose, hints; g_variant_get (parameters, "(uu)", &purpose, &hints); g_signal_emit (panel, panel_signals[SET_CONTENT_TYPE], 0, purpose, hints); g_dbus_method_invocation_return_value (invocation, NULL); return; } const static struct { const gchar *name; const gint signal_id; } no_arg_methods [] = { { "CursorUpLookupTable", CURSOR_UP_LOOKUP_TABLE }, { "CursorDownLookupTable", CURSOR_DOWN_LOOKUP_TABLE }, { "HideAuxiliaryText", HIDE_AUXILIARY_TEXT }, { "HideLanguageBar", HIDE_LANGUAGE_BAR }, { "HideLookupTable", HIDE_LOOKUP_TABLE }, { "HidePreeditText", HIDE_PREEDIT_TEXT }, { "PageUpLookupTable", PAGE_UP_LOOKUP_TABLE }, { "PageDownLookupTable", PAGE_DOWN_LOOKUP_TABLE }, { "Reset", RESET }, { "ShowAuxiliaryText", SHOW_AUXILIARY_TEXT }, { "ShowLanguageBar", SHOW_LANGUAGE_BAR }, { "ShowLookupTable", SHOW_LOOKUP_TABLE }, { "ShowPreeditText", SHOW_PREEDIT_TEXT }, { "StartSetup", START_SETUP }, { "StateChanged", STATE_CHANGED }, }; gint i; for (i = 0; i < G_N_ELEMENTS (no_arg_methods); i++) { if (g_strcmp0 (method_name, no_arg_methods[i].name) == 0) { if (no_arg_methods[i].signal_id >= 0) { g_signal_emit (panel, panel_signals[no_arg_methods[i].signal_id], 0); } g_dbus_method_invocation_return_value (invocation, NULL); return; } } /* should not be reached */ g_return_if_reached (); } static GVariant * ibus_panel_service_service_get_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error) { return IBUS_SERVICE_CLASS (ibus_panel_service_parent_class)-> service_get_property (service, connection, sender, object_path, interface_name, property_name, error); } static gboolean ibus_panel_service_service_set_property (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error) { return IBUS_SERVICE_CLASS (ibus_panel_service_parent_class)-> service_set_property (service, connection, sender, object_path, interface_name, property_name, value, error); } static void ibus_panel_service_not_implemented (IBusPanelService *panel) { /* g_debug ("not implemented"); */ } static void ibus_panel_service_focus_in (IBusPanelService *panel, const gchar *input_context_path) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_focus_out (IBusPanelService *panel, const gchar *input_context_path) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_destroy_context (IBusPanelService *panel, const gchar *input_context_path) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_register_properties (IBusPanelService *panel, IBusPropList *prop_list) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_set_cursor_location (IBusPanelService *panel, gint x, gint y, gint w, gint h) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_update_auxiliary_text (IBusPanelService *panel, IBusText *text, gboolean visible) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_update_lookup_table (IBusPanelService *panel, IBusLookupTable *lookup_table, gboolean visible) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_update_preedit_text (IBusPanelService *panel, IBusText *text, guint cursor_pos, gboolean visible) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_update_property (IBusPanelService *panel, IBusProperty *prop) { ibus_panel_service_not_implemented(panel); } static void ibus_panel_service_set_content_type (IBusPanelService *panel, guint purpose, guint hints) { ibus_panel_service_not_implemented(panel); } IBusPanelService * ibus_panel_service_new (GDBusConnection *connection) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); GObject *object = g_object_new (IBUS_TYPE_PANEL_SERVICE, "object-path", IBUS_PATH_PANEL, "connection", connection, NULL); return IBUS_PANEL_SERVICE (object); } void ibus_panel_service_candidate_clicked (IBusPanelService *panel, guint index, guint button, guint state) { g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "CandidateClicked", g_variant_new ("(uuu)", index, button, state), NULL); } void ibus_panel_service_property_activate (IBusPanelService *panel, const gchar *prop_name, guint prop_state) { g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "PropertyActivate", g_variant_new ("(su)", prop_name, prop_state), NULL); } void ibus_panel_service_property_show (IBusPanelService *panel, const gchar *prop_name) { g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "PropertyShow", g_variant_new ("(s)", prop_name), NULL); } void ibus_panel_service_property_hide (IBusPanelService *panel, const gchar *prop_name) { g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "PropertyHide", g_variant_new ("(s)", prop_name), NULL); } #define DEFINE_FUNC(name, Name) \ void \ ibus_panel_service_##name (IBusPanelService *panel) \ { \ g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); \ ibus_service_emit_signal ((IBusService *) panel, \ NULL, \ IBUS_INTERFACE_PANEL, \ #Name, \ NULL, \ NULL); \ } DEFINE_FUNC (cursor_down, CursorDown) DEFINE_FUNC (cursor_up, CursorUp) DEFINE_FUNC (page_down, PageDown) DEFINE_FUNC (page_up, PageUp) #undef DEFINE_FUNC ibus-1.5.11/src/ibuslookuptable.h0000644000000000000000000003063512551654123013607 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_LOOKUP_TABLE_H_ #define __IBUS_LOOKUP_TABLE_H_ /** * SECTION: ibuslookuptable * @short_description: Candidate word/phrase lookup table. * @stability: Stable * * An IBusLookuptable stores the candidate words or phrases for users to * choose from. * * Use ibus_engine_update_lookup_table(), ibus_engine_show_lookup_table(), * and ibus_engine_hide_lookup_table() to update, show and hide the lookup * table. * * see_also: #IBusEngine */ #include "ibusserializable.h" #include "ibustext.h" /* * Type macros. */ /* define IBusLookupTable macros */ #define IBUS_TYPE_LOOKUP_TABLE \ (ibus_lookup_table_get_type ()) #define IBUS_LOOKUP_TABLE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_LOOKUP_TABLE, IBusLookupTable)) #define IBUS_LOOKUP_TABLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_LOOKUP_TABLE, IBusLookupTableClass)) #define IBUS_IS_LOOKUP_TABLE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_LOOKUP_TABLE)) #define IBUS_IS_LOOKUP_TABLE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_LOOKUP_TABLE)) #define IBUS_LOOKUP_TABLE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_LOOKUP_TABLE, IBusLookupTableClass)) G_BEGIN_DECLS typedef struct _IBusLookupTable IBusLookupTable; typedef struct _IBusLookupTableClass IBusLookupTableClass; /** * IBusLookupTable: * @page_size: number of candidate shown per page. * @cursor_pos: position index of cursor. * @cursor_visible: whether the cursor is visible. * @round: TRUE for lookup table wrap around. * @orientation: orientation of the table. * @candidates: Candidate words/phrases. * @labels: Candidate labels which identify individual candidates in the same page. Default is 1, 2, 3, 4 ... * * An IBusLookuptable stores the candidate words or phrases for users to choose from. * Note that some input methods allow you to select candidate by pressing non-numeric * keys such as "asdfghjkl;". * Developers of these input methods should change the labels with * ibus_lookup_table_append_label(). */ struct _IBusLookupTable { IBusSerializable parent; /*< public >*/ guint page_size; guint cursor_pos; gboolean cursor_visible; gboolean round; gint orientation; GArray *candidates; GArray *labels; }; struct _IBusLookupTableClass { IBusSerializableClass parent; }; GType ibus_lookup_table_get_type (void); /** * ibus_lookup_table_new: * @page_size: number of candidate shown per page, the max value is 16. * @cursor_pos: position index of cursor. * @cursor_visible: whether the cursor is visible. * @round: TRUE for lookup table wrap around. * * Craetes a new #IBusLookupTable. * * Returns: A newly allocated #IBusLookupTable. */ IBusLookupTable *ibus_lookup_table_new (guint page_size, guint cursor_pos, gboolean cursor_visible, gboolean round); /** * ibus_lookup_table_append_candidate: * @table: An IBusLookupTable. * @text: candidate word/phrase to be appended (in IBusText format). * * Append a candidate word/phrase to IBusLookupTable, and increase reference. */ void ibus_lookup_table_append_candidate (IBusLookupTable *table, IBusText *text); /** * ibus_lookup_table_get_number_of_candidates: * @table: An IBusLookupTable. * * Return the number of candidate in the table. * * Returns: The number of candidates in the table */ guint ibus_lookup_table_get_number_of_candidates (IBusLookupTable *table); /** * ibus_lookup_table_get_candidate: * @table: An IBusLookupTable. * @index: Index in the Lookup table. * * Return #IBusText at the given index. Borrowed reference. * * Returns: (transfer none): IBusText at the given index; NULL if no such * #IBusText. */ IBusText *ibus_lookup_table_get_candidate (IBusLookupTable *table, guint index); /** * ibus_lookup_table_append_label: * @table: An IBusLookupTable. * @text: A candidate label to be appended (in IBusText format). * * Append a candidate word/phrase to IBusLookupTable, and increase reference. * This function is needed if the input method select candidate with * non-numeric keys such as "asdfghjkl;". */ void ibus_lookup_table_append_label (IBusLookupTable *table, IBusText *text); /** * ibus_lookup_table_set_label: * @table: An IBusLookupTable. * @index: Intex in the Lookup table. * @text: A candidate label to be appended (in IBusText format). * * Append a candidate word/phrase to IBusLookupTable, and increase reference. * This function is needed if the input method select candidate with * non-numeric keys such as "asdfghjkl;". */ void ibus_lookup_table_set_label (IBusLookupTable *table, guint index, IBusText *text); /** * ibus_lookup_table_get_label: * @table: An IBusLookupTable. * @index: Index in the Lookup table. * * Return #IBusText at the given index. Borrowed reference. * * Returns: (transfer none): #IBusText at the given index; %NULL if no such * #IBusText. */ IBusText *ibus_lookup_table_get_label (IBusLookupTable *table, guint index); /** * ibus_lookup_table_set_cursor_pos: * @table: An IBusLookupTable. * @cursor_pos: The position of cursor. * * Set the cursor position of IBusLookupTable. */ void ibus_lookup_table_set_cursor_pos (IBusLookupTable *table, guint cursor_pos); /** * ibus_lookup_table_get_cursor_pos: * @table: An IBusLookupTable. * * Gets the cursor position of #IBusLookupTable. * * Returns: The position of cursor. */ guint ibus_lookup_table_get_cursor_pos (IBusLookupTable *table); /** * ibus_lookup_table_set_cursor_visible: * @table: An IBusLookupTable. * @visible: Whether to make the cursor of @table visible. * * Set whether to make the cursor of an IBusLookupTable visible or not. */ void ibus_lookup_table_set_cursor_visible (IBusLookupTable *table, gboolean visible); /** * ibus_lookup_table_is_cursor_visible: * @table: An #IBusLookupTable. * * Returns whether the cursor of an #IBusLookupTable is visible. * * Returns: Whether the cursor of @table is visible. */ gboolean ibus_lookup_table_is_cursor_visible (IBusLookupTable *table); /** * ibus_lookup_table_get_cursor_in_page: * @table: An IBusLookupTable. * * Gets the cursor position in current page of #IBusLookupTable. * * Returns: The position of cursor in current page. */ guint ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table); /** * ibus_lookup_table_set_page_size: * @table: An IBusLookupTable. * @page_size: number of candidate shown per page. * * Set the number of candidate shown per page. */ void ibus_lookup_table_set_page_size (IBusLookupTable *table, guint page_size); /** * ibus_lookup_table_get_page_size: * @table: An IBusLookupTable. * * Gets the number of candidate shown per page. * * Returns: Page size, i.e., number of candidate shown per page. dd */ guint ibus_lookup_table_get_page_size (IBusLookupTable *table); /** * ibus_lookup_table_set_round: * @table: An IBusLookupTable. * @round: Whether to make @table round. * * Set whether to make the IBusLookupTable round or not. */ void ibus_lookup_table_set_round (IBusLookupTable *table, gboolean round); /** * ibus_lookup_table_is_round: * @table: An IBusLookupTable. * * Returns whether the #IBusLookupTable is round. * * Returns: Whether the @table is round. */ gboolean ibus_lookup_table_is_round (IBusLookupTable *table); /** * ibus_lookup_table_set_orientation: * @table: An IBusLookupTable. * @orientation: . * * Set the orientation. */ void ibus_lookup_table_set_orientation (IBusLookupTable *table, gint orientation); /** * ibus_lookup_table_get_orientation: * @table: An IBusLookupTable. * * Returns the orientation of the #IBusLookupTable. * * Returns: The orientation of the @table. */ gint ibus_lookup_table_get_orientation (IBusLookupTable *table); /** * ibus_lookup_table_clear: * @table: An IBusLookupTable. * * Clear and remove all candidate from an IBusLookupTable. */ void ibus_lookup_table_clear (IBusLookupTable *table); /** * ibus_lookup_table_page_up: * @table: An IBusLookupTable. * * Go to previous page of an #IBusLookupTable. * * It returns FALSE if it is already at the first page, * unless table>-round==TRUE, where it will go * to the last page. * * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_page_up (IBusLookupTable *table); /** * ibus_lookup_table_page_down: * @table: An IBusLookupTable. * * Go to next page of an #IBusLookupTable. * * It returns FALSE if it is already at the last page, * unless table>-round==TRUE, where it will go * to the first page. * * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_page_down(IBusLookupTable *table); /** * ibus_lookup_table_cursor_up: * @table: An IBusLookupTable. * * Go to previous candidate of an #IBusLookupTable. * * It returns FALSE if it is already at the first candidate, * unless table>-round==TRUE, where it will go * to the last candidate. * * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_cursor_up(IBusLookupTable *table); /** * ibus_lookup_table_cursor_down: * @table: An IBusLookupTable. * * Go to next candidate of an #IBusLookupTable. * * It returns FALSE if it is already at the last candidate, * unless table>-round==TRUE, where it will go * to the first candidate. * * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_cursor_down (IBusLookupTable *table); G_END_DECLS #endif ibus-1.5.11/src/ibus.h0000644000000000000000000000361212551654123011340 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifndef __IBUS_H_ #define __IBUS_H_ #define __IBUS_H_INSIDE__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef IBUS_DISABLE_DEPRECATED #include #endif #undef __IBUS_H_INSIDE__ #endif ibus-1.5.11/src/ibusservice.h0000644000000000000000000002143412551654123012723 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #ifndef __IBUS_SERVICE_H_ #define __IBUS_SERVICE_H_ /** * SECTION: ibusservice * @short_description: IBus service back-end. * @stability: Stable * * An IBusService is a base class for services. */ #include #include "ibusobject.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_SERVICE \ (ibus_service_get_type ()) #define IBUS_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_SERVICE, IBusService)) #define IBUS_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_SERVICE, IBusServiceClass)) #define IBUS_IS_SERVICE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_SERVICE)) #define IBUS_IS_SERVICE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_SERVICE)) #define IBUS_SERVICE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_SERVICE, IBusServiceClass)) G_BEGIN_DECLS typedef struct _IBusService IBusService; typedef struct _IBusServiceClass IBusServiceClass; typedef struct _IBusServicePrivate IBusServicePrivate; /** * IBusService: * * An opaque data type representing an IBusService. */ struct _IBusService { /*< private >*/ IBusObject parent; IBusServicePrivate *priv; }; struct _IBusServiceClass { /*< private >*/ IBusObjectClass parent; /*< public >*/ /* virtual functions */ /** * IBusServiceClass::service_method_call: * @service: An #IBusService. * @connection: A dbus connection. * @sender: A sender. * @object_path: An object path. * @interface_name: An interface name. * @method_name: A method name. * @parameters: A parameters. * @invocation: A dbus method invocation. * * The ::service_method_call class method is to connect * GDBusInterfaceMethodCallFunc(). */ void (* service_method_call) (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation); /** * IBusServiceClass::service_get_property: * @service: An #IBusService. * @connection: A dbus connection. * @sender: A sender. * @object_path: An object path. * @interface_name: An interface name. * @property_name: A property name. * @error: Return location for error or %NULL. * * The ::service_get_property class method is to connect * GDBusInterfaceGetPropertyFunc(). * * Returns: (nullable) (transfer full): A variant. */ GVariant * (* service_get_property) (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error); /** * IBusServiceClass::service_set_property: * @service: An #IBusService. * @connection: A dbus connection. * @sender: A sender. * @object_path: An object path. * @interface_name: An interface name. * @property_name: An property name. * @value: An property value. * @error: Return location for error or %NULL. * * The ::service_set_property class method is to connect * GDBusInterfaceSetPropertyFunc(). * * Returns: %TRUE if set the value else %FALSE. */ gboolean (* service_set_property) (IBusService *service, GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error); /*< private >*/ GArray *interfaces; /* padding */ gpointer pdummy[4]; }; GType ibus_service_get_type (void); /** * ibus_service_new: * @connection: A GDBusConnection. * @path: Object path. * * Creantes a new #IBusService. * * Returns: A newly allocated #IBusService */ IBusService *ibus_service_new (GDBusConnection *connection, const gchar *path); /** * ibus_service_get_object_path: * @service: An IBusService. * * Gets the object path of an IBusService. * * Returns: The object path of @service */ const gchar *ibus_service_get_object_path (IBusService *service); /** * ibus_service_get_connection: * @service: An IBusService. * * Gets a connections. * * Returns: (transfer none): A #GDBusConnection of an #IBusService instance. */ GDBusConnection *ibus_service_get_connection (IBusService *service); /** * ibus_service_register: * @service: An IBusService. * @connection: A GDBusConnection the service will be registered to. * @error: Return location for error or NULL. * * Registers service to a connection. * * Returns: %TRUE if the service was registered, %FALSE otherwise. */ gboolean ibus_service_register (IBusService *service, GDBusConnection *connection, GError **error); /** * ibus_service_unregister: * @service: An IBusService. * @connection: A GDBusConnection the service was registered with. * * Unregisters service from a connection. */ void ibus_service_unregister (IBusService *service, GDBusConnection *connection); /** * ibus_service_send_signal: * @service: An IBusService. * @interface: The interface the signal is emitted from. * @name: Name of the signal. * @first_arg_type: Type of first argument. * @...: Rest of arguments, NULL to mark the end. * * Sends signal to all the #IBusConnections of an #IBusService. * * Returns: %TRUE if succeed; %FALSE otherwise. * * see_also: g_dbus_connection_emit_signal() */ gboolean ibus_service_emit_signal (IBusService *service, const gchar *dest_bus_name, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, GError **error); /** * ibus_service_class_add_interfaces: * @klass: An IBusServiceClass. * @xml_data: The introspection xml data. * * Set the interface introspection information with the service class. * * Returns: %TRUE if @xml_data is valid and succeeded to be added; * %FALSE otherwise. */ gboolean ibus_service_class_add_interfaces (IBusServiceClass *klass, const gchar *xml_data); G_END_DECLS #endif ibus-1.5.11/docs/0000755000000000000000000000000012551654544010453 500000000000000ibus-1.5.11/docs/reference/0000755000000000000000000000000012551654544012411 500000000000000ibus-1.5.11/docs/reference/ibus/0000755000000000000000000000000012551655043013346 500000000000000ibus-1.5.11/docs/reference/ibus/ibus.types0000644000000000000000000000137312551655043015322 00000000000000ibus_hotkey_profile_get_type ibus_object_get_type ibus_config_get_type ibus_bus_get_type ibus_proxy_get_type ibus_object_flags_get_type ibus_attr_type_get_type ibus_attr_underline_get_type ibus_prop_type_get_type ibus_prop_state_get_type ibus_modifier_type_get_type ibus_capabilite_get_type ibus_orientation_get_type ibus_factory_get_type ibus_text_get_type ibus_config_service_get_type ibus_attribute_get_type ibus_attr_list_get_type ibus_engine_desc_get_type ibus_lookup_table_get_type ibus_serializable_get_type ibus_keymap_get_type ibus_engine_get_type ibus_component_get_type ibus_panel_service_get_type ibus_property_get_type ibus_prop_list_get_type ibus_input_context_get_type ibus_observed_path_get_type ibus_registry_get_type ibus_engine_simple_get_type ibus-1.5.11/docs/reference/ibus/html/0000755000000000000000000000000012551655043014312 500000000000000ibus-1.5.11/docs/reference/ibus/html/IBusInputContext.html0000644000000000000000000034122412551655043020355 00000000000000 IBusInputContext: IBus Reference Manual ibus-1.5.11/docs/reference/ibus/html/IBusLookupTable.html0000644000000000000000000014334712551655043020140 00000000000000 IBusLookupTable: IBus Reference Manual

IBusLookupTable

IBusLookupTable — Candidate word/phrase lookup table.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusLookupTable

Description

An IBusLookuptable stores the candidate words or phrases for users to choose from.

Use ibus_engine_update_lookup_table(), ibus_engine_show_lookup_table(), and ibus_engine_hide_lookup_table() to update, show and hide the lookup table.

see_also: IBusEngine

Functions

ibus_lookup_table_new ()

IBusLookupTable *
ibus_lookup_table_new (guint page_size,
                       guint cursor_pos,
                       gboolean cursor_visible,
                       gboolean round);

Craetes a new IBusLookupTable.

Parameters

page_size

number of candidate shown per page, the max value is 16.

 

cursor_pos

position index of cursor.

 

cursor_visible

whether the cursor is visible.

 

round

TRUE for lookup table wrap around.

 

Returns

A newly allocated IBusLookupTable.


ibus_lookup_table_append_candidate ()

void
ibus_lookup_table_append_candidate (IBusLookupTable *table,
                                    IBusText *text);

Append a candidate word/phrase to IBusLookupTable, and increase reference.

Parameters

table

An IBusLookupTable.

 

text

candidate word/phrase to be appended (in IBusText format).

 

ibus_lookup_table_get_number_of_candidates ()

guint
ibus_lookup_table_get_number_of_candidates
                               (IBusLookupTable *table);

Return the number of candidate in the table.

Parameters

table

An IBusLookupTable.

 

Returns

The number of candidates in the table


ibus_lookup_table_get_candidate ()

IBusText *
ibus_lookup_table_get_candidate (IBusLookupTable *table,
                                 guint index);

Return IBusText at the given index. Borrowed reference.

Parameters

table

An IBusLookupTable.

 

index

Index in the Lookup table.

 

Returns

IBusText at the given index; NULL if no such IBusText.

[transfer none]


ibus_lookup_table_append_label ()

void
ibus_lookup_table_append_label (IBusLookupTable *table,
                                IBusText *text);

Append a candidate word/phrase to IBusLookupTable, and increase reference. This function is needed if the input method select candidate with non-numeric keys such as "asdfghjkl;".

Parameters

table

An IBusLookupTable.

 

text

A candidate label to be appended (in IBusText format).

 

ibus_lookup_table_set_label ()

void
ibus_lookup_table_set_label (IBusLookupTable *table,
                             guint index,
                             IBusText *text);

Append a candidate word/phrase to IBusLookupTable, and increase reference. This function is needed if the input method select candidate with non-numeric keys such as "asdfghjkl;".

Parameters

table

An IBusLookupTable.

 

index

Intex in the Lookup table.

 

text

A candidate label to be appended (in IBusText format).

 

ibus_lookup_table_get_label ()

IBusText *
ibus_lookup_table_get_label (IBusLookupTable *table,
                             guint index);

Return IBusText at the given index. Borrowed reference.

Parameters

table

An IBusLookupTable.

 

index

Index in the Lookup table.

 

Returns

IBusText at the given index; NULL if no such IBusText.

[transfer none]


ibus_lookup_table_set_cursor_pos ()

void
ibus_lookup_table_set_cursor_pos (IBusLookupTable *table,
                                  guint cursor_pos);

Set the cursor position of IBusLookupTable.

Parameters

table

An IBusLookupTable.

 

cursor_pos

The position of cursor.

 

ibus_lookup_table_get_cursor_pos ()

guint
ibus_lookup_table_get_cursor_pos (IBusLookupTable *table);

Gets the cursor position of IBusLookupTable.

Parameters

table

An IBusLookupTable.

 

Returns

The position of cursor.


ibus_lookup_table_set_cursor_visible ()

void
ibus_lookup_table_set_cursor_visible (IBusLookupTable *table,
                                      gboolean visible);

Set whether to make the cursor of an IBusLookupTable visible or not.

Parameters

table

An IBusLookupTable.

 

visible

Whether to make the cursor of table visible.

 

ibus_lookup_table_is_cursor_visible ()

gboolean
ibus_lookup_table_is_cursor_visible (IBusLookupTable *table);

Returns whether the cursor of an IBusLookupTable is visible.

Parameters

table

An IBusLookupTable.

 

Returns

Whether the cursor of table is visible.


ibus_lookup_table_get_cursor_in_page ()

guint
ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table);

Gets the cursor position in current page of IBusLookupTable.

Parameters

table

An IBusLookupTable.

 

Returns

The position of cursor in current page.


ibus_lookup_table_set_page_size ()

void
ibus_lookup_table_set_page_size (IBusLookupTable *table,
                                 guint page_size);

Set the number of candidate shown per page.

Parameters

table

An IBusLookupTable.

 

page_size

number of candidate shown per page.

 

ibus_lookup_table_get_page_size ()

guint
ibus_lookup_table_get_page_size (IBusLookupTable *table);

Gets the number of candidate shown per page.

Parameters

table

An IBusLookupTable.

 

Returns

Page size, i.e., number of candidate shown per page. dd


ibus_lookup_table_set_round ()

void
ibus_lookup_table_set_round (IBusLookupTable *table,
                             gboolean round);

Set whether to make the IBusLookupTable round or not.

Parameters

table

An IBusLookupTable.

 

round

Whether to make table round.

 

ibus_lookup_table_is_round ()

gboolean
ibus_lookup_table_is_round (IBusLookupTable *table);

Returns whether the IBusLookupTable is round.

Parameters

table

An IBusLookupTable.

 

Returns

Whether the table is round.


ibus_lookup_table_set_orientation ()

void
ibus_lookup_table_set_orientation (IBusLookupTable *table,
                                   gint orientation);

Set the orientation.

Parameters

table

An IBusLookupTable.

 

orientation

.

 

ibus_lookup_table_get_orientation ()

gint
ibus_lookup_table_get_orientation (IBusLookupTable *table);

Returns the orientation of the IBusLookupTable.

Parameters

table

An IBusLookupTable.

 

Returns

The orientation of the table .


ibus_lookup_table_clear ()

void
ibus_lookup_table_clear (IBusLookupTable *table);

Clear and remove all candidate from an IBusLookupTable.

Parameters

table

An IBusLookupTable.

 

ibus_lookup_table_page_up ()

gboolean
ibus_lookup_table_page_up (IBusLookupTable *table);

Go to previous page of an IBusLookupTable.

It returns FALSE if it is already at the first page, unless table>-round==TRUE, where it will go to the last page.

Parameters

table

An IBusLookupTable.

 

Returns

TRUE if succeed.


ibus_lookup_table_page_down ()

gboolean
ibus_lookup_table_page_down (IBusLookupTable *table);

Go to next page of an IBusLookupTable.

It returns FALSE if it is already at the last page, unless table>-round==TRUE, where it will go to the first page.

Parameters

table

An IBusLookupTable.

 

Returns

TRUE if succeed.


ibus_lookup_table_cursor_up ()

gboolean
ibus_lookup_table_cursor_up (IBusLookupTable *table);

Go to previous candidate of an IBusLookupTable.

It returns FALSE if it is already at the first candidate, unless table>-round==TRUE, where it will go to the last candidate.

Parameters

table

An IBusLookupTable.

 

Returns

TRUE if succeed.


ibus_lookup_table_cursor_down ()

gboolean
ibus_lookup_table_cursor_down (IBusLookupTable *table);

Go to next candidate of an IBusLookupTable.

It returns FALSE if it is already at the last candidate, unless table>-round==TRUE, where it will go to the first candidate.

Parameters

table

An IBusLookupTable.

 

Returns

TRUE if succeed.

Types and Values

struct IBusLookupTable

struct IBusLookupTable {
    guint page_size;
    guint cursor_pos;
    gboolean cursor_visible;
    gboolean round;
    gint orientation;

    GArray *candidates;
    GArray *labels;
};

An IBusLookuptable stores the candidate words or phrases for users to choose from. Note that some input methods allow you to select candidate by pressing non-numeric keys such as "asdfghjkl;". Developers of these input methods should change the labels with ibus_lookup_table_append_label().

Members

guint page_size;

number of candidate shown per page.

 

guint cursor_pos;

position index of cursor.

 

gboolean cursor_visible;

whether the cursor is visible.

 

gboolean round;

TRUE for lookup table wrap around.

 

gint orientation;

orientation of the table.

 

GArray *candidates;

Candidate words/phrases.

 

GArray *labels;

Candidate labels which identify individual candidates in the same page. Default is 1, 2, 3, 4 ...

 
ibus-1.5.11/docs/reference/ibus/html/IBusBus.html0000644000000000000000000066350412551655043016452 00000000000000 IBusBus: IBus Reference Manual

IBusBus

IBusBus — Connect with IBus daemon.

Stability Level

Stable, unless otherwise indicated

Functions

IBusBus * ibus_bus_new ()
IBusBus * ibus_bus_new_async ()
gboolean ibus_bus_is_connected ()
GDBusConnection * ibus_bus_get_connection ()
const gchar * ibus_bus_hello ()
guint32 ibus_bus_request_name ()
void ibus_bus_request_name_async ()
guint ibus_bus_request_name_async_finish ()
guint ibus_bus_release_name ()
void ibus_bus_release_name_async ()
guint ibus_bus_release_name_async_finish ()
GList * ibus_bus_list_queued_owners ()
gboolean ibus_bus_name_has_owner ()
void ibus_bus_name_has_owner_async ()
gboolean ibus_bus_name_has_owner_async_finish ()
GList * ibus_bus_list_names ()
gboolean ibus_bus_add_match ()
void ibus_bus_add_match_async ()
gboolean ibus_bus_add_match_async_finish ()
gboolean ibus_bus_remove_match ()
void ibus_bus_remove_match_async ()
gboolean ibus_bus_remove_match_async_finish ()
gchar * ibus_bus_get_name_owner ()
void ibus_bus_get_name_owner_async ()
gchar * ibus_bus_get_name_owner_async_finish ()
gboolean ibus_bus_exit ()
void ibus_bus_exit_async ()
gboolean ibus_bus_exit_async_finish ()
IBusInputContext * ibus_bus_create_input_context ()
void ibus_bus_create_input_context_async ()
IBusInputContext * ibus_bus_create_input_context_async_finish ()
gchar * ibus_bus_current_input_context ()
void ibus_bus_current_input_context_async ()
gchar * ibus_bus_current_input_context_async_finish ()
gboolean ibus_bus_register_component ()
void ibus_bus_register_component_async ()
gboolean ibus_bus_register_component_async_finish ()
GList * ibus_bus_list_engines ()
void ibus_bus_list_engines_async ()
GList * ibus_bus_list_engines_async_finish ()
GList * ibus_bus_list_active_engines ()
void ibus_bus_list_active_engines_async ()
GList * ibus_bus_list_active_engines_async_finish ()
IBusEngineDesc ** ibus_bus_get_engines_by_names ()
gboolean ibus_bus_get_use_sys_layout ()
void ibus_bus_get_use_sys_layout_async ()
gboolean ibus_bus_get_use_sys_layout_async_finish ()
gboolean ibus_bus_get_use_global_engine ()
void ibus_bus_get_use_global_engine_async ()
gboolean ibus_bus_get_use_global_engine_async_finish ()
gboolean ibus_bus_is_global_engine_enabled ()
void ibus_bus_is_global_engine_enabled_async ()
gboolean ibus_bus_is_global_engine_enabled_async_finish ()
IBusEngineDesc * ibus_bus_get_global_engine ()
void ibus_bus_get_global_engine_async ()
IBusEngineDesc * ibus_bus_get_global_engine_async_finish ()
gboolean ibus_bus_set_global_engine ()
void ibus_bus_set_global_engine_async ()
gboolean ibus_bus_set_global_engine_async_finish ()
void ibus_bus_set_watch_dbus_signal ()
void ibus_bus_set_watch_ibus_signal ()
IBusConfig * ibus_bus_get_config ()
gboolean ibus_bus_preload_engines ()
void ibus_bus_preload_engines_async ()
gboolean ibus_bus_preload_engines_async_finish ()
GVariant * ibus_bus_get_ibus_property ()
void ibus_bus_get_ibus_property_async ()
GVariant * ibus_bus_get_ibus_property_async_finish ()
void ibus_bus_set_ibus_property ()
void ibus_bus_set_ibus_property_async ()
gboolean ibus_bus_set_ibus_property_async_finish ()

Properties

gboolean connect-async Read / Write / Construct Only

Types and Values

struct IBusBus

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusBus

Description

An IBusBus connects with IBus daemon.

Functions

ibus_bus_new ()

IBusBus *
ibus_bus_new (void);

Creates a new IBusBus instance.

Returns

A newly allocated IBusBus instance, and the instance is not floating.


ibus_bus_new_async ()

IBusBus *
ibus_bus_new_async (void);

Creates a new IBusBus instance. The instance will asynchronously connect to the IBus daemon.

Returns

A newly allocated IBusBus instance, and the instance is not floating.


ibus_bus_is_connected ()

gboolean
ibus_bus_is_connected (IBusBus *bus);

Return TRUE if bus is connected to IBus daemon.

Parameters

bus

An IBusBus.

 

Returns

TRUE if bus is connected, FALSE otherwise.


ibus_bus_get_connection ()

GDBusConnection *
ibus_bus_get_connection (IBusBus *bus);

Gets a GDBusConnection of an IBusBus instance.

Parameters

bus

An IBusBus.

 

Returns

A GDBusConnection of an IBusBus instance.

[transfer none]


ibus_bus_hello ()

const gchar *
ibus_bus_hello (IBusBus *bus);

This function sends a "HELLO" message to DBus daemon, which replies the unique name of current IBus process.

Parameters

bus

An IBusBus.

 

Returns

The unique name of IBus process in DBus.


ibus_bus_request_name ()

guint32
ibus_bus_request_name (IBusBus *bus,
                       const gchar *name,
                       guint32 flags);

Request a name from IBus daemon synchronously.

Parameters

bus

the IBusBus instance to be processed.

 

name

Name to be requested.

 

flags

IBusBusNameFlag.

 

Returns

0 if failed; IBusBusRequestNameReply otherwise.


ibus_bus_request_name_async ()

void
ibus_bus_request_name_async (IBusBus *bus,
                             const gchar *name,
                             guint flags,
                             gint timeout_msec,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

Request a name from IBus daemon asynchronously.

Parameters

bus

An IBusBus.

 

name

Name to be requested.

 

flags

Flags (FixMe).

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_request_name_async_finish ()

guint
ibus_bus_request_name_async_finish (IBusBus *bus,
                                    GAsyncResult *res,
                                    GError **error);

Finishes an operation started with ibus_bus_request_name_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_request_name_async().

 

error

Return location for error or NULL.

 

Returns

0 if failed; positive number otherwise.


ibus_bus_release_name ()

guint
ibus_bus_release_name (IBusBus *bus,
                       const gchar *name);

Release a name to IBus daemon synchronously.

Parameters

bus

An IBusBus.

 

name

Name to be released.

 

Returns

0 if failed; positive number otherwise.


ibus_bus_release_name_async ()

void
ibus_bus_release_name_async (IBusBus *bus,
                             const gchar *name,
                             gint timeout_msec,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

Release a name to IBus daemon asynchronously.

Parameters

bus

An IBusBus.

 

name

Name to be released.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_release_name_async_finish ()

guint
ibus_bus_release_name_async_finish (IBusBus *bus,
                                    GAsyncResult *res,
                                    GError **error);

Finishes an operation started with ibus_bus_release_name_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_release_name_async().

 

error

Return location for error or NULL.

 

Returns

0 if failed; positive number otherwise.


ibus_bus_list_queued_owners ()

GList *
ibus_bus_list_queued_owners (IBusBus *bus,
                             const gchar *name);

Lists the unique bus names of connections currently queued for a bus name. FIXME add an asynchronous version.

Parameters

bus

An IBusBus.

 

name

Name to be queried.

 

Returns

The unique bus names of connections currently queued for name .

[transfer full][element-type utf8]


ibus_bus_name_has_owner ()

gboolean
ibus_bus_name_has_owner (IBusBus *bus,
                         const gchar *name);

Checks whether the name has owner synchronously.

Parameters

bus

An IBusBus.

 

name

Name to be checked.

 

Returns

TRUE if the name has owner, FALSE otherwise.


ibus_bus_name_has_owner_async ()

void
ibus_bus_name_has_owner_async (IBusBus *bus,
                               const gchar *name,
                               gint timeout_msec,
                               GCancellable *cancellable,
                               GAsyncReadyCallback callback,
                               gpointer user_data);

Checks whether the name has owner asynchronously.

Parameters

bus

An IBusBus.

 

name

Name to be checked.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_name_has_owner_async_finish ()

gboolean
ibus_bus_name_has_owner_async_finish (IBusBus *bus,
                                      GAsyncResult *res,
                                      GError **error);

Finishes an operation started with ibus_bus_name_has_owner_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_name_has_owner_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the name has owner, FALSE otherwise.


ibus_bus_list_names ()

GList *
ibus_bus_list_names (IBusBus *bus);

Return lists that attached to bus .

[FixMe] Not implemented yet, only return NULL.

[FixMe] Add async version.

Parameters

bus

An IBusBus.

 

Returns

Lists that attached to bus .

[transfer full][element-type utf8]


ibus_bus_add_match ()

gboolean
ibus_bus_add_match (IBusBus *bus,
                    const gchar *rule);

Add a match rule to an IBusBus synchronously.

Parameters

bus

An IBusBus.

 

rule

Match rule.

 

Returns

TRUE if the rule is added. FALSE otherwise.


ibus_bus_add_match_async ()

void
ibus_bus_add_match_async (IBusBus *bus,
                          const gchar *rule,
                          gint timeout_msec,
                          GCancellable *cancellable,
                          GAsyncReadyCallback callback,
                          gpointer user_data);

Add a match rule to an IBusBus asynchronously.

Parameters

bus

An IBusBus.

 

rule

Match rule.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_add_match_async_finish ()

gboolean
ibus_bus_add_match_async_finish (IBusBus *bus,
                                 GAsyncResult *res,
                                 GError **error);

Finishes an operation started with ibus_bus_add_match_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_add_match_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the rule is added. FALSE otherwise.


ibus_bus_remove_match ()

gboolean
ibus_bus_remove_match (IBusBus *bus,
                       const gchar *rule);

Remove a match rule to an IBusBus synchronously.

Parameters

bus

An IBusBus.

 

rule

Match rule.

 

Returns

TRUE if the rule is removed. FALSE otherwise.


ibus_bus_remove_match_async ()

void
ibus_bus_remove_match_async (IBusBus *bus,
                             const gchar *rule,
                             gint timeout_msec,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

Remove a match rule to an IBusBus asynchronously.

Parameters

bus

An IBusBus.

 

rule

Match rule.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_remove_match_async_finish ()

gboolean
ibus_bus_remove_match_async_finish (IBusBus *bus,
                                    GAsyncResult *res,
                                    GError **error);

Finishes an operation started with ibus_bus_remove_match_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_remove_match_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the rule is removed. FALSE otherwise.


ibus_bus_get_name_owner ()

gchar *
ibus_bus_get_name_owner (IBusBus *bus,
                         const gchar *name);

Return the name owner synchronously.

Parameters

bus

An IBusBus.

 

name

Name.

 

Returns

Owner of the name. The returned value must be freed with g_free().


ibus_bus_get_name_owner_async ()

void
ibus_bus_get_name_owner_async (IBusBus *bus,
                               const gchar *name,
                               gint timeout_msec,
                               GCancellable *cancellable,
                               GAsyncReadyCallback callback,
                               gpointer user_data);

Return the name owner asynchronously.

Parameters

bus

An IBusBus.

 

name

Name.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_get_name_owner_async_finish ()

gchar *
ibus_bus_get_name_owner_async_finish (IBusBus *bus,
                                      GAsyncResult *res,
                                      GError **error);

Finishes an operation started with ibus_bus_get_name_owner_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_get_name_owner_async().

 

error

Return location for error or NULL.

 

Returns

Owner of the name. The returned value must be freed with g_free().


ibus_bus_exit ()

gboolean
ibus_bus_exit (IBusBus *bus,
               gboolean restart);

Exit or restart ibus-daemon synchronously.

Parameters

bus

An IBusBus.

 

restart

Whether restarting the ibus.

 

Returns

TRUE if the "Exit" call is suceeded, FALSE otherwise.


ibus_bus_exit_async ()

void
ibus_bus_exit_async (IBusBus *bus,
                     gboolean restart,
                     gint timeout_msec,
                     GCancellable *cancellable,
                     GAsyncReadyCallback callback,
                     gpointer user_data);

Exit or restart ibus-daemon asynchronously.

Parameters

bus

An IBusBus.

 

restart

Whether restarting the ibus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_exit_async_finish ()

gboolean
ibus_bus_exit_async_finish (IBusBus *bus,
                            GAsyncResult *res,
                            GError **error);

Finishes an operation started with ibus_bus_exit_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_exit_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the "Exit" call is suceeded, FALSE otherwise.


ibus_bus_create_input_context ()

IBusInputContext *
ibus_bus_create_input_context (IBusBus *bus,
                               const gchar *client_name);

Create an input context for client synchronously.

Parameters

bus

An IBusBus.

 

client_name

Name of client. "CreateInputContext" call is suceeded, NULL otherwise.

 

Returns

An newly allocated IBusInputContext if the.

[transfer full]


ibus_bus_create_input_context_async ()

void
ibus_bus_create_input_context_async (IBusBus *bus,
                                     const gchar *client_name,
                                     gint timeout_msec,
                                     GCancellable *cancellable,
                                     GAsyncReadyCallback callback,
                                     gpointer user_data);

Create an input context for client asynchronously.

Parameters

bus

An IBusBus.

 

client_name

Name of client.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied. It should not be NULL.

 

user_data

The data to pass to callback.

 

ibus_bus_create_input_context_async_finish ()

IBusInputContext *
ibus_bus_create_input_context_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_create_input_context_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_create_input_context_async().

 

error

Return location for error or NULL.

 

Returns

An newly allocated IBusInputContext if the "CreateInputContext" call is suceeded, NULL otherwise.

[transfer full]


ibus_bus_current_input_context ()

gchar *
ibus_bus_current_input_context (IBusBus *bus);

Get the current focused input context synchronously.

Parameters

bus

An IBusBus.

 

Returns

The named of currently focued IBusInputContext if the "CurrentInputContext" call suceeded, NULL otherwise. The return value must be freed with g_free().


ibus_bus_current_input_context_async ()

void
ibus_bus_current_input_context_async (IBusBus *bus,
                                      gint timeout_msec,
                                      GCancellable *cancellable,
                                      GAsyncReadyCallback callback,
                                      gpointer user_data);

Get the current focused input context asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_current_input_context_async_finish ()

gchar *
ibus_bus_current_input_context_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_current_input_context_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_current_input_context_async().

 

error

Return location for error or NULL.

 

Returns

The named of currently focued IBusInputContext if the "CurrentInputContext" call suceeded, NULL otherwise. The return value must be freed with g_free().


ibus_bus_register_component ()

gboolean
ibus_bus_register_component (IBusBus *bus,
                             IBusComponent *component);

Register a componet to an IBusBus synchronously.

Parameters

bus

An IBusBus.

 

component

A input engine component.

 

Returns

TRUE if the "RegisterComponent" call is suceeded, FALSE otherwise.


ibus_bus_register_component_async ()

void
ibus_bus_register_component_async (IBusBus *bus,
                                   IBusComponent *component,
                                   gint timeout_msec,
                                   GCancellable *cancellable,
                                   GAsyncReadyCallback callback,
                                   gpointer user_data);

Register a componet to an IBusBus asynchronously.

Parameters

bus

An IBusBus.

 

component

A input engine component.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_register_component_async_finish ()

gboolean
ibus_bus_register_component_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_register_component_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_register_component_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the "RegisterComponent" call is suceeded, FALSE otherwise.


ibus_bus_list_engines ()

GList *
ibus_bus_list_engines (IBusBus *bus);

List engines synchronously.

Parameters

bus

An IBusBus.

 

Returns

A List of engines.

[transfer container][element-type IBusEngineDesc]


ibus_bus_list_engines_async ()

void
ibus_bus_list_engines_async (IBusBus *bus,
                             gint timeout_msec,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

List engines asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_list_engines_async_finish ()

GList *
ibus_bus_list_engines_async_finish (IBusBus *bus,
                                    GAsyncResult *res,
                                    GError **error);

Finishes an operation started with ibus_bus_list_engines_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_list_engines_async().

 

error

Return location for error or NULL.

 

Returns

A List of engines.

[transfer container][element-type IBusEngineDesc]


ibus_bus_list_active_engines ()

GList *
ibus_bus_list_active_engines (IBusBus *bus);

ibus_bus_list_active_engines has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/preload-engines instead.

List active engines synchronously.

Parameters

bus

An IBusBus.

 

Returns

A List of active engines.

[transfer container][element-type IBusEngineDesc]


ibus_bus_list_active_engines_async ()

void
ibus_bus_list_active_engines_async (IBusBus *bus,
                                    gint timeout_msec,
                                    GCancellable *cancellable,
                                    GAsyncReadyCallback callback,
                                    gpointer user_data);

ibus_bus_list_active_engines_async has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/preload-engines instead.

List active engines asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_list_active_engines_async_finish ()

GList *
ibus_bus_list_active_engines_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

ibus_bus_list_active_engines_async_finish has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/preload-engines instead.

Finishes an operation started with ibus_bus_list_active_engines_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_list_active_engines_async().

 

error

Return location for error or NULL.

 

Returns

A List of active engines.

[transfer container][element-type IBusEngineDesc]


ibus_bus_get_engines_by_names ()

IBusEngineDesc **
ibus_bus_get_engines_by_names (IBusBus *bus,
                               const gchar * const *names);

ibus_bus_get_engines_by_names is deprecated and should not be used in newly-written code.

Get engines by given names synchronously. If some engine names do not exist, this function will simply ignore them, and return rest of engines. TODO(penghuang): add asynchronous version

Parameters

bus

An IBusBus.

 

names

A NULL-terminated array of names.

[array zero-terminated=1]

Returns

A NULL-terminated array of engines.

[array zero-terminated=1][transfer full]


ibus_bus_get_use_sys_layout ()

gboolean
ibus_bus_get_use_sys_layout (IBusBus *bus);

ibus_bus_get_use_sys_layout has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead.

Check if the bus's "use_sys_layout" option is enabled or not synchronously.

Parameters

bus

An IBusBus.

 

Returns

TRUE if "use_sys_layout" option is enabled.


ibus_bus_get_use_sys_layout_async ()

void
ibus_bus_get_use_sys_layout_async (IBusBus *bus,
                                   gint timeout_msec,
                                   GCancellable *cancellable,
                                   GAsyncReadyCallback callback,
                                   gpointer user_data);

ibus_bus_get_use_sys_layout_async has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead.

Check if the bus's "use_sys_layout" option is enabled or not asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_get_use_sys_layout_async_finish ()

gboolean
ibus_bus_get_use_sys_layout_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

ibus_bus_get_use_sys_layout_async_finish has been deprecated since version 1.5.3 and should not be used in newly-written code.

Read dconf value /desktop/ibus/general/use_system_keyboard_layout instead.

Finishes an operation started with ibus_bus_get_use_sys_layout_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_get_use_sys_layout_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if "use_sys_layout" option is enabled.


ibus_bus_get_use_global_engine ()

gboolean
ibus_bus_get_use_global_engine (IBusBus *bus);

ibus_bus_get_use_global_engine has been deprecated since version 1.5.3 and should not be used in newly-written code.

Currently global engine is always used.

Check if the bus's "use_global_engine" option is enabled or not synchronously.

Parameters

bus

An IBusBus.

 

Returns

TRUE if "use_global_engine" option is enabled.


ibus_bus_get_use_global_engine_async ()

void
ibus_bus_get_use_global_engine_async (IBusBus *bus,
                                      gint timeout_msec,
                                      GCancellable *cancellable,
                                      GAsyncReadyCallback callback,
                                      gpointer user_data);

ibus_bus_get_use_global_engine_async has been deprecated since version 1.5.3 and should not be used in newly-written code.

Currently global engine is always used.

Check if the bus's "use_global_engine" option is enabled or not asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_get_use_global_engine_async_finish ()

gboolean
ibus_bus_get_use_global_engine_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

ibus_bus_get_use_global_engine_async_finish has been deprecated since version 1.5.3 and should not be used in newly-written code.

Currently global engine is always used.

Finishes an operation started with ibus_bus_get_use_global_engine_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_get_use_global_engine_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if "use_global_engine" option is enabled.


ibus_bus_is_global_engine_enabled ()

gboolean
ibus_bus_is_global_engine_enabled (IBusBus *bus);

ibus_bus_is_global_engine_enabled has been deprecated since version 1.5.3 and should not be used in newly-written code.

Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL.

Check if the current global engine is enabled or not synchronously.

Parameters

bus

An IBusBus.

 

Returns

TRUE if the current global engine is enabled.


ibus_bus_is_global_engine_enabled_async ()

void
ibus_bus_is_global_engine_enabled_async
                               (IBusBus *bus,
                                gint timeout_msec,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

ibus_bus_is_global_engine_enabled_async has been deprecated since version 1.5.3 and should not be used in newly-written code.

Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL.

Check if the current global engine is enabled or not asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_is_global_engine_enabled_async_finish ()

gboolean
ibus_bus_is_global_engine_enabled_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

ibus_bus_is_global_engine_enabled_async_finish has been deprecated since version 1.5.3 and should not be used in newly-written code.

Probably this would be used for Chrome OS only. Currently global engine is always used and ibus_bus_get_global_engine() returns NULL until the first global engine is assigned. You can use ibus_set_log_handler() to disable a warning when ibus_bus_get_global_engine() returns NULL.

Finishes an operation started with ibus_bus_is_global_engine_enabled_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_is_global_engine_enabled_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the current global engine is enabled.


ibus_bus_get_global_engine ()

IBusEngineDesc *
ibus_bus_get_global_engine (IBusBus *bus);

ibus_bus_get_global_engine is deprecated and should not be used in newly-written code.

Get the description of current global engine synchronously.

Parameters

bus

An IBusBus.

 

Returns

The description of current global engine, or NULL if there is no global engine.

[transfer none]


ibus_bus_get_global_engine_async ()

void
ibus_bus_get_global_engine_async (IBusBus *bus,
                                  gint timeout_msec,
                                  GCancellable *cancellable,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data);

Get the description of current global engine asynchronously.

Parameters

bus

An IBusBus.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_get_global_engine_async_finish ()

IBusEngineDesc *
ibus_bus_get_global_engine_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_get_global_engine_async_finish().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_get_global_engine_async_finish().

 

error

Return location for error or NULL.

 

Returns

The description of current global engine, or NULL if there is no global engine.

[transfer none]


ibus_bus_set_global_engine ()

gboolean
ibus_bus_set_global_engine (IBusBus *bus,
                            const gchar *global_engine);

Set current global engine synchronously.

Parameters

bus

An IBusBus.

 

global_engine

A new engine name.

 

Returns

TRUE if the global engine was set successfully.


ibus_bus_set_global_engine_async ()

void
ibus_bus_set_global_engine_async (IBusBus *bus,
                                  const gchar *global_engine,
                                  gint timeout_msec,
                                  GCancellable *cancellable,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data);

Set current global engine asynchronously.

Parameters

bus

An IBusBus.

 

global_engine

A new engine name.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_set_global_engine_async_finish ()

gboolean
ibus_bus_set_global_engine_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_set_global_engine_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_set_global_engine_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if no IPC errros. FALSE otherwise.


ibus_bus_set_watch_dbus_signal ()

void
ibus_bus_set_watch_dbus_signal (IBusBus *bus,
                                gboolean watch);

Start or stop watching the NameOwnerChanged DBus signal.

Parameters

bus

An IBusBus.

 

watch

TRUE if you want ibusbus to emit "name-owner-changed" signal when ibus-daemon emits the NameOwnerChanged DBus signal.

 

ibus_bus_set_watch_ibus_signal ()

void
ibus_bus_set_watch_ibus_signal (IBusBus *bus,
                                gboolean watch);

Start or stop watching the GlobalEngineChanged IBus signal.

Parameters

bus

An IBusBus.

 

watch

TRUE if you want ibusbus to emit "global-engine-changed" signal when ibus-daemon emits the GlobalEngineChanged IBus signal.

 

ibus_bus_get_config ()

IBusConfig *
ibus_bus_get_config (IBusBus *bus);

Get the config instance from IBusBus.

Parameters

bus

An IBusBus.

 

Returns

An IBusConfig object which is configurable with bus .

[transfer none]


ibus_bus_preload_engines ()

gboolean
ibus_bus_preload_engines (IBusBus *bus,
                          const gchar * const *names);

Start bus components by engine names synchronously.

Parameters

bus

An IBusBus.

 

names

A NULL-terminated array of engine names.

[array zero-terminated=1]

Returns

TRUE if components start. FALSE otherwise.


ibus_bus_preload_engines_async ()

void
ibus_bus_preload_engines_async (IBusBus *bus,
                                const gchar * const *names,
                                gint timeout_msec,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Start bus components by engine names asynchronously.

Parameters

bus

An IBusBus.

 

names

A NULL-terminated array of engine names.

[array zero-terminated=1]

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_preload_engines_async_finish ()

gboolean
ibus_bus_preload_engines_async_finish (IBusBus *bus,
                                       GAsyncResult *res,
                                       GError **error);

Finishes an operation started with ibus_bus_preload_engines_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_preload_engines_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if component starts. FALSE otherwise.


ibus_bus_get_ibus_property ()

GVariant *
ibus_bus_get_ibus_property (IBusBus *bus,
                            const gchar *property_name);

Get org.freedesktop.DBus.Properties.

Parameters

bus

An IBusBus.

 

property_name

property name in org.freedesktop.DBus.Properties.Get

 

Returns

The value in org.freedesktop.DBus.Properties.Get The returned value must be freed with g_variant_unref().

[transfer full]


ibus_bus_get_ibus_property_async ()

void
ibus_bus_get_ibus_property_async (IBusBus *bus,
                                  const gchar *property_name,
                                  gint timeout_msec,
                                  GCancellable *cancellable,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data);

Get org.freedesktop.DBus.Properties asynchronously.

Parameters

bus

An IBusBus.

 

property_name

property name in org.freedesktop.DBus.Properties.Get

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_get_ibus_property_async_finish ()

GVariant *
ibus_bus_get_ibus_property_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_get_ibus_property_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_get_ibus_property_async().

 

error

Return location for error or NULL.

 

Returns

The value in org.freedesktop.DBus.Properties.Get The returned value must be freed with g_variant_unref().

[transfer full]


ibus_bus_set_ibus_property ()

void
ibus_bus_set_ibus_property (IBusBus *bus,
                            const gchar *property_name,
                            GVariant *value);

Set org.freedesktop.DBus.Properties.

Parameters

bus

An IBusBus.

 

property_name

property name in org.freedesktop.DBus.Properties.Set

 

value

value in org.freedesktop.DBus.Properties.Set

 

ibus_bus_set_ibus_property_async ()

void
ibus_bus_set_ibus_property_async (IBusBus *bus,
                                  const gchar *property_name,
                                  GVariant *value,
                                  gint timeout_msec,
                                  GCancellable *cancellable,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data);

Set org.freedesktop.DBus.Properties asynchronously.

Parameters

bus

An IBusBus.

 

property_name

property name in org.freedesktop.DBus.Properties.Set

 

value

value in org.freedesktop.DBus.Properties.Set

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_bus_set_ibus_property_async_finish ()

gboolean
ibus_bus_set_ibus_property_async_finish
                               (IBusBus *bus,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_bus_set_ibus_property_async().

Parameters

bus

An IBusBus.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_bus_set_ibus_property_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if property is set with async. FALSE failed.

Types and Values

struct IBusBus

struct IBusBus;

An opaque data type representing IBus bus (daemon communication) status.

Property Details

The “connect-async†property

  “connect-async†           gboolean

Whether the IBusBus object should connect asynchronously to the bus.

Flags: Read / Write / Construct Only

Default value: FALSE

Signal Details

The “connected†signal

void
user_function (IBusBus *bus,
               gpointer user_data)

Emitted when IBusBus is connected to ibus-daemon.

Parameters

bus

The IBusBus object which recevied the signal

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “disconnected†signal

void
user_function (IBusBus *bus,
               gpointer user_data)

Emitted when IBusBus is disconnected from ibus-daemon.

Parameters

bus

The IBusBus object which recevied the signal

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “global-engine-changed†signal

void
user_function (IBusBus *bus,
               gchar   *name,
               gpointer user_data)

Emitted when global engine is changed.

Parameters

bus

The IBusBus object which recevied the signal

 

name

The name of the new global engine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “name-owner-changed†signal

void
user_function (IBusBus *bus,
               gchar   *name,
               gchar   *old_owner,
               gchar   *new_owner,
               gpointer user_data)

Emitted when D-Bus name owner is changed.

Parameters

bus

The IBusBus object which recevied the signal

 

name

The name which ower is changed.

 

old_owner

The unique bus name of the old owner.

 

new_owner

The unique bus name of the new owner.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/ch04.html0000644000000000000000000000523712551655043015665 00000000000000 Configuration: IBus Reference Manual

Configuration

IBusConfig — IBus engine configuration module.
IBusConfigService — Configuration service back-end.
IBusObservedPath — Path object of IBus.
IBusRegistry — Registry cache handling.
ibusversion — Current version of IBus.
ibusxml — XML handling functions for IBus.

This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here.

ibus-1.5.11/docs/reference/ibus/html/IBusConfig.html0000644000000000000000000015560112551655043017120 00000000000000 IBusConfig: IBus Reference Manual

IBusConfig

IBusConfig — IBus engine configuration module.

Signals

Types and Values

struct IBusConfig

Object Hierarchy

    GObject
    ╰── GDBusProxy
        ╰── IBusProxy
            ╰── IBusConfig

Implemented Interfaces

IBusConfig implements GDBusInterface, GInitable and GAsyncInitable.

Description

An IBusConfig provides engine configuration methods such as get and set the configure settings to configuration file.

Currently, IBusConfig supports gconf.

Functions

ibus_config_new ()

IBusConfig *
ibus_config_new (GDBusConnection *connection,
                 GCancellable *cancellable,
                 GError **error);

Create a new IBusConfig from existing GDBusConnection.

Parameters

connection

A GDBusConnection.

 

cancellable

A GCancellable or NULL.

 

error

Return location for error or NULL.

 

Returns

A newly allocated IBusConfig corresponding to connection .


ibus_config_new_async ()

void
ibus_config_new_async (GDBusConnection *connection,
                       GCancellable *cancellable,
                       GAsyncReadyCallback callback,
                       gpointer user_data);

New an IBusConfig asynchronously.

Parameters

connection

An GDBusConnection.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied. The callback should not be NULL.

 

user_data

The data to pass to callback.

 

ibus_config_new_async_finish ()

IBusConfig *
ibus_config_new_async_finish (GAsyncResult *res,
                              GError **error);

Finishes an operation started with ibus_config_new_async().

Parameters

res

A GAsyncResult obtained from the GAsyncReadyCallback pass to ibus_config_new_async().

 

error

Return location for error or NULL.

 

Returns

A newly allocated IBusConfig.


ibus_config_get_value ()

GVariant *
ibus_config_get_value (IBusConfig *config,
                       const gchar *section,
                       const gchar *name);

Get the value of a configuration option synchronously.

GConf stores configure options in a tree-like structure, and the IBus related setting is at /desktop/ibus, thus, section here is a path from there, while name is the key of that configuration option.

ibus-chewing, for example, stores its setting in /desktop/ibus/engine/Chewing, so the section name for it is "engine/Chewing". See also: ibus_config_set_value().

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

name

Name of the configure option.

 

Returns

A GVariant or NULL. Free with g_variant_unref().


ibus_config_get_value_async ()

void
ibus_config_get_value_async (IBusConfig *config,
                             const gchar *section,
                             const gchar *name,
                             gint timeout_ms,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

Get the value of a configuration option asynchronously.

See also: ibus_config_get_value().

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

name

Name of the configure option.

 

timeout_ms

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

Callback function to invoke when the return value is ready.

 

user_data

The data to pass to callback.

 

ibus_config_get_value_async_finish ()

GVariant *
ibus_config_get_value_async_finish (IBusConfig *config,
                                    GAsyncResult *result,
                                    GError **error);

Finish get value of a configuration option.

Parameters

config

A IBusConfig.

 

result

A GAsyncResult.

 

error

Return location for error or NULL.

 

Returns

A GVariant or NULL if error is set. Free with g_variant_unref().

See also: ibus_config_get_value_async().


ibus_config_get_values ()

GVariant *
ibus_config_get_values (IBusConfig *config,
                        const gchar *section);

Get all values in a section synchronously.

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

Returns

A GVariant or NULL. Free with g_variant_unref().

See also: ibus_config_set_value().


ibus_config_get_values_async ()

void
ibus_config_get_values_async (IBusConfig *config,
                              const gchar *section,
                              gint timeout_ms,
                              GCancellable *cancellable,
                              GAsyncReadyCallback callback,
                              gpointer user_data);

Get all values in a section asynchronously.

See also: ibus_config_get_values().

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

timeout_ms

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

Callback function to invoke when the return value is ready.

 

user_data

The data to pass to callback.

 

ibus_config_get_values_async_finish ()

GVariant *
ibus_config_get_values_async_finish (IBusConfig *config,
                                     GAsyncResult *result,
                                     GError **error);

Finish get values in a section.

Parameters

config

A IBusConfig.

 

result

A GAsyncResult.

 

error

Return location for error or NULL.

 

Returns

A GVariant or NULL if error is set. Free with g_variant_unref().

See also: ibus_config_get_values_async().


ibus_config_set_value ()

gboolean
ibus_config_set_value (IBusConfig *config,
                       const gchar *section,
                       const gchar *name,
                       GVariant *value);

Set the value of a configuration option synchronously.

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

name

Name of the configure option its self.

 

value

A GVariant that holds the value. If the value is floating, the function takes ownership of it.

 

Returns

TRUE if succeed; FALSE otherwise.

See also: ibus_config_get_value().


ibus_config_set_value_async ()

void
ibus_config_set_value_async (IBusConfig *config,
                             const gchar *section,
                             const gchar *name,
                             GVariant *value,
                             gint timeout_ms,
                             GCancellable *cancellable,
                             GAsyncReadyCallback callback,
                             gpointer user_data);

Set the value of a configuration option asynchronously.

See also: ibus_config_set_value().

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

name

Name of the configure option.

 

value

A GVariant that holds the value. If the value is floating, the function takes ownership of it.

 

timeout_ms

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

Callback function to invoke when the return value is ready.

 

user_data

The data to pass to callback.

 

ibus_config_set_value_async_finish ()

gboolean
ibus_config_set_value_async_finish (IBusConfig *config,
                                    GAsyncResult *result,
                                    GError **error);

Finish set value of a configuration option.

Parameters

config

A IBusConfig.

 

result

A GAsyncResult.

 

error

Return location for error or NULL.

 

Returns

TRUE or FALSE if error is set.

See also: ibus_config_set_value_async().


ibus_config_unset ()

gboolean
ibus_config_unset (IBusConfig *config,
                   const gchar *section,
                   const gchar *name);

Remove an entry of a configuration option.

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

 

name

Name of the configure option its self.

 

Returns

TRUE if succeed; FALSE otherwise.

See also: ibus_config_get_value().


ibus_config_watch ()

gboolean
ibus_config_watch (IBusConfig *config,
                   const gchar *section,
                   const gchar *name);

Subscribe to the configuration option change notification.

Until this function is called, every change will be notified to the client through “value-changed†signal. Clients should call ibus_config_watch() with the sections they are interested in, to reduce the number of D-Bus messages.

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

[allow-none]

name

Name of the configure option its self.

[allow-none]

Returns

TRUE if succeed; FALSE otherwise.

See also: ibus_config_unwatch().


ibus_config_unwatch ()

gboolean
ibus_config_unwatch (IBusConfig *config,
                     const gchar *section,
                     const gchar *name);

Unsubscribe from the configuration option change notification.

Parameters

config

An IBusConfig

 

section

Section name of the configuration option.

[allow-none]

name

Name of the configure option its self.

[allow-none]

Returns

TRUE if succeed; FALSE otherwise.

See also: ibus_config_watch.

Types and Values

struct IBusConfig

struct IBusConfig;

An opaque data type representing an IBusConfig.

Signal Details

The “value-changed†signal

void
user_function (IBusConfig *config,
               gchar      *section,
               gchar      *name,
               GVariant   *value,
               gpointer    user_data)

Emitted when configuration value is changed.

Argument user_data is ignored in this function.

Parameters

config

An IBusConfig.

 

section

Section name.

 

name

Name of the property.

 

value

Value.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/right-insensitive.png0000644000000000000000000000056512551655042020420 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ ¥­^IDAT8ËÍ’±JÃ`…¿ ‚“‹³«/ S’_$ÄÁÁAqrÐÙW(>€“à‚®©“m¥"]\œ„è(‘49.NÚdÒ3¸ß9Ü{á¯eM#MSI‡Î¹·E¯iHz|3{̲l½3 ,K˜k’ž†ÃáV'@EŸEQlwÀŠçyišî·Äqüçù‘™]KÀíh4:mµÄ¦²,;“t˜¤sç\aƒÆR5/¬7'¹W×õp”’Žs×­I’,Kº1³=àËÌÂ0´j0Wg³ÙØ>€Ý ¦­¯PUÕýïð»¤0 §]?qCÒ«™ùιgþ½~œÉkÄAâ…_IEND®B`‚ibus-1.5.11/docs/reference/ibus/html/ch02.html0000644000000000000000000000601312551655043015654 00000000000000 Panel (User Interfaces): IBus Reference Manual

Panel (User Interfaces)

IBusAttribute — Attributes of IBusText.
IBusAttrList — AttrList of IBusText.
IBusHotkeyProfile — Hotkeys and associated events.
IBusLookupTable — Candidate word/phrase lookup table.
IBusPanelService — Panel service back-end.
IBusProperty — UI component for input method engine property.
IBusPropList — An IBusProperty container.
IBusText — Text with decorating information.

These API pages directly related to user interfaces, such as pre-edit buffer, auxiliary text, language bar, button, radio boxes, and so on.

ibus-1.5.11/docs/reference/ibus/html/ibus-ibusxml.html0000644000000000000000000003320112551655043017542 00000000000000 ibusxml: IBus Reference Manual

ibusxml

ibusxml — XML handling functions for IBus.

Stability Level

Stable, unless otherwise indicated

Functions

Types and Values

  IBusXML
#define XMLNode

Description

IBusXML lists data structure and handling function for XML in IBus.

Functions

ibus_xml_copy ()

XMLNode *
ibus_xml_copy (const XMLNode *node);

Creates a copy of node , which should be freed with ibus_xml_free(). Primarily used by language bindings, not that useful otherwise (since node can just be copied by assignment in C).

Parameters

node

Root node of an XML tree.

 

Returns

the newly allocated IBusXML, which should be freed with ibus_xml_free(), or NULL if node was NULL.


ibus_xml_parse_file ()

XMLNode *
ibus_xml_parse_file (const gchar *name);

Parse an XML file and return a corresponding XML tree.

Parameters

name

File name to be parsed.

 

Returns

Root node of parsed XML tree.


ibus_xml_parse_buffer ()

XMLNode *
ibus_xml_parse_buffer (const gchar *buffer);

Parse a string buffer which contains an XML-formatted string, and return a corresponding XML tree.

Parameters

buffer

Buffer to be parsed.

 

Returns

Root node of parsed XML tree.


ibus_xml_free ()

void
ibus_xml_free (XMLNode *node);

Free an XML tree.

Parameters

node

Root node of an XML tree.

 

ibus_xml_output ()

void
ibus_xml_output (const XMLNode *node,
                 GString *output);

Output an XML tree to a GString.

Parameters

node

Root node of an XML tree.

 

output

GString which stores the output.

 

Types and Values

IBusXML

typedef struct {
    gchar  *name;
    gchar  *text;
    gchar  **attributes;
    GList *sub_nodes;
} IBusXML;

A data type representing an XML node.

Members

gchar *name;

Name of XML tag.

 

gchar *text;

Text enclosed by XML start tag and end tag. i.e. text.

 

gchar **attributes;

Attributes of the XML node.

 

GList *sub_nodes;

Children node of this XML node.

 

XMLNode

#define XMLNode IBusXML
ibus-1.5.11/docs/reference/ibus/html/api-index-full.html0000644000000000000000000422062212551655043017746 00000000000000 Index: IBus Reference Manual

Index

0

IBUS_0, macro in ibuskeysyms-compat

1

IBUS_1, macro in ibuskeysyms-compat

2

IBUS_2, macro in ibuskeysyms-compat

3

IBUS_3, macro in ibuskeysyms-compat
IBUS_3270_AltCursor, macro in ibuskeysyms-compat
IBUS_3270_Attn, macro in ibuskeysyms-compat
IBUS_3270_BackTab, macro in ibuskeysyms-compat
IBUS_3270_ChangeScreen, macro in ibuskeysyms-compat
IBUS_3270_Copy, macro in ibuskeysyms-compat
IBUS_3270_CursorBlink, macro in ibuskeysyms-compat
IBUS_3270_CursorSelect, macro in ibuskeysyms-compat
IBUS_3270_DeleteWord, macro in ibuskeysyms-compat
IBUS_3270_Duplicate, macro in ibuskeysyms-compat
IBUS_3270_Enter, macro in ibuskeysyms-compat
IBUS_3270_EraseEOF, macro in ibuskeysyms-compat
IBUS_3270_EraseInput, macro in ibuskeysyms-compat
IBUS_3270_ExSelect, macro in ibuskeysyms-compat
IBUS_3270_FieldMark, macro in ibuskeysyms-compat
IBUS_3270_Ident, macro in ibuskeysyms-compat
IBUS_3270_Jump, macro in ibuskeysyms-compat
IBUS_3270_KeyClick, macro in ibuskeysyms-compat
IBUS_3270_Left2, macro in ibuskeysyms-compat
IBUS_3270_PA1, macro in ibuskeysyms-compat
IBUS_3270_PA2, macro in ibuskeysyms-compat
IBUS_3270_PA3, macro in ibuskeysyms-compat
IBUS_3270_Play, macro in ibuskeysyms-compat
IBUS_3270_PrintScreen, macro in ibuskeysyms-compat
IBUS_3270_Quit, macro in ibuskeysyms-compat
IBUS_3270_Record, macro in ibuskeysyms-compat
IBUS_3270_Reset, macro in ibuskeysyms-compat
IBUS_3270_Right2, macro in ibuskeysyms-compat
IBUS_3270_Rule, macro in ibuskeysyms-compat
IBUS_3270_Setup, macro in ibuskeysyms-compat
IBUS_3270_Test, macro in ibuskeysyms-compat

4

IBUS_4, macro in ibuskeysyms-compat

5

IBUS_5, macro in ibuskeysyms-compat

6

IBUS_6, macro in ibuskeysyms-compat

7

IBUS_7, macro in ibuskeysyms-compat

8

IBUS_8, macro in ibuskeysyms-compat

9

IBUS_9, macro in ibuskeysyms-compat

A

IBUS_A, macro in ibuskeysyms-compat
IBUS_a, macro in ibuskeysyms-compat
IBUS_Aacute, macro in ibuskeysyms-compat
IBUS_aacute, macro in ibuskeysyms-compat
IBUS_Abelowdot, macro in ibuskeysyms-compat
IBUS_abelowdot, macro in ibuskeysyms-compat
IBUS_abovedot, macro in ibuskeysyms-compat
IBUS_Abreve, macro in ibuskeysyms-compat
IBUS_abreve, macro in ibuskeysyms-compat
IBUS_Abreveacute, macro in ibuskeysyms-compat
IBUS_abreveacute, macro in ibuskeysyms-compat
IBUS_Abrevebelowdot, macro in ibuskeysyms-compat
IBUS_abrevebelowdot, macro in ibuskeysyms-compat
IBUS_Abrevegrave, macro in ibuskeysyms-compat
IBUS_abrevegrave, macro in ibuskeysyms-compat
IBUS_Abrevehook, macro in ibuskeysyms-compat
IBUS_abrevehook, macro in ibuskeysyms-compat
IBUS_Abrevetilde, macro in ibuskeysyms-compat
IBUS_abrevetilde, macro in ibuskeysyms-compat
IBUS_AccessX_Enable, macro in ibuskeysyms-compat
IBUS_AccessX_Feedback_Enable, macro in ibuskeysyms-compat
IBUS_Acircumflex, macro in ibuskeysyms-compat
IBUS_acircumflex, macro in ibuskeysyms-compat
IBUS_Acircumflexacute, macro in ibuskeysyms-compat
IBUS_acircumflexacute, macro in ibuskeysyms-compat
IBUS_Acircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_acircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_Acircumflexgrave, macro in ibuskeysyms-compat
IBUS_acircumflexgrave, macro in ibuskeysyms-compat
IBUS_Acircumflexhook, macro in ibuskeysyms-compat
IBUS_acircumflexhook, macro in ibuskeysyms-compat
IBUS_Acircumflextilde, macro in ibuskeysyms-compat
IBUS_acircumflextilde, macro in ibuskeysyms-compat
IBUS_acute, macro in ibuskeysyms-compat
IBUS_Adiaeresis, macro in ibuskeysyms-compat
IBUS_adiaeresis, macro in ibuskeysyms-compat
IBUS_AE, macro in ibuskeysyms-compat
IBUS_ae, macro in ibuskeysyms-compat
IBUS_Agrave, macro in ibuskeysyms-compat
IBUS_agrave, macro in ibuskeysyms-compat
IBUS_Ahook, macro in ibuskeysyms-compat
IBUS_ahook, macro in ibuskeysyms-compat
IBUS_Alt_L, macro in ibuskeysyms-compat
IBUS_Alt_R, macro in ibuskeysyms-compat
IBUS_Amacron, macro in ibuskeysyms-compat
IBUS_amacron, macro in ibuskeysyms-compat
IBUS_ampersand, macro in ibuskeysyms-compat
IBUS_Aogonek, macro in ibuskeysyms-compat
IBUS_aogonek, macro in ibuskeysyms-compat
IBUS_apostrophe, macro in ibuskeysyms-compat
IBUS_approxeq, macro in ibuskeysyms-compat
IBUS_approximate, macro in ibuskeysyms-compat
IBUS_Arabic_0, macro in ibuskeysyms-compat
IBUS_Arabic_1, macro in ibuskeysyms-compat
IBUS_Arabic_2, macro in ibuskeysyms-compat
IBUS_Arabic_3, macro in ibuskeysyms-compat
IBUS_Arabic_4, macro in ibuskeysyms-compat
IBUS_Arabic_5, macro in ibuskeysyms-compat
IBUS_Arabic_6, macro in ibuskeysyms-compat
IBUS_Arabic_7, macro in ibuskeysyms-compat
IBUS_Arabic_8, macro in ibuskeysyms-compat
IBUS_Arabic_9, macro in ibuskeysyms-compat
IBUS_Arabic_ain, macro in ibuskeysyms-compat
IBUS_Arabic_alef, macro in ibuskeysyms-compat
IBUS_Arabic_alefmaksura, macro in ibuskeysyms-compat
IBUS_Arabic_beh, macro in ibuskeysyms-compat
IBUS_Arabic_comma, macro in ibuskeysyms-compat
IBUS_Arabic_dad, macro in ibuskeysyms-compat
IBUS_Arabic_dal, macro in ibuskeysyms-compat
IBUS_Arabic_damma, macro in ibuskeysyms-compat
IBUS_Arabic_dammatan, macro in ibuskeysyms-compat
IBUS_Arabic_ddal, macro in ibuskeysyms-compat
IBUS_Arabic_farsi_yeh, macro in ibuskeysyms-compat
IBUS_Arabic_fatha, macro in ibuskeysyms-compat
IBUS_Arabic_fathatan, macro in ibuskeysyms-compat
IBUS_Arabic_feh, macro in ibuskeysyms-compat
IBUS_Arabic_fullstop, macro in ibuskeysyms-compat
IBUS_Arabic_gaf, macro in ibuskeysyms-compat
IBUS_Arabic_ghain, macro in ibuskeysyms-compat
IBUS_Arabic_ha, macro in ibuskeysyms-compat
IBUS_Arabic_hah, macro in ibuskeysyms-compat
IBUS_Arabic_hamza, macro in ibuskeysyms-compat
IBUS_Arabic_hamzaonalef, macro in ibuskeysyms-compat
IBUS_Arabic_hamzaonwaw, macro in ibuskeysyms-compat
IBUS_Arabic_hamzaonyeh, macro in ibuskeysyms-compat
IBUS_Arabic_hamzaunderalef, macro in ibuskeysyms-compat
IBUS_Arabic_hamza_above, macro in ibuskeysyms-compat
IBUS_Arabic_hamza_below, macro in ibuskeysyms-compat
IBUS_Arabic_heh, macro in ibuskeysyms-compat
IBUS_Arabic_heh_doachashmee, macro in ibuskeysyms-compat
IBUS_Arabic_heh_goal, macro in ibuskeysyms-compat
IBUS_Arabic_jeem, macro in ibuskeysyms-compat
IBUS_Arabic_jeh, macro in ibuskeysyms-compat
IBUS_Arabic_kaf, macro in ibuskeysyms-compat
IBUS_Arabic_kasra, macro in ibuskeysyms-compat
IBUS_Arabic_kasratan, macro in ibuskeysyms-compat
IBUS_Arabic_keheh, macro in ibuskeysyms-compat
IBUS_Arabic_khah, macro in ibuskeysyms-compat
IBUS_Arabic_lam, macro in ibuskeysyms-compat
IBUS_Arabic_maddaonalef, macro in ibuskeysyms-compat
IBUS_Arabic_madda_above, macro in ibuskeysyms-compat
IBUS_Arabic_meem, macro in ibuskeysyms-compat
IBUS_Arabic_noon, macro in ibuskeysyms-compat
IBUS_Arabic_noon_ghunna, macro in ibuskeysyms-compat
IBUS_Arabic_peh, macro in ibuskeysyms-compat
IBUS_Arabic_percent, macro in ibuskeysyms-compat
IBUS_Arabic_qaf, macro in ibuskeysyms-compat
IBUS_Arabic_question_mark, macro in ibuskeysyms-compat
IBUS_Arabic_ra, macro in ibuskeysyms-compat
IBUS_Arabic_rreh, macro in ibuskeysyms-compat
IBUS_Arabic_sad, macro in ibuskeysyms-compat
IBUS_Arabic_seen, macro in ibuskeysyms-compat
IBUS_Arabic_semicolon, macro in ibuskeysyms-compat
IBUS_Arabic_shadda, macro in ibuskeysyms-compat
IBUS_Arabic_sheen, macro in ibuskeysyms-compat
IBUS_Arabic_sukun, macro in ibuskeysyms-compat
IBUS_Arabic_superscript_alef, macro in ibuskeysyms-compat
IBUS_Arabic_switch, macro in ibuskeysyms-compat
IBUS_Arabic_tah, macro in ibuskeysyms-compat
IBUS_Arabic_tatweel, macro in ibuskeysyms-compat
IBUS_Arabic_tcheh, macro in ibuskeysyms-compat
IBUS_Arabic_teh, macro in ibuskeysyms-compat
IBUS_Arabic_tehmarbuta, macro in ibuskeysyms-compat
IBUS_Arabic_thal, macro in ibuskeysyms-compat
IBUS_Arabic_theh, macro in ibuskeysyms-compat
IBUS_Arabic_tteh, macro in ibuskeysyms-compat
IBUS_Arabic_veh, macro in ibuskeysyms-compat
IBUS_Arabic_waw, macro in ibuskeysyms-compat
IBUS_Arabic_yeh, macro in ibuskeysyms-compat
IBUS_Arabic_yeh_baree, macro in ibuskeysyms-compat
IBUS_Arabic_zah, macro in ibuskeysyms-compat
IBUS_Arabic_zain, macro in ibuskeysyms-compat
IBUS_Aring, macro in ibuskeysyms-compat
IBUS_aring, macro in ibuskeysyms-compat
IBUS_Armenian_accent, macro in ibuskeysyms-compat
IBUS_Armenian_amanak, macro in ibuskeysyms-compat
IBUS_Armenian_apostrophe, macro in ibuskeysyms-compat
IBUS_Armenian_AT, macro in ibuskeysyms-compat
IBUS_Armenian_at, macro in ibuskeysyms-compat
IBUS_Armenian_AYB, macro in ibuskeysyms-compat
IBUS_Armenian_ayb, macro in ibuskeysyms-compat
IBUS_Armenian_BEN, macro in ibuskeysyms-compat
IBUS_Armenian_ben, macro in ibuskeysyms-compat
IBUS_Armenian_but, macro in ibuskeysyms-compat
IBUS_Armenian_CHA, macro in ibuskeysyms-compat
IBUS_Armenian_cha, macro in ibuskeysyms-compat
IBUS_Armenian_DA, macro in ibuskeysyms-compat
IBUS_Armenian_da, macro in ibuskeysyms-compat
IBUS_Armenian_DZA, macro in ibuskeysyms-compat
IBUS_Armenian_dza, macro in ibuskeysyms-compat
IBUS_Armenian_E, macro in ibuskeysyms-compat
IBUS_Armenian_e, macro in ibuskeysyms-compat
IBUS_Armenian_exclam, macro in ibuskeysyms-compat
IBUS_Armenian_FE, macro in ibuskeysyms-compat
IBUS_Armenian_fe, macro in ibuskeysyms-compat
IBUS_Armenian_full_stop, macro in ibuskeysyms-compat
IBUS_Armenian_GHAT, macro in ibuskeysyms-compat
IBUS_Armenian_ghat, macro in ibuskeysyms-compat
IBUS_Armenian_GIM, macro in ibuskeysyms-compat
IBUS_Armenian_gim, macro in ibuskeysyms-compat
IBUS_Armenian_HI, macro in ibuskeysyms-compat
IBUS_Armenian_hi, macro in ibuskeysyms-compat
IBUS_Armenian_HO, macro in ibuskeysyms-compat
IBUS_Armenian_ho, macro in ibuskeysyms-compat
IBUS_Armenian_hyphen, macro in ibuskeysyms-compat
IBUS_Armenian_INI, macro in ibuskeysyms-compat
IBUS_Armenian_ini, macro in ibuskeysyms-compat
IBUS_Armenian_JE, macro in ibuskeysyms-compat
IBUS_Armenian_je, macro in ibuskeysyms-compat
IBUS_Armenian_KE, macro in ibuskeysyms-compat
IBUS_Armenian_ke, macro in ibuskeysyms-compat
IBUS_Armenian_KEN, macro in ibuskeysyms-compat
IBUS_Armenian_ken, macro in ibuskeysyms-compat
IBUS_Armenian_KHE, macro in ibuskeysyms-compat
IBUS_Armenian_khe, macro in ibuskeysyms-compat
IBUS_Armenian_ligature_ew, macro in ibuskeysyms-compat
IBUS_Armenian_LYUN, macro in ibuskeysyms-compat
IBUS_Armenian_lyun, macro in ibuskeysyms-compat
IBUS_Armenian_MEN, macro in ibuskeysyms-compat
IBUS_Armenian_men, macro in ibuskeysyms-compat
IBUS_Armenian_NU, macro in ibuskeysyms-compat
IBUS_Armenian_nu, macro in ibuskeysyms-compat
IBUS_Armenian_O, macro in ibuskeysyms-compat
IBUS_Armenian_o, macro in ibuskeysyms-compat
IBUS_Armenian_paruyk, macro in ibuskeysyms-compat
IBUS_Armenian_PE, macro in ibuskeysyms-compat
IBUS_Armenian_pe, macro in ibuskeysyms-compat
IBUS_Armenian_PYUR, macro in ibuskeysyms-compat
IBUS_Armenian_pyur, macro in ibuskeysyms-compat
IBUS_Armenian_question, macro in ibuskeysyms-compat
IBUS_Armenian_RA, macro in ibuskeysyms-compat
IBUS_Armenian_ra, macro in ibuskeysyms-compat
IBUS_Armenian_RE, macro in ibuskeysyms-compat
IBUS_Armenian_re, macro in ibuskeysyms-compat
IBUS_Armenian_SE, macro in ibuskeysyms-compat
IBUS_Armenian_se, macro in ibuskeysyms-compat
IBUS_Armenian_separation_mark, macro in ibuskeysyms-compat
IBUS_Armenian_SHA, macro in ibuskeysyms-compat
IBUS_Armenian_sha, macro in ibuskeysyms-compat
IBUS_Armenian_shesht, macro in ibuskeysyms-compat
IBUS_Armenian_TCHE, macro in ibuskeysyms-compat
IBUS_Armenian_tche, macro in ibuskeysyms-compat
IBUS_Armenian_TO, macro in ibuskeysyms-compat
IBUS_Armenian_to, macro in ibuskeysyms-compat
IBUS_Armenian_TSA, macro in ibuskeysyms-compat
IBUS_Armenian_tsa, macro in ibuskeysyms-compat
IBUS_Armenian_TSO, macro in ibuskeysyms-compat
IBUS_Armenian_tso, macro in ibuskeysyms-compat
IBUS_Armenian_TYUN, macro in ibuskeysyms-compat
IBUS_Armenian_tyun, macro in ibuskeysyms-compat
IBUS_Armenian_verjaket, macro in ibuskeysyms-compat
IBUS_Armenian_VEV, macro in ibuskeysyms-compat
IBUS_Armenian_vev, macro in ibuskeysyms-compat
IBUS_Armenian_VO, macro in ibuskeysyms-compat
IBUS_Armenian_vo, macro in ibuskeysyms-compat
IBUS_Armenian_VYUN, macro in ibuskeysyms-compat
IBUS_Armenian_vyun, macro in ibuskeysyms-compat
IBUS_Armenian_YECH, macro in ibuskeysyms-compat
IBUS_Armenian_yech, macro in ibuskeysyms-compat
IBUS_Armenian_yentamna, macro in ibuskeysyms-compat
IBUS_Armenian_ZA, macro in ibuskeysyms-compat
IBUS_Armenian_za, macro in ibuskeysyms-compat
IBUS_Armenian_ZHE, macro in ibuskeysyms-compat
IBUS_Armenian_zhe, macro in ibuskeysyms-compat
IBUS_asciicircum, macro in ibuskeysyms-compat
IBUS_asciitilde, macro in ibuskeysyms-compat
IBUS_asterisk, macro in ibuskeysyms-compat
IBUS_at, macro in ibuskeysyms-compat
IBUS_Atilde, macro in ibuskeysyms-compat
IBUS_atilde, macro in ibuskeysyms-compat
IBusAttribute, struct in IBusAttribute
ibus_attribute_get_attr_type, function in IBusAttribute
ibus_attribute_get_end_index, function in IBusAttribute
ibus_attribute_get_start_index, function in IBusAttribute
ibus_attribute_get_value, function in IBusAttribute
ibus_attribute_new, function in IBusAttribute
IBusAttrList, struct in IBusAttrList
IBusAttrType, enum in IBusAttribute
IBusAttrUnderline, enum in IBusAttribute
ibus_attr_background_new, function in IBusAttribute
ibus_attr_foreground_new, function in IBusAttribute
ibus_attr_list_append, function in IBusAttrList
ibus_attr_list_get, function in IBusAttrList
ibus_attr_list_new, function in IBusAttrList
ibus_attr_underline_new, function in IBusAttribute
IBUS_AudibleBell_Enable, macro in ibuskeysyms-compat

B

IBUS_B, macro in ibuskeysyms-compat
IBUS_b, macro in ibuskeysyms-compat
IBUS_Babovedot, macro in ibuskeysyms-compat
IBUS_babovedot, macro in ibuskeysyms-compat
IBUS_backslash, macro in ibuskeysyms-compat
IBUS_BackSpace, macro in ibuskeysyms-compat
IBUS_ballotcross, macro in ibuskeysyms-compat
IBUS_bar, macro in ibuskeysyms-compat
IBUS_because, macro in ibuskeysyms-compat
IBUS_Begin, macro in ibuskeysyms-compat
IBUS_blank, macro in ibuskeysyms-compat
IBUS_botintegral, macro in ibuskeysyms-compat
IBUS_botleftparens, macro in ibuskeysyms-compat
IBUS_botleftsqbracket, macro in ibuskeysyms-compat
IBUS_botleftsummation, macro in ibuskeysyms-compat
IBUS_botrightparens, macro in ibuskeysyms-compat
IBUS_botrightsqbracket, macro in ibuskeysyms-compat
IBUS_botrightsummation, macro in ibuskeysyms-compat
IBUS_bott, macro in ibuskeysyms-compat
IBUS_botvertsummationconnector, macro in ibuskeysyms-compat
IBUS_BounceKeys_Enable, macro in ibuskeysyms-compat
IBUS_braceleft, macro in ibuskeysyms-compat
IBUS_braceright, macro in ibuskeysyms-compat
IBUS_bracketleft, macro in ibuskeysyms-compat
IBUS_bracketright, macro in ibuskeysyms-compat
IBUS_braille_blank, macro in ibuskeysyms-compat
IBUS_braille_dots_1, macro in ibuskeysyms-compat
IBUS_braille_dots_12, macro in ibuskeysyms-compat
IBUS_braille_dots_123, macro in ibuskeysyms-compat
IBUS_braille_dots_1234, macro in ibuskeysyms-compat
IBUS_braille_dots_12345, macro in ibuskeysyms-compat
IBUS_braille_dots_123456, macro in ibuskeysyms-compat
IBUS_braille_dots_1234567, macro in ibuskeysyms-compat
IBUS_braille_dots_12345678, macro in ibuskeysyms-compat
IBUS_braille_dots_1234568, macro in ibuskeysyms-compat
IBUS_braille_dots_123457, macro in ibuskeysyms-compat
IBUS_braille_dots_1234578, macro in ibuskeysyms-compat
IBUS_braille_dots_123458, macro in ibuskeysyms-compat
IBUS_braille_dots_12346, macro in ibuskeysyms-compat
IBUS_braille_dots_123467, macro in ibuskeysyms-compat
IBUS_braille_dots_1234678, macro in ibuskeysyms-compat
IBUS_braille_dots_123468, macro in ibuskeysyms-compat
IBUS_braille_dots_12347, macro in ibuskeysyms-compat
IBUS_braille_dots_123478, macro in ibuskeysyms-compat
IBUS_braille_dots_12348, macro in ibuskeysyms-compat
IBUS_braille_dots_1235, macro in ibuskeysyms-compat
IBUS_braille_dots_12356, macro in ibuskeysyms-compat
IBUS_braille_dots_123567, macro in ibuskeysyms-compat
IBUS_braille_dots_1235678, macro in ibuskeysyms-compat
IBUS_braille_dots_123568, macro in ibuskeysyms-compat
IBUS_braille_dots_12357, macro in ibuskeysyms-compat
IBUS_braille_dots_123578, macro in ibuskeysyms-compat
IBUS_braille_dots_12358, macro in ibuskeysyms-compat
IBUS_braille_dots_1236, macro in ibuskeysyms-compat
IBUS_braille_dots_12367, macro in ibuskeysyms-compat
IBUS_braille_dots_123678, macro in ibuskeysyms-compat
IBUS_braille_dots_12368, macro in ibuskeysyms-compat
IBUS_braille_dots_1237, macro in ibuskeysyms-compat
IBUS_braille_dots_12378, macro in ibuskeysyms-compat
IBUS_braille_dots_1238, macro in ibuskeysyms-compat
IBUS_braille_dots_124, macro in ibuskeysyms-compat
IBUS_braille_dots_1245, macro in ibuskeysyms-compat
IBUS_braille_dots_12456, macro in ibuskeysyms-compat
IBUS_braille_dots_124567, macro in ibuskeysyms-compat
IBUS_braille_dots_1245678, macro in ibuskeysyms-compat
IBUS_braille_dots_124568, macro in ibuskeysyms-compat
IBUS_braille_dots_12457, macro in ibuskeysyms-compat
IBUS_braille_dots_124578, macro in ibuskeysyms-compat
IBUS_braille_dots_12458, macro in ibuskeysyms-compat
IBUS_braille_dots_1246, macro in ibuskeysyms-compat
IBUS_braille_dots_12467, macro in ibuskeysyms-compat
IBUS_braille_dots_124678, macro in ibuskeysyms-compat
IBUS_braille_dots_12468, macro in ibuskeysyms-compat
IBUS_braille_dots_1247, macro in ibuskeysyms-compat
IBUS_braille_dots_12478, macro in ibuskeysyms-compat
IBUS_braille_dots_1248, macro in ibuskeysyms-compat
IBUS_braille_dots_125, macro in ibuskeysyms-compat
IBUS_braille_dots_1256, macro in ibuskeysyms-compat
IBUS_braille_dots_12567, macro in ibuskeysyms-compat
IBUS_braille_dots_125678, macro in ibuskeysyms-compat
IBUS_braille_dots_12568, macro in ibuskeysyms-compat
IBUS_braille_dots_1257, macro in ibuskeysyms-compat
IBUS_braille_dots_12578, macro in ibuskeysyms-compat
IBUS_braille_dots_1258, macro in ibuskeysyms-compat
IBUS_braille_dots_126, macro in ibuskeysyms-compat
IBUS_braille_dots_1267, macro in ibuskeysyms-compat
IBUS_braille_dots_12678, macro in ibuskeysyms-compat
IBUS_braille_dots_1268, macro in ibuskeysyms-compat
IBUS_braille_dots_127, macro in ibuskeysyms-compat
IBUS_braille_dots_1278, macro in ibuskeysyms-compat
IBUS_braille_dots_128, macro in ibuskeysyms-compat
IBUS_braille_dots_13, macro in ibuskeysyms-compat
IBUS_braille_dots_134, macro in ibuskeysyms-compat
IBUS_braille_dots_1345, macro in ibuskeysyms-compat
IBUS_braille_dots_13456, macro in ibuskeysyms-compat
IBUS_braille_dots_134567, macro in ibuskeysyms-compat
IBUS_braille_dots_1345678, macro in ibuskeysyms-compat
IBUS_braille_dots_134568, macro in ibuskeysyms-compat
IBUS_braille_dots_13457, macro in ibuskeysyms-compat
IBUS_braille_dots_134578, macro in ibuskeysyms-compat
IBUS_braille_dots_13458, macro in ibuskeysyms-compat
IBUS_braille_dots_1346, macro in ibuskeysyms-compat
IBUS_braille_dots_13467, macro in ibuskeysyms-compat
IBUS_braille_dots_134678, macro in ibuskeysyms-compat
IBUS_braille_dots_13468, macro in ibuskeysyms-compat
IBUS_braille_dots_1347, macro in ibuskeysyms-compat
IBUS_braille_dots_13478, macro in ibuskeysyms-compat
IBUS_braille_dots_1348, macro in ibuskeysyms-compat
IBUS_braille_dots_135, macro in ibuskeysyms-compat
IBUS_braille_dots_1356, macro in ibuskeysyms-compat
IBUS_braille_dots_13567, macro in ibuskeysyms-compat
IBUS_braille_dots_135678, macro in ibuskeysyms-compat
IBUS_braille_dots_13568, macro in ibuskeysyms-compat
IBUS_braille_dots_1357, macro in ibuskeysyms-compat
IBUS_braille_dots_13578, macro in ibuskeysyms-compat
IBUS_braille_dots_1358, macro in ibuskeysyms-compat
IBUS_braille_dots_136, macro in ibuskeysyms-compat
IBUS_braille_dots_1367, macro in ibuskeysyms-compat
IBUS_braille_dots_13678, macro in ibuskeysyms-compat
IBUS_braille_dots_1368, macro in ibuskeysyms-compat
IBUS_braille_dots_137, macro in ibuskeysyms-compat
IBUS_braille_dots_1378, macro in ibuskeysyms-compat
IBUS_braille_dots_138, macro in ibuskeysyms-compat
IBUS_braille_dots_14, macro in ibuskeysyms-compat
IBUS_braille_dots_145, macro in ibuskeysyms-compat
IBUS_braille_dots_1456, macro in ibuskeysyms-compat
IBUS_braille_dots_14567, macro in ibuskeysyms-compat
IBUS_braille_dots_145678, macro in ibuskeysyms-compat
IBUS_braille_dots_14568, macro in ibuskeysyms-compat
IBUS_braille_dots_1457, macro in ibuskeysyms-compat
IBUS_braille_dots_14578, macro in ibuskeysyms-compat
IBUS_braille_dots_1458, macro in ibuskeysyms-compat
IBUS_braille_dots_146, macro in ibuskeysyms-compat
IBUS_braille_dots_1467, macro in ibuskeysyms-compat
IBUS_braille_dots_14678, macro in ibuskeysyms-compat
IBUS_braille_dots_1468, macro in ibuskeysyms-compat
IBUS_braille_dots_147, macro in ibuskeysyms-compat
IBUS_braille_dots_1478, macro in ibuskeysyms-compat
IBUS_braille_dots_148, macro in ibuskeysyms-compat
IBUS_braille_dots_15, macro in ibuskeysyms-compat
IBUS_braille_dots_156, macro in ibuskeysyms-compat
IBUS_braille_dots_1567, macro in ibuskeysyms-compat
IBUS_braille_dots_15678, macro in ibuskeysyms-compat
IBUS_braille_dots_1568, macro in ibuskeysyms-compat
IBUS_braille_dots_157, macro in ibuskeysyms-compat
IBUS_braille_dots_1578, macro in ibuskeysyms-compat
IBUS_braille_dots_158, macro in ibuskeysyms-compat
IBUS_braille_dots_16, macro in ibuskeysyms-compat
IBUS_braille_dots_167, macro in ibuskeysyms-compat
IBUS_braille_dots_1678, macro in ibuskeysyms-compat
IBUS_braille_dots_168, macro in ibuskeysyms-compat
IBUS_braille_dots_17, macro in ibuskeysyms-compat
IBUS_braille_dots_178, macro in ibuskeysyms-compat
IBUS_braille_dots_18, macro in ibuskeysyms-compat
IBUS_braille_dots_2, macro in ibuskeysyms-compat
IBUS_braille_dots_23, macro in ibuskeysyms-compat
IBUS_braille_dots_234, macro in ibuskeysyms-compat
IBUS_braille_dots_2345, macro in ibuskeysyms-compat
IBUS_braille_dots_23456, macro in ibuskeysyms-compat
IBUS_braille_dots_234567, macro in ibuskeysyms-compat
IBUS_braille_dots_2345678, macro in ibuskeysyms-compat
IBUS_braille_dots_234568, macro in ibuskeysyms-compat
IBUS_braille_dots_23457, macro in ibuskeysyms-compat
IBUS_braille_dots_234578, macro in ibuskeysyms-compat
IBUS_braille_dots_23458, macro in ibuskeysyms-compat
IBUS_braille_dots_2346, macro in ibuskeysyms-compat
IBUS_braille_dots_23467, macro in ibuskeysyms-compat
IBUS_braille_dots_234678, macro in ibuskeysyms-compat
IBUS_braille_dots_23468, macro in ibuskeysyms-compat
IBUS_braille_dots_2347, macro in ibuskeysyms-compat
IBUS_braille_dots_23478, macro in ibuskeysyms-compat
IBUS_braille_dots_2348, macro in ibuskeysyms-compat
IBUS_braille_dots_235, macro in ibuskeysyms-compat
IBUS_braille_dots_2356, macro in ibuskeysyms-compat
IBUS_braille_dots_23567, macro in ibuskeysyms-compat
IBUS_braille_dots_235678, macro in ibuskeysyms-compat
IBUS_braille_dots_23568, macro in ibuskeysyms-compat
IBUS_braille_dots_2357, macro in ibuskeysyms-compat
IBUS_braille_dots_23578, macro in ibuskeysyms-compat
IBUS_braille_dots_2358, macro in ibuskeysyms-compat
IBUS_braille_dots_236, macro in ibuskeysyms-compat
IBUS_braille_dots_2367, macro in ibuskeysyms-compat
IBUS_braille_dots_23678, macro in ibuskeysyms-compat
IBUS_braille_dots_2368, macro in ibuskeysyms-compat
IBUS_braille_dots_237, macro in ibuskeysyms-compat
IBUS_braille_dots_2378, macro in ibuskeysyms-compat
IBUS_braille_dots_238, macro in ibuskeysyms-compat
IBUS_braille_dots_24, macro in ibuskeysyms-compat
IBUS_braille_dots_245, macro in ibuskeysyms-compat
IBUS_braille_dots_2456, macro in ibuskeysyms-compat
IBUS_braille_dots_24567, macro in ibuskeysyms-compat
IBUS_braille_dots_245678, macro in ibuskeysyms-compat
IBUS_braille_dots_24568, macro in ibuskeysyms-compat
IBUS_braille_dots_2457, macro in ibuskeysyms-compat
IBUS_braille_dots_24578, macro in ibuskeysyms-compat
IBUS_braille_dots_2458, macro in ibuskeysyms-compat
IBUS_braille_dots_246, macro in ibuskeysyms-compat
IBUS_braille_dots_2467, macro in ibuskeysyms-compat
IBUS_braille_dots_24678, macro in ibuskeysyms-compat
IBUS_braille_dots_2468, macro in ibuskeysyms-compat
IBUS_braille_dots_247, macro in ibuskeysyms-compat
IBUS_braille_dots_2478, macro in ibuskeysyms-compat
IBUS_braille_dots_248, macro in ibuskeysyms-compat
IBUS_braille_dots_25, macro in ibuskeysyms-compat
IBUS_braille_dots_256, macro in ibuskeysyms-compat
IBUS_braille_dots_2567, macro in ibuskeysyms-compat
IBUS_braille_dots_25678, macro in ibuskeysyms-compat
IBUS_braille_dots_2568, macro in ibuskeysyms-compat
IBUS_braille_dots_257, macro in ibuskeysyms-compat
IBUS_braille_dots_2578, macro in ibuskeysyms-compat
IBUS_braille_dots_258, macro in ibuskeysyms-compat
IBUS_braille_dots_26, macro in ibuskeysyms-compat
IBUS_braille_dots_267, macro in ibuskeysyms-compat
IBUS_braille_dots_2678, macro in ibuskeysyms-compat
IBUS_braille_dots_268, macro in ibuskeysyms-compat
IBUS_braille_dots_27, macro in ibuskeysyms-compat
IBUS_braille_dots_278, macro in ibuskeysyms-compat
IBUS_braille_dots_28, macro in ibuskeysyms-compat
IBUS_braille_dots_3, macro in ibuskeysyms-compat
IBUS_braille_dots_34, macro in ibuskeysyms-compat
IBUS_braille_dots_345, macro in ibuskeysyms-compat
IBUS_braille_dots_3456, macro in ibuskeysyms-compat
IBUS_braille_dots_34567, macro in ibuskeysyms-compat
IBUS_braille_dots_345678, macro in ibuskeysyms-compat
IBUS_braille_dots_34568, macro in ibuskeysyms-compat
IBUS_braille_dots_3457, macro in ibuskeysyms-compat
IBUS_braille_dots_34578, macro in ibuskeysyms-compat
IBUS_braille_dots_3458, macro in ibuskeysyms-compat
IBUS_braille_dots_346, macro in ibuskeysyms-compat
IBUS_braille_dots_3467, macro in ibuskeysyms-compat
IBUS_braille_dots_34678, macro in ibuskeysyms-compat
IBUS_braille_dots_3468, macro in ibuskeysyms-compat
IBUS_braille_dots_347, macro in ibuskeysyms-compat
IBUS_braille_dots_3478, macro in ibuskeysyms-compat
IBUS_braille_dots_348, macro in ibuskeysyms-compat
IBUS_braille_dots_35, macro in ibuskeysyms-compat
IBUS_braille_dots_356, macro in ibuskeysyms-compat
IBUS_braille_dots_3567, macro in ibuskeysyms-compat
IBUS_braille_dots_35678, macro in ibuskeysyms-compat
IBUS_braille_dots_3568, macro in ibuskeysyms-compat
IBUS_braille_dots_357, macro in ibuskeysyms-compat
IBUS_braille_dots_3578, macro in ibuskeysyms-compat
IBUS_braille_dots_358, macro in ibuskeysyms-compat
IBUS_braille_dots_36, macro in ibuskeysyms-compat
IBUS_braille_dots_367, macro in ibuskeysyms-compat
IBUS_braille_dots_3678, macro in ibuskeysyms-compat
IBUS_braille_dots_368, macro in ibuskeysyms-compat
IBUS_braille_dots_37, macro in ibuskeysyms-compat
IBUS_braille_dots_378, macro in ibuskeysyms-compat
IBUS_braille_dots_38, macro in ibuskeysyms-compat
IBUS_braille_dots_4, macro in ibuskeysyms-compat
IBUS_braille_dots_45, macro in ibuskeysyms-compat
IBUS_braille_dots_456, macro in ibuskeysyms-compat
IBUS_braille_dots_4567, macro in ibuskeysyms-compat
IBUS_braille_dots_45678, macro in ibuskeysyms-compat
IBUS_braille_dots_4568, macro in ibuskeysyms-compat
IBUS_braille_dots_457, macro in ibuskeysyms-compat
IBUS_braille_dots_4578, macro in ibuskeysyms-compat
IBUS_braille_dots_458, macro in ibuskeysyms-compat
IBUS_braille_dots_46, macro in ibuskeysyms-compat
IBUS_braille_dots_467, macro in ibuskeysyms-compat
IBUS_braille_dots_4678, macro in ibuskeysyms-compat
IBUS_braille_dots_468, macro in ibuskeysyms-compat
IBUS_braille_dots_47, macro in ibuskeysyms-compat
IBUS_braille_dots_478, macro in ibuskeysyms-compat
IBUS_braille_dots_48, macro in ibuskeysyms-compat
IBUS_braille_dots_5, macro in ibuskeysyms-compat
IBUS_braille_dots_56, macro in ibuskeysyms-compat
IBUS_braille_dots_567, macro in ibuskeysyms-compat
IBUS_braille_dots_5678, macro in ibuskeysyms-compat
IBUS_braille_dots_568, macro in ibuskeysyms-compat
IBUS_braille_dots_57, macro in ibuskeysyms-compat
IBUS_braille_dots_578, macro in ibuskeysyms-compat
IBUS_braille_dots_58, macro in ibuskeysyms-compat
IBUS_braille_dots_6, macro in ibuskeysyms-compat
IBUS_braille_dots_67, macro in ibuskeysyms-compat
IBUS_braille_dots_678, macro in ibuskeysyms-compat
IBUS_braille_dots_68, macro in ibuskeysyms-compat
IBUS_braille_dots_7, macro in ibuskeysyms-compat
IBUS_braille_dots_78, macro in ibuskeysyms-compat
IBUS_braille_dots_8, macro in ibuskeysyms-compat
IBUS_braille_dot_1, macro in ibuskeysyms-compat
IBUS_braille_dot_10, macro in ibuskeysyms-compat
IBUS_braille_dot_2, macro in ibuskeysyms-compat
IBUS_braille_dot_3, macro in ibuskeysyms-compat
IBUS_braille_dot_4, macro in ibuskeysyms-compat
IBUS_braille_dot_5, macro in ibuskeysyms-compat
IBUS_braille_dot_6, macro in ibuskeysyms-compat
IBUS_braille_dot_7, macro in ibuskeysyms-compat
IBUS_braille_dot_8, macro in ibuskeysyms-compat
IBUS_braille_dot_9, macro in ibuskeysyms-compat
IBUS_Break, macro in ibuskeysyms-compat
IBUS_breve, macro in ibuskeysyms-compat
IBUS_brokenbar, macro in ibuskeysyms-compat
IBusBus, struct in IBusBus
IBusBus::connected, object signal in IBusBus
IBusBus::disconnected, object signal in IBusBus
IBusBus::global-engine-changed, object signal in IBusBus
IBusBus::name-owner-changed, object signal in IBusBus
IBusBus:connect-async, object property in IBusBus
IBusBusNameFlag, enum in ibustypes
IBusBusRequestNameReply, enum in ibustypes
IBusBusStartServiceByNameReply, enum in ibustypes
ibus_bus_add_match, function in IBusBus
ibus_bus_add_match_async, function in IBusBus
ibus_bus_add_match_async_finish, function in IBusBus
ibus_bus_create_input_context, function in IBusBus
ibus_bus_create_input_context_async, function in IBusBus
ibus_bus_create_input_context_async_finish, function in IBusBus
ibus_bus_current_input_context, function in IBusBus
ibus_bus_current_input_context_async, function in IBusBus
ibus_bus_current_input_context_async_finish, function in IBusBus
ibus_bus_exit, function in IBusBus
ibus_bus_exit_async, function in IBusBus
ibus_bus_exit_async_finish, function in IBusBus
ibus_bus_get_config, function in IBusBus
ibus_bus_get_connection, function in IBusBus
ibus_bus_get_engines_by_names, function in IBusBus
ibus_bus_get_global_engine, function in IBusBus
ibus_bus_get_global_engine_async, function in IBusBus
ibus_bus_get_global_engine_async_finish, function in IBusBus
ibus_bus_get_ibus_property, function in IBusBus
ibus_bus_get_ibus_property_async, function in IBusBus
ibus_bus_get_ibus_property_async_finish, function in IBusBus
ibus_bus_get_name_owner, function in IBusBus
ibus_bus_get_name_owner_async, function in IBusBus
ibus_bus_get_name_owner_async_finish, function in IBusBus
ibus_bus_get_use_global_engine, function in IBusBus
ibus_bus_get_use_global_engine_async, function in IBusBus
ibus_bus_get_use_global_engine_async_finish, function in IBusBus
ibus_bus_get_use_sys_layout, function in IBusBus
ibus_bus_get_use_sys_layout_async, function in IBusBus
ibus_bus_get_use_sys_layout_async_finish, function in IBusBus
ibus_bus_hello, function in IBusBus
ibus_bus_is_connected, function in IBusBus
ibus_bus_is_global_engine_enabled, function in IBusBus
ibus_bus_is_global_engine_enabled_async, function in IBusBus
ibus_bus_is_global_engine_enabled_async_finish, function in IBusBus
ibus_bus_list_active_engines, function in IBusBus
ibus_bus_list_active_engines_async, function in IBusBus
ibus_bus_list_active_engines_async_finish, function in IBusBus
ibus_bus_list_engines, function in IBusBus
ibus_bus_list_engines_async, function in IBusBus
ibus_bus_list_engines_async_finish, function in IBusBus
ibus_bus_list_names, function in IBusBus
ibus_bus_list_queued_owners, function in IBusBus
ibus_bus_name_has_owner, function in IBusBus
ibus_bus_name_has_owner_async, function in IBusBus
ibus_bus_name_has_owner_async_finish, function in IBusBus
ibus_bus_new, function in IBusBus
ibus_bus_new_async, function in IBusBus
ibus_bus_preload_engines, function in IBusBus
ibus_bus_preload_engines_async, function in IBusBus
ibus_bus_preload_engines_async_finish, function in IBusBus
ibus_bus_register_component, function in IBusBus
ibus_bus_register_component_async, function in IBusBus
ibus_bus_register_component_async_finish, function in IBusBus
ibus_bus_release_name, function in IBusBus
ibus_bus_release_name_async, function in IBusBus
ibus_bus_release_name_async_finish, function in IBusBus
ibus_bus_remove_match, function in IBusBus
ibus_bus_remove_match_async, function in IBusBus
ibus_bus_remove_match_async_finish, function in IBusBus
ibus_bus_request_name, function in IBusBus
ibus_bus_request_name_async, function in IBusBus
ibus_bus_request_name_async_finish, function in IBusBus
ibus_bus_set_global_engine, function in IBusBus
ibus_bus_set_global_engine_async, function in IBusBus
ibus_bus_set_global_engine_async_finish, function in IBusBus
ibus_bus_set_ibus_property, function in IBusBus
ibus_bus_set_ibus_property_async, function in IBusBus
ibus_bus_set_ibus_property_async_finish, function in IBusBus
ibus_bus_set_watch_dbus_signal, function in IBusBus
ibus_bus_set_watch_ibus_signal, function in IBusBus
IBUS_Byelorussian_SHORTU, macro in ibuskeysyms-compat
IBUS_Byelorussian_shortu, macro in ibuskeysyms-compat

C

IBUS_C, macro in ibuskeysyms-compat
IBUS_c, macro in ibuskeysyms-compat
IBUS_Cabovedot, macro in ibuskeysyms-compat
IBUS_cabovedot, macro in ibuskeysyms-compat
IBUS_Cacute, macro in ibuskeysyms-compat
IBUS_cacute, macro in ibuskeysyms-compat
IBUS_Cancel, macro in ibuskeysyms-compat
IBusCapabilite, enum in ibustypes
IBUS_Caps_Lock, macro in ibuskeysyms-compat
IBUS_careof, macro in ibuskeysyms-compat
IBUS_caret, macro in ibuskeysyms-compat
IBUS_caron, macro in ibuskeysyms-compat
IBUS_Ccaron, macro in ibuskeysyms-compat
IBUS_ccaron, macro in ibuskeysyms-compat
IBUS_Ccedilla, macro in ibuskeysyms-compat
IBUS_ccedilla, macro in ibuskeysyms-compat
IBUS_Ccircumflex, macro in ibuskeysyms-compat
IBUS_ccircumflex, macro in ibuskeysyms-compat
IBUS_cedilla, macro in ibuskeysyms-compat
IBUS_cent, macro in ibuskeysyms-compat
IBUS_checkerboard, macro in ibuskeysyms-compat
IBUS_checkmark, macro in ibuskeysyms-compat
IBUS_CHECK_VERSION, macro in ibusversion
IBUS_circle, macro in ibuskeysyms-compat
IBUS_Clear, macro in ibuskeysyms-compat
IBUS_club, macro in ibuskeysyms-compat
IBUS_Codeinput, macro in ibuskeysyms-compat
IBUS_colon, macro in ibuskeysyms-compat
IBUS_ColonSign, macro in ibuskeysyms-compat
IBUS_comma, macro in ibuskeysyms-compat
IBusComponent, struct in IBusComponent
IBusComponent:author, object property in IBusComponent
IBusComponent:command-line, object property in IBusComponent
IBusComponent:description, object property in IBusComponent
IBusComponent:homepage, object property in IBusComponent
IBusComponent:license, object property in IBusComponent
IBusComponent:name, object property in IBusComponent
IBusComponent:textdomain, object property in IBusComponent
IBusComponent:version, object property in IBusComponent
ibus_component_add_engine, function in IBusComponent
ibus_component_add_observed_path, function in IBusComponent
ibus_component_check_modification, function in IBusComponent
ibus_component_get_author, function in IBusComponent
ibus_component_get_description, function in IBusComponent
ibus_component_get_engines, function in IBusComponent
ibus_component_get_exec, function in IBusComponent
ibus_component_get_homepage, function in IBusComponent
ibus_component_get_license, function in IBusComponent
ibus_component_get_name, function in IBusComponent
ibus_component_get_observed_paths, function in IBusComponent
ibus_component_get_textdomain, function in IBusComponent
ibus_component_get_version, function in IBusComponent
ibus_component_new, function in IBusComponent
ibus_component_new_from_file, function in IBusComponent
ibus_component_new_from_xml_node, function in IBusComponent
ibus_component_new_varargs, function in IBusComponent
ibus_component_output, function in IBusComponent
ibus_component_output_engines, function in IBusComponent
IBusConfig, struct in IBusConfig
IBusConfig::value-changed, object signal in IBusConfig
IBusConfigService, struct in IBusConfigService
ibus_config_get_value, function in IBusConfig
ibus_config_get_values, function in IBusConfig
ibus_config_get_values_async, function in IBusConfig
ibus_config_get_values_async_finish, function in IBusConfig
ibus_config_get_value_async, function in IBusConfig
ibus_config_get_value_async_finish, function in IBusConfig
ibus_config_new, function in IBusConfig
ibus_config_new_async, function in IBusConfig
ibus_config_new_async_finish, function in IBusConfig
ibus_config_service_new, function in IBusConfigService
ibus_config_service_value_changed, function in IBusConfigService
ibus_config_set_value, function in IBusConfig
ibus_config_set_value_async, function in IBusConfig
ibus_config_set_value_async_finish, function in IBusConfig
ibus_config_unset, function in IBusConfig
ibus_config_unwatch, function in IBusConfig
ibus_config_watch, function in IBusConfig
IBUS_containsas, macro in ibuskeysyms-compat
IBUS_Control_L, macro in ibuskeysyms-compat
IBUS_Control_R, macro in ibuskeysyms-compat
IBUS_copyright, macro in ibuskeysyms-compat
IBUS_cr, macro in ibuskeysyms-compat
IBUS_crossinglines, macro in ibuskeysyms-compat
IBUS_CruzeiroSign, macro in ibuskeysyms-compat
IBUS_cuberoot, macro in ibuskeysyms-compat
IBUS_currency, macro in ibuskeysyms-compat
IBUS_cursor, macro in ibuskeysyms-compat
IBUS_Cyrillic_A, macro in ibuskeysyms-compat
IBUS_Cyrillic_a, macro in ibuskeysyms-compat
IBUS_Cyrillic_BE, macro in ibuskeysyms-compat
IBUS_Cyrillic_be, macro in ibuskeysyms-compat
IBUS_Cyrillic_CHE, macro in ibuskeysyms-compat
IBUS_Cyrillic_che, macro in ibuskeysyms-compat
IBUS_Cyrillic_CHE_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_che_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_CHE_vertstroke, macro in ibuskeysyms-compat
IBUS_Cyrillic_che_vertstroke, macro in ibuskeysyms-compat
IBUS_Cyrillic_DE, macro in ibuskeysyms-compat
IBUS_Cyrillic_de, macro in ibuskeysyms-compat
IBUS_Cyrillic_DZHE, macro in ibuskeysyms-compat
IBUS_Cyrillic_dzhe, macro in ibuskeysyms-compat
IBUS_Cyrillic_E, macro in ibuskeysyms-compat
IBUS_Cyrillic_e, macro in ibuskeysyms-compat
IBUS_Cyrillic_EF, macro in ibuskeysyms-compat
IBUS_Cyrillic_ef, macro in ibuskeysyms-compat
IBUS_Cyrillic_EL, macro in ibuskeysyms-compat
IBUS_Cyrillic_el, macro in ibuskeysyms-compat
IBUS_Cyrillic_EM, macro in ibuskeysyms-compat
IBUS_Cyrillic_em, macro in ibuskeysyms-compat
IBUS_Cyrillic_EN, macro in ibuskeysyms-compat
IBUS_Cyrillic_en, macro in ibuskeysyms-compat
IBUS_Cyrillic_EN_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_en_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_ER, macro in ibuskeysyms-compat
IBUS_Cyrillic_er, macro in ibuskeysyms-compat
IBUS_Cyrillic_ES, macro in ibuskeysyms-compat
IBUS_Cyrillic_es, macro in ibuskeysyms-compat
IBUS_Cyrillic_GHE, macro in ibuskeysyms-compat
IBUS_Cyrillic_ghe, macro in ibuskeysyms-compat
IBUS_Cyrillic_GHE_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_ghe_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_HA, macro in ibuskeysyms-compat
IBUS_Cyrillic_ha, macro in ibuskeysyms-compat
IBUS_Cyrillic_HARDSIGN, macro in ibuskeysyms-compat
IBUS_Cyrillic_hardsign, macro in ibuskeysyms-compat
IBUS_Cyrillic_HA_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_ha_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_I, macro in ibuskeysyms-compat
IBUS_Cyrillic_i, macro in ibuskeysyms-compat
IBUS_Cyrillic_IE, macro in ibuskeysyms-compat
IBUS_Cyrillic_ie, macro in ibuskeysyms-compat
IBUS_Cyrillic_IO, macro in ibuskeysyms-compat
IBUS_Cyrillic_io, macro in ibuskeysyms-compat
IBUS_Cyrillic_I_macron, macro in ibuskeysyms-compat
IBUS_Cyrillic_i_macron, macro in ibuskeysyms-compat
IBUS_Cyrillic_JE, macro in ibuskeysyms-compat
IBUS_Cyrillic_je, macro in ibuskeysyms-compat
IBUS_Cyrillic_KA, macro in ibuskeysyms-compat
IBUS_Cyrillic_ka, macro in ibuskeysyms-compat
IBUS_Cyrillic_KA_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_ka_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_KA_vertstroke, macro in ibuskeysyms-compat
IBUS_Cyrillic_ka_vertstroke, macro in ibuskeysyms-compat
IBUS_Cyrillic_LJE, macro in ibuskeysyms-compat
IBUS_Cyrillic_lje, macro in ibuskeysyms-compat
IBUS_Cyrillic_NJE, macro in ibuskeysyms-compat
IBUS_Cyrillic_nje, macro in ibuskeysyms-compat
IBUS_Cyrillic_O, macro in ibuskeysyms-compat
IBUS_Cyrillic_o, macro in ibuskeysyms-compat
IBUS_Cyrillic_O_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_o_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_PE, macro in ibuskeysyms-compat
IBUS_Cyrillic_pe, macro in ibuskeysyms-compat
IBUS_Cyrillic_SCHWA, macro in ibuskeysyms-compat
IBUS_Cyrillic_schwa, macro in ibuskeysyms-compat
IBUS_Cyrillic_SHA, macro in ibuskeysyms-compat
IBUS_Cyrillic_sha, macro in ibuskeysyms-compat
IBUS_Cyrillic_SHCHA, macro in ibuskeysyms-compat
IBUS_Cyrillic_shcha, macro in ibuskeysyms-compat
IBUS_Cyrillic_SHHA, macro in ibuskeysyms-compat
IBUS_Cyrillic_shha, macro in ibuskeysyms-compat
IBUS_Cyrillic_SHORTI, macro in ibuskeysyms-compat
IBUS_Cyrillic_shorti, macro in ibuskeysyms-compat
IBUS_Cyrillic_SOFTSIGN, macro in ibuskeysyms-compat
IBUS_Cyrillic_softsign, macro in ibuskeysyms-compat
IBUS_Cyrillic_TE, macro in ibuskeysyms-compat
IBUS_Cyrillic_te, macro in ibuskeysyms-compat
IBUS_Cyrillic_TSE, macro in ibuskeysyms-compat
IBUS_Cyrillic_tse, macro in ibuskeysyms-compat
IBUS_Cyrillic_U, macro in ibuskeysyms-compat
IBUS_Cyrillic_u, macro in ibuskeysyms-compat
IBUS_Cyrillic_U_macron, macro in ibuskeysyms-compat
IBUS_Cyrillic_u_macron, macro in ibuskeysyms-compat
IBUS_Cyrillic_U_straight, macro in ibuskeysyms-compat
IBUS_Cyrillic_u_straight, macro in ibuskeysyms-compat
IBUS_Cyrillic_U_straight_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_u_straight_bar, macro in ibuskeysyms-compat
IBUS_Cyrillic_VE, macro in ibuskeysyms-compat
IBUS_Cyrillic_ve, macro in ibuskeysyms-compat
IBUS_Cyrillic_YA, macro in ibuskeysyms-compat
IBUS_Cyrillic_ya, macro in ibuskeysyms-compat
IBUS_Cyrillic_YERU, macro in ibuskeysyms-compat
IBUS_Cyrillic_yeru, macro in ibuskeysyms-compat
IBUS_Cyrillic_YU, macro in ibuskeysyms-compat
IBUS_Cyrillic_yu, macro in ibuskeysyms-compat
IBUS_Cyrillic_ZE, macro in ibuskeysyms-compat
IBUS_Cyrillic_ze, macro in ibuskeysyms-compat
IBUS_Cyrillic_ZHE, macro in ibuskeysyms-compat
IBUS_Cyrillic_zhe, macro in ibuskeysyms-compat
IBUS_Cyrillic_ZHE_descender, macro in ibuskeysyms-compat
IBUS_Cyrillic_zhe_descender, macro in ibuskeysyms-compat

D

IBUS_D, macro in ibuskeysyms-compat
IBUS_d, macro in ibuskeysyms-compat
IBUS_Dabovedot, macro in ibuskeysyms-compat
IBUS_dabovedot, macro in ibuskeysyms-compat
IBUS_dagger, macro in ibuskeysyms-compat
IBUS_Dcaron, macro in ibuskeysyms-compat
IBUS_dcaron, macro in ibuskeysyms-compat
IBUS_dead_abovecomma, macro in ibuskeysyms-compat
IBUS_dead_abovedot, macro in ibuskeysyms-compat
IBUS_dead_abovereversedcomma, macro in ibuskeysyms-compat
IBUS_dead_abovering, macro in ibuskeysyms-compat
IBUS_dead_acute, macro in ibuskeysyms-compat
IBUS_dead_belowbreve, macro in ibuskeysyms-compat
IBUS_dead_belowcircumflex, macro in ibuskeysyms-compat
IBUS_dead_belowdiaeresis, macro in ibuskeysyms-compat
IBUS_dead_belowdot, macro in ibuskeysyms-compat
IBUS_dead_belowmacron, macro in ibuskeysyms-compat
IBUS_dead_belowring, macro in ibuskeysyms-compat
IBUS_dead_belowtilde, macro in ibuskeysyms-compat
IBUS_dead_breve, macro in ibuskeysyms-compat
IBUS_dead_caron, macro in ibuskeysyms-compat
IBUS_dead_cedilla, macro in ibuskeysyms-compat
IBUS_dead_circumflex, macro in ibuskeysyms-compat
IBUS_dead_dasia, macro in ibuskeysyms-compat
IBUS_dead_diaeresis, macro in ibuskeysyms-compat
IBUS_dead_doubleacute, macro in ibuskeysyms-compat
IBUS_dead_grave, macro in ibuskeysyms-compat
IBUS_dead_hook, macro in ibuskeysyms-compat
IBUS_dead_horn, macro in ibuskeysyms-compat
IBUS_dead_iota, macro in ibuskeysyms-compat
IBUS_dead_macron, macro in ibuskeysyms-compat
IBUS_dead_ogonek, macro in ibuskeysyms-compat
IBUS_dead_perispomeni, macro in ibuskeysyms-compat
IBUS_dead_psili, macro in ibuskeysyms-compat
IBUS_dead_semivoiced_sound, macro in ibuskeysyms-compat
IBUS_dead_stroke, macro in ibuskeysyms-compat
IBUS_dead_tilde, macro in ibuskeysyms-compat
IBUS_dead_voiced_sound, macro in ibuskeysyms-compat
IBUS_decimalpoint, macro in ibuskeysyms-compat
IBUS_degree, macro in ibuskeysyms-compat
IBUS_Delete, macro in ibuskeysyms-compat
IBUS_DEPRECATED, macro in ibusshare
IBUS_diaeresis, macro in ibuskeysyms-compat
IBUS_diamond, macro in ibuskeysyms-compat
IBUS_digitspace, macro in ibuskeysyms-compat
IBUS_dintegral, macro in ibuskeysyms-compat
IBUS_division, macro in ibuskeysyms-compat
IBUS_dollar, macro in ibuskeysyms-compat
IBUS_DongSign, macro in ibuskeysyms-compat
IBUS_doubbaselinedot, macro in ibuskeysyms-compat
IBUS_doubleacute, macro in ibuskeysyms-compat
IBUS_doubledagger, macro in ibuskeysyms-compat
IBUS_doublelowquotemark, macro in ibuskeysyms-compat
IBUS_Down, macro in ibuskeysyms-compat
IBUS_downarrow, macro in ibuskeysyms-compat
IBUS_downcaret, macro in ibuskeysyms-compat
IBUS_downshoe, macro in ibuskeysyms-compat
IBUS_downstile, macro in ibuskeysyms-compat
IBUS_downtack, macro in ibuskeysyms-compat
IBUS_Dstroke, macro in ibuskeysyms-compat
IBUS_dstroke, macro in ibuskeysyms-compat

E

IBUS_E, macro in ibuskeysyms-compat
IBUS_e, macro in ibuskeysyms-compat
IBUS_Eabovedot, macro in ibuskeysyms-compat
IBUS_eabovedot, macro in ibuskeysyms-compat
IBUS_Eacute, macro in ibuskeysyms-compat
IBUS_eacute, macro in ibuskeysyms-compat
IBUS_Ebelowdot, macro in ibuskeysyms-compat
IBUS_ebelowdot, macro in ibuskeysyms-compat
IBUS_Ecaron, macro in ibuskeysyms-compat
IBUS_ecaron, macro in ibuskeysyms-compat
IBUS_Ecircumflex, macro in ibuskeysyms-compat
IBUS_ecircumflex, macro in ibuskeysyms-compat
IBUS_Ecircumflexacute, macro in ibuskeysyms-compat
IBUS_ecircumflexacute, macro in ibuskeysyms-compat
IBUS_Ecircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_ecircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_Ecircumflexgrave, macro in ibuskeysyms-compat
IBUS_ecircumflexgrave, macro in ibuskeysyms-compat
IBUS_Ecircumflexhook, macro in ibuskeysyms-compat
IBUS_ecircumflexhook, macro in ibuskeysyms-compat
IBUS_Ecircumflextilde, macro in ibuskeysyms-compat
IBUS_ecircumflextilde, macro in ibuskeysyms-compat
IBUS_EcuSign, macro in ibuskeysyms-compat
IBUS_Ediaeresis, macro in ibuskeysyms-compat
IBUS_ediaeresis, macro in ibuskeysyms-compat
IBUS_Egrave, macro in ibuskeysyms-compat
IBUS_egrave, macro in ibuskeysyms-compat
IBUS_Ehook, macro in ibuskeysyms-compat
IBUS_ehook, macro in ibuskeysyms-compat
IBUS_eightsubscript, macro in ibuskeysyms-compat
IBUS_eightsuperior, macro in ibuskeysyms-compat
IBUS_Eisu_Shift, macro in ibuskeysyms-compat
IBUS_Eisu_toggle, macro in ibuskeysyms-compat
IBUS_elementof, macro in ibuskeysyms-compat
IBUS_ellipsis, macro in ibuskeysyms-compat
IBUS_em3space, macro in ibuskeysyms-compat
IBUS_em4space, macro in ibuskeysyms-compat
IBUS_Emacron, macro in ibuskeysyms-compat
IBUS_emacron, macro in ibuskeysyms-compat
IBUS_emdash, macro in ibuskeysyms-compat
IBUS_emfilledcircle, macro in ibuskeysyms-compat
IBUS_emfilledrect, macro in ibuskeysyms-compat
IBUS_emopencircle, macro in ibuskeysyms-compat
IBUS_emopenrectangle, macro in ibuskeysyms-compat
IBUS_emptyset, macro in ibuskeysyms-compat
IBUS_emspace, macro in ibuskeysyms-compat
IBUS_End, macro in ibuskeysyms-compat
IBUS_endash, macro in ibuskeysyms-compat
IBUS_enfilledcircbullet, macro in ibuskeysyms-compat
IBUS_enfilledsqbullet, macro in ibuskeysyms-compat
IBUS_ENG, macro in ibuskeysyms-compat
IBUS_eng, macro in ibuskeysyms-compat
IBusEngine, struct in IBusEngine
IBusEngine::cancel-hand-writing, object signal in IBusEngine
IBusEngine::candidate-clicked, object signal in IBusEngine
IBusEngine::cursor-down, object signal in IBusEngine
IBusEngine::cursor-up, object signal in IBusEngine
IBusEngine::disable, object signal in IBusEngine
IBusEngine::enable, object signal in IBusEngine
IBusEngine::focus-in, object signal in IBusEngine
IBusEngine::focus-out, object signal in IBusEngine
IBusEngine::page-down, object signal in IBusEngine
IBusEngine::page-up, object signal in IBusEngine
IBusEngine::process-hand-writing-event, object signal in IBusEngine
IBusEngine::process-key-event, object signal in IBusEngine
IBusEngine::property-activate, object signal in IBusEngine
IBusEngine::property-hide, object signal in IBusEngine
IBusEngine::property-show, object signal in IBusEngine
IBusEngine::reset, object signal in IBusEngine
IBusEngine::set-capabilities, object signal in IBusEngine
IBusEngine::set-content-type, object signal in IBusEngine
IBusEngine::set-cursor-location, object signal in IBusEngine
IBusEngine::set-surrounding-text, object signal in IBusEngine
IBusEngine:engine-name, object property in IBusEngine
IBusEngineDesc, struct in IBusEngineDesc
IBusEngineDesc:author, object property in IBusEngineDesc
IBusEngineDesc:description, object property in IBusEngineDesc
IBusEngineDesc:hotkeys, object property in IBusEngineDesc
IBusEngineDesc:icon, object property in IBusEngineDesc
IBusEngineDesc:icon-prop-key, object property in IBusEngineDesc
IBusEngineDesc:language, object property in IBusEngineDesc
IBusEngineDesc:layout, object property in IBusEngineDesc
IBusEngineDesc:layout-option, object property in IBusEngineDesc
IBusEngineDesc:layout-variant, object property in IBusEngineDesc
IBusEngineDesc:license, object property in IBusEngineDesc
IBusEngineDesc:longname, object property in IBusEngineDesc
IBusEngineDesc:name, object property in IBusEngineDesc
IBusEngineDesc:rank, object property in IBusEngineDesc
IBusEngineDesc:setup, object property in IBusEngineDesc
IBusEngineDesc:symbol, object property in IBusEngineDesc
IBusEngineDesc:textdomain, object property in IBusEngineDesc
IBusEngineDesc:version, object property in IBusEngineDesc
IBusEngineSimple, struct in IBusEngineSimple
ibus_engine_commit_text, function in IBusEngine
ibus_engine_delete_surrounding_text, function in IBusEngine
ibus_engine_desc_get_author, function in IBusEngineDesc
ibus_engine_desc_get_description, function in IBusEngineDesc
ibus_engine_desc_get_hotkeys, function in IBusEngineDesc
ibus_engine_desc_get_icon, function in IBusEngineDesc
ibus_engine_desc_get_icon_prop_key, function in IBusEngineDesc
ibus_engine_desc_get_language, function in IBusEngineDesc
ibus_engine_desc_get_layout, function in IBusEngineDesc
ibus_engine_desc_get_layout_option, function in IBusEngineDesc
ibus_engine_desc_get_layout_variant, function in IBusEngineDesc
ibus_engine_desc_get_license, function in IBusEngineDesc
ibus_engine_desc_get_longname, function in IBusEngineDesc
ibus_engine_desc_get_name, function in IBusEngineDesc
ibus_engine_desc_get_rank, function in IBusEngineDesc
ibus_engine_desc_get_setup, function in IBusEngineDesc
ibus_engine_desc_get_symbol, function in IBusEngineDesc
ibus_engine_desc_get_textdomain, function in IBusEngineDesc
ibus_engine_desc_get_version, function in IBusEngineDesc
ibus_engine_desc_new, function in IBusEngineDesc
ibus_engine_desc_new_from_xml_node, function in IBusEngineDesc
ibus_engine_desc_new_varargs, function in IBusEngineDesc
ibus_engine_desc_output, function in IBusEngineDesc
ibus_engine_forward_key_event, function in IBusEngine
ibus_engine_get_content_type, function in IBusEngine
ibus_engine_get_name, function in IBusEngine
ibus_engine_get_surrounding_text, function in IBusEngine
ibus_engine_hide_auxiliary_text, function in IBusEngine
ibus_engine_hide_lookup_table, function in IBusEngine
ibus_engine_hide_preedit_text, function in IBusEngine
ibus_engine_new, function in IBusEngine
ibus_engine_new_with_type, function in IBusEngine
ibus_engine_register_properties, function in IBusEngine
ibus_engine_show_auxiliary_text, function in IBusEngine
ibus_engine_show_lookup_table, function in IBusEngine
ibus_engine_show_preedit_text, function in IBusEngine
ibus_engine_simple_add_compose_file, function in IBusEngineSimple
ibus_engine_simple_add_table, function in IBusEngineSimple
ibus_engine_simple_add_table_by_locale, function in IBusEngineSimple
ibus_engine_update_auxiliary_text, function in IBusEngine
ibus_engine_update_lookup_table, function in IBusEngine
ibus_engine_update_lookup_table_fast, function in IBusEngine
ibus_engine_update_preedit_text, function in IBusEngine
ibus_engine_update_preedit_text_with_mode, function in IBusEngine
ibus_engine_update_property, function in IBusEngine
IBUS_enopencircbullet, macro in ibuskeysyms-compat
IBUS_enopensquarebullet, macro in ibuskeysyms-compat
IBUS_enspace, macro in ibuskeysyms-compat
IBUS_Eogonek, macro in ibuskeysyms-compat
IBUS_eogonek, macro in ibuskeysyms-compat
IBUS_equal, macro in ibuskeysyms-compat
IBUS_ERROR, macro in ibuserror
IBusError, enum in ibustypes
ibus_error_quark, function in ibuserror
IBUS_Escape, macro in ibuskeysyms-compat
IBUS_ETH, macro in ibuskeysyms-compat
IBUS_Eth, macro in ibuskeysyms-compat
IBUS_eth, macro in ibuskeysyms-compat
IBUS_Etilde, macro in ibuskeysyms-compat
IBUS_etilde, macro in ibuskeysyms-compat
IBUS_EuroSign, macro in ibuskeysyms-compat
IBUS_exclam, macro in ibuskeysyms-compat
IBUS_exclamdown, macro in ibuskeysyms-compat
IBUS_Execute, macro in ibuskeysyms-compat

F

IBUS_F, macro in ibuskeysyms-compat
IBUS_f, macro in ibuskeysyms-compat
IBUS_F1, macro in ibuskeysyms-compat
IBUS_F10, macro in ibuskeysyms-compat
IBUS_F11, macro in ibuskeysyms-compat
IBUS_F12, macro in ibuskeysyms-compat
IBUS_F13, macro in ibuskeysyms-compat
IBUS_F14, macro in ibuskeysyms-compat
IBUS_F15, macro in ibuskeysyms-compat
IBUS_F16, macro in ibuskeysyms-compat
IBUS_F17, macro in ibuskeysyms-compat
IBUS_F18, macro in ibuskeysyms-compat
IBUS_F19, macro in ibuskeysyms-compat
IBUS_F2, macro in ibuskeysyms-compat
IBUS_F20, macro in ibuskeysyms-compat
IBUS_F21, macro in ibuskeysyms-compat
IBUS_F22, macro in ibuskeysyms-compat
IBUS_F23, macro in ibuskeysyms-compat
IBUS_F24, macro in ibuskeysyms-compat
IBUS_F25, macro in ibuskeysyms-compat
IBUS_F26, macro in ibuskeysyms-compat
IBUS_F27, macro in ibuskeysyms-compat
IBUS_F28, macro in ibuskeysyms-compat
IBUS_F29, macro in ibuskeysyms-compat
IBUS_F3, macro in ibuskeysyms-compat
IBUS_F30, macro in ibuskeysyms-compat
IBUS_F31, macro in ibuskeysyms-compat
IBUS_F32, macro in ibuskeysyms-compat
IBUS_F33, macro in ibuskeysyms-compat
IBUS_F34, macro in ibuskeysyms-compat
IBUS_F35, macro in ibuskeysyms-compat
IBUS_F4, macro in ibuskeysyms-compat
IBUS_F5, macro in ibuskeysyms-compat
IBUS_F6, macro in ibuskeysyms-compat
IBUS_F7, macro in ibuskeysyms-compat
IBUS_F8, macro in ibuskeysyms-compat
IBUS_F9, macro in ibuskeysyms-compat
IBUS_Fabovedot, macro in ibuskeysyms-compat
IBUS_fabovedot, macro in ibuskeysyms-compat
IBusFactory, struct in IBusFactory
IBusFactory::create-engine, object signal in IBusFactory
ibus_factory_add_engine, function in IBusFactory
ibus_factory_create_engine, function in IBusFactory
ibus_factory_new, function in IBusFactory
IBUS_Farsi_0, macro in ibuskeysyms-compat
IBUS_Farsi_1, macro in ibuskeysyms-compat
IBUS_Farsi_2, macro in ibuskeysyms-compat
IBUS_Farsi_3, macro in ibuskeysyms-compat
IBUS_Farsi_4, macro in ibuskeysyms-compat
IBUS_Farsi_5, macro in ibuskeysyms-compat
IBUS_Farsi_6, macro in ibuskeysyms-compat
IBUS_Farsi_7, macro in ibuskeysyms-compat
IBUS_Farsi_8, macro in ibuskeysyms-compat
IBUS_Farsi_9, macro in ibuskeysyms-compat
IBUS_Farsi_yeh, macro in ibuskeysyms-compat
IBUS_femalesymbol, macro in ibuskeysyms-compat
IBUS_ff, macro in ibuskeysyms-compat
IBUS_FFrancSign, macro in ibuskeysyms-compat
IBUS_figdash, macro in ibuskeysyms-compat
IBUS_filledlefttribullet, macro in ibuskeysyms-compat
IBUS_filledrectbullet, macro in ibuskeysyms-compat
IBUS_filledrighttribullet, macro in ibuskeysyms-compat
IBUS_filledtribulletdown, macro in ibuskeysyms-compat
IBUS_filledtribulletup, macro in ibuskeysyms-compat
IBUS_Find, macro in ibuskeysyms-compat
IBUS_First_Virtual_Screen, macro in ibuskeysyms-compat
IBUS_fiveeighths, macro in ibuskeysyms-compat
IBUS_fivesixths, macro in ibuskeysyms-compat
IBUS_fivesubscript, macro in ibuskeysyms-compat
IBUS_fivesuperior, macro in ibuskeysyms-compat
IBUS_fourfifths, macro in ibuskeysyms-compat
IBUS_foursubscript, macro in ibuskeysyms-compat
IBUS_foursuperior, macro in ibuskeysyms-compat
IBUS_fourthroot, macro in ibuskeysyms-compat
IBusFreeFunc, user_function in ibustypes
ibus_free_strv, function in ibusshare
IBUS_function, macro in ibuskeysyms-compat

G

IBUS_G, macro in ibuskeysyms-compat
IBUS_g, macro in ibuskeysyms-compat
IBUS_Gabovedot, macro in ibuskeysyms-compat
IBUS_gabovedot, macro in ibuskeysyms-compat
IBUS_Gbreve, macro in ibuskeysyms-compat
IBUS_gbreve, macro in ibuskeysyms-compat
IBUS_Gcaron, macro in ibuskeysyms-compat
IBUS_gcaron, macro in ibuskeysyms-compat
IBUS_Gcedilla, macro in ibuskeysyms-compat
IBUS_gcedilla, macro in ibuskeysyms-compat
IBUS_Gcircumflex, macro in ibuskeysyms-compat
IBUS_gcircumflex, macro in ibuskeysyms-compat
IBUS_Georgian_an, macro in ibuskeysyms-compat
IBUS_Georgian_ban, macro in ibuskeysyms-compat
IBUS_Georgian_can, macro in ibuskeysyms-compat
IBUS_Georgian_char, macro in ibuskeysyms-compat
IBUS_Georgian_chin, macro in ibuskeysyms-compat
IBUS_Georgian_cil, macro in ibuskeysyms-compat
IBUS_Georgian_don, macro in ibuskeysyms-compat
IBUS_Georgian_en, macro in ibuskeysyms-compat
IBUS_Georgian_fi, macro in ibuskeysyms-compat
IBUS_Georgian_gan, macro in ibuskeysyms-compat
IBUS_Georgian_ghan, macro in ibuskeysyms-compat
IBUS_Georgian_hae, macro in ibuskeysyms-compat
IBUS_Georgian_har, macro in ibuskeysyms-compat
IBUS_Georgian_he, macro in ibuskeysyms-compat
IBUS_Georgian_hie, macro in ibuskeysyms-compat
IBUS_Georgian_hoe, macro in ibuskeysyms-compat
IBUS_Georgian_in, macro in ibuskeysyms-compat
IBUS_Georgian_jhan, macro in ibuskeysyms-compat
IBUS_Georgian_jil, macro in ibuskeysyms-compat
IBUS_Georgian_kan, macro in ibuskeysyms-compat
IBUS_Georgian_khar, macro in ibuskeysyms-compat
IBUS_Georgian_las, macro in ibuskeysyms-compat
IBUS_Georgian_man, macro in ibuskeysyms-compat
IBUS_Georgian_nar, macro in ibuskeysyms-compat
IBUS_Georgian_on, macro in ibuskeysyms-compat
IBUS_Georgian_par, macro in ibuskeysyms-compat
IBUS_Georgian_phar, macro in ibuskeysyms-compat
IBUS_Georgian_qar, macro in ibuskeysyms-compat
IBUS_Georgian_rae, macro in ibuskeysyms-compat
IBUS_Georgian_san, macro in ibuskeysyms-compat
IBUS_Georgian_shin, macro in ibuskeysyms-compat
IBUS_Georgian_tan, macro in ibuskeysyms-compat
IBUS_Georgian_tar, macro in ibuskeysyms-compat
IBUS_Georgian_un, macro in ibuskeysyms-compat
IBUS_Georgian_vin, macro in ibuskeysyms-compat
IBUS_Georgian_we, macro in ibuskeysyms-compat
IBUS_Georgian_xan, macro in ibuskeysyms-compat
IBUS_Georgian_zen, macro in ibuskeysyms-compat
IBUS_Georgian_zhar, macro in ibuskeysyms-compat
ibus_get_address, function in ibusshare
ibus_get_daemon_uid, function in ibusshare
ibus_get_language_name, function in ibusutil
ibus_get_local_machine_id, function in ibusshare
ibus_get_socket_path, function in ibusshare
ibus_get_timeout, function in ibusshare
ibus_get_untranslated_language_name, function in ibusutil
ibus_get_user_name, function in ibusshare
IBUS_grave, macro in ibuskeysyms-compat
IBUS_greater, macro in ibuskeysyms-compat
IBUS_greaterthanequal, macro in ibuskeysyms-compat
IBUS_Greek_accentdieresis, macro in ibuskeysyms-compat
IBUS_Greek_ALPHA, macro in ibuskeysyms-compat
IBUS_Greek_alpha, macro in ibuskeysyms-compat
IBUS_Greek_ALPHAaccent, macro in ibuskeysyms-compat
IBUS_Greek_alphaaccent, macro in ibuskeysyms-compat
IBUS_Greek_BETA, macro in ibuskeysyms-compat
IBUS_Greek_beta, macro in ibuskeysyms-compat
IBUS_Greek_CHI, macro in ibuskeysyms-compat
IBUS_Greek_chi, macro in ibuskeysyms-compat
IBUS_Greek_DELTA, macro in ibuskeysyms-compat
IBUS_Greek_delta, macro in ibuskeysyms-compat
IBUS_Greek_EPSILON, macro in ibuskeysyms-compat
IBUS_Greek_epsilon, macro in ibuskeysyms-compat
IBUS_Greek_EPSILONaccent, macro in ibuskeysyms-compat
IBUS_Greek_epsilonaccent, macro in ibuskeysyms-compat
IBUS_Greek_ETA, macro in ibuskeysyms-compat
IBUS_Greek_eta, macro in ibuskeysyms-compat
IBUS_Greek_ETAaccent, macro in ibuskeysyms-compat
IBUS_Greek_etaaccent, macro in ibuskeysyms-compat
IBUS_Greek_finalsmallsigma, macro in ibuskeysyms-compat
IBUS_Greek_GAMMA, macro in ibuskeysyms-compat
IBUS_Greek_gamma, macro in ibuskeysyms-compat
IBUS_Greek_horizbar, macro in ibuskeysyms-compat
IBUS_Greek_IOTA, macro in ibuskeysyms-compat
IBUS_Greek_iota, macro in ibuskeysyms-compat
IBUS_Greek_IOTAaccent, macro in ibuskeysyms-compat
IBUS_Greek_iotaaccent, macro in ibuskeysyms-compat
IBUS_Greek_iotaaccentdieresis, macro in ibuskeysyms-compat
IBUS_Greek_IOTAdiaeresis, macro in ibuskeysyms-compat
IBUS_Greek_IOTAdieresis, macro in ibuskeysyms-compat
IBUS_Greek_iotadieresis, macro in ibuskeysyms-compat
IBUS_Greek_KAPPA, macro in ibuskeysyms-compat
IBUS_Greek_kappa, macro in ibuskeysyms-compat
IBUS_Greek_LAMBDA, macro in ibuskeysyms-compat
IBUS_Greek_lambda, macro in ibuskeysyms-compat
IBUS_Greek_LAMDA, macro in ibuskeysyms-compat
IBUS_Greek_lamda, macro in ibuskeysyms-compat
IBUS_Greek_MU, macro in ibuskeysyms-compat
IBUS_Greek_mu, macro in ibuskeysyms-compat
IBUS_Greek_NU, macro in ibuskeysyms-compat
IBUS_Greek_nu, macro in ibuskeysyms-compat
IBUS_Greek_OMEGA, macro in ibuskeysyms-compat
IBUS_Greek_omega, macro in ibuskeysyms-compat
IBUS_Greek_OMEGAaccent, macro in ibuskeysyms-compat
IBUS_Greek_omegaaccent, macro in ibuskeysyms-compat
IBUS_Greek_OMICRON, macro in ibuskeysyms-compat
IBUS_Greek_omicron, macro in ibuskeysyms-compat
IBUS_Greek_OMICRONaccent, macro in ibuskeysyms-compat
IBUS_Greek_omicronaccent, macro in ibuskeysyms-compat
IBUS_Greek_PHI, macro in ibuskeysyms-compat
IBUS_Greek_phi, macro in ibuskeysyms-compat
IBUS_Greek_PI, macro in ibuskeysyms-compat
IBUS_Greek_pi, macro in ibuskeysyms-compat
IBUS_Greek_PSI, macro in ibuskeysyms-compat
IBUS_Greek_psi, macro in ibuskeysyms-compat
IBUS_Greek_RHO, macro in ibuskeysyms-compat
IBUS_Greek_rho, macro in ibuskeysyms-compat
IBUS_Greek_SIGMA, macro in ibuskeysyms-compat
IBUS_Greek_sigma, macro in ibuskeysyms-compat
IBUS_Greek_switch, macro in ibuskeysyms-compat
IBUS_Greek_TAU, macro in ibuskeysyms-compat
IBUS_Greek_tau, macro in ibuskeysyms-compat
IBUS_Greek_THETA, macro in ibuskeysyms-compat
IBUS_Greek_theta, macro in ibuskeysyms-compat
IBUS_Greek_UPSILON, macro in ibuskeysyms-compat
IBUS_Greek_upsilon, macro in ibuskeysyms-compat
IBUS_Greek_UPSILONaccent, macro in ibuskeysyms-compat
IBUS_Greek_upsilonaccent, macro in ibuskeysyms-compat
IBUS_Greek_upsilonaccentdieresis, macro in ibuskeysyms-compat
IBUS_Greek_UPSILONdieresis, macro in ibuskeysyms-compat
IBUS_Greek_upsilondieresis, macro in ibuskeysyms-compat
IBUS_Greek_XI, macro in ibuskeysyms-compat
IBUS_Greek_xi, macro in ibuskeysyms-compat
IBUS_Greek_ZETA, macro in ibuskeysyms-compat
IBUS_Greek_zeta, macro in ibuskeysyms-compat
IBUS_guillemotleft, macro in ibuskeysyms-compat
IBUS_guillemotright, macro in ibuskeysyms-compat

H

IBUS_H, macro in ibuskeysyms-compat
IBUS_h, macro in ibuskeysyms-compat
IBUS_hairspace, macro in ibuskeysyms-compat
IBUS_Hangul, macro in ibuskeysyms-compat
IBUS_Hangul_A, macro in ibuskeysyms-compat
IBUS_Hangul_AE, macro in ibuskeysyms-compat
IBUS_Hangul_AraeA, macro in ibuskeysyms-compat
IBUS_Hangul_AraeAE, macro in ibuskeysyms-compat
IBUS_Hangul_Banja, macro in ibuskeysyms-compat
IBUS_Hangul_Cieuc, macro in ibuskeysyms-compat
IBUS_Hangul_Codeinput, macro in ibuskeysyms-compat
IBUS_Hangul_Dikeud, macro in ibuskeysyms-compat
IBUS_Hangul_E, macro in ibuskeysyms-compat
IBUS_Hangul_End, macro in ibuskeysyms-compat
IBUS_Hangul_EO, macro in ibuskeysyms-compat
IBUS_Hangul_EU, macro in ibuskeysyms-compat
IBUS_Hangul_Hanja, macro in ibuskeysyms-compat
IBUS_Hangul_Hieuh, macro in ibuskeysyms-compat
IBUS_Hangul_I, macro in ibuskeysyms-compat
IBUS_Hangul_Ieung, macro in ibuskeysyms-compat
IBUS_Hangul_Jamo, macro in ibuskeysyms-compat
IBUS_Hangul_Jeonja, macro in ibuskeysyms-compat
IBUS_Hangul_Jieuj, macro in ibuskeysyms-compat
IBUS_Hangul_J_Cieuc, macro in ibuskeysyms-compat
IBUS_Hangul_J_Dikeud, macro in ibuskeysyms-compat
IBUS_Hangul_J_Hieuh, macro in ibuskeysyms-compat
IBUS_Hangul_J_Ieung, macro in ibuskeysyms-compat
IBUS_Hangul_J_Jieuj, macro in ibuskeysyms-compat
IBUS_Hangul_J_Khieuq, macro in ibuskeysyms-compat
IBUS_Hangul_J_Kiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_J_KiyeogSios, macro in ibuskeysyms-compat
IBUS_Hangul_J_KkogjiDalrinIeung, macro in ibuskeysyms-compat
IBUS_Hangul_J_Mieum, macro in ibuskeysyms-compat
IBUS_Hangul_J_Nieun, macro in ibuskeysyms-compat
IBUS_Hangul_J_NieunHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_J_NieunJieuj, macro in ibuskeysyms-compat
IBUS_Hangul_J_PanSios, macro in ibuskeysyms-compat
IBUS_Hangul_J_Phieuf, macro in ibuskeysyms-compat
IBUS_Hangul_J_Pieub, macro in ibuskeysyms-compat
IBUS_Hangul_J_PieubSios, macro in ibuskeysyms-compat
IBUS_Hangul_J_Rieul, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulKiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulMieum, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulPhieuf, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulPieub, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulSios, macro in ibuskeysyms-compat
IBUS_Hangul_J_RieulTieut, macro in ibuskeysyms-compat
IBUS_Hangul_J_Sios, macro in ibuskeysyms-compat
IBUS_Hangul_J_SsangKiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_J_SsangSios, macro in ibuskeysyms-compat
IBUS_Hangul_J_Tieut, macro in ibuskeysyms-compat
IBUS_Hangul_J_YeorinHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_Khieuq, macro in ibuskeysyms-compat
IBUS_Hangul_Kiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_KiyeogSios, macro in ibuskeysyms-compat
IBUS_Hangul_KkogjiDalrinIeung, macro in ibuskeysyms-compat
IBUS_Hangul_Mieum, macro in ibuskeysyms-compat
IBUS_Hangul_MultipleCandidate, macro in ibuskeysyms-compat
IBUS_Hangul_Nieun, macro in ibuskeysyms-compat
IBUS_Hangul_NieunHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_NieunJieuj, macro in ibuskeysyms-compat
IBUS_Hangul_O, macro in ibuskeysyms-compat
IBUS_Hangul_OE, macro in ibuskeysyms-compat
IBUS_Hangul_PanSios, macro in ibuskeysyms-compat
IBUS_Hangul_Phieuf, macro in ibuskeysyms-compat
IBUS_Hangul_Pieub, macro in ibuskeysyms-compat
IBUS_Hangul_PieubSios, macro in ibuskeysyms-compat
IBUS_Hangul_PostHanja, macro in ibuskeysyms-compat
IBUS_Hangul_PreHanja, macro in ibuskeysyms-compat
IBUS_Hangul_PreviousCandidate, macro in ibuskeysyms-compat
IBUS_Hangul_Rieul, macro in ibuskeysyms-compat
IBUS_Hangul_RieulHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_RieulKiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_RieulMieum, macro in ibuskeysyms-compat
IBUS_Hangul_RieulPhieuf, macro in ibuskeysyms-compat
IBUS_Hangul_RieulPieub, macro in ibuskeysyms-compat
IBUS_Hangul_RieulSios, macro in ibuskeysyms-compat
IBUS_Hangul_RieulTieut, macro in ibuskeysyms-compat
IBUS_Hangul_RieulYeorinHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_Romaja, macro in ibuskeysyms-compat
IBUS_Hangul_SingleCandidate, macro in ibuskeysyms-compat
IBUS_Hangul_Sios, macro in ibuskeysyms-compat
IBUS_Hangul_Special, macro in ibuskeysyms-compat
IBUS_Hangul_SsangDikeud, macro in ibuskeysyms-compat
IBUS_Hangul_SsangJieuj, macro in ibuskeysyms-compat
IBUS_Hangul_SsangKiyeog, macro in ibuskeysyms-compat
IBUS_Hangul_SsangPieub, macro in ibuskeysyms-compat
IBUS_Hangul_SsangSios, macro in ibuskeysyms-compat
IBUS_Hangul_Start, macro in ibuskeysyms-compat
IBUS_Hangul_SunkyeongeumMieum, macro in ibuskeysyms-compat
IBUS_Hangul_SunkyeongeumPhieuf, macro in ibuskeysyms-compat
IBUS_Hangul_SunkyeongeumPieub, macro in ibuskeysyms-compat
IBUS_Hangul_switch, macro in ibuskeysyms-compat
IBUS_Hangul_Tieut, macro in ibuskeysyms-compat
IBUS_Hangul_U, macro in ibuskeysyms-compat
IBUS_Hangul_WA, macro in ibuskeysyms-compat
IBUS_Hangul_WAE, macro in ibuskeysyms-compat
IBUS_Hangul_WE, macro in ibuskeysyms-compat
IBUS_Hangul_WEO, macro in ibuskeysyms-compat
IBUS_Hangul_WI, macro in ibuskeysyms-compat
IBUS_Hangul_YA, macro in ibuskeysyms-compat
IBUS_Hangul_YAE, macro in ibuskeysyms-compat
IBUS_Hangul_YE, macro in ibuskeysyms-compat
IBUS_Hangul_YEO, macro in ibuskeysyms-compat
IBUS_Hangul_YeorinHieuh, macro in ibuskeysyms-compat
IBUS_Hangul_YI, macro in ibuskeysyms-compat
IBUS_Hangul_YO, macro in ibuskeysyms-compat
IBUS_Hangul_YU, macro in ibuskeysyms-compat
IBUS_Hankaku, macro in ibuskeysyms-compat
IBUS_Hcircumflex, macro in ibuskeysyms-compat
IBUS_hcircumflex, macro in ibuskeysyms-compat
IBUS_heart, macro in ibuskeysyms-compat
IBUS_hebrew_aleph, macro in ibuskeysyms-compat
IBUS_hebrew_ayin, macro in ibuskeysyms-compat
IBUS_hebrew_bet, macro in ibuskeysyms-compat
IBUS_hebrew_beth, macro in ibuskeysyms-compat
IBUS_hebrew_chet, macro in ibuskeysyms-compat
IBUS_hebrew_dalet, macro in ibuskeysyms-compat
IBUS_hebrew_daleth, macro in ibuskeysyms-compat
IBUS_hebrew_doublelowline, macro in ibuskeysyms-compat
IBUS_hebrew_finalkaph, macro in ibuskeysyms-compat
IBUS_hebrew_finalmem, macro in ibuskeysyms-compat
IBUS_hebrew_finalnun, macro in ibuskeysyms-compat
IBUS_hebrew_finalpe, macro in ibuskeysyms-compat
IBUS_hebrew_finalzade, macro in ibuskeysyms-compat
IBUS_hebrew_finalzadi, macro in ibuskeysyms-compat
IBUS_hebrew_gimel, macro in ibuskeysyms-compat
IBUS_hebrew_gimmel, macro in ibuskeysyms-compat
IBUS_hebrew_he, macro in ibuskeysyms-compat
IBUS_hebrew_het, macro in ibuskeysyms-compat
IBUS_hebrew_kaph, macro in ibuskeysyms-compat
IBUS_hebrew_kuf, macro in ibuskeysyms-compat
IBUS_hebrew_lamed, macro in ibuskeysyms-compat
IBUS_hebrew_mem, macro in ibuskeysyms-compat
IBUS_hebrew_nun, macro in ibuskeysyms-compat
IBUS_hebrew_pe, macro in ibuskeysyms-compat
IBUS_hebrew_qoph, macro in ibuskeysyms-compat
IBUS_hebrew_resh, macro in ibuskeysyms-compat
IBUS_hebrew_samech, macro in ibuskeysyms-compat
IBUS_hebrew_samekh, macro in ibuskeysyms-compat
IBUS_hebrew_shin, macro in ibuskeysyms-compat
IBUS_Hebrew_switch, macro in ibuskeysyms-compat
IBUS_hebrew_taf, macro in ibuskeysyms-compat
IBUS_hebrew_taw, macro in ibuskeysyms-compat
IBUS_hebrew_tet, macro in ibuskeysyms-compat
IBUS_hebrew_teth, macro in ibuskeysyms-compat
IBUS_hebrew_waw, macro in ibuskeysyms-compat
IBUS_hebrew_yod, macro in ibuskeysyms-compat
IBUS_hebrew_zade, macro in ibuskeysyms-compat
IBUS_hebrew_zadi, macro in ibuskeysyms-compat
IBUS_hebrew_zain, macro in ibuskeysyms-compat
IBUS_hebrew_zayin, macro in ibuskeysyms-compat
IBUS_Help, macro in ibuskeysyms-compat
IBUS_Henkan, macro in ibuskeysyms-compat
IBUS_Henkan_Mode, macro in ibuskeysyms-compat
IBUS_hexagram, macro in ibuskeysyms-compat
IBUS_Hiragana, macro in ibuskeysyms-compat
IBUS_Hiragana_Katakana, macro in ibuskeysyms-compat
IBUS_Home, macro in ibuskeysyms-compat
IBUS_horizconnector, macro in ibuskeysyms-compat
IBUS_horizlinescan1, macro in ibuskeysyms-compat
IBUS_horizlinescan3, macro in ibuskeysyms-compat
IBUS_horizlinescan5, macro in ibuskeysyms-compat
IBUS_horizlinescan7, macro in ibuskeysyms-compat
IBUS_horizlinescan9, macro in ibuskeysyms-compat
IBusHotkeyProfile, struct in IBusHotkeyProfile
IBusHotkeyProfile::trigger, object signal in IBusHotkeyProfile
ibus_hotkey_profile_add_hotkey, function in IBusHotkeyProfile
ibus_hotkey_profile_add_hotkey_from_string, function in IBusHotkeyProfile
ibus_hotkey_profile_filter_key_event, function in IBusHotkeyProfile
ibus_hotkey_profile_lookup_hotkey, function in IBusHotkeyProfile
ibus_hotkey_profile_remove_hotkey, function in IBusHotkeyProfile
ibus_hotkey_profile_remove_hotkey_by_event, function in IBusHotkeyProfile
IBUS_Hstroke, macro in ibuskeysyms-compat
IBUS_hstroke, macro in ibuskeysyms-compat
IBUS_ht, macro in ibuskeysyms-compat
IBUS_Hyper_L, macro in ibuskeysyms-compat
IBUS_Hyper_R, macro in ibuskeysyms-compat
IBUS_hyphen, macro in ibuskeysyms-compat

I

IBUS_I, macro in ibuskeysyms-compat
IBUS_i, macro in ibuskeysyms-compat
IBUS_Iabovedot, macro in ibuskeysyms-compat
IBUS_Iacute, macro in ibuskeysyms-compat
IBUS_iacute, macro in ibuskeysyms-compat
IBUS_Ibelowdot, macro in ibuskeysyms-compat
IBUS_ibelowdot, macro in ibuskeysyms-compat
IBUS_Ibreve, macro in ibuskeysyms-compat
IBUS_ibreve, macro in ibuskeysyms-compat
IBUS_Icircumflex, macro in ibuskeysyms-compat
IBUS_icircumflex, macro in ibuskeysyms-compat
IBUS_identical, macro in ibuskeysyms-compat
IBUS_Idiaeresis, macro in ibuskeysyms-compat
IBUS_idiaeresis, macro in ibuskeysyms-compat
IBUS_idotless, macro in ibuskeysyms-compat
IBUS_ifonlyif, macro in ibuskeysyms-compat
IBUS_Igrave, macro in ibuskeysyms-compat
IBUS_igrave, macro in ibuskeysyms-compat
IBUS_Ihook, macro in ibuskeysyms-compat
IBUS_ihook, macro in ibuskeysyms-compat
IBUS_Imacron, macro in ibuskeysyms-compat
IBUS_imacron, macro in ibuskeysyms-compat
IBUS_implies, macro in ibuskeysyms-compat
IBUS_includedin, macro in ibuskeysyms-compat
IBUS_includes, macro in ibuskeysyms-compat
IBUS_infinity, macro in ibuskeysyms-compat
ibus_init, function in ibusshare
IBusInputContext, struct in IBusInputContext
IBusInputContext::commit-text, object signal in IBusInputContext
IBusInputContext::cursor-down-lookup-table, object signal in IBusInputContext
IBusInputContext::cursor-up-lookup-table, object signal in IBusInputContext
IBusInputContext::delete-surrounding-text, object signal in IBusInputContext
IBusInputContext::disabled, object signal in IBusInputContext
IBusInputContext::enabled, object signal in IBusInputContext
IBusInputContext::forward-key-event, object signal in IBusInputContext
IBusInputContext::hide-auxiliary-text, object signal in IBusInputContext
IBusInputContext::hide-lookup-table, object signal in IBusInputContext
IBusInputContext::hide-preedit-text, object signal in IBusInputContext
IBusInputContext::page-down-lookup-table, object signal in IBusInputContext
IBusInputContext::page-up-lookup-table, object signal in IBusInputContext
IBusInputContext::register-properties, object signal in IBusInputContext
IBusInputContext::show-auxiliary-text, object signal in IBusInputContext
IBusInputContext::show-lookup-table, object signal in IBusInputContext
IBusInputContext::show-preedit-text, object signal in IBusInputContext
IBusInputContext::update-auxiliary-text, object signal in IBusInputContext
IBusInputContext::update-lookup-table, object signal in IBusInputContext
IBusInputContext::update-preedit-text, object signal in IBusInputContext
IBusInputContext::update-property, object signal in IBusInputContext
IBusInputHints, enum in ibustypes
IBusInputPurpose, enum in ibustypes
ibus_input_context_cancel_hand_writing, function in IBusInputContext
ibus_input_context_focus_in, function in IBusInputContext
ibus_input_context_focus_out, function in IBusInputContext
ibus_input_context_get_engine, function in IBusInputContext
ibus_input_context_get_engine_async, function in IBusInputContext
ibus_input_context_get_engine_async_finish, function in IBusInputContext
ibus_input_context_get_input_context, function in IBusInputContext
ibus_input_context_get_input_context_async, function in IBusInputContext
ibus_input_context_get_input_context_async_finish, function in IBusInputContext
ibus_input_context_needs_surrounding_text, function in IBusInputContext
ibus_input_context_new, function in IBusInputContext
ibus_input_context_new_async, function in IBusInputContext
ibus_input_context_new_async_finish, function in IBusInputContext
ibus_input_context_process_hand_writing_event, function in IBusInputContext
ibus_input_context_process_key_event, function in IBusInputContext
ibus_input_context_process_key_event_async, function in IBusInputContext
ibus_input_context_process_key_event_async_finish, function in IBusInputContext
ibus_input_context_property_activate, function in IBusInputContext
ibus_input_context_reset, function in IBusInputContext
ibus_input_context_set_capabilities, function in IBusInputContext
ibus_input_context_set_content_type, function in IBusInputContext
ibus_input_context_set_cursor_location, function in IBusInputContext
ibus_input_context_set_engine, function in IBusInputContext
ibus_input_context_set_surrounding_text, function in IBusInputContext
IBUS_Insert, macro in ibuskeysyms-compat
IBUS_integral, macro in ibuskeysyms-compat
IBUS_INTERFACE_CONFIG, macro in ibusshare
IBUS_INTERFACE_ENGINE, macro in ibusshare
IBUS_INTERFACE_FACTORY, macro in ibusshare
IBUS_INTERFACE_IBUS, macro in ibusshare
IBUS_INTERFACE_INPUT_CONTEXT, macro in ibusshare
IBUS_INTERFACE_NOTIFICATIONS, macro in ibusshare
IBUS_INTERFACE_PANEL, macro in ibusshare
IBUS_intersection, macro in ibuskeysyms-compat
IBUS_Iogonek, macro in ibuskeysyms-compat
IBUS_iogonek, macro in ibuskeysyms-compat
IBUS_ISO_Center_Object, macro in ibuskeysyms-compat
IBUS_ISO_Continuous_Underline, macro in ibuskeysyms-compat
IBUS_ISO_Discontinuous_Underline, macro in ibuskeysyms-compat
IBUS_ISO_Emphasize, macro in ibuskeysyms-compat
IBUS_ISO_Enter, macro in ibuskeysyms-compat
IBUS_ISO_Fast_Cursor_Down, macro in ibuskeysyms-compat
IBUS_ISO_Fast_Cursor_Left, macro in ibuskeysyms-compat
IBUS_ISO_Fast_Cursor_Right, macro in ibuskeysyms-compat
IBUS_ISO_Fast_Cursor_Up, macro in ibuskeysyms-compat
IBUS_ISO_First_Group, macro in ibuskeysyms-compat
IBUS_ISO_First_Group_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Group_Latch, macro in ibuskeysyms-compat
IBUS_ISO_Group_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Group_Shift, macro in ibuskeysyms-compat
IBUS_ISO_Last_Group, macro in ibuskeysyms-compat
IBUS_ISO_Last_Group_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Left_Tab, macro in ibuskeysyms-compat
IBUS_ISO_Level2_Latch, macro in ibuskeysyms-compat
IBUS_ISO_Level3_Latch, macro in ibuskeysyms-compat
IBUS_ISO_Level3_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Level3_Shift, macro in ibuskeysyms-compat
IBUS_ISO_Level5_Latch, macro in ibuskeysyms-compat
IBUS_ISO_Level5_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Level5_Shift, macro in ibuskeysyms-compat
IBUS_ISO_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Move_Line_Down, macro in ibuskeysyms-compat
IBUS_ISO_Move_Line_Up, macro in ibuskeysyms-compat
IBUS_ISO_Next_Group, macro in ibuskeysyms-compat
IBUS_ISO_Next_Group_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Partial_Line_Down, macro in ibuskeysyms-compat
IBUS_ISO_Partial_Line_Up, macro in ibuskeysyms-compat
IBUS_ISO_Partial_Space_Left, macro in ibuskeysyms-compat
IBUS_ISO_Partial_Space_Right, macro in ibuskeysyms-compat
IBUS_ISO_Prev_Group, macro in ibuskeysyms-compat
IBUS_ISO_Prev_Group_Lock, macro in ibuskeysyms-compat
IBUS_ISO_Release_Both_Margins, macro in ibuskeysyms-compat
IBUS_ISO_Release_Margin_Left, macro in ibuskeysyms-compat
IBUS_ISO_Release_Margin_Right, macro in ibuskeysyms-compat
IBUS_ISO_Set_Margin_Left, macro in ibuskeysyms-compat
IBUS_ISO_Set_Margin_Right, macro in ibuskeysyms-compat
IBUS_Itilde, macro in ibuskeysyms-compat
IBUS_itilde, macro in ibuskeysyms-compat

J

IBUS_J, macro in ibuskeysyms-compat
IBUS_j, macro in ibuskeysyms-compat
IBUS_Jcircumflex, macro in ibuskeysyms-compat
IBUS_jcircumflex, macro in ibuskeysyms-compat
IBUS_jot, macro in ibuskeysyms-compat

K

IBUS_K, macro in ibuskeysyms-compat
IBUS_k, macro in ibuskeysyms-compat
IBUS_kana_A, macro in ibuskeysyms-compat
IBUS_kana_a, macro in ibuskeysyms-compat
IBUS_kana_CHI, macro in ibuskeysyms-compat
IBUS_kana_closingbracket, macro in ibuskeysyms-compat
IBUS_kana_comma, macro in ibuskeysyms-compat
IBUS_kana_conjunctive, macro in ibuskeysyms-compat
IBUS_kana_E, macro in ibuskeysyms-compat
IBUS_kana_e, macro in ibuskeysyms-compat
IBUS_kana_FU, macro in ibuskeysyms-compat
IBUS_kana_fullstop, macro in ibuskeysyms-compat
IBUS_kana_HA, macro in ibuskeysyms-compat
IBUS_kana_HE, macro in ibuskeysyms-compat
IBUS_kana_HI, macro in ibuskeysyms-compat
IBUS_kana_HO, macro in ibuskeysyms-compat
IBUS_kana_HU, macro in ibuskeysyms-compat
IBUS_kana_I, macro in ibuskeysyms-compat
IBUS_kana_i, macro in ibuskeysyms-compat
IBUS_kana_KA, macro in ibuskeysyms-compat
IBUS_kana_KE, macro in ibuskeysyms-compat
IBUS_kana_KI, macro in ibuskeysyms-compat
IBUS_kana_KO, macro in ibuskeysyms-compat
IBUS_kana_KU, macro in ibuskeysyms-compat
IBUS_Kana_Lock, macro in ibuskeysyms-compat
IBUS_kana_MA, macro in ibuskeysyms-compat
IBUS_kana_ME, macro in ibuskeysyms-compat
IBUS_kana_MI, macro in ibuskeysyms-compat
IBUS_kana_middledot, macro in ibuskeysyms-compat
IBUS_kana_MO, macro in ibuskeysyms-compat
IBUS_kana_MU, macro in ibuskeysyms-compat
IBUS_kana_N, macro in ibuskeysyms-compat
IBUS_kana_NA, macro in ibuskeysyms-compat
IBUS_kana_NE, macro in ibuskeysyms-compat
IBUS_kana_NI, macro in ibuskeysyms-compat
IBUS_kana_NO, macro in ibuskeysyms-compat
IBUS_kana_NU, macro in ibuskeysyms-compat
IBUS_kana_O, macro in ibuskeysyms-compat
IBUS_kana_o, macro in ibuskeysyms-compat
IBUS_kana_openingbracket, macro in ibuskeysyms-compat
IBUS_kana_RA, macro in ibuskeysyms-compat
IBUS_kana_RE, macro in ibuskeysyms-compat
IBUS_kana_RI, macro in ibuskeysyms-compat
IBUS_kana_RO, macro in ibuskeysyms-compat
IBUS_kana_RU, macro in ibuskeysyms-compat
IBUS_kana_SA, macro in ibuskeysyms-compat
IBUS_kana_SE, macro in ibuskeysyms-compat
IBUS_kana_SHI, macro in ibuskeysyms-compat
IBUS_Kana_Shift, macro in ibuskeysyms-compat
IBUS_kana_SO, macro in ibuskeysyms-compat
IBUS_kana_SU, macro in ibuskeysyms-compat
IBUS_kana_switch, macro in ibuskeysyms-compat
IBUS_kana_TA, macro in ibuskeysyms-compat
IBUS_kana_TE, macro in ibuskeysyms-compat
IBUS_kana_TI, macro in ibuskeysyms-compat
IBUS_kana_TO, macro in ibuskeysyms-compat
IBUS_kana_TSU, macro in ibuskeysyms-compat
IBUS_kana_tsu, macro in ibuskeysyms-compat
IBUS_kana_TU, macro in ibuskeysyms-compat
IBUS_kana_tu, macro in ibuskeysyms-compat
IBUS_kana_U, macro in ibuskeysyms-compat
IBUS_kana_u, macro in ibuskeysyms-compat
IBUS_kana_WA, macro in ibuskeysyms-compat
IBUS_kana_WO, macro in ibuskeysyms-compat
IBUS_kana_YA, macro in ibuskeysyms-compat
IBUS_kana_ya, macro in ibuskeysyms-compat
IBUS_kana_YO, macro in ibuskeysyms-compat
IBUS_kana_yo, macro in ibuskeysyms-compat
IBUS_kana_YU, macro in ibuskeysyms-compat
IBUS_kana_yu, macro in ibuskeysyms-compat
IBUS_Kanji, macro in ibuskeysyms-compat
IBUS_Kanji_Bangou, macro in ibuskeysyms-compat
IBUS_kappa, macro in ibuskeysyms-compat
IBUS_Katakana, macro in ibuskeysyms-compat
IBUS_Kcedilla, macro in ibuskeysyms-compat
IBUS_kcedilla, macro in ibuskeysyms-compat
IBusKeymap, struct in IBusKeymap
ibus_keymap_get, function in IBusKeymap
ibus_keymap_lookup_keysym, function in IBusKeymap
ibus_keymap_new, function in IBusKeymap
ibus_keyval_convert_case, function in ibuskeys
ibus_keyval_from_name, function in ibuskeys
ibus_keyval_name, function in ibuskeys
ibus_keyval_to_lower, function in ibuskeys
ibus_keyval_to_unicode, function in ibuskeys
ibus_keyval_to_upper, function in ibuskeys
IBUS_KEY_0, macro in IBusKeysyms
IBUS_KEY_1, macro in IBusKeysyms
IBUS_KEY_2, macro in IBusKeysyms
IBUS_KEY_3, macro in IBusKeysyms
IBUS_KEY_3270_AltCursor, macro in IBusKeysyms
IBUS_KEY_3270_Attn, macro in IBusKeysyms
IBUS_KEY_3270_BackTab, macro in IBusKeysyms
IBUS_KEY_3270_ChangeScreen, macro in IBusKeysyms
IBUS_KEY_3270_Copy, macro in IBusKeysyms
IBUS_KEY_3270_CursorBlink, macro in IBusKeysyms
IBUS_KEY_3270_CursorSelect, macro in IBusKeysyms
IBUS_KEY_3270_DeleteWord, macro in IBusKeysyms
IBUS_KEY_3270_Duplicate, macro in IBusKeysyms
IBUS_KEY_3270_Enter, macro in IBusKeysyms
IBUS_KEY_3270_EraseEOF, macro in IBusKeysyms
IBUS_KEY_3270_EraseInput, macro in IBusKeysyms
IBUS_KEY_3270_ExSelect, macro in IBusKeysyms
IBUS_KEY_3270_FieldMark, macro in IBusKeysyms
IBUS_KEY_3270_Ident, macro in IBusKeysyms
IBUS_KEY_3270_Jump, macro in IBusKeysyms
IBUS_KEY_3270_KeyClick, macro in IBusKeysyms
IBUS_KEY_3270_Left2, macro in IBusKeysyms
IBUS_KEY_3270_PA1, macro in IBusKeysyms
IBUS_KEY_3270_PA2, macro in IBusKeysyms
IBUS_KEY_3270_PA3, macro in IBusKeysyms
IBUS_KEY_3270_Play, macro in IBusKeysyms
IBUS_KEY_3270_PrintScreen, macro in IBusKeysyms
IBUS_KEY_3270_Quit, macro in IBusKeysyms
IBUS_KEY_3270_Record, macro in IBusKeysyms
IBUS_KEY_3270_Reset, macro in IBusKeysyms
IBUS_KEY_3270_Right2, macro in IBusKeysyms
IBUS_KEY_3270_Rule, macro in IBusKeysyms
IBUS_KEY_3270_Setup, macro in IBusKeysyms
IBUS_KEY_3270_Test, macro in IBusKeysyms
IBUS_KEY_4, macro in IBusKeysyms
IBUS_KEY_5, macro in IBusKeysyms
IBUS_KEY_6, macro in IBusKeysyms
IBUS_KEY_7, macro in IBusKeysyms
IBUS_KEY_8, macro in IBusKeysyms
IBUS_KEY_9, macro in IBusKeysyms
IBUS_KEY_A, macro in IBusKeysyms
IBUS_KEY_a, macro in IBusKeysyms
IBUS_KEY_Aacute, macro in IBusKeysyms
IBUS_KEY_aacute, macro in IBusKeysyms
IBUS_KEY_Abelowdot, macro in IBusKeysyms
IBUS_KEY_abelowdot, macro in IBusKeysyms
IBUS_KEY_abovedot, macro in IBusKeysyms
IBUS_KEY_Abreve, macro in IBusKeysyms
IBUS_KEY_abreve, macro in IBusKeysyms
IBUS_KEY_Abreveacute, macro in IBusKeysyms
IBUS_KEY_abreveacute, macro in IBusKeysyms
IBUS_KEY_Abrevebelowdot, macro in IBusKeysyms
IBUS_KEY_abrevebelowdot, macro in IBusKeysyms
IBUS_KEY_Abrevegrave, macro in IBusKeysyms
IBUS_KEY_abrevegrave, macro in IBusKeysyms
IBUS_KEY_Abrevehook, macro in IBusKeysyms
IBUS_KEY_abrevehook, macro in IBusKeysyms
IBUS_KEY_Abrevetilde, macro in IBusKeysyms
IBUS_KEY_abrevetilde, macro in IBusKeysyms
IBUS_KEY_AccessX_Enable, macro in IBusKeysyms
IBUS_KEY_AccessX_Feedback_Enable, macro in IBusKeysyms
IBUS_KEY_Acircumflex, macro in IBusKeysyms
IBUS_KEY_acircumflex, macro in IBusKeysyms
IBUS_KEY_Acircumflexacute, macro in IBusKeysyms
IBUS_KEY_acircumflexacute, macro in IBusKeysyms
IBUS_KEY_Acircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_acircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_Acircumflexgrave, macro in IBusKeysyms
IBUS_KEY_acircumflexgrave, macro in IBusKeysyms
IBUS_KEY_Acircumflexhook, macro in IBusKeysyms
IBUS_KEY_acircumflexhook, macro in IBusKeysyms
IBUS_KEY_Acircumflextilde, macro in IBusKeysyms
IBUS_KEY_acircumflextilde, macro in IBusKeysyms
IBUS_KEY_acute, macro in IBusKeysyms
IBUS_KEY_Adiaeresis, macro in IBusKeysyms
IBUS_KEY_adiaeresis, macro in IBusKeysyms
IBUS_KEY_AE, macro in IBusKeysyms
IBUS_KEY_ae, macro in IBusKeysyms
IBUS_KEY_Agrave, macro in IBusKeysyms
IBUS_KEY_agrave, macro in IBusKeysyms
IBUS_KEY_Ahook, macro in IBusKeysyms
IBUS_KEY_ahook, macro in IBusKeysyms
IBUS_KEY_Alt_L, macro in IBusKeysyms
IBUS_KEY_Alt_R, macro in IBusKeysyms
IBUS_KEY_Amacron, macro in IBusKeysyms
IBUS_KEY_amacron, macro in IBusKeysyms
IBUS_KEY_ampersand, macro in IBusKeysyms
IBUS_KEY_Aogonek, macro in IBusKeysyms
IBUS_KEY_aogonek, macro in IBusKeysyms
IBUS_KEY_apostrophe, macro in IBusKeysyms
IBUS_KEY_approxeq, macro in IBusKeysyms
IBUS_KEY_approximate, macro in IBusKeysyms
IBUS_KEY_Arabic_0, macro in IBusKeysyms
IBUS_KEY_Arabic_1, macro in IBusKeysyms
IBUS_KEY_Arabic_2, macro in IBusKeysyms
IBUS_KEY_Arabic_3, macro in IBusKeysyms
IBUS_KEY_Arabic_4, macro in IBusKeysyms
IBUS_KEY_Arabic_5, macro in IBusKeysyms
IBUS_KEY_Arabic_6, macro in IBusKeysyms
IBUS_KEY_Arabic_7, macro in IBusKeysyms
IBUS_KEY_Arabic_8, macro in IBusKeysyms
IBUS_KEY_Arabic_9, macro in IBusKeysyms
IBUS_KEY_Arabic_ain, macro in IBusKeysyms
IBUS_KEY_Arabic_alef, macro in IBusKeysyms
IBUS_KEY_Arabic_alefmaksura, macro in IBusKeysyms
IBUS_KEY_Arabic_beh, macro in IBusKeysyms
IBUS_KEY_Arabic_comma, macro in IBusKeysyms
IBUS_KEY_Arabic_dad, macro in IBusKeysyms
IBUS_KEY_Arabic_dal, macro in IBusKeysyms
IBUS_KEY_Arabic_damma, macro in IBusKeysyms
IBUS_KEY_Arabic_dammatan, macro in IBusKeysyms
IBUS_KEY_Arabic_ddal, macro in IBusKeysyms
IBUS_KEY_Arabic_farsi_yeh, macro in IBusKeysyms
IBUS_KEY_Arabic_fatha, macro in IBusKeysyms
IBUS_KEY_Arabic_fathatan, macro in IBusKeysyms
IBUS_KEY_Arabic_feh, macro in IBusKeysyms
IBUS_KEY_Arabic_fullstop, macro in IBusKeysyms
IBUS_KEY_Arabic_gaf, macro in IBusKeysyms
IBUS_KEY_Arabic_ghain, macro in IBusKeysyms
IBUS_KEY_Arabic_ha, macro in IBusKeysyms
IBUS_KEY_Arabic_hah, macro in IBusKeysyms
IBUS_KEY_Arabic_hamza, macro in IBusKeysyms
IBUS_KEY_Arabic_hamzaonalef, macro in IBusKeysyms
IBUS_KEY_Arabic_hamzaonwaw, macro in IBusKeysyms
IBUS_KEY_Arabic_hamzaonyeh, macro in IBusKeysyms
IBUS_KEY_Arabic_hamzaunderalef, macro in IBusKeysyms
IBUS_KEY_Arabic_hamza_above, macro in IBusKeysyms
IBUS_KEY_Arabic_hamza_below, macro in IBusKeysyms
IBUS_KEY_Arabic_heh, macro in IBusKeysyms
IBUS_KEY_Arabic_heh_doachashmee, macro in IBusKeysyms
IBUS_KEY_Arabic_heh_goal, macro in IBusKeysyms
IBUS_KEY_Arabic_jeem, macro in IBusKeysyms
IBUS_KEY_Arabic_jeh, macro in IBusKeysyms
IBUS_KEY_Arabic_kaf, macro in IBusKeysyms
IBUS_KEY_Arabic_kasra, macro in IBusKeysyms
IBUS_KEY_Arabic_kasratan, macro in IBusKeysyms
IBUS_KEY_Arabic_keheh, macro in IBusKeysyms
IBUS_KEY_Arabic_khah, macro in IBusKeysyms
IBUS_KEY_Arabic_lam, macro in IBusKeysyms
IBUS_KEY_Arabic_maddaonalef, macro in IBusKeysyms
IBUS_KEY_Arabic_madda_above, macro in IBusKeysyms
IBUS_KEY_Arabic_meem, macro in IBusKeysyms
IBUS_KEY_Arabic_noon, macro in IBusKeysyms
IBUS_KEY_Arabic_noon_ghunna, macro in IBusKeysyms
IBUS_KEY_Arabic_peh, macro in IBusKeysyms
IBUS_KEY_Arabic_percent, macro in IBusKeysyms
IBUS_KEY_Arabic_qaf, macro in IBusKeysyms
IBUS_KEY_Arabic_question_mark, macro in IBusKeysyms
IBUS_KEY_Arabic_ra, macro in IBusKeysyms
IBUS_KEY_Arabic_rreh, macro in IBusKeysyms
IBUS_KEY_Arabic_sad, macro in IBusKeysyms
IBUS_KEY_Arabic_seen, macro in IBusKeysyms
IBUS_KEY_Arabic_semicolon, macro in IBusKeysyms
IBUS_KEY_Arabic_shadda, macro in IBusKeysyms
IBUS_KEY_Arabic_sheen, macro in IBusKeysyms
IBUS_KEY_Arabic_sukun, macro in IBusKeysyms
IBUS_KEY_Arabic_superscript_alef, macro in IBusKeysyms
IBUS_KEY_Arabic_switch, macro in IBusKeysyms
IBUS_KEY_Arabic_tah, macro in IBusKeysyms
IBUS_KEY_Arabic_tatweel, macro in IBusKeysyms
IBUS_KEY_Arabic_tcheh, macro in IBusKeysyms
IBUS_KEY_Arabic_teh, macro in IBusKeysyms
IBUS_KEY_Arabic_tehmarbuta, macro in IBusKeysyms
IBUS_KEY_Arabic_thal, macro in IBusKeysyms
IBUS_KEY_Arabic_theh, macro in IBusKeysyms
IBUS_KEY_Arabic_tteh, macro in IBusKeysyms
IBUS_KEY_Arabic_veh, macro in IBusKeysyms
IBUS_KEY_Arabic_waw, macro in IBusKeysyms
IBUS_KEY_Arabic_yeh, macro in IBusKeysyms
IBUS_KEY_Arabic_yeh_baree, macro in IBusKeysyms
IBUS_KEY_Arabic_zah, macro in IBusKeysyms
IBUS_KEY_Arabic_zain, macro in IBusKeysyms
IBUS_KEY_Aring, macro in IBusKeysyms
IBUS_KEY_aring, macro in IBusKeysyms
IBUS_KEY_Armenian_accent, macro in IBusKeysyms
IBUS_KEY_Armenian_amanak, macro in IBusKeysyms
IBUS_KEY_Armenian_apostrophe, macro in IBusKeysyms
IBUS_KEY_Armenian_AT, macro in IBusKeysyms
IBUS_KEY_Armenian_at, macro in IBusKeysyms
IBUS_KEY_Armenian_AYB, macro in IBusKeysyms
IBUS_KEY_Armenian_ayb, macro in IBusKeysyms
IBUS_KEY_Armenian_BEN, macro in IBusKeysyms
IBUS_KEY_Armenian_ben, macro in IBusKeysyms
IBUS_KEY_Armenian_but, macro in IBusKeysyms
IBUS_KEY_Armenian_CHA, macro in IBusKeysyms
IBUS_KEY_Armenian_cha, macro in IBusKeysyms
IBUS_KEY_Armenian_DA, macro in IBusKeysyms
IBUS_KEY_Armenian_da, macro in IBusKeysyms
IBUS_KEY_Armenian_DZA, macro in IBusKeysyms
IBUS_KEY_Armenian_dza, macro in IBusKeysyms
IBUS_KEY_Armenian_E, macro in IBusKeysyms
IBUS_KEY_Armenian_e, macro in IBusKeysyms
IBUS_KEY_Armenian_exclam, macro in IBusKeysyms
IBUS_KEY_Armenian_FE, macro in IBusKeysyms
IBUS_KEY_Armenian_fe, macro in IBusKeysyms
IBUS_KEY_Armenian_full_stop, macro in IBusKeysyms
IBUS_KEY_Armenian_GHAT, macro in IBusKeysyms
IBUS_KEY_Armenian_ghat, macro in IBusKeysyms
IBUS_KEY_Armenian_GIM, macro in IBusKeysyms
IBUS_KEY_Armenian_gim, macro in IBusKeysyms
IBUS_KEY_Armenian_HI, macro in IBusKeysyms
IBUS_KEY_Armenian_hi, macro in IBusKeysyms
IBUS_KEY_Armenian_HO, macro in IBusKeysyms
IBUS_KEY_Armenian_ho, macro in IBusKeysyms
IBUS_KEY_Armenian_hyphen, macro in IBusKeysyms
IBUS_KEY_Armenian_INI, macro in IBusKeysyms
IBUS_KEY_Armenian_ini, macro in IBusKeysyms
IBUS_KEY_Armenian_JE, macro in IBusKeysyms
IBUS_KEY_Armenian_je, macro in IBusKeysyms
IBUS_KEY_Armenian_KE, macro in IBusKeysyms
IBUS_KEY_Armenian_ke, macro in IBusKeysyms
IBUS_KEY_Armenian_KEN, macro in IBusKeysyms
IBUS_KEY_Armenian_ken, macro in IBusKeysyms
IBUS_KEY_Armenian_KHE, macro in IBusKeysyms
IBUS_KEY_Armenian_khe, macro in IBusKeysyms
IBUS_KEY_Armenian_ligature_ew, macro in IBusKeysyms
IBUS_KEY_Armenian_LYUN, macro in IBusKeysyms
IBUS_KEY_Armenian_lyun, macro in IBusKeysyms
IBUS_KEY_Armenian_MEN, macro in IBusKeysyms
IBUS_KEY_Armenian_men, macro in IBusKeysyms
IBUS_KEY_Armenian_NU, macro in IBusKeysyms
IBUS_KEY_Armenian_nu, macro in IBusKeysyms
IBUS_KEY_Armenian_O, macro in IBusKeysyms
IBUS_KEY_Armenian_o, macro in IBusKeysyms
IBUS_KEY_Armenian_paruyk, macro in IBusKeysyms
IBUS_KEY_Armenian_PE, macro in IBusKeysyms
IBUS_KEY_Armenian_pe, macro in IBusKeysyms
IBUS_KEY_Armenian_PYUR, macro in IBusKeysyms
IBUS_KEY_Armenian_pyur, macro in IBusKeysyms
IBUS_KEY_Armenian_question, macro in IBusKeysyms
IBUS_KEY_Armenian_RA, macro in IBusKeysyms
IBUS_KEY_Armenian_ra, macro in IBusKeysyms
IBUS_KEY_Armenian_RE, macro in IBusKeysyms
IBUS_KEY_Armenian_re, macro in IBusKeysyms
IBUS_KEY_Armenian_SE, macro in IBusKeysyms
IBUS_KEY_Armenian_se, macro in IBusKeysyms
IBUS_KEY_Armenian_separation_mark, macro in IBusKeysyms
IBUS_KEY_Armenian_SHA, macro in IBusKeysyms
IBUS_KEY_Armenian_sha, macro in IBusKeysyms
IBUS_KEY_Armenian_shesht, macro in IBusKeysyms
IBUS_KEY_Armenian_TCHE, macro in IBusKeysyms
IBUS_KEY_Armenian_tche, macro in IBusKeysyms
IBUS_KEY_Armenian_TO, macro in IBusKeysyms
IBUS_KEY_Armenian_to, macro in IBusKeysyms
IBUS_KEY_Armenian_TSA, macro in IBusKeysyms
IBUS_KEY_Armenian_tsa, macro in IBusKeysyms
IBUS_KEY_Armenian_TSO, macro in IBusKeysyms
IBUS_KEY_Armenian_tso, macro in IBusKeysyms
IBUS_KEY_Armenian_TYUN, macro in IBusKeysyms
IBUS_KEY_Armenian_tyun, macro in IBusKeysyms
IBUS_KEY_Armenian_verjaket, macro in IBusKeysyms
IBUS_KEY_Armenian_VEV, macro in IBusKeysyms
IBUS_KEY_Armenian_vev, macro in IBusKeysyms
IBUS_KEY_Armenian_VO, macro in IBusKeysyms
IBUS_KEY_Armenian_vo, macro in IBusKeysyms
IBUS_KEY_Armenian_VYUN, macro in IBusKeysyms
IBUS_KEY_Armenian_vyun, macro in IBusKeysyms
IBUS_KEY_Armenian_YECH, macro in IBusKeysyms
IBUS_KEY_Armenian_yech, macro in IBusKeysyms
IBUS_KEY_Armenian_yentamna, macro in IBusKeysyms
IBUS_KEY_Armenian_ZA, macro in IBusKeysyms
IBUS_KEY_Armenian_za, macro in IBusKeysyms
IBUS_KEY_Armenian_ZHE, macro in IBusKeysyms
IBUS_KEY_Armenian_zhe, macro in IBusKeysyms
IBUS_KEY_asciicircum, macro in IBusKeysyms
IBUS_KEY_asciitilde, macro in IBusKeysyms
IBUS_KEY_asterisk, macro in IBusKeysyms
IBUS_KEY_at, macro in IBusKeysyms
IBUS_KEY_Atilde, macro in IBusKeysyms
IBUS_KEY_atilde, macro in IBusKeysyms
IBUS_KEY_AudibleBell_Enable, macro in IBusKeysyms
IBUS_KEY_B, macro in IBusKeysyms
IBUS_KEY_b, macro in IBusKeysyms
IBUS_KEY_Babovedot, macro in IBusKeysyms
IBUS_KEY_babovedot, macro in IBusKeysyms
IBUS_KEY_backslash, macro in IBusKeysyms
IBUS_KEY_BackSpace, macro in IBusKeysyms
IBUS_KEY_ballotcross, macro in IBusKeysyms
IBUS_KEY_bar, macro in IBusKeysyms
IBUS_KEY_because, macro in IBusKeysyms
IBUS_KEY_Begin, macro in IBusKeysyms
IBUS_KEY_blank, macro in IBusKeysyms
IBUS_KEY_botintegral, macro in IBusKeysyms
IBUS_KEY_botleftparens, macro in IBusKeysyms
IBUS_KEY_botleftsqbracket, macro in IBusKeysyms
IBUS_KEY_botleftsummation, macro in IBusKeysyms
IBUS_KEY_botrightparens, macro in IBusKeysyms
IBUS_KEY_botrightsqbracket, macro in IBusKeysyms
IBUS_KEY_botrightsummation, macro in IBusKeysyms
IBUS_KEY_bott, macro in IBusKeysyms
IBUS_KEY_botvertsummationconnector, macro in IBusKeysyms
IBUS_KEY_BounceKeys_Enable, macro in IBusKeysyms
IBUS_KEY_braceleft, macro in IBusKeysyms
IBUS_KEY_braceright, macro in IBusKeysyms
IBUS_KEY_bracketleft, macro in IBusKeysyms
IBUS_KEY_bracketright, macro in IBusKeysyms
IBUS_KEY_braille_blank, macro in IBusKeysyms
IBUS_KEY_braille_dots_1, macro in IBusKeysyms
IBUS_KEY_braille_dots_12, macro in IBusKeysyms
IBUS_KEY_braille_dots_123, macro in IBusKeysyms
IBUS_KEY_braille_dots_1234, macro in IBusKeysyms
IBUS_KEY_braille_dots_12345, macro in IBusKeysyms
IBUS_KEY_braille_dots_123456, macro in IBusKeysyms
IBUS_KEY_braille_dots_1234567, macro in IBusKeysyms
IBUS_KEY_braille_dots_12345678, macro in IBusKeysyms
IBUS_KEY_braille_dots_1234568, macro in IBusKeysyms
IBUS_KEY_braille_dots_123457, macro in IBusKeysyms
IBUS_KEY_braille_dots_1234578, macro in IBusKeysyms
IBUS_KEY_braille_dots_123458, macro in IBusKeysyms
IBUS_KEY_braille_dots_12346, macro in IBusKeysyms
IBUS_KEY_braille_dots_123467, macro in IBusKeysyms
IBUS_KEY_braille_dots_1234678, macro in IBusKeysyms
IBUS_KEY_braille_dots_123468, macro in IBusKeysyms
IBUS_KEY_braille_dots_12347, macro in IBusKeysyms
IBUS_KEY_braille_dots_123478, macro in IBusKeysyms
IBUS_KEY_braille_dots_12348, macro in IBusKeysyms
IBUS_KEY_braille_dots_1235, macro in IBusKeysyms
IBUS_KEY_braille_dots_12356, macro in IBusKeysyms
IBUS_KEY_braille_dots_123567, macro in IBusKeysyms
IBUS_KEY_braille_dots_1235678, macro in IBusKeysyms
IBUS_KEY_braille_dots_123568, macro in IBusKeysyms
IBUS_KEY_braille_dots_12357, macro in IBusKeysyms
IBUS_KEY_braille_dots_123578, macro in IBusKeysyms
IBUS_KEY_braille_dots_12358, macro in IBusKeysyms
IBUS_KEY_braille_dots_1236, macro in IBusKeysyms
IBUS_KEY_braille_dots_12367, macro in IBusKeysyms
IBUS_KEY_braille_dots_123678, macro in IBusKeysyms
IBUS_KEY_braille_dots_12368, macro in IBusKeysyms
IBUS_KEY_braille_dots_1237, macro in IBusKeysyms
IBUS_KEY_braille_dots_12378, macro in IBusKeysyms
IBUS_KEY_braille_dots_1238, macro in IBusKeysyms
IBUS_KEY_braille_dots_124, macro in IBusKeysyms
IBUS_KEY_braille_dots_1245, macro in IBusKeysyms
IBUS_KEY_braille_dots_12456, macro in IBusKeysyms
IBUS_KEY_braille_dots_124567, macro in IBusKeysyms
IBUS_KEY_braille_dots_1245678, macro in IBusKeysyms
IBUS_KEY_braille_dots_124568, macro in IBusKeysyms
IBUS_KEY_braille_dots_12457, macro in IBusKeysyms
IBUS_KEY_braille_dots_124578, macro in IBusKeysyms
IBUS_KEY_braille_dots_12458, macro in IBusKeysyms
IBUS_KEY_braille_dots_1246, macro in IBusKeysyms
IBUS_KEY_braille_dots_12467, macro in IBusKeysyms
IBUS_KEY_braille_dots_124678, macro in IBusKeysyms
IBUS_KEY_braille_dots_12468, macro in IBusKeysyms
IBUS_KEY_braille_dots_1247, macro in IBusKeysyms
IBUS_KEY_braille_dots_12478, macro in IBusKeysyms
IBUS_KEY_braille_dots_1248, macro in IBusKeysyms
IBUS_KEY_braille_dots_125, macro in IBusKeysyms
IBUS_KEY_braille_dots_1256, macro in IBusKeysyms
IBUS_KEY_braille_dots_12567, macro in IBusKeysyms
IBUS_KEY_braille_dots_125678, macro in IBusKeysyms
IBUS_KEY_braille_dots_12568, macro in IBusKeysyms
IBUS_KEY_braille_dots_1257, macro in IBusKeysyms
IBUS_KEY_braille_dots_12578, macro in IBusKeysyms
IBUS_KEY_braille_dots_1258, macro in IBusKeysyms
IBUS_KEY_braille_dots_126, macro in IBusKeysyms
IBUS_KEY_braille_dots_1267, macro in IBusKeysyms
IBUS_KEY_braille_dots_12678, macro in IBusKeysyms
IBUS_KEY_braille_dots_1268, macro in IBusKeysyms
IBUS_KEY_braille_dots_127, macro in IBusKeysyms
IBUS_KEY_braille_dots_1278, macro in IBusKeysyms
IBUS_KEY_braille_dots_128, macro in IBusKeysyms
IBUS_KEY_braille_dots_13, macro in IBusKeysyms
IBUS_KEY_braille_dots_134, macro in IBusKeysyms
IBUS_KEY_braille_dots_1345, macro in IBusKeysyms
IBUS_KEY_braille_dots_13456, macro in IBusKeysyms
IBUS_KEY_braille_dots_134567, macro in IBusKeysyms
IBUS_KEY_braille_dots_1345678, macro in IBusKeysyms
IBUS_KEY_braille_dots_134568, macro in IBusKeysyms
IBUS_KEY_braille_dots_13457, macro in IBusKeysyms
IBUS_KEY_braille_dots_134578, macro in IBusKeysyms
IBUS_KEY_braille_dots_13458, macro in IBusKeysyms
IBUS_KEY_braille_dots_1346, macro in IBusKeysyms
IBUS_KEY_braille_dots_13467, macro in IBusKeysyms
IBUS_KEY_braille_dots_134678, macro in IBusKeysyms
IBUS_KEY_braille_dots_13468, macro in IBusKeysyms
IBUS_KEY_braille_dots_1347, macro in IBusKeysyms
IBUS_KEY_braille_dots_13478, macro in IBusKeysyms
IBUS_KEY_braille_dots_1348, macro in IBusKeysyms
IBUS_KEY_braille_dots_135, macro in IBusKeysyms
IBUS_KEY_braille_dots_1356, macro in IBusKeysyms
IBUS_KEY_braille_dots_13567, macro in IBusKeysyms
IBUS_KEY_braille_dots_135678, macro in IBusKeysyms
IBUS_KEY_braille_dots_13568, macro in IBusKeysyms
IBUS_KEY_braille_dots_1357, macro in IBusKeysyms
IBUS_KEY_braille_dots_13578, macro in IBusKeysyms
IBUS_KEY_braille_dots_1358, macro in IBusKeysyms
IBUS_KEY_braille_dots_136, macro in IBusKeysyms
IBUS_KEY_braille_dots_1367, macro in IBusKeysyms
IBUS_KEY_braille_dots_13678, macro in IBusKeysyms
IBUS_KEY_braille_dots_1368, macro in IBusKeysyms
IBUS_KEY_braille_dots_137, macro in IBusKeysyms
IBUS_KEY_braille_dots_1378, macro in IBusKeysyms
IBUS_KEY_braille_dots_138, macro in IBusKeysyms
IBUS_KEY_braille_dots_14, macro in IBusKeysyms
IBUS_KEY_braille_dots_145, macro in IBusKeysyms
IBUS_KEY_braille_dots_1456, macro in IBusKeysyms
IBUS_KEY_braille_dots_14567, macro in IBusKeysyms
IBUS_KEY_braille_dots_145678, macro in IBusKeysyms
IBUS_KEY_braille_dots_14568, macro in IBusKeysyms
IBUS_KEY_braille_dots_1457, macro in IBusKeysyms
IBUS_KEY_braille_dots_14578, macro in IBusKeysyms
IBUS_KEY_braille_dots_1458, macro in IBusKeysyms
IBUS_KEY_braille_dots_146, macro in IBusKeysyms
IBUS_KEY_braille_dots_1467, macro in IBusKeysyms
IBUS_KEY_braille_dots_14678, macro in IBusKeysyms
IBUS_KEY_braille_dots_1468, macro in IBusKeysyms
IBUS_KEY_braille_dots_147, macro in IBusKeysyms
IBUS_KEY_braille_dots_1478, macro in IBusKeysyms
IBUS_KEY_braille_dots_148, macro in IBusKeysyms
IBUS_KEY_braille_dots_15, macro in IBusKeysyms
IBUS_KEY_braille_dots_156, macro in IBusKeysyms
IBUS_KEY_braille_dots_1567, macro in IBusKeysyms
IBUS_KEY_braille_dots_15678, macro in IBusKeysyms
IBUS_KEY_braille_dots_1568, macro in IBusKeysyms
IBUS_KEY_braille_dots_157, macro in IBusKeysyms
IBUS_KEY_braille_dots_1578, macro in IBusKeysyms
IBUS_KEY_braille_dots_158, macro in IBusKeysyms
IBUS_KEY_braille_dots_16, macro in IBusKeysyms
IBUS_KEY_braille_dots_167, macro in IBusKeysyms
IBUS_KEY_braille_dots_1678, macro in IBusKeysyms
IBUS_KEY_braille_dots_168, macro in IBusKeysyms
IBUS_KEY_braille_dots_17, macro in IBusKeysyms
IBUS_KEY_braille_dots_178, macro in IBusKeysyms
IBUS_KEY_braille_dots_18, macro in IBusKeysyms
IBUS_KEY_braille_dots_2, macro in IBusKeysyms
IBUS_KEY_braille_dots_23, macro in IBusKeysyms
IBUS_KEY_braille_dots_234, macro in IBusKeysyms
IBUS_KEY_braille_dots_2345, macro in IBusKeysyms
IBUS_KEY_braille_dots_23456, macro in IBusKeysyms
IBUS_KEY_braille_dots_234567, macro in IBusKeysyms
IBUS_KEY_braille_dots_2345678, macro in IBusKeysyms
IBUS_KEY_braille_dots_234568, macro in IBusKeysyms
IBUS_KEY_braille_dots_23457, macro in IBusKeysyms
IBUS_KEY_braille_dots_234578, macro in IBusKeysyms
IBUS_KEY_braille_dots_23458, macro in IBusKeysyms
IBUS_KEY_braille_dots_2346, macro in IBusKeysyms
IBUS_KEY_braille_dots_23467, macro in IBusKeysyms
IBUS_KEY_braille_dots_234678, macro in IBusKeysyms
IBUS_KEY_braille_dots_23468, macro in IBusKeysyms
IBUS_KEY_braille_dots_2347, macro in IBusKeysyms
IBUS_KEY_braille_dots_23478, macro in IBusKeysyms
IBUS_KEY_braille_dots_2348, macro in IBusKeysyms
IBUS_KEY_braille_dots_235, macro in IBusKeysyms
IBUS_KEY_braille_dots_2356, macro in IBusKeysyms
IBUS_KEY_braille_dots_23567, macro in IBusKeysyms
IBUS_KEY_braille_dots_235678, macro in IBusKeysyms
IBUS_KEY_braille_dots_23568, macro in IBusKeysyms
IBUS_KEY_braille_dots_2357, macro in IBusKeysyms
IBUS_KEY_braille_dots_23578, macro in IBusKeysyms
IBUS_KEY_braille_dots_2358, macro in IBusKeysyms
IBUS_KEY_braille_dots_236, macro in IBusKeysyms
IBUS_KEY_braille_dots_2367, macro in IBusKeysyms
IBUS_KEY_braille_dots_23678, macro in IBusKeysyms
IBUS_KEY_braille_dots_2368, macro in IBusKeysyms
IBUS_KEY_braille_dots_237, macro in IBusKeysyms
IBUS_KEY_braille_dots_2378, macro in IBusKeysyms
IBUS_KEY_braille_dots_238, macro in IBusKeysyms
IBUS_KEY_braille_dots_24, macro in IBusKeysyms
IBUS_KEY_braille_dots_245, macro in IBusKeysyms
IBUS_KEY_braille_dots_2456, macro in IBusKeysyms
IBUS_KEY_braille_dots_24567, macro in IBusKeysyms
IBUS_KEY_braille_dots_245678, macro in IBusKeysyms
IBUS_KEY_braille_dots_24568, macro in IBusKeysyms
IBUS_KEY_braille_dots_2457, macro in IBusKeysyms
IBUS_KEY_braille_dots_24578, macro in IBusKeysyms
IBUS_KEY_braille_dots_2458, macro in IBusKeysyms
IBUS_KEY_braille_dots_246, macro in IBusKeysyms
IBUS_KEY_braille_dots_2467, macro in IBusKeysyms
IBUS_KEY_braille_dots_24678, macro in IBusKeysyms
IBUS_KEY_braille_dots_2468, macro in IBusKeysyms
IBUS_KEY_braille_dots_247, macro in IBusKeysyms
IBUS_KEY_braille_dots_2478, macro in IBusKeysyms
IBUS_KEY_braille_dots_248, macro in IBusKeysyms
IBUS_KEY_braille_dots_25, macro in IBusKeysyms
IBUS_KEY_braille_dots_256, macro in IBusKeysyms
IBUS_KEY_braille_dots_2567, macro in IBusKeysyms
IBUS_KEY_braille_dots_25678, macro in IBusKeysyms
IBUS_KEY_braille_dots_2568, macro in IBusKeysyms
IBUS_KEY_braille_dots_257, macro in IBusKeysyms
IBUS_KEY_braille_dots_2578, macro in IBusKeysyms
IBUS_KEY_braille_dots_258, macro in IBusKeysyms
IBUS_KEY_braille_dots_26, macro in IBusKeysyms
IBUS_KEY_braille_dots_267, macro in IBusKeysyms
IBUS_KEY_braille_dots_2678, macro in IBusKeysyms
IBUS_KEY_braille_dots_268, macro in IBusKeysyms
IBUS_KEY_braille_dots_27, macro in IBusKeysyms
IBUS_KEY_braille_dots_278, macro in IBusKeysyms
IBUS_KEY_braille_dots_28, macro in IBusKeysyms
IBUS_KEY_braille_dots_3, macro in IBusKeysyms
IBUS_KEY_braille_dots_34, macro in IBusKeysyms
IBUS_KEY_braille_dots_345, macro in IBusKeysyms
IBUS_KEY_braille_dots_3456, macro in IBusKeysyms
IBUS_KEY_braille_dots_34567, macro in IBusKeysyms
IBUS_KEY_braille_dots_345678, macro in IBusKeysyms
IBUS_KEY_braille_dots_34568, macro in IBusKeysyms
IBUS_KEY_braille_dots_3457, macro in IBusKeysyms
IBUS_KEY_braille_dots_34578, macro in IBusKeysyms
IBUS_KEY_braille_dots_3458, macro in IBusKeysyms
IBUS_KEY_braille_dots_346, macro in IBusKeysyms
IBUS_KEY_braille_dots_3467, macro in IBusKeysyms
IBUS_KEY_braille_dots_34678, macro in IBusKeysyms
IBUS_KEY_braille_dots_3468, macro in IBusKeysyms
IBUS_KEY_braille_dots_347, macro in IBusKeysyms
IBUS_KEY_braille_dots_3478, macro in IBusKeysyms
IBUS_KEY_braille_dots_348, macro in IBusKeysyms
IBUS_KEY_braille_dots_35, macro in IBusKeysyms
IBUS_KEY_braille_dots_356, macro in IBusKeysyms
IBUS_KEY_braille_dots_3567, macro in IBusKeysyms
IBUS_KEY_braille_dots_35678, macro in IBusKeysyms
IBUS_KEY_braille_dots_3568, macro in IBusKeysyms
IBUS_KEY_braille_dots_357, macro in IBusKeysyms
IBUS_KEY_braille_dots_3578, macro in IBusKeysyms
IBUS_KEY_braille_dots_358, macro in IBusKeysyms
IBUS_KEY_braille_dots_36, macro in IBusKeysyms
IBUS_KEY_braille_dots_367, macro in IBusKeysyms
IBUS_KEY_braille_dots_3678, macro in IBusKeysyms
IBUS_KEY_braille_dots_368, macro in IBusKeysyms
IBUS_KEY_braille_dots_37, macro in IBusKeysyms
IBUS_KEY_braille_dots_378, macro in IBusKeysyms
IBUS_KEY_braille_dots_38, macro in IBusKeysyms
IBUS_KEY_braille_dots_4, macro in IBusKeysyms
IBUS_KEY_braille_dots_45, macro in IBusKeysyms
IBUS_KEY_braille_dots_456, macro in IBusKeysyms
IBUS_KEY_braille_dots_4567, macro in IBusKeysyms
IBUS_KEY_braille_dots_45678, macro in IBusKeysyms
IBUS_KEY_braille_dots_4568, macro in IBusKeysyms
IBUS_KEY_braille_dots_457, macro in IBusKeysyms
IBUS_KEY_braille_dots_4578, macro in IBusKeysyms
IBUS_KEY_braille_dots_458, macro in IBusKeysyms
IBUS_KEY_braille_dots_46, macro in IBusKeysyms
IBUS_KEY_braille_dots_467, macro in IBusKeysyms
IBUS_KEY_braille_dots_4678, macro in IBusKeysyms
IBUS_KEY_braille_dots_468, macro in IBusKeysyms
IBUS_KEY_braille_dots_47, macro in IBusKeysyms
IBUS_KEY_braille_dots_478, macro in IBusKeysyms
IBUS_KEY_braille_dots_48, macro in IBusKeysyms
IBUS_KEY_braille_dots_5, macro in IBusKeysyms
IBUS_KEY_braille_dots_56, macro in IBusKeysyms
IBUS_KEY_braille_dots_567, macro in IBusKeysyms
IBUS_KEY_braille_dots_5678, macro in IBusKeysyms
IBUS_KEY_braille_dots_568, macro in IBusKeysyms
IBUS_KEY_braille_dots_57, macro in IBusKeysyms
IBUS_KEY_braille_dots_578, macro in IBusKeysyms
IBUS_KEY_braille_dots_58, macro in IBusKeysyms
IBUS_KEY_braille_dots_6, macro in IBusKeysyms
IBUS_KEY_braille_dots_67, macro in IBusKeysyms
IBUS_KEY_braille_dots_678, macro in IBusKeysyms
IBUS_KEY_braille_dots_68, macro in IBusKeysyms
IBUS_KEY_braille_dots_7, macro in IBusKeysyms
IBUS_KEY_braille_dots_78, macro in IBusKeysyms
IBUS_KEY_braille_dots_8, macro in IBusKeysyms
IBUS_KEY_braille_dot_1, macro in IBusKeysyms
IBUS_KEY_braille_dot_10, macro in IBusKeysyms
IBUS_KEY_braille_dot_2, macro in IBusKeysyms
IBUS_KEY_braille_dot_3, macro in IBusKeysyms
IBUS_KEY_braille_dot_4, macro in IBusKeysyms
IBUS_KEY_braille_dot_5, macro in IBusKeysyms
IBUS_KEY_braille_dot_6, macro in IBusKeysyms
IBUS_KEY_braille_dot_7, macro in IBusKeysyms
IBUS_KEY_braille_dot_8, macro in IBusKeysyms
IBUS_KEY_braille_dot_9, macro in IBusKeysyms
IBUS_KEY_Break, macro in IBusKeysyms
IBUS_KEY_breve, macro in IBusKeysyms
IBUS_KEY_brokenbar, macro in IBusKeysyms
IBUS_KEY_Byelorussian_SHORTU, macro in IBusKeysyms
IBUS_KEY_Byelorussian_shortu, macro in IBusKeysyms
IBUS_KEY_C, macro in IBusKeysyms
IBUS_KEY_c, macro in IBusKeysyms
IBUS_KEY_Cabovedot, macro in IBusKeysyms
IBUS_KEY_cabovedot, macro in IBusKeysyms
IBUS_KEY_Cacute, macro in IBusKeysyms
IBUS_KEY_cacute, macro in IBusKeysyms
IBUS_KEY_Cancel, macro in IBusKeysyms
IBUS_KEY_Caps_Lock, macro in IBusKeysyms
IBUS_KEY_careof, macro in IBusKeysyms
IBUS_KEY_caret, macro in IBusKeysyms
IBUS_KEY_caron, macro in IBusKeysyms
IBUS_KEY_Ccaron, macro in IBusKeysyms
IBUS_KEY_ccaron, macro in IBusKeysyms
IBUS_KEY_Ccedilla, macro in IBusKeysyms
IBUS_KEY_ccedilla, macro in IBusKeysyms
IBUS_KEY_Ccircumflex, macro in IBusKeysyms
IBUS_KEY_ccircumflex, macro in IBusKeysyms
IBUS_KEY_cedilla, macro in IBusKeysyms
IBUS_KEY_cent, macro in IBusKeysyms
IBUS_KEY_CH, macro in IBusKeysyms
IBUS_KEY_Ch, macro in IBusKeysyms
IBUS_KEY_ch, macro in IBusKeysyms
IBUS_KEY_checkerboard, macro in IBusKeysyms
IBUS_KEY_checkmark, macro in IBusKeysyms
IBUS_KEY_circle, macro in IBusKeysyms
IBUS_KEY_Clear, macro in IBusKeysyms
IBUS_KEY_club, macro in IBusKeysyms
IBUS_KEY_Codeinput, macro in IBusKeysyms
IBUS_KEY_colon, macro in IBusKeysyms
IBUS_KEY_ColonSign, macro in IBusKeysyms
IBUS_KEY_comma, macro in IBusKeysyms
IBUS_KEY_containsas, macro in IBusKeysyms
IBUS_KEY_Control_L, macro in IBusKeysyms
IBUS_KEY_Control_R, macro in IBusKeysyms
IBUS_KEY_copyright, macro in IBusKeysyms
IBUS_KEY_cr, macro in IBusKeysyms
IBUS_KEY_crossinglines, macro in IBusKeysyms
IBUS_KEY_CruzeiroSign, macro in IBusKeysyms
IBUS_KEY_cuberoot, macro in IBusKeysyms
IBUS_KEY_currency, macro in IBusKeysyms
IBUS_KEY_cursor, macro in IBusKeysyms
IBUS_KEY_Cyrillic_A, macro in IBusKeysyms
IBUS_KEY_Cyrillic_a, macro in IBusKeysyms
IBUS_KEY_Cyrillic_BE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_be, macro in IBusKeysyms
IBUS_KEY_Cyrillic_CHE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_che, macro in IBusKeysyms
IBUS_KEY_Cyrillic_CHE_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_che_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_CHE_vertstroke, macro in IBusKeysyms
IBUS_KEY_Cyrillic_che_vertstroke, macro in IBusKeysyms
IBUS_KEY_Cyrillic_DE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_de, macro in IBusKeysyms
IBUS_KEY_Cyrillic_DZHE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_dzhe, macro in IBusKeysyms
IBUS_KEY_Cyrillic_E, macro in IBusKeysyms
IBUS_KEY_Cyrillic_e, macro in IBusKeysyms
IBUS_KEY_Cyrillic_EF, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ef, macro in IBusKeysyms
IBUS_KEY_Cyrillic_EL, macro in IBusKeysyms
IBUS_KEY_Cyrillic_el, macro in IBusKeysyms
IBUS_KEY_Cyrillic_EM, macro in IBusKeysyms
IBUS_KEY_Cyrillic_em, macro in IBusKeysyms
IBUS_KEY_Cyrillic_EN, macro in IBusKeysyms
IBUS_KEY_Cyrillic_en, macro in IBusKeysyms
IBUS_KEY_Cyrillic_EN_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_en_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ER, macro in IBusKeysyms
IBUS_KEY_Cyrillic_er, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ES, macro in IBusKeysyms
IBUS_KEY_Cyrillic_es, macro in IBusKeysyms
IBUS_KEY_Cyrillic_GHE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ghe, macro in IBusKeysyms
IBUS_KEY_Cyrillic_GHE_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ghe_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_HA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ha, macro in IBusKeysyms
IBUS_KEY_Cyrillic_HARDSIGN, macro in IBusKeysyms
IBUS_KEY_Cyrillic_hardsign, macro in IBusKeysyms
IBUS_KEY_Cyrillic_HA_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ha_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_I, macro in IBusKeysyms
IBUS_KEY_Cyrillic_i, macro in IBusKeysyms
IBUS_KEY_Cyrillic_IE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ie, macro in IBusKeysyms
IBUS_KEY_Cyrillic_IO, macro in IBusKeysyms
IBUS_KEY_Cyrillic_io, macro in IBusKeysyms
IBUS_KEY_Cyrillic_I_macron, macro in IBusKeysyms
IBUS_KEY_Cyrillic_i_macron, macro in IBusKeysyms
IBUS_KEY_Cyrillic_JE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_je, macro in IBusKeysyms
IBUS_KEY_Cyrillic_KA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ka, macro in IBusKeysyms
IBUS_KEY_Cyrillic_KA_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ka_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_KA_vertstroke, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ka_vertstroke, macro in IBusKeysyms
IBUS_KEY_Cyrillic_LJE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_lje, macro in IBusKeysyms
IBUS_KEY_Cyrillic_NJE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_nje, macro in IBusKeysyms
IBUS_KEY_Cyrillic_O, macro in IBusKeysyms
IBUS_KEY_Cyrillic_o, macro in IBusKeysyms
IBUS_KEY_Cyrillic_O_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_o_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_PE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_pe, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SCHWA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_schwa, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SHA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_sha, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SHCHA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_shcha, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SHHA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_shha, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SHORTI, macro in IBusKeysyms
IBUS_KEY_Cyrillic_shorti, macro in IBusKeysyms
IBUS_KEY_Cyrillic_SOFTSIGN, macro in IBusKeysyms
IBUS_KEY_Cyrillic_softsign, macro in IBusKeysyms
IBUS_KEY_Cyrillic_TE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_te, macro in IBusKeysyms
IBUS_KEY_Cyrillic_TSE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_tse, macro in IBusKeysyms
IBUS_KEY_Cyrillic_U, macro in IBusKeysyms
IBUS_KEY_Cyrillic_u, macro in IBusKeysyms
IBUS_KEY_Cyrillic_U_macron, macro in IBusKeysyms
IBUS_KEY_Cyrillic_u_macron, macro in IBusKeysyms
IBUS_KEY_Cyrillic_U_straight, macro in IBusKeysyms
IBUS_KEY_Cyrillic_u_straight, macro in IBusKeysyms
IBUS_KEY_Cyrillic_U_straight_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_u_straight_bar, macro in IBusKeysyms
IBUS_KEY_Cyrillic_VE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ve, macro in IBusKeysyms
IBUS_KEY_Cyrillic_YA, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ya, macro in IBusKeysyms
IBUS_KEY_Cyrillic_YERU, macro in IBusKeysyms
IBUS_KEY_Cyrillic_yeru, macro in IBusKeysyms
IBUS_KEY_Cyrillic_YU, macro in IBusKeysyms
IBUS_KEY_Cyrillic_yu, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ZE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ze, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ZHE, macro in IBusKeysyms
IBUS_KEY_Cyrillic_zhe, macro in IBusKeysyms
IBUS_KEY_Cyrillic_ZHE_descender, macro in IBusKeysyms
IBUS_KEY_Cyrillic_zhe_descender, macro in IBusKeysyms
IBUS_KEY_C_H, macro in IBusKeysyms
IBUS_KEY_C_h, macro in IBusKeysyms
IBUS_KEY_c_h, macro in IBusKeysyms
IBUS_KEY_D, macro in IBusKeysyms
IBUS_KEY_d, macro in IBusKeysyms
IBUS_KEY_Dabovedot, macro in IBusKeysyms
IBUS_KEY_dabovedot, macro in IBusKeysyms
IBUS_KEY_dagger, macro in IBusKeysyms
IBUS_KEY_Dcaron, macro in IBusKeysyms
IBUS_KEY_dcaron, macro in IBusKeysyms
IBUS_KEY_dead_A, macro in IBusKeysyms
IBUS_KEY_dead_a, macro in IBusKeysyms
IBUS_KEY_dead_abovecomma, macro in IBusKeysyms
IBUS_KEY_dead_abovedot, macro in IBusKeysyms
IBUS_KEY_dead_abovereversedcomma, macro in IBusKeysyms
IBUS_KEY_dead_abovering, macro in IBusKeysyms
IBUS_KEY_dead_acute, macro in IBusKeysyms
IBUS_KEY_dead_belowbreve, macro in IBusKeysyms
IBUS_KEY_dead_belowcircumflex, macro in IBusKeysyms
IBUS_KEY_dead_belowcomma, macro in IBusKeysyms
IBUS_KEY_dead_belowdiaeresis, macro in IBusKeysyms
IBUS_KEY_dead_belowdot, macro in IBusKeysyms
IBUS_KEY_dead_belowmacron, macro in IBusKeysyms
IBUS_KEY_dead_belowring, macro in IBusKeysyms
IBUS_KEY_dead_belowtilde, macro in IBusKeysyms
IBUS_KEY_dead_breve, macro in IBusKeysyms
IBUS_KEY_dead_capital_schwa, macro in IBusKeysyms
IBUS_KEY_dead_caron, macro in IBusKeysyms
IBUS_KEY_dead_cedilla, macro in IBusKeysyms
IBUS_KEY_dead_circumflex, macro in IBusKeysyms
IBUS_KEY_dead_currency, macro in IBusKeysyms
IBUS_KEY_dead_dasia, macro in IBusKeysyms
IBUS_KEY_dead_diaeresis, macro in IBusKeysyms
IBUS_KEY_dead_doubleacute, macro in IBusKeysyms
IBUS_KEY_dead_doublegrave, macro in IBusKeysyms
IBUS_KEY_dead_E, macro in IBusKeysyms
IBUS_KEY_dead_e, macro in IBusKeysyms
IBUS_KEY_dead_grave, macro in IBusKeysyms
IBUS_KEY_dead_greek, macro in IBusKeysyms
IBUS_KEY_dead_hook, macro in IBusKeysyms
IBUS_KEY_dead_horn, macro in IBusKeysyms
IBUS_KEY_dead_I, macro in IBusKeysyms
IBUS_KEY_dead_i, macro in IBusKeysyms
IBUS_KEY_dead_invertedbreve, macro in IBusKeysyms
IBUS_KEY_dead_iota, macro in IBusKeysyms
IBUS_KEY_dead_macron, macro in IBusKeysyms
IBUS_KEY_dead_O, macro in IBusKeysyms
IBUS_KEY_dead_o, macro in IBusKeysyms
IBUS_KEY_dead_ogonek, macro in IBusKeysyms
IBUS_KEY_dead_perispomeni, macro in IBusKeysyms
IBUS_KEY_dead_psili, macro in IBusKeysyms
IBUS_KEY_dead_semivoiced_sound, macro in IBusKeysyms
IBUS_KEY_dead_small_schwa, macro in IBusKeysyms
IBUS_KEY_dead_stroke, macro in IBusKeysyms
IBUS_KEY_dead_tilde, macro in IBusKeysyms
IBUS_KEY_dead_U, macro in IBusKeysyms
IBUS_KEY_dead_u, macro in IBusKeysyms
IBUS_KEY_dead_voiced_sound, macro in IBusKeysyms
IBUS_KEY_decimalpoint, macro in IBusKeysyms
IBUS_KEY_degree, macro in IBusKeysyms
IBUS_KEY_Delete, macro in IBusKeysyms
IBUS_KEY_diaeresis, macro in IBusKeysyms
IBUS_KEY_diamond, macro in IBusKeysyms
IBUS_KEY_digitspace, macro in IBusKeysyms
IBUS_KEY_dintegral, macro in IBusKeysyms
IBUS_KEY_division, macro in IBusKeysyms
IBUS_KEY_dollar, macro in IBusKeysyms
IBUS_KEY_DongSign, macro in IBusKeysyms
IBUS_KEY_doubbaselinedot, macro in IBusKeysyms
IBUS_KEY_doubleacute, macro in IBusKeysyms
IBUS_KEY_doubledagger, macro in IBusKeysyms
IBUS_KEY_doublelowquotemark, macro in IBusKeysyms
IBUS_KEY_Down, macro in IBusKeysyms
IBUS_KEY_downarrow, macro in IBusKeysyms
IBUS_KEY_downcaret, macro in IBusKeysyms
IBUS_KEY_downshoe, macro in IBusKeysyms
IBUS_KEY_downstile, macro in IBusKeysyms
IBUS_KEY_downtack, macro in IBusKeysyms
IBUS_KEY_Dstroke, macro in IBusKeysyms
IBUS_KEY_dstroke, macro in IBusKeysyms
IBUS_KEY_E, macro in IBusKeysyms
IBUS_KEY_e, macro in IBusKeysyms
IBUS_KEY_Eabovedot, macro in IBusKeysyms
IBUS_KEY_eabovedot, macro in IBusKeysyms
IBUS_KEY_Eacute, macro in IBusKeysyms
IBUS_KEY_eacute, macro in IBusKeysyms
IBUS_KEY_Ebelowdot, macro in IBusKeysyms
IBUS_KEY_ebelowdot, macro in IBusKeysyms
IBUS_KEY_Ecaron, macro in IBusKeysyms
IBUS_KEY_ecaron, macro in IBusKeysyms
IBUS_KEY_Ecircumflex, macro in IBusKeysyms
IBUS_KEY_ecircumflex, macro in IBusKeysyms
IBUS_KEY_Ecircumflexacute, macro in IBusKeysyms
IBUS_KEY_ecircumflexacute, macro in IBusKeysyms
IBUS_KEY_Ecircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_ecircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_Ecircumflexgrave, macro in IBusKeysyms
IBUS_KEY_ecircumflexgrave, macro in IBusKeysyms
IBUS_KEY_Ecircumflexhook, macro in IBusKeysyms
IBUS_KEY_ecircumflexhook, macro in IBusKeysyms
IBUS_KEY_Ecircumflextilde, macro in IBusKeysyms
IBUS_KEY_ecircumflextilde, macro in IBusKeysyms
IBUS_KEY_EcuSign, macro in IBusKeysyms
IBUS_KEY_Ediaeresis, macro in IBusKeysyms
IBUS_KEY_ediaeresis, macro in IBusKeysyms
IBUS_KEY_Egrave, macro in IBusKeysyms
IBUS_KEY_egrave, macro in IBusKeysyms
IBUS_KEY_Ehook, macro in IBusKeysyms
IBUS_KEY_ehook, macro in IBusKeysyms
IBUS_KEY_eightsubscript, macro in IBusKeysyms
IBUS_KEY_eightsuperior, macro in IBusKeysyms
IBUS_KEY_Eisu_Shift, macro in IBusKeysyms
IBUS_KEY_Eisu_toggle, macro in IBusKeysyms
IBUS_KEY_elementof, macro in IBusKeysyms
IBUS_KEY_ellipsis, macro in IBusKeysyms
IBUS_KEY_em3space, macro in IBusKeysyms
IBUS_KEY_em4space, macro in IBusKeysyms
IBUS_KEY_Emacron, macro in IBusKeysyms
IBUS_KEY_emacron, macro in IBusKeysyms
IBUS_KEY_emdash, macro in IBusKeysyms
IBUS_KEY_emfilledcircle, macro in IBusKeysyms
IBUS_KEY_emfilledrect, macro in IBusKeysyms
IBUS_KEY_emopencircle, macro in IBusKeysyms
IBUS_KEY_emopenrectangle, macro in IBusKeysyms
IBUS_KEY_emptyset, macro in IBusKeysyms
IBUS_KEY_emspace, macro in IBusKeysyms
IBUS_KEY_End, macro in IBusKeysyms
IBUS_KEY_endash, macro in IBusKeysyms
IBUS_KEY_enfilledcircbullet, macro in IBusKeysyms
IBUS_KEY_enfilledsqbullet, macro in IBusKeysyms
IBUS_KEY_ENG, macro in IBusKeysyms
IBUS_KEY_eng, macro in IBusKeysyms
IBUS_KEY_enopencircbullet, macro in IBusKeysyms
IBUS_KEY_enopensquarebullet, macro in IBusKeysyms
IBUS_KEY_enspace, macro in IBusKeysyms
IBUS_KEY_Eogonek, macro in IBusKeysyms
IBUS_KEY_eogonek, macro in IBusKeysyms
IBUS_KEY_equal, macro in IBusKeysyms
IBUS_KEY_Escape, macro in IBusKeysyms
IBUS_KEY_ETH, macro in IBusKeysyms
IBUS_KEY_Eth, macro in IBusKeysyms
IBUS_KEY_eth, macro in IBusKeysyms
IBUS_KEY_Etilde, macro in IBusKeysyms
IBUS_KEY_etilde, macro in IBusKeysyms
IBUS_KEY_EuroSign, macro in IBusKeysyms
ibus_key_event_from_string, function in ibusshare
ibus_key_event_to_string, function in ibusshare
IBUS_KEY_exclam, macro in IBusKeysyms
IBUS_KEY_exclamdown, macro in IBusKeysyms
IBUS_KEY_Execute, macro in IBusKeysyms
IBUS_KEY_EZH, macro in IBusKeysyms
IBUS_KEY_ezh, macro in IBusKeysyms
IBUS_KEY_F, macro in IBusKeysyms
IBUS_KEY_f, macro in IBusKeysyms
IBUS_KEY_F1, macro in IBusKeysyms
IBUS_KEY_F10, macro in IBusKeysyms
IBUS_KEY_F11, macro in IBusKeysyms
IBUS_KEY_F12, macro in IBusKeysyms
IBUS_KEY_F13, macro in IBusKeysyms
IBUS_KEY_F14, macro in IBusKeysyms
IBUS_KEY_F15, macro in IBusKeysyms
IBUS_KEY_F16, macro in IBusKeysyms
IBUS_KEY_F17, macro in IBusKeysyms
IBUS_KEY_F18, macro in IBusKeysyms
IBUS_KEY_F19, macro in IBusKeysyms
IBUS_KEY_F2, macro in IBusKeysyms
IBUS_KEY_F20, macro in IBusKeysyms
IBUS_KEY_F21, macro in IBusKeysyms
IBUS_KEY_F22, macro in IBusKeysyms
IBUS_KEY_F23, macro in IBusKeysyms
IBUS_KEY_F24, macro in IBusKeysyms
IBUS_KEY_F25, macro in IBusKeysyms
IBUS_KEY_F26, macro in IBusKeysyms
IBUS_KEY_F27, macro in IBusKeysyms
IBUS_KEY_F28, macro in IBusKeysyms
IBUS_KEY_F29, macro in IBusKeysyms
IBUS_KEY_F3, macro in IBusKeysyms
IBUS_KEY_F30, macro in IBusKeysyms
IBUS_KEY_F31, macro in IBusKeysyms
IBUS_KEY_F32, macro in IBusKeysyms
IBUS_KEY_F33, macro in IBusKeysyms
IBUS_KEY_F34, macro in IBusKeysyms
IBUS_KEY_F35, macro in IBusKeysyms
IBUS_KEY_F4, macro in IBusKeysyms
IBUS_KEY_F5, macro in IBusKeysyms
IBUS_KEY_F6, macro in IBusKeysyms
IBUS_KEY_F7, macro in IBusKeysyms
IBUS_KEY_F8, macro in IBusKeysyms
IBUS_KEY_F9, macro in IBusKeysyms
IBUS_KEY_Fabovedot, macro in IBusKeysyms
IBUS_KEY_fabovedot, macro in IBusKeysyms
IBUS_KEY_Farsi_0, macro in IBusKeysyms
IBUS_KEY_Farsi_1, macro in IBusKeysyms
IBUS_KEY_Farsi_2, macro in IBusKeysyms
IBUS_KEY_Farsi_3, macro in IBusKeysyms
IBUS_KEY_Farsi_4, macro in IBusKeysyms
IBUS_KEY_Farsi_5, macro in IBusKeysyms
IBUS_KEY_Farsi_6, macro in IBusKeysyms
IBUS_KEY_Farsi_7, macro in IBusKeysyms
IBUS_KEY_Farsi_8, macro in IBusKeysyms
IBUS_KEY_Farsi_9, macro in IBusKeysyms
IBUS_KEY_Farsi_yeh, macro in IBusKeysyms
IBUS_KEY_femalesymbol, macro in IBusKeysyms
IBUS_KEY_ff, macro in IBusKeysyms
IBUS_KEY_FFrancSign, macro in IBusKeysyms
IBUS_KEY_figdash, macro in IBusKeysyms
IBUS_KEY_filledlefttribullet, macro in IBusKeysyms
IBUS_KEY_filledrectbullet, macro in IBusKeysyms
IBUS_KEY_filledrighttribullet, macro in IBusKeysyms
IBUS_KEY_filledtribulletdown, macro in IBusKeysyms
IBUS_KEY_filledtribulletup, macro in IBusKeysyms
IBUS_KEY_Find, macro in IBusKeysyms
IBUS_KEY_First_Virtual_Screen, macro in IBusKeysyms
IBUS_KEY_fiveeighths, macro in IBusKeysyms
IBUS_KEY_fivesixths, macro in IBusKeysyms
IBUS_KEY_fivesubscript, macro in IBusKeysyms
IBUS_KEY_fivesuperior, macro in IBusKeysyms
IBUS_KEY_fourfifths, macro in IBusKeysyms
IBUS_KEY_foursubscript, macro in IBusKeysyms
IBUS_KEY_foursuperior, macro in IBusKeysyms
IBUS_KEY_fourthroot, macro in IBusKeysyms
IBUS_KEY_function, macro in IBusKeysyms
IBUS_KEY_G, macro in IBusKeysyms
IBUS_KEY_g, macro in IBusKeysyms
IBUS_KEY_Gabovedot, macro in IBusKeysyms
IBUS_KEY_gabovedot, macro in IBusKeysyms
IBUS_KEY_Gbreve, macro in IBusKeysyms
IBUS_KEY_gbreve, macro in IBusKeysyms
IBUS_KEY_Gcaron, macro in IBusKeysyms
IBUS_KEY_gcaron, macro in IBusKeysyms
IBUS_KEY_Gcedilla, macro in IBusKeysyms
IBUS_KEY_gcedilla, macro in IBusKeysyms
IBUS_KEY_Gcircumflex, macro in IBusKeysyms
IBUS_KEY_gcircumflex, macro in IBusKeysyms
IBUS_KEY_Georgian_an, macro in IBusKeysyms
IBUS_KEY_Georgian_ban, macro in IBusKeysyms
IBUS_KEY_Georgian_can, macro in IBusKeysyms
IBUS_KEY_Georgian_char, macro in IBusKeysyms
IBUS_KEY_Georgian_chin, macro in IBusKeysyms
IBUS_KEY_Georgian_cil, macro in IBusKeysyms
IBUS_KEY_Georgian_don, macro in IBusKeysyms
IBUS_KEY_Georgian_en, macro in IBusKeysyms
IBUS_KEY_Georgian_fi, macro in IBusKeysyms
IBUS_KEY_Georgian_gan, macro in IBusKeysyms
IBUS_KEY_Georgian_ghan, macro in IBusKeysyms
IBUS_KEY_Georgian_hae, macro in IBusKeysyms
IBUS_KEY_Georgian_har, macro in IBusKeysyms
IBUS_KEY_Georgian_he, macro in IBusKeysyms
IBUS_KEY_Georgian_hie, macro in IBusKeysyms
IBUS_KEY_Georgian_hoe, macro in IBusKeysyms
IBUS_KEY_Georgian_in, macro in IBusKeysyms
IBUS_KEY_Georgian_jhan, macro in IBusKeysyms
IBUS_KEY_Georgian_jil, macro in IBusKeysyms
IBUS_KEY_Georgian_kan, macro in IBusKeysyms
IBUS_KEY_Georgian_khar, macro in IBusKeysyms
IBUS_KEY_Georgian_las, macro in IBusKeysyms
IBUS_KEY_Georgian_man, macro in IBusKeysyms
IBUS_KEY_Georgian_nar, macro in IBusKeysyms
IBUS_KEY_Georgian_on, macro in IBusKeysyms
IBUS_KEY_Georgian_par, macro in IBusKeysyms
IBUS_KEY_Georgian_phar, macro in IBusKeysyms
IBUS_KEY_Georgian_qar, macro in IBusKeysyms
IBUS_KEY_Georgian_rae, macro in IBusKeysyms
IBUS_KEY_Georgian_san, macro in IBusKeysyms
IBUS_KEY_Georgian_shin, macro in IBusKeysyms
IBUS_KEY_Georgian_tan, macro in IBusKeysyms
IBUS_KEY_Georgian_tar, macro in IBusKeysyms
IBUS_KEY_Georgian_un, macro in IBusKeysyms
IBUS_KEY_Georgian_vin, macro in IBusKeysyms
IBUS_KEY_Georgian_we, macro in IBusKeysyms
IBUS_KEY_Georgian_xan, macro in IBusKeysyms
IBUS_KEY_Georgian_zen, macro in IBusKeysyms
IBUS_KEY_Georgian_zhar, macro in IBusKeysyms
IBUS_KEY_grave, macro in IBusKeysyms
IBUS_KEY_greater, macro in IBusKeysyms
IBUS_KEY_greaterthanequal, macro in IBusKeysyms
IBUS_KEY_Greek_accentdieresis, macro in IBusKeysyms
IBUS_KEY_Greek_ALPHA, macro in IBusKeysyms
IBUS_KEY_Greek_alpha, macro in IBusKeysyms
IBUS_KEY_Greek_ALPHAaccent, macro in IBusKeysyms
IBUS_KEY_Greek_alphaaccent, macro in IBusKeysyms
IBUS_KEY_Greek_BETA, macro in IBusKeysyms
IBUS_KEY_Greek_beta, macro in IBusKeysyms
IBUS_KEY_Greek_CHI, macro in IBusKeysyms
IBUS_KEY_Greek_chi, macro in IBusKeysyms
IBUS_KEY_Greek_DELTA, macro in IBusKeysyms
IBUS_KEY_Greek_delta, macro in IBusKeysyms
IBUS_KEY_Greek_EPSILON, macro in IBusKeysyms
IBUS_KEY_Greek_epsilon, macro in IBusKeysyms
IBUS_KEY_Greek_EPSILONaccent, macro in IBusKeysyms
IBUS_KEY_Greek_epsilonaccent, macro in IBusKeysyms
IBUS_KEY_Greek_ETA, macro in IBusKeysyms
IBUS_KEY_Greek_eta, macro in IBusKeysyms
IBUS_KEY_Greek_ETAaccent, macro in IBusKeysyms
IBUS_KEY_Greek_etaaccent, macro in IBusKeysyms
IBUS_KEY_Greek_finalsmallsigma, macro in IBusKeysyms
IBUS_KEY_Greek_GAMMA, macro in IBusKeysyms
IBUS_KEY_Greek_gamma, macro in IBusKeysyms
IBUS_KEY_Greek_horizbar, macro in IBusKeysyms
IBUS_KEY_Greek_IOTA, macro in IBusKeysyms
IBUS_KEY_Greek_iota, macro in IBusKeysyms
IBUS_KEY_Greek_IOTAaccent, macro in IBusKeysyms
IBUS_KEY_Greek_iotaaccent, macro in IBusKeysyms
IBUS_KEY_Greek_iotaaccentdieresis, macro in IBusKeysyms
IBUS_KEY_Greek_IOTAdiaeresis, macro in IBusKeysyms
IBUS_KEY_Greek_IOTAdieresis, macro in IBusKeysyms
IBUS_KEY_Greek_iotadieresis, macro in IBusKeysyms
IBUS_KEY_Greek_KAPPA, macro in IBusKeysyms
IBUS_KEY_Greek_kappa, macro in IBusKeysyms
IBUS_KEY_Greek_LAMBDA, macro in IBusKeysyms
IBUS_KEY_Greek_lambda, macro in IBusKeysyms
IBUS_KEY_Greek_LAMDA, macro in IBusKeysyms
IBUS_KEY_Greek_lamda, macro in IBusKeysyms
IBUS_KEY_Greek_MU, macro in IBusKeysyms
IBUS_KEY_Greek_mu, macro in IBusKeysyms
IBUS_KEY_Greek_NU, macro in IBusKeysyms
IBUS_KEY_Greek_nu, macro in IBusKeysyms
IBUS_KEY_Greek_OMEGA, macro in IBusKeysyms
IBUS_KEY_Greek_omega, macro in IBusKeysyms
IBUS_KEY_Greek_OMEGAaccent, macro in IBusKeysyms
IBUS_KEY_Greek_omegaaccent, macro in IBusKeysyms
IBUS_KEY_Greek_OMICRON, macro in IBusKeysyms
IBUS_KEY_Greek_omicron, macro in IBusKeysyms
IBUS_KEY_Greek_OMICRONaccent, macro in IBusKeysyms
IBUS_KEY_Greek_omicronaccent, macro in IBusKeysyms
IBUS_KEY_Greek_PHI, macro in IBusKeysyms
IBUS_KEY_Greek_phi, macro in IBusKeysyms
IBUS_KEY_Greek_PI, macro in IBusKeysyms
IBUS_KEY_Greek_pi, macro in IBusKeysyms
IBUS_KEY_Greek_PSI, macro in IBusKeysyms
IBUS_KEY_Greek_psi, macro in IBusKeysyms
IBUS_KEY_Greek_RHO, macro in IBusKeysyms
IBUS_KEY_Greek_rho, macro in IBusKeysyms
IBUS_KEY_Greek_SIGMA, macro in IBusKeysyms
IBUS_KEY_Greek_sigma, macro in IBusKeysyms
IBUS_KEY_Greek_switch, macro in IBusKeysyms
IBUS_KEY_Greek_TAU, macro in IBusKeysyms
IBUS_KEY_Greek_tau, macro in IBusKeysyms
IBUS_KEY_Greek_THETA, macro in IBusKeysyms
IBUS_KEY_Greek_theta, macro in IBusKeysyms
IBUS_KEY_Greek_UPSILON, macro in IBusKeysyms
IBUS_KEY_Greek_upsilon, macro in IBusKeysyms
IBUS_KEY_Greek_UPSILONaccent, macro in IBusKeysyms
IBUS_KEY_Greek_upsilonaccent, macro in IBusKeysyms
IBUS_KEY_Greek_upsilonaccentdieresis, macro in IBusKeysyms
IBUS_KEY_Greek_UPSILONdieresis, macro in IBusKeysyms
IBUS_KEY_Greek_upsilondieresis, macro in IBusKeysyms
IBUS_KEY_Greek_XI, macro in IBusKeysyms
IBUS_KEY_Greek_xi, macro in IBusKeysyms
IBUS_KEY_Greek_ZETA, macro in IBusKeysyms
IBUS_KEY_Greek_zeta, macro in IBusKeysyms
IBUS_KEY_guillemotleft, macro in IBusKeysyms
IBUS_KEY_guillemotright, macro in IBusKeysyms
IBUS_KEY_H, macro in IBusKeysyms
IBUS_KEY_h, macro in IBusKeysyms
IBUS_KEY_hairspace, macro in IBusKeysyms
IBUS_KEY_Hangul, macro in IBusKeysyms
IBUS_KEY_Hangul_A, macro in IBusKeysyms
IBUS_KEY_Hangul_AE, macro in IBusKeysyms
IBUS_KEY_Hangul_AraeA, macro in IBusKeysyms
IBUS_KEY_Hangul_AraeAE, macro in IBusKeysyms
IBUS_KEY_Hangul_Banja, macro in IBusKeysyms
IBUS_KEY_Hangul_Cieuc, macro in IBusKeysyms
IBUS_KEY_Hangul_Codeinput, macro in IBusKeysyms
IBUS_KEY_Hangul_Dikeud, macro in IBusKeysyms
IBUS_KEY_Hangul_E, macro in IBusKeysyms
IBUS_KEY_Hangul_End, macro in IBusKeysyms
IBUS_KEY_Hangul_EO, macro in IBusKeysyms
IBUS_KEY_Hangul_EU, macro in IBusKeysyms
IBUS_KEY_Hangul_Hanja, macro in IBusKeysyms
IBUS_KEY_Hangul_Hieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_I, macro in IBusKeysyms
IBUS_KEY_Hangul_Ieung, macro in IBusKeysyms
IBUS_KEY_Hangul_Jamo, macro in IBusKeysyms
IBUS_KEY_Hangul_Jeonja, macro in IBusKeysyms
IBUS_KEY_Hangul_Jieuj, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Cieuc, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Dikeud, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Hieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Ieung, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Jieuj, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Khieuq, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Kiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_J_KiyeogSios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_KkogjiDalrinIeung, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Mieum, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Nieun, macro in IBusKeysyms
IBUS_KEY_Hangul_J_NieunHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_J_NieunJieuj, macro in IBusKeysyms
IBUS_KEY_Hangul_J_PanSios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Phieuf, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Pieub, macro in IBusKeysyms
IBUS_KEY_Hangul_J_PieubSios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Rieul, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulKiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulMieum, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulPhieuf, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulPieub, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulSios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_RieulTieut, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Sios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_SsangKiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_J_SsangSios, macro in IBusKeysyms
IBUS_KEY_Hangul_J_Tieut, macro in IBusKeysyms
IBUS_KEY_Hangul_J_YeorinHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_Khieuq, macro in IBusKeysyms
IBUS_KEY_Hangul_Kiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_KiyeogSios, macro in IBusKeysyms
IBUS_KEY_Hangul_KkogjiDalrinIeung, macro in IBusKeysyms
IBUS_KEY_Hangul_Mieum, macro in IBusKeysyms
IBUS_KEY_Hangul_MultipleCandidate, macro in IBusKeysyms
IBUS_KEY_Hangul_Nieun, macro in IBusKeysyms
IBUS_KEY_Hangul_NieunHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_NieunJieuj, macro in IBusKeysyms
IBUS_KEY_Hangul_O, macro in IBusKeysyms
IBUS_KEY_Hangul_OE, macro in IBusKeysyms
IBUS_KEY_Hangul_PanSios, macro in IBusKeysyms
IBUS_KEY_Hangul_Phieuf, macro in IBusKeysyms
IBUS_KEY_Hangul_Pieub, macro in IBusKeysyms
IBUS_KEY_Hangul_PieubSios, macro in IBusKeysyms
IBUS_KEY_Hangul_PostHanja, macro in IBusKeysyms
IBUS_KEY_Hangul_PreHanja, macro in IBusKeysyms
IBUS_KEY_Hangul_PreviousCandidate, macro in IBusKeysyms
IBUS_KEY_Hangul_Rieul, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulKiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulMieum, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulPhieuf, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulPieub, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulSios, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulTieut, macro in IBusKeysyms
IBUS_KEY_Hangul_RieulYeorinHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_Romaja, macro in IBusKeysyms
IBUS_KEY_Hangul_SingleCandidate, macro in IBusKeysyms
IBUS_KEY_Hangul_Sios, macro in IBusKeysyms
IBUS_KEY_Hangul_Special, macro in IBusKeysyms
IBUS_KEY_Hangul_SsangDikeud, macro in IBusKeysyms
IBUS_KEY_Hangul_SsangJieuj, macro in IBusKeysyms
IBUS_KEY_Hangul_SsangKiyeog, macro in IBusKeysyms
IBUS_KEY_Hangul_SsangPieub, macro in IBusKeysyms
IBUS_KEY_Hangul_SsangSios, macro in IBusKeysyms
IBUS_KEY_Hangul_Start, macro in IBusKeysyms
IBUS_KEY_Hangul_SunkyeongeumMieum, macro in IBusKeysyms
IBUS_KEY_Hangul_SunkyeongeumPhieuf, macro in IBusKeysyms
IBUS_KEY_Hangul_SunkyeongeumPieub, macro in IBusKeysyms
IBUS_KEY_Hangul_switch, macro in IBusKeysyms
IBUS_KEY_Hangul_Tieut, macro in IBusKeysyms
IBUS_KEY_Hangul_U, macro in IBusKeysyms
IBUS_KEY_Hangul_WA, macro in IBusKeysyms
IBUS_KEY_Hangul_WAE, macro in IBusKeysyms
IBUS_KEY_Hangul_WE, macro in IBusKeysyms
IBUS_KEY_Hangul_WEO, macro in IBusKeysyms
IBUS_KEY_Hangul_WI, macro in IBusKeysyms
IBUS_KEY_Hangul_YA, macro in IBusKeysyms
IBUS_KEY_Hangul_YAE, macro in IBusKeysyms
IBUS_KEY_Hangul_YE, macro in IBusKeysyms
IBUS_KEY_Hangul_YEO, macro in IBusKeysyms
IBUS_KEY_Hangul_YeorinHieuh, macro in IBusKeysyms
IBUS_KEY_Hangul_YI, macro in IBusKeysyms
IBUS_KEY_Hangul_YO, macro in IBusKeysyms
IBUS_KEY_Hangul_YU, macro in IBusKeysyms
IBUS_KEY_Hankaku, macro in IBusKeysyms
IBUS_KEY_Hcircumflex, macro in IBusKeysyms
IBUS_KEY_hcircumflex, macro in IBusKeysyms
IBUS_KEY_heart, macro in IBusKeysyms
IBUS_KEY_hebrew_aleph, macro in IBusKeysyms
IBUS_KEY_hebrew_ayin, macro in IBusKeysyms
IBUS_KEY_hebrew_bet, macro in IBusKeysyms
IBUS_KEY_hebrew_beth, macro in IBusKeysyms
IBUS_KEY_hebrew_chet, macro in IBusKeysyms
IBUS_KEY_hebrew_dalet, macro in IBusKeysyms
IBUS_KEY_hebrew_daleth, macro in IBusKeysyms
IBUS_KEY_hebrew_doublelowline, macro in IBusKeysyms
IBUS_KEY_hebrew_finalkaph, macro in IBusKeysyms
IBUS_KEY_hebrew_finalmem, macro in IBusKeysyms
IBUS_KEY_hebrew_finalnun, macro in IBusKeysyms
IBUS_KEY_hebrew_finalpe, macro in IBusKeysyms
IBUS_KEY_hebrew_finalzade, macro in IBusKeysyms
IBUS_KEY_hebrew_finalzadi, macro in IBusKeysyms
IBUS_KEY_hebrew_gimel, macro in IBusKeysyms
IBUS_KEY_hebrew_gimmel, macro in IBusKeysyms
IBUS_KEY_hebrew_he, macro in IBusKeysyms
IBUS_KEY_hebrew_het, macro in IBusKeysyms
IBUS_KEY_hebrew_kaph, macro in IBusKeysyms
IBUS_KEY_hebrew_kuf, macro in IBusKeysyms
IBUS_KEY_hebrew_lamed, macro in IBusKeysyms
IBUS_KEY_hebrew_mem, macro in IBusKeysyms
IBUS_KEY_hebrew_nun, macro in IBusKeysyms
IBUS_KEY_hebrew_pe, macro in IBusKeysyms
IBUS_KEY_hebrew_qoph, macro in IBusKeysyms
IBUS_KEY_hebrew_resh, macro in IBusKeysyms
IBUS_KEY_hebrew_samech, macro in IBusKeysyms
IBUS_KEY_hebrew_samekh, macro in IBusKeysyms
IBUS_KEY_hebrew_shin, macro in IBusKeysyms
IBUS_KEY_Hebrew_switch, macro in IBusKeysyms
IBUS_KEY_hebrew_taf, macro in IBusKeysyms
IBUS_KEY_hebrew_taw, macro in IBusKeysyms
IBUS_KEY_hebrew_tet, macro in IBusKeysyms
IBUS_KEY_hebrew_teth, macro in IBusKeysyms
IBUS_KEY_hebrew_waw, macro in IBusKeysyms
IBUS_KEY_hebrew_yod, macro in IBusKeysyms
IBUS_KEY_hebrew_zade, macro in IBusKeysyms
IBUS_KEY_hebrew_zadi, macro in IBusKeysyms
IBUS_KEY_hebrew_zain, macro in IBusKeysyms
IBUS_KEY_hebrew_zayin, macro in IBusKeysyms
IBUS_KEY_Help, macro in IBusKeysyms
IBUS_KEY_Henkan, macro in IBusKeysyms
IBUS_KEY_Henkan_Mode, macro in IBusKeysyms
IBUS_KEY_hexagram, macro in IBusKeysyms
IBUS_KEY_Hiragana, macro in IBusKeysyms
IBUS_KEY_Hiragana_Katakana, macro in IBusKeysyms
IBUS_KEY_Home, macro in IBusKeysyms
IBUS_KEY_horizconnector, macro in IBusKeysyms
IBUS_KEY_horizlinescan1, macro in IBusKeysyms
IBUS_KEY_horizlinescan3, macro in IBusKeysyms
IBUS_KEY_horizlinescan5, macro in IBusKeysyms
IBUS_KEY_horizlinescan7, macro in IBusKeysyms
IBUS_KEY_horizlinescan9, macro in IBusKeysyms
IBUS_KEY_Hstroke, macro in IBusKeysyms
IBUS_KEY_hstroke, macro in IBusKeysyms
IBUS_KEY_ht, macro in IBusKeysyms
IBUS_KEY_Hyper_L, macro in IBusKeysyms
IBUS_KEY_Hyper_R, macro in IBusKeysyms
IBUS_KEY_hyphen, macro in IBusKeysyms
IBUS_KEY_I, macro in IBusKeysyms
IBUS_KEY_i, macro in IBusKeysyms
IBUS_KEY_Iabovedot, macro in IBusKeysyms
IBUS_KEY_Iacute, macro in IBusKeysyms
IBUS_KEY_iacute, macro in IBusKeysyms
IBUS_KEY_Ibelowdot, macro in IBusKeysyms
IBUS_KEY_ibelowdot, macro in IBusKeysyms
IBUS_KEY_Ibreve, macro in IBusKeysyms
IBUS_KEY_ibreve, macro in IBusKeysyms
IBUS_KEY_Icircumflex, macro in IBusKeysyms
IBUS_KEY_icircumflex, macro in IBusKeysyms
IBUS_KEY_identical, macro in IBusKeysyms
IBUS_KEY_Idiaeresis, macro in IBusKeysyms
IBUS_KEY_idiaeresis, macro in IBusKeysyms
IBUS_KEY_idotless, macro in IBusKeysyms
IBUS_KEY_ifonlyif, macro in IBusKeysyms
IBUS_KEY_Igrave, macro in IBusKeysyms
IBUS_KEY_igrave, macro in IBusKeysyms
IBUS_KEY_Ihook, macro in IBusKeysyms
IBUS_KEY_ihook, macro in IBusKeysyms
IBUS_KEY_Imacron, macro in IBusKeysyms
IBUS_KEY_imacron, macro in IBusKeysyms
IBUS_KEY_implies, macro in IBusKeysyms
IBUS_KEY_includedin, macro in IBusKeysyms
IBUS_KEY_includes, macro in IBusKeysyms
IBUS_KEY_infinity, macro in IBusKeysyms
IBUS_KEY_Insert, macro in IBusKeysyms
IBUS_KEY_integral, macro in IBusKeysyms
IBUS_KEY_intersection, macro in IBusKeysyms
IBUS_KEY_Iogonek, macro in IBusKeysyms
IBUS_KEY_iogonek, macro in IBusKeysyms
IBUS_KEY_ISO_Center_Object, macro in IBusKeysyms
IBUS_KEY_ISO_Continuous_Underline, macro in IBusKeysyms
IBUS_KEY_ISO_Discontinuous_Underline, macro in IBusKeysyms
IBUS_KEY_ISO_Emphasize, macro in IBusKeysyms
IBUS_KEY_ISO_Enter, macro in IBusKeysyms
IBUS_KEY_ISO_Fast_Cursor_Down, macro in IBusKeysyms
IBUS_KEY_ISO_Fast_Cursor_Left, macro in IBusKeysyms
IBUS_KEY_ISO_Fast_Cursor_Right, macro in IBusKeysyms
IBUS_KEY_ISO_Fast_Cursor_Up, macro in IBusKeysyms
IBUS_KEY_ISO_First_Group, macro in IBusKeysyms
IBUS_KEY_ISO_First_Group_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Group_Latch, macro in IBusKeysyms
IBUS_KEY_ISO_Group_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Group_Shift, macro in IBusKeysyms
IBUS_KEY_ISO_Last_Group, macro in IBusKeysyms
IBUS_KEY_ISO_Last_Group_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Left_Tab, macro in IBusKeysyms
IBUS_KEY_ISO_Level2_Latch, macro in IBusKeysyms
IBUS_KEY_ISO_Level3_Latch, macro in IBusKeysyms
IBUS_KEY_ISO_Level3_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Level3_Shift, macro in IBusKeysyms
IBUS_KEY_ISO_Level5_Latch, macro in IBusKeysyms
IBUS_KEY_ISO_Level5_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Level5_Shift, macro in IBusKeysyms
IBUS_KEY_ISO_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Move_Line_Down, macro in IBusKeysyms
IBUS_KEY_ISO_Move_Line_Up, macro in IBusKeysyms
IBUS_KEY_ISO_Next_Group, macro in IBusKeysyms
IBUS_KEY_ISO_Next_Group_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Partial_Line_Down, macro in IBusKeysyms
IBUS_KEY_ISO_Partial_Line_Up, macro in IBusKeysyms
IBUS_KEY_ISO_Partial_Space_Left, macro in IBusKeysyms
IBUS_KEY_ISO_Partial_Space_Right, macro in IBusKeysyms
IBUS_KEY_ISO_Prev_Group, macro in IBusKeysyms
IBUS_KEY_ISO_Prev_Group_Lock, macro in IBusKeysyms
IBUS_KEY_ISO_Release_Both_Margins, macro in IBusKeysyms
IBUS_KEY_ISO_Release_Margin_Left, macro in IBusKeysyms
IBUS_KEY_ISO_Release_Margin_Right, macro in IBusKeysyms
IBUS_KEY_ISO_Set_Margin_Left, macro in IBusKeysyms
IBUS_KEY_ISO_Set_Margin_Right, macro in IBusKeysyms
IBUS_KEY_Itilde, macro in IBusKeysyms
IBUS_KEY_itilde, macro in IBusKeysyms
IBUS_KEY_J, macro in IBusKeysyms
IBUS_KEY_j, macro in IBusKeysyms
IBUS_KEY_Jcircumflex, macro in IBusKeysyms
IBUS_KEY_jcircumflex, macro in IBusKeysyms
IBUS_KEY_jot, macro in IBusKeysyms
IBUS_KEY_K, macro in IBusKeysyms
IBUS_KEY_k, macro in IBusKeysyms
IBUS_KEY_kana_A, macro in IBusKeysyms
IBUS_KEY_kana_a, macro in IBusKeysyms
IBUS_KEY_kana_CHI, macro in IBusKeysyms
IBUS_KEY_kana_closingbracket, macro in IBusKeysyms
IBUS_KEY_kana_comma, macro in IBusKeysyms
IBUS_KEY_kana_conjunctive, macro in IBusKeysyms
IBUS_KEY_kana_E, macro in IBusKeysyms
IBUS_KEY_kana_e, macro in IBusKeysyms
IBUS_KEY_kana_FU, macro in IBusKeysyms
IBUS_KEY_kana_fullstop, macro in IBusKeysyms
IBUS_KEY_kana_HA, macro in IBusKeysyms
IBUS_KEY_kana_HE, macro in IBusKeysyms
IBUS_KEY_kana_HI, macro in IBusKeysyms
IBUS_KEY_kana_HO, macro in IBusKeysyms
IBUS_KEY_kana_HU, macro in IBusKeysyms
IBUS_KEY_kana_I, macro in IBusKeysyms
IBUS_KEY_kana_i, macro in IBusKeysyms
IBUS_KEY_kana_KA, macro in IBusKeysyms
IBUS_KEY_kana_KE, macro in IBusKeysyms
IBUS_KEY_kana_KI, macro in IBusKeysyms
IBUS_KEY_kana_KO, macro in IBusKeysyms
IBUS_KEY_kana_KU, macro in IBusKeysyms
IBUS_KEY_Kana_Lock, macro in IBusKeysyms
IBUS_KEY_kana_MA, macro in IBusKeysyms
IBUS_KEY_kana_ME, macro in IBusKeysyms
IBUS_KEY_kana_MI, macro in IBusKeysyms
IBUS_KEY_kana_middledot, macro in IBusKeysyms
IBUS_KEY_kana_MO, macro in IBusKeysyms
IBUS_KEY_kana_MU, macro in IBusKeysyms
IBUS_KEY_kana_N, macro in IBusKeysyms
IBUS_KEY_kana_NA, macro in IBusKeysyms
IBUS_KEY_kana_NE, macro in IBusKeysyms
IBUS_KEY_kana_NI, macro in IBusKeysyms
IBUS_KEY_kana_NO, macro in IBusKeysyms
IBUS_KEY_kana_NU, macro in IBusKeysyms
IBUS_KEY_kana_O, macro in IBusKeysyms
IBUS_KEY_kana_o, macro in IBusKeysyms
IBUS_KEY_kana_openingbracket, macro in IBusKeysyms
IBUS_KEY_kana_RA, macro in IBusKeysyms
IBUS_KEY_kana_RE, macro in IBusKeysyms
IBUS_KEY_kana_RI, macro in IBusKeysyms
IBUS_KEY_kana_RO, macro in IBusKeysyms
IBUS_KEY_kana_RU, macro in IBusKeysyms
IBUS_KEY_kana_SA, macro in IBusKeysyms
IBUS_KEY_kana_SE, macro in IBusKeysyms
IBUS_KEY_kana_SHI, macro in IBusKeysyms
IBUS_KEY_Kana_Shift, macro in IBusKeysyms
IBUS_KEY_kana_SO, macro in IBusKeysyms
IBUS_KEY_kana_SU, macro in IBusKeysyms
IBUS_KEY_kana_switch, macro in IBusKeysyms
IBUS_KEY_kana_TA, macro in IBusKeysyms
IBUS_KEY_kana_TE, macro in IBusKeysyms
IBUS_KEY_kana_TI, macro in IBusKeysyms
IBUS_KEY_kana_TO, macro in IBusKeysyms
IBUS_KEY_kana_TSU, macro in IBusKeysyms
IBUS_KEY_kana_tsu, macro in IBusKeysyms
IBUS_KEY_kana_TU, macro in IBusKeysyms
IBUS_KEY_kana_tu, macro in IBusKeysyms
IBUS_KEY_kana_U, macro in IBusKeysyms
IBUS_KEY_kana_u, macro in IBusKeysyms
IBUS_KEY_kana_WA, macro in IBusKeysyms
IBUS_KEY_kana_WO, macro in IBusKeysyms
IBUS_KEY_kana_YA, macro in IBusKeysyms
IBUS_KEY_kana_ya, macro in IBusKeysyms
IBUS_KEY_kana_YO, macro in IBusKeysyms
IBUS_KEY_kana_yo, macro in IBusKeysyms
IBUS_KEY_kana_YU, macro in IBusKeysyms
IBUS_KEY_kana_yu, macro in IBusKeysyms
IBUS_KEY_Kanji, macro in IBusKeysyms
IBUS_KEY_Kanji_Bangou, macro in IBusKeysyms
IBUS_KEY_kappa, macro in IBusKeysyms
IBUS_KEY_Katakana, macro in IBusKeysyms
IBUS_KEY_Kcedilla, macro in IBusKeysyms
IBUS_KEY_kcedilla, macro in IBusKeysyms
IBUS_KEY_Korean_Won, macro in IBusKeysyms
IBUS_KEY_KP_0, macro in IBusKeysyms
IBUS_KEY_KP_1, macro in IBusKeysyms
IBUS_KEY_KP_2, macro in IBusKeysyms
IBUS_KEY_KP_3, macro in IBusKeysyms
IBUS_KEY_KP_4, macro in IBusKeysyms
IBUS_KEY_KP_5, macro in IBusKeysyms
IBUS_KEY_KP_6, macro in IBusKeysyms
IBUS_KEY_KP_7, macro in IBusKeysyms
IBUS_KEY_KP_8, macro in IBusKeysyms
IBUS_KEY_KP_9, macro in IBusKeysyms
IBUS_KEY_KP_Add, macro in IBusKeysyms
IBUS_KEY_KP_Begin, macro in IBusKeysyms
IBUS_KEY_KP_Decimal, macro in IBusKeysyms
IBUS_KEY_KP_Delete, macro in IBusKeysyms
IBUS_KEY_KP_Divide, macro in IBusKeysyms
IBUS_KEY_KP_Down, macro in IBusKeysyms
IBUS_KEY_KP_End, macro in IBusKeysyms
IBUS_KEY_KP_Enter, macro in IBusKeysyms
IBUS_KEY_KP_Equal, macro in IBusKeysyms
IBUS_KEY_KP_F1, macro in IBusKeysyms
IBUS_KEY_KP_F2, macro in IBusKeysyms
IBUS_KEY_KP_F3, macro in IBusKeysyms
IBUS_KEY_KP_F4, macro in IBusKeysyms
IBUS_KEY_KP_Home, macro in IBusKeysyms
IBUS_KEY_KP_Insert, macro in IBusKeysyms
IBUS_KEY_KP_Left, macro in IBusKeysyms
IBUS_KEY_KP_Multiply, macro in IBusKeysyms
IBUS_KEY_KP_Next, macro in IBusKeysyms
IBUS_KEY_KP_Page_Down, macro in IBusKeysyms
IBUS_KEY_KP_Page_Up, macro in IBusKeysyms
IBUS_KEY_KP_Prior, macro in IBusKeysyms
IBUS_KEY_KP_Right, macro in IBusKeysyms
IBUS_KEY_KP_Separator, macro in IBusKeysyms
IBUS_KEY_KP_Space, macro in IBusKeysyms
IBUS_KEY_KP_Subtract, macro in IBusKeysyms
IBUS_KEY_KP_Tab, macro in IBusKeysyms
IBUS_KEY_KP_Up, macro in IBusKeysyms
IBUS_KEY_kra, macro in IBusKeysyms
IBUS_KEY_L, macro in IBusKeysyms
IBUS_KEY_l, macro in IBusKeysyms
IBUS_KEY_L1, macro in IBusKeysyms
IBUS_KEY_L10, macro in IBusKeysyms
IBUS_KEY_L2, macro in IBusKeysyms
IBUS_KEY_L3, macro in IBusKeysyms
IBUS_KEY_L4, macro in IBusKeysyms
IBUS_KEY_L5, macro in IBusKeysyms
IBUS_KEY_L6, macro in IBusKeysyms
IBUS_KEY_L7, macro in IBusKeysyms
IBUS_KEY_L8, macro in IBusKeysyms
IBUS_KEY_L9, macro in IBusKeysyms
IBUS_KEY_Lacute, macro in IBusKeysyms
IBUS_KEY_lacute, macro in IBusKeysyms
IBUS_KEY_Last_Virtual_Screen, macro in IBusKeysyms
IBUS_KEY_latincross, macro in IBusKeysyms
IBUS_KEY_Lbelowdot, macro in IBusKeysyms
IBUS_KEY_lbelowdot, macro in IBusKeysyms
IBUS_KEY_Lcaron, macro in IBusKeysyms
IBUS_KEY_lcaron, macro in IBusKeysyms
IBUS_KEY_Lcedilla, macro in IBusKeysyms
IBUS_KEY_lcedilla, macro in IBusKeysyms
IBUS_KEY_Left, macro in IBusKeysyms
IBUS_KEY_leftanglebracket, macro in IBusKeysyms
IBUS_KEY_leftarrow, macro in IBusKeysyms
IBUS_KEY_leftcaret, macro in IBusKeysyms
IBUS_KEY_leftdoublequotemark, macro in IBusKeysyms
IBUS_KEY_leftmiddlecurlybrace, macro in IBusKeysyms
IBUS_KEY_leftopentriangle, macro in IBusKeysyms
IBUS_KEY_leftpointer, macro in IBusKeysyms
IBUS_KEY_leftradical, macro in IBusKeysyms
IBUS_KEY_leftshoe, macro in IBusKeysyms
IBUS_KEY_leftsinglequotemark, macro in IBusKeysyms
IBUS_KEY_leftt, macro in IBusKeysyms
IBUS_KEY_lefttack, macro in IBusKeysyms
IBUS_KEY_less, macro in IBusKeysyms
IBUS_KEY_lessthanequal, macro in IBusKeysyms
IBUS_KEY_lf, macro in IBusKeysyms
IBUS_KEY_Linefeed, macro in IBusKeysyms
IBUS_KEY_LiraSign, macro in IBusKeysyms
IBUS_KEY_logicaland, macro in IBusKeysyms
IBUS_KEY_logicalor, macro in IBusKeysyms
IBUS_KEY_lowleftcorner, macro in IBusKeysyms
IBUS_KEY_lowrightcorner, macro in IBusKeysyms
IBUS_KEY_Lstroke, macro in IBusKeysyms
IBUS_KEY_lstroke, macro in IBusKeysyms
IBUS_KEY_M, macro in IBusKeysyms
IBUS_KEY_m, macro in IBusKeysyms
IBUS_KEY_Mabovedot, macro in IBusKeysyms
IBUS_KEY_mabovedot, macro in IBusKeysyms
IBUS_KEY_Macedonia_DSE, macro in IBusKeysyms
IBUS_KEY_Macedonia_dse, macro in IBusKeysyms
IBUS_KEY_Macedonia_GJE, macro in IBusKeysyms
IBUS_KEY_Macedonia_gje, macro in IBusKeysyms
IBUS_KEY_Macedonia_KJE, macro in IBusKeysyms
IBUS_KEY_Macedonia_kje, macro in IBusKeysyms
IBUS_KEY_macron, macro in IBusKeysyms
IBUS_KEY_Mae_Koho, macro in IBusKeysyms
IBUS_KEY_malesymbol, macro in IBusKeysyms
IBUS_KEY_maltesecross, macro in IBusKeysyms
IBUS_KEY_marker, macro in IBusKeysyms
IBUS_KEY_masculine, macro in IBusKeysyms
IBUS_KEY_Massyo, macro in IBusKeysyms
IBUS_KEY_Menu, macro in IBusKeysyms
IBUS_KEY_Meta_L, macro in IBusKeysyms
IBUS_KEY_Meta_R, macro in IBusKeysyms
IBUS_KEY_MillSign, macro in IBusKeysyms
IBUS_KEY_minus, macro in IBusKeysyms
IBUS_KEY_minutes, macro in IBusKeysyms
IBUS_KEY_Mode_switch, macro in IBusKeysyms
IBUS_KEY_MouseKeys_Accel_Enable, macro in IBusKeysyms
IBUS_KEY_MouseKeys_Enable, macro in IBusKeysyms
IBUS_KEY_mu, macro in IBusKeysyms
IBUS_KEY_Muhenkan, macro in IBusKeysyms
IBUS_KEY_MultipleCandidate, macro in IBusKeysyms
IBUS_KEY_multiply, macro in IBusKeysyms
IBUS_KEY_Multi_key, macro in IBusKeysyms
IBUS_KEY_musicalflat, macro in IBusKeysyms
IBUS_KEY_musicalsharp, macro in IBusKeysyms
IBUS_KEY_N, macro in IBusKeysyms
IBUS_KEY_n, macro in IBusKeysyms
IBUS_KEY_nabla, macro in IBusKeysyms
IBUS_KEY_Nacute, macro in IBusKeysyms
IBUS_KEY_nacute, macro in IBusKeysyms
IBUS_KEY_NairaSign, macro in IBusKeysyms
IBUS_KEY_Ncaron, macro in IBusKeysyms
IBUS_KEY_ncaron, macro in IBusKeysyms
IBUS_KEY_Ncedilla, macro in IBusKeysyms
IBUS_KEY_ncedilla, macro in IBusKeysyms
IBUS_KEY_NewSheqelSign, macro in IBusKeysyms
IBUS_KEY_Next, macro in IBusKeysyms
IBUS_KEY_Next_Virtual_Screen, macro in IBusKeysyms
IBUS_KEY_ninesubscript, macro in IBusKeysyms
IBUS_KEY_ninesuperior, macro in IBusKeysyms
IBUS_KEY_nl, macro in IBusKeysyms
IBUS_KEY_nobreakspace, macro in IBusKeysyms
IBUS_KEY_notapproxeq, macro in IBusKeysyms
IBUS_KEY_notelementof, macro in IBusKeysyms
IBUS_KEY_notequal, macro in IBusKeysyms
IBUS_KEY_notidentical, macro in IBusKeysyms
IBUS_KEY_notsign, macro in IBusKeysyms
IBUS_KEY_Ntilde, macro in IBusKeysyms
IBUS_KEY_ntilde, macro in IBusKeysyms
IBUS_KEY_numbersign, macro in IBusKeysyms
IBUS_KEY_numerosign, macro in IBusKeysyms
IBUS_KEY_Num_Lock, macro in IBusKeysyms
IBUS_KEY_O, macro in IBusKeysyms
IBUS_KEY_o, macro in IBusKeysyms
IBUS_KEY_Oacute, macro in IBusKeysyms
IBUS_KEY_oacute, macro in IBusKeysyms
IBUS_KEY_Obarred, macro in IBusKeysyms
IBUS_KEY_obarred, macro in IBusKeysyms
IBUS_KEY_Obelowdot, macro in IBusKeysyms
IBUS_KEY_obelowdot, macro in IBusKeysyms
IBUS_KEY_Ocaron, macro in IBusKeysyms
IBUS_KEY_ocaron, macro in IBusKeysyms
IBUS_KEY_Ocircumflex, macro in IBusKeysyms
IBUS_KEY_ocircumflex, macro in IBusKeysyms
IBUS_KEY_Ocircumflexacute, macro in IBusKeysyms
IBUS_KEY_ocircumflexacute, macro in IBusKeysyms
IBUS_KEY_Ocircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_ocircumflexbelowdot, macro in IBusKeysyms
IBUS_KEY_Ocircumflexgrave, macro in IBusKeysyms
IBUS_KEY_ocircumflexgrave, macro in IBusKeysyms
IBUS_KEY_Ocircumflexhook, macro in IBusKeysyms
IBUS_KEY_ocircumflexhook, macro in IBusKeysyms
IBUS_KEY_Ocircumflextilde, macro in IBusKeysyms
IBUS_KEY_ocircumflextilde, macro in IBusKeysyms
IBUS_KEY_Odiaeresis, macro in IBusKeysyms
IBUS_KEY_odiaeresis, macro in IBusKeysyms
IBUS_KEY_Odoubleacute, macro in IBusKeysyms
IBUS_KEY_odoubleacute, macro in IBusKeysyms
IBUS_KEY_OE, macro in IBusKeysyms
IBUS_KEY_oe, macro in IBusKeysyms
IBUS_KEY_ogonek, macro in IBusKeysyms
IBUS_KEY_Ograve, macro in IBusKeysyms
IBUS_KEY_ograve, macro in IBusKeysyms
IBUS_KEY_Ohook, macro in IBusKeysyms
IBUS_KEY_ohook, macro in IBusKeysyms
IBUS_KEY_Ohorn, macro in IBusKeysyms
IBUS_KEY_ohorn, macro in IBusKeysyms
IBUS_KEY_Ohornacute, macro in IBusKeysyms
IBUS_KEY_ohornacute, macro in IBusKeysyms
IBUS_KEY_Ohornbelowdot, macro in IBusKeysyms
IBUS_KEY_ohornbelowdot, macro in IBusKeysyms
IBUS_KEY_Ohorngrave, macro in IBusKeysyms
IBUS_KEY_ohorngrave, macro in IBusKeysyms
IBUS_KEY_Ohornhook, macro in IBusKeysyms
IBUS_KEY_ohornhook, macro in IBusKeysyms
IBUS_KEY_Ohorntilde, macro in IBusKeysyms
IBUS_KEY_ohorntilde, macro in IBusKeysyms
IBUS_KEY_Omacron, macro in IBusKeysyms
IBUS_KEY_omacron, macro in IBusKeysyms
IBUS_KEY_oneeighth, macro in IBusKeysyms
IBUS_KEY_onefifth, macro in IBusKeysyms
IBUS_KEY_onehalf, macro in IBusKeysyms
IBUS_KEY_onequarter, macro in IBusKeysyms
IBUS_KEY_onesixth, macro in IBusKeysyms
IBUS_KEY_onesubscript, macro in IBusKeysyms
IBUS_KEY_onesuperior, macro in IBusKeysyms
IBUS_KEY_onethird, macro in IBusKeysyms
IBUS_KEY_Ooblique, macro in IBusKeysyms
IBUS_KEY_ooblique, macro in IBusKeysyms
IBUS_KEY_openrectbullet, macro in IBusKeysyms
IBUS_KEY_openstar, macro in IBusKeysyms
IBUS_KEY_opentribulletdown, macro in IBusKeysyms
IBUS_KEY_opentribulletup, macro in IBusKeysyms
IBUS_KEY_ordfeminine, macro in IBusKeysyms
IBUS_KEY_Oslash, macro in IBusKeysyms
IBUS_KEY_oslash, macro in IBusKeysyms
IBUS_KEY_Otilde, macro in IBusKeysyms
IBUS_KEY_otilde, macro in IBusKeysyms
IBUS_KEY_overbar, macro in IBusKeysyms
IBUS_KEY_Overlay1_Enable, macro in IBusKeysyms
IBUS_KEY_Overlay2_Enable, macro in IBusKeysyms
IBUS_KEY_overline, macro in IBusKeysyms
IBUS_KEY_P, macro in IBusKeysyms
IBUS_KEY_p, macro in IBusKeysyms
IBUS_KEY_Pabovedot, macro in IBusKeysyms
IBUS_KEY_pabovedot, macro in IBusKeysyms
IBUS_KEY_Page_Down, macro in IBusKeysyms
IBUS_KEY_Page_Up, macro in IBusKeysyms
IBUS_KEY_paragraph, macro in IBusKeysyms
IBUS_KEY_parenleft, macro in IBusKeysyms
IBUS_KEY_parenright, macro in IBusKeysyms
IBUS_KEY_partdifferential, macro in IBusKeysyms
IBUS_KEY_partialderivative, macro in IBusKeysyms
IBUS_KEY_Pause, macro in IBusKeysyms
IBUS_KEY_percent, macro in IBusKeysyms
IBUS_KEY_period, macro in IBusKeysyms
IBUS_KEY_periodcentered, macro in IBusKeysyms
IBUS_KEY_PesetaSign, macro in IBusKeysyms
IBUS_KEY_phonographcopyright, macro in IBusKeysyms
IBUS_KEY_plus, macro in IBusKeysyms
IBUS_KEY_plusminus, macro in IBusKeysyms
IBUS_KEY_Pointer_Accelerate, macro in IBusKeysyms
IBUS_KEY_Pointer_Button1, macro in IBusKeysyms
IBUS_KEY_Pointer_Button2, macro in IBusKeysyms
IBUS_KEY_Pointer_Button3, macro in IBusKeysyms
IBUS_KEY_Pointer_Button4, macro in IBusKeysyms
IBUS_KEY_Pointer_Button5, macro in IBusKeysyms
IBUS_KEY_Pointer_Button_Dflt, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick1, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick2, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick3, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick4, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick5, macro in IBusKeysyms
IBUS_KEY_Pointer_DblClick_Dflt, macro in IBusKeysyms
IBUS_KEY_Pointer_DfltBtnNext, macro in IBusKeysyms
IBUS_KEY_Pointer_DfltBtnPrev, macro in IBusKeysyms
IBUS_KEY_Pointer_Down, macro in IBusKeysyms
IBUS_KEY_Pointer_DownLeft, macro in IBusKeysyms
IBUS_KEY_Pointer_DownRight, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag1, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag2, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag3, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag4, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag5, macro in IBusKeysyms
IBUS_KEY_Pointer_Drag_Dflt, macro in IBusKeysyms
IBUS_KEY_Pointer_EnableKeys, macro in IBusKeysyms
IBUS_KEY_Pointer_Left, macro in IBusKeysyms
IBUS_KEY_Pointer_Right, macro in IBusKeysyms
IBUS_KEY_Pointer_Up, macro in IBusKeysyms
IBUS_KEY_Pointer_UpLeft, macro in IBusKeysyms
IBUS_KEY_Pointer_UpRight, macro in IBusKeysyms
IBUS_KEY_prescription, macro in IBusKeysyms
IBUS_KEY_PreviousCandidate, macro in IBusKeysyms
IBUS_KEY_Prev_Virtual_Screen, macro in IBusKeysyms
IBUS_KEY_Print, macro in IBusKeysyms
IBUS_KEY_Prior, macro in IBusKeysyms
IBUS_KEY_prolongedsound, macro in IBusKeysyms
IBUS_KEY_punctspace, macro in IBusKeysyms
IBUS_KEY_Q, macro in IBusKeysyms
IBUS_KEY_q, macro in IBusKeysyms
IBUS_KEY_quad, macro in IBusKeysyms
IBUS_KEY_question, macro in IBusKeysyms
IBUS_KEY_questiondown, macro in IBusKeysyms
IBUS_KEY_quotedbl, macro in IBusKeysyms
IBUS_KEY_quoteleft, macro in IBusKeysyms
IBUS_KEY_quoteright, macro in IBusKeysyms
IBUS_KEY_R, macro in IBusKeysyms
IBUS_KEY_r, macro in IBusKeysyms
IBUS_KEY_R1, macro in IBusKeysyms
IBUS_KEY_R10, macro in IBusKeysyms
IBUS_KEY_R11, macro in IBusKeysyms
IBUS_KEY_R12, macro in IBusKeysyms
IBUS_KEY_R13, macro in IBusKeysyms
IBUS_KEY_R14, macro in IBusKeysyms
IBUS_KEY_R15, macro in IBusKeysyms
IBUS_KEY_R2, macro in IBusKeysyms
IBUS_KEY_R3, macro in IBusKeysyms
IBUS_KEY_R4, macro in IBusKeysyms
IBUS_KEY_R5, macro in IBusKeysyms
IBUS_KEY_R6, macro in IBusKeysyms
IBUS_KEY_R7, macro in IBusKeysyms
IBUS_KEY_R8, macro in IBusKeysyms
IBUS_KEY_R9, macro in IBusKeysyms
IBUS_KEY_Racute, macro in IBusKeysyms
IBUS_KEY_racute, macro in IBusKeysyms
IBUS_KEY_radical, macro in IBusKeysyms
IBUS_KEY_Rcaron, macro in IBusKeysyms
IBUS_KEY_rcaron, macro in IBusKeysyms
IBUS_KEY_Rcedilla, macro in IBusKeysyms
IBUS_KEY_rcedilla, macro in IBusKeysyms
IBUS_KEY_Redo, macro in IBusKeysyms
IBUS_KEY_registered, macro in IBusKeysyms
IBUS_KEY_RepeatKeys_Enable, macro in IBusKeysyms
IBUS_KEY_Return, macro in IBusKeysyms
IBUS_KEY_Right, macro in IBusKeysyms
IBUS_KEY_rightanglebracket, macro in IBusKeysyms
IBUS_KEY_rightarrow, macro in IBusKeysyms
IBUS_KEY_rightcaret, macro in IBusKeysyms
IBUS_KEY_rightdoublequotemark, macro in IBusKeysyms
IBUS_KEY_rightmiddlecurlybrace, macro in IBusKeysyms
IBUS_KEY_rightmiddlesummation, macro in IBusKeysyms
IBUS_KEY_rightopentriangle, macro in IBusKeysyms
IBUS_KEY_rightpointer, macro in IBusKeysyms
IBUS_KEY_rightshoe, macro in IBusKeysyms
IBUS_KEY_rightsinglequotemark, macro in IBusKeysyms
IBUS_KEY_rightt, macro in IBusKeysyms
IBUS_KEY_righttack, macro in IBusKeysyms
IBUS_KEY_Romaji, macro in IBusKeysyms
IBUS_KEY_RupeeSign, macro in IBusKeysyms
IBUS_KEY_S, macro in IBusKeysyms
IBUS_KEY_s, macro in IBusKeysyms
IBUS_KEY_Sabovedot, macro in IBusKeysyms
IBUS_KEY_sabovedot, macro in IBusKeysyms
IBUS_KEY_Sacute, macro in IBusKeysyms
IBUS_KEY_sacute, macro in IBusKeysyms
IBUS_KEY_Scaron, macro in IBusKeysyms
IBUS_KEY_scaron, macro in IBusKeysyms
IBUS_KEY_Scedilla, macro in IBusKeysyms
IBUS_KEY_scedilla, macro in IBusKeysyms
IBUS_KEY_SCHWA, macro in IBusKeysyms
IBUS_KEY_schwa, macro in IBusKeysyms
IBUS_KEY_Scircumflex, macro in IBusKeysyms
IBUS_KEY_scircumflex, macro in IBusKeysyms
IBUS_KEY_script_switch, macro in IBusKeysyms
IBUS_KEY_Scroll_Lock, macro in IBusKeysyms
IBUS_KEY_seconds, macro in IBusKeysyms
IBUS_KEY_section, macro in IBusKeysyms
IBUS_KEY_Select, macro in IBusKeysyms
IBUS_KEY_semicolon, macro in IBusKeysyms
IBUS_KEY_semivoicedsound, macro in IBusKeysyms
IBUS_KEY_Serbian_DJE, macro in IBusKeysyms
IBUS_KEY_Serbian_dje, macro in IBusKeysyms
IBUS_KEY_Serbian_DZE, macro in IBusKeysyms
IBUS_KEY_Serbian_dze, macro in IBusKeysyms
IBUS_KEY_Serbian_JE, macro in IBusKeysyms
IBUS_KEY_Serbian_je, macro in IBusKeysyms
IBUS_KEY_Serbian_LJE, macro in IBusKeysyms
IBUS_KEY_Serbian_lje, macro in IBusKeysyms
IBUS_KEY_Serbian_NJE, macro in IBusKeysyms
IBUS_KEY_Serbian_nje, macro in IBusKeysyms
IBUS_KEY_Serbian_TSHE, macro in IBusKeysyms
IBUS_KEY_Serbian_tshe, macro in IBusKeysyms
IBUS_KEY_seveneighths, macro in IBusKeysyms
IBUS_KEY_sevensubscript, macro in IBusKeysyms
IBUS_KEY_sevensuperior, macro in IBusKeysyms
IBUS_KEY_Shift_L, macro in IBusKeysyms
IBUS_KEY_Shift_Lock, macro in IBusKeysyms
IBUS_KEY_Shift_R, macro in IBusKeysyms
IBUS_KEY_signaturemark, macro in IBusKeysyms
IBUS_KEY_signifblank, macro in IBusKeysyms
IBUS_KEY_similarequal, macro in IBusKeysyms
IBUS_KEY_SingleCandidate, macro in IBusKeysyms
IBUS_KEY_singlelowquotemark, macro in IBusKeysyms
IBUS_KEY_Sinh_a, macro in IBusKeysyms
IBUS_KEY_Sinh_aa, macro in IBusKeysyms
IBUS_KEY_Sinh_aa2, macro in IBusKeysyms
IBUS_KEY_Sinh_ae, macro in IBusKeysyms
IBUS_KEY_Sinh_ae2, macro in IBusKeysyms
IBUS_KEY_Sinh_aee, macro in IBusKeysyms
IBUS_KEY_Sinh_aee2, macro in IBusKeysyms
IBUS_KEY_Sinh_ai, macro in IBusKeysyms
IBUS_KEY_Sinh_ai2, macro in IBusKeysyms
IBUS_KEY_Sinh_al, macro in IBusKeysyms
IBUS_KEY_Sinh_au, macro in IBusKeysyms
IBUS_KEY_Sinh_au2, macro in IBusKeysyms
IBUS_KEY_Sinh_ba, macro in IBusKeysyms
IBUS_KEY_Sinh_bha, macro in IBusKeysyms
IBUS_KEY_Sinh_ca, macro in IBusKeysyms
IBUS_KEY_Sinh_cha, macro in IBusKeysyms
IBUS_KEY_Sinh_dda, macro in IBusKeysyms
IBUS_KEY_Sinh_ddha, macro in IBusKeysyms
IBUS_KEY_Sinh_dha, macro in IBusKeysyms
IBUS_KEY_Sinh_dhha, macro in IBusKeysyms
IBUS_KEY_Sinh_e, macro in IBusKeysyms
IBUS_KEY_Sinh_e2, macro in IBusKeysyms
IBUS_KEY_Sinh_ee, macro in IBusKeysyms
IBUS_KEY_Sinh_ee2, macro in IBusKeysyms
IBUS_KEY_Sinh_fa, macro in IBusKeysyms
IBUS_KEY_Sinh_ga, macro in IBusKeysyms
IBUS_KEY_Sinh_gha, macro in IBusKeysyms
IBUS_KEY_Sinh_h2, macro in IBusKeysyms
IBUS_KEY_Sinh_ha, macro in IBusKeysyms
IBUS_KEY_Sinh_i, macro in IBusKeysyms
IBUS_KEY_Sinh_i2, macro in IBusKeysyms
IBUS_KEY_Sinh_ii, macro in IBusKeysyms
IBUS_KEY_Sinh_ii2, macro in IBusKeysyms
IBUS_KEY_Sinh_ja, macro in IBusKeysyms
IBUS_KEY_Sinh_jha, macro in IBusKeysyms
IBUS_KEY_Sinh_jnya, macro in IBusKeysyms
IBUS_KEY_Sinh_ka, macro in IBusKeysyms
IBUS_KEY_Sinh_kha, macro in IBusKeysyms
IBUS_KEY_Sinh_kunddaliya, macro in IBusKeysyms
IBUS_KEY_Sinh_la, macro in IBusKeysyms
IBUS_KEY_Sinh_lla, macro in IBusKeysyms
IBUS_KEY_Sinh_lu, macro in IBusKeysyms
IBUS_KEY_Sinh_lu2, macro in IBusKeysyms
IBUS_KEY_Sinh_luu, macro in IBusKeysyms
IBUS_KEY_Sinh_luu2, macro in IBusKeysyms
IBUS_KEY_Sinh_ma, macro in IBusKeysyms
IBUS_KEY_Sinh_mba, macro in IBusKeysyms
IBUS_KEY_Sinh_na, macro in IBusKeysyms
IBUS_KEY_Sinh_ndda, macro in IBusKeysyms
IBUS_KEY_Sinh_ndha, macro in IBusKeysyms
IBUS_KEY_Sinh_ng, macro in IBusKeysyms
IBUS_KEY_Sinh_ng2, macro in IBusKeysyms
IBUS_KEY_Sinh_nga, macro in IBusKeysyms
IBUS_KEY_Sinh_nja, macro in IBusKeysyms
IBUS_KEY_Sinh_nna, macro in IBusKeysyms
IBUS_KEY_Sinh_nya, macro in IBusKeysyms
IBUS_KEY_Sinh_o, macro in IBusKeysyms
IBUS_KEY_Sinh_o2, macro in IBusKeysyms
IBUS_KEY_Sinh_oo, macro in IBusKeysyms
IBUS_KEY_Sinh_oo2, macro in IBusKeysyms
IBUS_KEY_Sinh_pa, macro in IBusKeysyms
IBUS_KEY_Sinh_pha, macro in IBusKeysyms
IBUS_KEY_Sinh_ra, macro in IBusKeysyms
IBUS_KEY_Sinh_ri, macro in IBusKeysyms
IBUS_KEY_Sinh_rii, macro in IBusKeysyms
IBUS_KEY_Sinh_ru2, macro in IBusKeysyms
IBUS_KEY_Sinh_ruu2, macro in IBusKeysyms
IBUS_KEY_Sinh_sa, macro in IBusKeysyms
IBUS_KEY_Sinh_sha, macro in IBusKeysyms
IBUS_KEY_Sinh_ssha, macro in IBusKeysyms
IBUS_KEY_Sinh_tha, macro in IBusKeysyms
IBUS_KEY_Sinh_thha, macro in IBusKeysyms
IBUS_KEY_Sinh_tta, macro in IBusKeysyms
IBUS_KEY_Sinh_ttha, macro in IBusKeysyms
IBUS_KEY_Sinh_u, macro in IBusKeysyms
IBUS_KEY_Sinh_u2, macro in IBusKeysyms
IBUS_KEY_Sinh_uu, macro in IBusKeysyms
IBUS_KEY_Sinh_uu2, macro in IBusKeysyms
IBUS_KEY_Sinh_va, macro in IBusKeysyms
IBUS_KEY_Sinh_ya, macro in IBusKeysyms
IBUS_KEY_sixsubscript, macro in IBusKeysyms
IBUS_KEY_sixsuperior, macro in IBusKeysyms
IBUS_KEY_slash, macro in IBusKeysyms
IBUS_KEY_SlowKeys_Enable, macro in IBusKeysyms
IBUS_KEY_soliddiamond, macro in IBusKeysyms
IBUS_KEY_space, macro in IBusKeysyms
IBUS_KEY_squareroot, macro in IBusKeysyms
IBUS_KEY_ssharp, macro in IBusKeysyms
IBUS_KEY_sterling, macro in IBusKeysyms
IBUS_KEY_StickyKeys_Enable, macro in IBusKeysyms
IBUS_KEY_stricteq, macro in IBusKeysyms
IBUS_KEY_Super_L, macro in IBusKeysyms
IBUS_KEY_Super_R, macro in IBusKeysyms
IBUS_KEY_Sys_Req, macro in IBusKeysyms
IBUS_KEY_T, macro in IBusKeysyms
IBUS_KEY_t, macro in IBusKeysyms
IBUS_KEY_Tab, macro in IBusKeysyms
IBUS_KEY_Tabovedot, macro in IBusKeysyms
IBUS_KEY_tabovedot, macro in IBusKeysyms
IBUS_KEY_Tcaron, macro in IBusKeysyms
IBUS_KEY_tcaron, macro in IBusKeysyms
IBUS_KEY_Tcedilla, macro in IBusKeysyms
IBUS_KEY_tcedilla, macro in IBusKeysyms
IBUS_KEY_telephone, macro in IBusKeysyms
IBUS_KEY_telephonerecorder, macro in IBusKeysyms
IBUS_KEY_Terminate_Server, macro in IBusKeysyms
IBUS_KEY_Thai_baht, macro in IBusKeysyms
IBUS_KEY_Thai_bobaimai, macro in IBusKeysyms
IBUS_KEY_Thai_chochan, macro in IBusKeysyms
IBUS_KEY_Thai_chochang, macro in IBusKeysyms
IBUS_KEY_Thai_choching, macro in IBusKeysyms
IBUS_KEY_Thai_chochoe, macro in IBusKeysyms
IBUS_KEY_Thai_dochada, macro in IBusKeysyms
IBUS_KEY_Thai_dodek, macro in IBusKeysyms
IBUS_KEY_Thai_fofa, macro in IBusKeysyms
IBUS_KEY_Thai_fofan, macro in IBusKeysyms
IBUS_KEY_Thai_hohip, macro in IBusKeysyms
IBUS_KEY_Thai_honokhuk, macro in IBusKeysyms
IBUS_KEY_Thai_khokhai, macro in IBusKeysyms
IBUS_KEY_Thai_khokhon, macro in IBusKeysyms
IBUS_KEY_Thai_khokhuat, macro in IBusKeysyms
IBUS_KEY_Thai_khokhwai, macro in IBusKeysyms
IBUS_KEY_Thai_khorakhang, macro in IBusKeysyms
IBUS_KEY_Thai_kokai, macro in IBusKeysyms
IBUS_KEY_Thai_lakkhangyao, macro in IBusKeysyms
IBUS_KEY_Thai_lekchet, macro in IBusKeysyms
IBUS_KEY_Thai_lekha, macro in IBusKeysyms
IBUS_KEY_Thai_lekhok, macro in IBusKeysyms
IBUS_KEY_Thai_lekkao, macro in IBusKeysyms
IBUS_KEY_Thai_leknung, macro in IBusKeysyms
IBUS_KEY_Thai_lekpaet, macro in IBusKeysyms
IBUS_KEY_Thai_leksam, macro in IBusKeysyms
IBUS_KEY_Thai_leksi, macro in IBusKeysyms
IBUS_KEY_Thai_leksong, macro in IBusKeysyms
IBUS_KEY_Thai_leksun, macro in IBusKeysyms
IBUS_KEY_Thai_lochula, macro in IBusKeysyms
IBUS_KEY_Thai_loling, macro in IBusKeysyms
IBUS_KEY_Thai_lu, macro in IBusKeysyms
IBUS_KEY_Thai_maichattawa, macro in IBusKeysyms
IBUS_KEY_Thai_maiek, macro in IBusKeysyms
IBUS_KEY_Thai_maihanakat, macro in IBusKeysyms
IBUS_KEY_Thai_maihanakat_maitho, macro in IBusKeysyms
IBUS_KEY_Thai_maitaikhu, macro in IBusKeysyms
IBUS_KEY_Thai_maitho, macro in IBusKeysyms
IBUS_KEY_Thai_maitri, macro in IBusKeysyms
IBUS_KEY_Thai_maiyamok, macro in IBusKeysyms
IBUS_KEY_Thai_moma, macro in IBusKeysyms
IBUS_KEY_Thai_ngongu, macro in IBusKeysyms
IBUS_KEY_Thai_nikhahit, macro in IBusKeysyms
IBUS_KEY_Thai_nonen, macro in IBusKeysyms
IBUS_KEY_Thai_nonu, macro in IBusKeysyms
IBUS_KEY_Thai_oang, macro in IBusKeysyms
IBUS_KEY_Thai_paiyannoi, macro in IBusKeysyms
IBUS_KEY_Thai_phinthu, macro in IBusKeysyms
IBUS_KEY_Thai_phophan, macro in IBusKeysyms
IBUS_KEY_Thai_phophung, macro in IBusKeysyms
IBUS_KEY_Thai_phosamphao, macro in IBusKeysyms
IBUS_KEY_Thai_popla, macro in IBusKeysyms
IBUS_KEY_Thai_rorua, macro in IBusKeysyms
IBUS_KEY_Thai_ru, macro in IBusKeysyms
IBUS_KEY_Thai_saraa, macro in IBusKeysyms
IBUS_KEY_Thai_saraaa, macro in IBusKeysyms
IBUS_KEY_Thai_saraae, macro in IBusKeysyms
IBUS_KEY_Thai_saraaimaimalai, macro in IBusKeysyms
IBUS_KEY_Thai_saraaimaimuan, macro in IBusKeysyms
IBUS_KEY_Thai_saraam, macro in IBusKeysyms
IBUS_KEY_Thai_sarae, macro in IBusKeysyms
IBUS_KEY_Thai_sarai, macro in IBusKeysyms
IBUS_KEY_Thai_saraii, macro in IBusKeysyms
IBUS_KEY_Thai_sarao, macro in IBusKeysyms
IBUS_KEY_Thai_sarau, macro in IBusKeysyms
IBUS_KEY_Thai_saraue, macro in IBusKeysyms
IBUS_KEY_Thai_sarauee, macro in IBusKeysyms
IBUS_KEY_Thai_sarauu, macro in IBusKeysyms
IBUS_KEY_Thai_sorusi, macro in IBusKeysyms
IBUS_KEY_Thai_sosala, macro in IBusKeysyms
IBUS_KEY_Thai_soso, macro in IBusKeysyms
IBUS_KEY_Thai_sosua, macro in IBusKeysyms
IBUS_KEY_Thai_thanthakhat, macro in IBusKeysyms
IBUS_KEY_Thai_thonangmontho, macro in IBusKeysyms
IBUS_KEY_Thai_thophuthao, macro in IBusKeysyms
IBUS_KEY_Thai_thothahan, macro in IBusKeysyms
IBUS_KEY_Thai_thothan, macro in IBusKeysyms
IBUS_KEY_Thai_thothong, macro in IBusKeysyms
IBUS_KEY_Thai_thothung, macro in IBusKeysyms
IBUS_KEY_Thai_topatak, macro in IBusKeysyms
IBUS_KEY_Thai_totao, macro in IBusKeysyms
IBUS_KEY_Thai_wowaen, macro in IBusKeysyms
IBUS_KEY_Thai_yoyak, macro in IBusKeysyms
IBUS_KEY_Thai_yoying, macro in IBusKeysyms
IBUS_KEY_therefore, macro in IBusKeysyms
IBUS_KEY_thinspace, macro in IBusKeysyms
IBUS_KEY_THORN, macro in IBusKeysyms
IBUS_KEY_Thorn, macro in IBusKeysyms
IBUS_KEY_thorn, macro in IBusKeysyms
IBUS_KEY_threeeighths, macro in IBusKeysyms
IBUS_KEY_threefifths, macro in IBusKeysyms
IBUS_KEY_threequarters, macro in IBusKeysyms
IBUS_KEY_threesubscript, macro in IBusKeysyms
IBUS_KEY_threesuperior, macro in IBusKeysyms
IBUS_KEY_tintegral, macro in IBusKeysyms
IBUS_KEY_topintegral, macro in IBusKeysyms
IBUS_KEY_topleftparens, macro in IBusKeysyms
IBUS_KEY_topleftradical, macro in IBusKeysyms
IBUS_KEY_topleftsqbracket, macro in IBusKeysyms
IBUS_KEY_topleftsummation, macro in IBusKeysyms
IBUS_KEY_toprightparens, macro in IBusKeysyms
IBUS_KEY_toprightsqbracket, macro in IBusKeysyms
IBUS_KEY_toprightsummation, macro in IBusKeysyms
IBUS_KEY_topt, macro in IBusKeysyms
IBUS_KEY_topvertsummationconnector, macro in IBusKeysyms
IBUS_KEY_Touroku, macro in IBusKeysyms
IBUS_KEY_trademark, macro in IBusKeysyms
IBUS_KEY_trademarkincircle, macro in IBusKeysyms
IBUS_KEY_Tslash, macro in IBusKeysyms
IBUS_KEY_tslash, macro in IBusKeysyms
IBUS_KEY_twofifths, macro in IBusKeysyms
IBUS_KEY_twosubscript, macro in IBusKeysyms
IBUS_KEY_twosuperior, macro in IBusKeysyms
IBUS_KEY_twothirds, macro in IBusKeysyms
IBUS_KEY_U, macro in IBusKeysyms
IBUS_KEY_u, macro in IBusKeysyms
IBUS_KEY_Uacute, macro in IBusKeysyms
IBUS_KEY_uacute, macro in IBusKeysyms
IBUS_KEY_Ubelowdot, macro in IBusKeysyms
IBUS_KEY_ubelowdot, macro in IBusKeysyms
IBUS_KEY_Ubreve, macro in IBusKeysyms
IBUS_KEY_ubreve, macro in IBusKeysyms
IBUS_KEY_Ucircumflex, macro in IBusKeysyms
IBUS_KEY_ucircumflex, macro in IBusKeysyms
IBUS_KEY_Udiaeresis, macro in IBusKeysyms
IBUS_KEY_udiaeresis, macro in IBusKeysyms
IBUS_KEY_Udoubleacute, macro in IBusKeysyms
IBUS_KEY_udoubleacute, macro in IBusKeysyms
IBUS_KEY_Ugrave, macro in IBusKeysyms
IBUS_KEY_ugrave, macro in IBusKeysyms
IBUS_KEY_Uhook, macro in IBusKeysyms
IBUS_KEY_uhook, macro in IBusKeysyms
IBUS_KEY_Uhorn, macro in IBusKeysyms
IBUS_KEY_uhorn, macro in IBusKeysyms
IBUS_KEY_Uhornacute, macro in IBusKeysyms
IBUS_KEY_uhornacute, macro in IBusKeysyms
IBUS_KEY_Uhornbelowdot, macro in IBusKeysyms
IBUS_KEY_uhornbelowdot, macro in IBusKeysyms
IBUS_KEY_Uhorngrave, macro in IBusKeysyms
IBUS_KEY_uhorngrave, macro in IBusKeysyms
IBUS_KEY_Uhornhook, macro in IBusKeysyms
IBUS_KEY_uhornhook, macro in IBusKeysyms
IBUS_KEY_Uhorntilde, macro in IBusKeysyms
IBUS_KEY_uhorntilde, macro in IBusKeysyms
IBUS_KEY_Ukrainian_GHE_WITH_UPTURN, macro in IBusKeysyms
IBUS_KEY_Ukrainian_ghe_with_upturn, macro in IBusKeysyms
IBUS_KEY_Ukrainian_I, macro in IBusKeysyms
IBUS_KEY_Ukrainian_i, macro in IBusKeysyms
IBUS_KEY_Ukrainian_IE, macro in IBusKeysyms
IBUS_KEY_Ukrainian_ie, macro in IBusKeysyms
IBUS_KEY_Ukrainian_YI, macro in IBusKeysyms
IBUS_KEY_Ukrainian_yi, macro in IBusKeysyms
IBUS_KEY_Ukranian_I, macro in IBusKeysyms
IBUS_KEY_Ukranian_i, macro in IBusKeysyms
IBUS_KEY_Ukranian_JE, macro in IBusKeysyms
IBUS_KEY_Ukranian_je, macro in IBusKeysyms
IBUS_KEY_Ukranian_YI, macro in IBusKeysyms
IBUS_KEY_Ukranian_yi, macro in IBusKeysyms
IBUS_KEY_Umacron, macro in IBusKeysyms
IBUS_KEY_umacron, macro in IBusKeysyms
IBUS_KEY_underbar, macro in IBusKeysyms
IBUS_KEY_underscore, macro in IBusKeysyms
IBUS_KEY_Undo, macro in IBusKeysyms
IBUS_KEY_union, macro in IBusKeysyms
IBUS_KEY_Uogonek, macro in IBusKeysyms
IBUS_KEY_uogonek, macro in IBusKeysyms
IBUS_KEY_Up, macro in IBusKeysyms
IBUS_KEY_uparrow, macro in IBusKeysyms
IBUS_KEY_upcaret, macro in IBusKeysyms
IBUS_KEY_upleftcorner, macro in IBusKeysyms
IBUS_KEY_uprightcorner, macro in IBusKeysyms
IBUS_KEY_upshoe, macro in IBusKeysyms
IBUS_KEY_upstile, macro in IBusKeysyms
IBUS_KEY_uptack, macro in IBusKeysyms
IBUS_KEY_Uring, macro in IBusKeysyms
IBUS_KEY_uring, macro in IBusKeysyms
IBUS_KEY_Utilde, macro in IBusKeysyms
IBUS_KEY_utilde, macro in IBusKeysyms
IBUS_KEY_V, macro in IBusKeysyms
IBUS_KEY_v, macro in IBusKeysyms
IBUS_KEY_variation, macro in IBusKeysyms
IBUS_KEY_vertbar, macro in IBusKeysyms
IBUS_KEY_vertconnector, macro in IBusKeysyms
IBUS_KEY_voicedsound, macro in IBusKeysyms
IBUS_KEY_VoidSymbol, macro in IBusKeysyms
IBUS_KEY_vt, macro in IBusKeysyms
IBUS_KEY_W, macro in IBusKeysyms
IBUS_KEY_w, macro in IBusKeysyms
IBUS_KEY_Wacute, macro in IBusKeysyms
IBUS_KEY_wacute, macro in IBusKeysyms
IBUS_KEY_Wcircumflex, macro in IBusKeysyms
IBUS_KEY_wcircumflex, macro in IBusKeysyms
IBUS_KEY_Wdiaeresis, macro in IBusKeysyms
IBUS_KEY_wdiaeresis, macro in IBusKeysyms
IBUS_KEY_Wgrave, macro in IBusKeysyms
IBUS_KEY_wgrave, macro in IBusKeysyms
IBUS_KEY_WonSign, macro in IBusKeysyms
IBUS_KEY_X, macro in IBusKeysyms
IBUS_KEY_x, macro in IBusKeysyms
IBUS_KEY_Xabovedot, macro in IBusKeysyms
IBUS_KEY_xabovedot, macro in IBusKeysyms
IBUS_KEY_Y, macro in IBusKeysyms
IBUS_KEY_y, macro in IBusKeysyms
IBUS_KEY_Yacute, macro in IBusKeysyms
IBUS_KEY_yacute, macro in IBusKeysyms
IBUS_KEY_Ybelowdot, macro in IBusKeysyms
IBUS_KEY_ybelowdot, macro in IBusKeysyms
IBUS_KEY_Ycircumflex, macro in IBusKeysyms
IBUS_KEY_ycircumflex, macro in IBusKeysyms
IBUS_KEY_Ydiaeresis, macro in IBusKeysyms
IBUS_KEY_ydiaeresis, macro in IBusKeysyms
IBUS_KEY_yen, macro in IBusKeysyms
IBUS_KEY_Ygrave, macro in IBusKeysyms
IBUS_KEY_ygrave, macro in IBusKeysyms
IBUS_KEY_Yhook, macro in IBusKeysyms
IBUS_KEY_yhook, macro in IBusKeysyms
IBUS_KEY_Ytilde, macro in IBusKeysyms
IBUS_KEY_ytilde, macro in IBusKeysyms
IBUS_KEY_Z, macro in IBusKeysyms
IBUS_KEY_z, macro in IBusKeysyms
IBUS_KEY_Zabovedot, macro in IBusKeysyms
IBUS_KEY_zabovedot, macro in IBusKeysyms
IBUS_KEY_Zacute, macro in IBusKeysyms
IBUS_KEY_zacute, macro in IBusKeysyms
IBUS_KEY_Zcaron, macro in IBusKeysyms
IBUS_KEY_zcaron, macro in IBusKeysyms
IBUS_KEY_Zenkaku, macro in IBusKeysyms
IBUS_KEY_Zenkaku_Hankaku, macro in IBusKeysyms
IBUS_KEY_Zen_Koho, macro in IBusKeysyms
IBUS_KEY_zerosubscript, macro in IBusKeysyms
IBUS_KEY_zerosuperior, macro in IBusKeysyms
IBUS_KEY_Zstroke, macro in IBusKeysyms
IBUS_KEY_zstroke, macro in IBusKeysyms
IBUS_Korean_Won, macro in ibuskeysyms-compat
IBUS_KP_0, macro in ibuskeysyms-compat
IBUS_KP_1, macro in ibuskeysyms-compat
IBUS_KP_2, macro in ibuskeysyms-compat
IBUS_KP_3, macro in ibuskeysyms-compat
IBUS_KP_4, macro in ibuskeysyms-compat
IBUS_KP_5, macro in ibuskeysyms-compat
IBUS_KP_6, macro in ibuskeysyms-compat
IBUS_KP_7, macro in ibuskeysyms-compat
IBUS_KP_8, macro in ibuskeysyms-compat
IBUS_KP_9, macro in ibuskeysyms-compat
IBUS_KP_Add, macro in ibuskeysyms-compat
IBUS_KP_Begin, macro in ibuskeysyms-compat
IBUS_KP_Decimal, macro in ibuskeysyms-compat
IBUS_KP_Delete, macro in ibuskeysyms-compat
IBUS_KP_Divide, macro in ibuskeysyms-compat
IBUS_KP_Down, macro in ibuskeysyms-compat
IBUS_KP_End, macro in ibuskeysyms-compat
IBUS_KP_Enter, macro in ibuskeysyms-compat
IBUS_KP_Equal, macro in ibuskeysyms-compat
IBUS_KP_F1, macro in ibuskeysyms-compat
IBUS_KP_F2, macro in ibuskeysyms-compat
IBUS_KP_F3, macro in ibuskeysyms-compat
IBUS_KP_F4, macro in ibuskeysyms-compat
IBUS_KP_Home, macro in ibuskeysyms-compat
IBUS_KP_Insert, macro in ibuskeysyms-compat
IBUS_KP_Left, macro in ibuskeysyms-compat
IBUS_KP_Multiply, macro in ibuskeysyms-compat
IBUS_KP_Next, macro in ibuskeysyms-compat
IBUS_KP_Page_Down, macro in ibuskeysyms-compat
IBUS_KP_Page_Up, macro in ibuskeysyms-compat
IBUS_KP_Prior, macro in ibuskeysyms-compat
IBUS_KP_Right, macro in ibuskeysyms-compat
IBUS_KP_Separator, macro in ibuskeysyms-compat
IBUS_KP_Space, macro in ibuskeysyms-compat
IBUS_KP_Subtract, macro in ibuskeysyms-compat
IBUS_KP_Tab, macro in ibuskeysyms-compat
IBUS_KP_Up, macro in ibuskeysyms-compat
IBUS_kra, macro in ibuskeysyms-compat

L

IBUS_L, macro in ibuskeysyms-compat
IBUS_l, macro in ibuskeysyms-compat
IBUS_L1, macro in ibuskeysyms-compat
IBUS_L10, macro in ibuskeysyms-compat
IBUS_L2, macro in ibuskeysyms-compat
IBUS_L3, macro in ibuskeysyms-compat
IBUS_L4, macro in ibuskeysyms-compat
IBUS_L5, macro in ibuskeysyms-compat
IBUS_L6, macro in ibuskeysyms-compat
IBUS_L7, macro in ibuskeysyms-compat
IBUS_L8, macro in ibuskeysyms-compat
IBUS_L9, macro in ibuskeysyms-compat
IBUS_Lacute, macro in ibuskeysyms-compat
IBUS_lacute, macro in ibuskeysyms-compat
IBUS_Last_Virtual_Screen, macro in ibuskeysyms-compat
IBUS_latincross, macro in ibuskeysyms-compat
IBUS_Lbelowdot, macro in ibuskeysyms-compat
IBUS_lbelowdot, macro in ibuskeysyms-compat
IBUS_Lcaron, macro in ibuskeysyms-compat
IBUS_lcaron, macro in ibuskeysyms-compat
IBUS_Lcedilla, macro in ibuskeysyms-compat
IBUS_lcedilla, macro in ibuskeysyms-compat
IBUS_Left, macro in ibuskeysyms-compat
IBUS_leftanglebracket, macro in ibuskeysyms-compat
IBUS_leftarrow, macro in ibuskeysyms-compat
IBUS_leftcaret, macro in ibuskeysyms-compat
IBUS_leftdoublequotemark, macro in ibuskeysyms-compat
IBUS_leftmiddlecurlybrace, macro in ibuskeysyms-compat
IBUS_leftopentriangle, macro in ibuskeysyms-compat
IBUS_leftpointer, macro in ibuskeysyms-compat
IBUS_leftradical, macro in ibuskeysyms-compat
IBUS_leftshoe, macro in ibuskeysyms-compat
IBUS_leftsinglequotemark, macro in ibuskeysyms-compat
IBUS_leftt, macro in ibuskeysyms-compat
IBUS_lefttack, macro in ibuskeysyms-compat
IBUS_less, macro in ibuskeysyms-compat
IBUS_lessthanequal, macro in ibuskeysyms-compat
IBUS_lf, macro in ibuskeysyms-compat
IBUS_Linefeed, macro in ibuskeysyms-compat
IBUS_LiraSign, macro in ibuskeysyms-compat
IBUS_logicaland, macro in ibuskeysyms-compat
IBUS_logicalor, macro in ibuskeysyms-compat
IBusLookupTable, struct in IBusLookupTable
ibus_lookup_table_append_candidate, function in IBusLookupTable
ibus_lookup_table_append_label, function in IBusLookupTable
ibus_lookup_table_clear, function in IBusLookupTable
ibus_lookup_table_cursor_down, function in IBusLookupTable
ibus_lookup_table_cursor_up, function in IBusLookupTable
ibus_lookup_table_get_candidate, function in IBusLookupTable
ibus_lookup_table_get_cursor_in_page, function in IBusLookupTable
ibus_lookup_table_get_cursor_pos, function in IBusLookupTable
ibus_lookup_table_get_label, function in IBusLookupTable
ibus_lookup_table_get_number_of_candidates, function in IBusLookupTable
ibus_lookup_table_get_orientation, function in IBusLookupTable
ibus_lookup_table_get_page_size, function in IBusLookupTable
ibus_lookup_table_is_cursor_visible, function in IBusLookupTable
ibus_lookup_table_is_round, function in IBusLookupTable
ibus_lookup_table_new, function in IBusLookupTable
ibus_lookup_table_page_down, function in IBusLookupTable
ibus_lookup_table_page_up, function in IBusLookupTable
ibus_lookup_table_set_cursor_pos, function in IBusLookupTable
ibus_lookup_table_set_cursor_visible, function in IBusLookupTable
ibus_lookup_table_set_label, function in IBusLookupTable
ibus_lookup_table_set_orientation, function in IBusLookupTable
ibus_lookup_table_set_page_size, function in IBusLookupTable
ibus_lookup_table_set_round, function in IBusLookupTable
IBUS_lowleftcorner, macro in ibuskeysyms-compat
IBUS_lowrightcorner, macro in ibuskeysyms-compat
IBUS_Lstroke, macro in ibuskeysyms-compat
IBUS_lstroke, macro in ibuskeysyms-compat

M

IBUS_M, macro in ibuskeysyms-compat
IBUS_m, macro in ibuskeysyms-compat
IBUS_Mabovedot, macro in ibuskeysyms-compat
IBUS_mabovedot, macro in ibuskeysyms-compat
IBUS_Macedonia_DSE, macro in ibuskeysyms-compat
IBUS_Macedonia_dse, macro in ibuskeysyms-compat
IBUS_Macedonia_GJE, macro in ibuskeysyms-compat
IBUS_Macedonia_gje, macro in ibuskeysyms-compat
IBUS_Macedonia_KJE, macro in ibuskeysyms-compat
IBUS_Macedonia_kje, macro in ibuskeysyms-compat
IBUS_macron, macro in ibuskeysyms-compat
IBUS_Mae_Koho, macro in ibuskeysyms-compat
ibus_main, function in ibusshare
IBUS_MAJOR_VERSION, macro in ibusversion
IBUS_malesymbol, macro in ibuskeysyms-compat
IBUS_maltesecross, macro in ibuskeysyms-compat
IBUS_marker, macro in ibuskeysyms-compat
IBUS_masculine, macro in ibuskeysyms-compat
IBUS_Massyo, macro in ibuskeysyms-compat
IBUS_MAX_COMPOSE_LEN, macro in IBusEngineSimple
IBUS_Menu, macro in ibuskeysyms-compat
IBUS_Meta_L, macro in ibuskeysyms-compat
IBUS_Meta_R, macro in ibuskeysyms-compat
IBUS_MICRO_VERSION, macro in ibusversion
IBUS_MillSign, macro in ibuskeysyms-compat
IBUS_MINOR_VERSION, macro in ibusversion
IBUS_minus, macro in ibuskeysyms-compat
IBUS_minutes, macro in ibuskeysyms-compat
IBUS_Mode_switch, macro in ibuskeysyms-compat
IBusModifierType, enum in ibustypes
IBUS_MouseKeys_Accel_Enable, macro in ibuskeysyms-compat
IBUS_MouseKeys_Enable, macro in ibuskeysyms-compat
IBUS_mu, macro in ibuskeysyms-compat
IBUS_Muhenkan, macro in ibuskeysyms-compat
IBUS_MultipleCandidate, macro in ibuskeysyms-compat
IBUS_multiply, macro in ibuskeysyms-compat
IBUS_Multi_key, macro in ibuskeysyms-compat
IBUS_musicalflat, macro in ibuskeysyms-compat
IBUS_musicalsharp, macro in ibuskeysyms-compat

N

IBUS_N, macro in ibuskeysyms-compat
IBUS_n, macro in ibuskeysyms-compat
IBUS_nabla, macro in ibuskeysyms-compat
IBUS_Nacute, macro in ibuskeysyms-compat
IBUS_nacute, macro in ibuskeysyms-compat
IBUS_NairaSign, macro in ibuskeysyms-compat
IBUS_Ncaron, macro in ibuskeysyms-compat
IBUS_ncaron, macro in ibuskeysyms-compat
IBUS_Ncedilla, macro in ibuskeysyms-compat
IBUS_ncedilla, macro in ibuskeysyms-compat
IBUS_NewSheqelSign, macro in ibuskeysyms-compat
IBUS_Next, macro in ibuskeysyms-compat
IBUS_Next_Virtual_Screen, macro in ibuskeysyms-compat
IBUS_ninesubscript, macro in ibuskeysyms-compat
IBUS_ninesuperior, macro in ibuskeysyms-compat
IBUS_nl, macro in ibuskeysyms-compat
IBUS_nobreakspace, macro in ibuskeysyms-compat
IBUS_notapproxeq, macro in ibuskeysyms-compat
IBUS_notelementof, macro in ibuskeysyms-compat
IBUS_notequal, macro in ibuskeysyms-compat
IBUS_notidentical, macro in ibuskeysyms-compat
IBUS_notsign, macro in ibuskeysyms-compat
IBUS_Ntilde, macro in ibuskeysyms-compat
IBUS_ntilde, macro in ibuskeysyms-compat
IBUS_numbersign, macro in ibuskeysyms-compat
IBUS_numerosign, macro in ibuskeysyms-compat
IBUS_Num_Lock, macro in ibuskeysyms-compat

O

IBUS_O, macro in ibuskeysyms-compat
IBUS_o, macro in ibuskeysyms-compat
IBUS_Oacute, macro in ibuskeysyms-compat
IBUS_oacute, macro in ibuskeysyms-compat
IBUS_Obarred, macro in ibuskeysyms-compat
IBUS_obarred, macro in ibuskeysyms-compat
IBUS_Obelowdot, macro in ibuskeysyms-compat
IBUS_obelowdot, macro in ibuskeysyms-compat
IBusObject, struct in IBusObject
IBusObject::destroy, object signal in IBusObject
IBusObjectFlags, enum in IBusObject
ibus_object_destroy, function in IBusObject
IBUS_OBJECT_DESTROYED, macro in IBusObject
IBUS_OBJECT_FLAGS, macro in IBusObject
IBUS_OBJECT_IN_DESTRUCTION, macro in IBusObject
ibus_object_new, function in IBusObject
IBUS_OBJECT_SET_FLAGS, macro in IBusObject
IBUS_OBJECT_UNSET_FLAGS, macro in IBusObject
IBusObservedPath, struct in IBusObservedPath
ibus_observed_path_check_modification, function in IBusObservedPath
ibus_observed_path_new, function in IBusObservedPath
ibus_observed_path_new_from_xml_node, function in IBusObservedPath
ibus_observed_path_output, function in IBusObservedPath
ibus_observed_path_traverse, function in IBusObservedPath
IBUS_Ocaron, macro in ibuskeysyms-compat
IBUS_ocaron, macro in ibuskeysyms-compat
IBUS_Ocircumflex, macro in ibuskeysyms-compat
IBUS_ocircumflex, macro in ibuskeysyms-compat
IBUS_Ocircumflexacute, macro in ibuskeysyms-compat
IBUS_ocircumflexacute, macro in ibuskeysyms-compat
IBUS_Ocircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_ocircumflexbelowdot, macro in ibuskeysyms-compat
IBUS_Ocircumflexgrave, macro in ibuskeysyms-compat
IBUS_ocircumflexgrave, macro in ibuskeysyms-compat
IBUS_Ocircumflexhook, macro in ibuskeysyms-compat
IBUS_ocircumflexhook, macro in ibuskeysyms-compat
IBUS_Ocircumflextilde, macro in ibuskeysyms-compat
IBUS_ocircumflextilde, macro in ibuskeysyms-compat
IBUS_Odiaeresis, macro in ibuskeysyms-compat
IBUS_odiaeresis, macro in ibuskeysyms-compat
IBUS_Odoubleacute, macro in ibuskeysyms-compat
IBUS_odoubleacute, macro in ibuskeysyms-compat
IBUS_OE, macro in ibuskeysyms-compat
IBUS_oe, macro in ibuskeysyms-compat
IBUS_ogonek, macro in ibuskeysyms-compat
IBUS_Ograve, macro in ibuskeysyms-compat
IBUS_ograve, macro in ibuskeysyms-compat
IBUS_Ohook, macro in ibuskeysyms-compat
IBUS_ohook, macro in ibuskeysyms-compat
IBUS_Ohorn, macro in ibuskeysyms-compat
IBUS_ohorn, macro in ibuskeysyms-compat
IBUS_Ohornacute, macro in ibuskeysyms-compat
IBUS_ohornacute, macro in ibuskeysyms-compat
IBUS_Ohornbelowdot, macro in ibuskeysyms-compat
IBUS_ohornbelowdot, macro in ibuskeysyms-compat
IBUS_Ohorngrave, macro in ibuskeysyms-compat
IBUS_ohorngrave, macro in ibuskeysyms-compat
IBUS_Ohornhook, macro in ibuskeysyms-compat
IBUS_ohornhook, macro in ibuskeysyms-compat
IBUS_Ohorntilde, macro in ibuskeysyms-compat
IBUS_ohorntilde, macro in ibuskeysyms-compat
IBUS_Omacron, macro in ibuskeysyms-compat
IBUS_omacron, macro in ibuskeysyms-compat
IBUS_oneeighth, macro in ibuskeysyms-compat
IBUS_onefifth, macro in ibuskeysyms-compat
IBUS_onehalf, macro in ibuskeysyms-compat
IBUS_onequarter, macro in ibuskeysyms-compat
IBUS_onesixth, macro in ibuskeysyms-compat
IBUS_onesubscript, macro in ibuskeysyms-compat
IBUS_onesuperior, macro in ibuskeysyms-compat
IBUS_onethird, macro in ibuskeysyms-compat
IBUS_Ooblique, macro in ibuskeysyms-compat
IBUS_ooblique, macro in ibuskeysyms-compat
IBUS_openrectbullet, macro in ibuskeysyms-compat
IBUS_openstar, macro in ibuskeysyms-compat
IBUS_opentribulletdown, macro in ibuskeysyms-compat
IBUS_opentribulletup, macro in ibuskeysyms-compat
IBUS_ordfeminine, macro in ibuskeysyms-compat
IBusOrientation, enum in ibustypes
IBUS_Oslash, macro in ibuskeysyms-compat
IBUS_oslash, macro in ibuskeysyms-compat
IBUS_Otilde, macro in ibuskeysyms-compat
IBUS_otilde, macro in ibuskeysyms-compat
IBUS_overbar, macro in ibuskeysyms-compat
IBUS_Overlay1_Enable, macro in ibuskeysyms-compat
IBUS_Overlay2_Enable, macro in ibuskeysyms-compat
IBUS_overline, macro in ibuskeysyms-compat

P

IBUS_P, macro in ibuskeysyms-compat
IBUS_p, macro in ibuskeysyms-compat
IBUS_Pabovedot, macro in ibuskeysyms-compat
IBUS_pabovedot, macro in ibuskeysyms-compat
IBUS_Page_Down, macro in ibuskeysyms-compat
IBUS_Page_Up, macro in ibuskeysyms-compat
IBusPanelService, struct in IBusPanelService
IBusPanelService::cursor-down-lookup-table, object signal in IBusPanelService
IBusPanelService::cursor-up-lookup-table, object signal in IBusPanelService
IBusPanelService::destroy-context, object signal in IBusPanelService
IBusPanelService::focus-in, object signal in IBusPanelService
IBusPanelService::focus-out, object signal in IBusPanelService
IBusPanelService::hide-auxiliary-text, object signal in IBusPanelService
IBusPanelService::hide-language-bar, object signal in IBusPanelService
IBusPanelService::hide-lookup-table, object signal in IBusPanelService
IBusPanelService::hide-preedit-text, object signal in IBusPanelService
IBusPanelService::page-down-lookup-table, object signal in IBusPanelService
IBusPanelService::page-up-lookup-table, object signal in IBusPanelService
IBusPanelService::register-properties, object signal in IBusPanelService
IBusPanelService::reset, object signal in IBusPanelService
IBusPanelService::set-content-type, object signal in IBusPanelService
IBusPanelService::set-cursor-location, object signal in IBusPanelService
IBusPanelService::show-auxiliary-text, object signal in IBusPanelService
IBusPanelService::show-language-bar, object signal in IBusPanelService
IBusPanelService::show-lookup-table, object signal in IBusPanelService
IBusPanelService::show-preedit-text, object signal in IBusPanelService
IBusPanelService::start-setup, object signal in IBusPanelService
IBusPanelService::state-changed, object signal in IBusPanelService
IBusPanelService::update-auxiliary-text, object signal in IBusPanelService
IBusPanelService::update-lookup-table, object signal in IBusPanelService
IBusPanelService::update-preedit-text, object signal in IBusPanelService
IBusPanelService::update-property, object signal in IBusPanelService
ibus_panel_service_candidate_clicked, function in IBusPanelService
ibus_panel_service_cursor_down, function in IBusPanelService
ibus_panel_service_cursor_up, function in IBusPanelService
ibus_panel_service_new, function in IBusPanelService
ibus_panel_service_page_down, function in IBusPanelService
ibus_panel_service_page_up, function in IBusPanelService
ibus_panel_service_property_activate, function in IBusPanelService
ibus_panel_service_property_hide, function in IBusPanelService
ibus_panel_service_property_show, function in IBusPanelService
IBUS_paragraph, macro in ibuskeysyms-compat
IBUS_parenleft, macro in ibuskeysyms-compat
IBUS_parenright, macro in ibuskeysyms-compat
IBUS_partdifferential, macro in ibuskeysyms-compat
IBUS_partialderivative, macro in ibuskeysyms-compat
IBUS_PATH_CONFIG, macro in ibusshare
IBUS_PATH_FACTORY, macro in ibusshare
IBUS_PATH_IBUS, macro in ibusshare
IBUS_PATH_INPUT_CONTEXT, macro in ibusshare
IBUS_PATH_NOTIFICATIONS, macro in ibusshare
IBUS_PATH_PANEL, macro in ibusshare
IBUS_Pause, macro in ibuskeysyms-compat
IBUS_percent, macro in ibuskeysyms-compat
IBUS_period, macro in ibuskeysyms-compat
IBUS_periodcentered, macro in ibuskeysyms-compat
IBUS_PesetaSign, macro in ibuskeysyms-compat
IBUS_phonographcopyright, macro in ibuskeysyms-compat
IBUS_plus, macro in ibuskeysyms-compat
IBUS_plusminus, macro in ibuskeysyms-compat
IBUS_Pointer_Accelerate, macro in ibuskeysyms-compat
IBUS_Pointer_Button1, macro in ibuskeysyms-compat
IBUS_Pointer_Button2, macro in ibuskeysyms-compat
IBUS_Pointer_Button3, macro in ibuskeysyms-compat
IBUS_Pointer_Button4, macro in ibuskeysyms-compat
IBUS_Pointer_Button5, macro in ibuskeysyms-compat
IBUS_Pointer_Button_Dflt, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick1, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick2, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick3, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick4, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick5, macro in ibuskeysyms-compat
IBUS_Pointer_DblClick_Dflt, macro in ibuskeysyms-compat
IBUS_Pointer_DfltBtnNext, macro in ibuskeysyms-compat
IBUS_Pointer_DfltBtnPrev, macro in ibuskeysyms-compat
IBUS_Pointer_Down, macro in ibuskeysyms-compat
IBUS_Pointer_DownLeft, macro in ibuskeysyms-compat
IBUS_Pointer_DownRight, macro in ibuskeysyms-compat
IBUS_Pointer_Drag1, macro in ibuskeysyms-compat
IBUS_Pointer_Drag2, macro in ibuskeysyms-compat
IBUS_Pointer_Drag3, macro in ibuskeysyms-compat
IBUS_Pointer_Drag4, macro in ibuskeysyms-compat
IBUS_Pointer_Drag5, macro in ibuskeysyms-compat
IBUS_Pointer_Drag_Dflt, macro in ibuskeysyms-compat
IBUS_Pointer_EnableKeys, macro in ibuskeysyms-compat
IBUS_Pointer_Left, macro in ibuskeysyms-compat
IBUS_Pointer_Right, macro in ibuskeysyms-compat
IBUS_Pointer_Up, macro in ibuskeysyms-compat
IBUS_Pointer_UpLeft, macro in ibuskeysyms-compat
IBUS_Pointer_UpRight, macro in ibuskeysyms-compat
IBusPreeditFocusMode, enum in ibustypes
IBUS_prescription, macro in ibuskeysyms-compat
IBUS_PreviousCandidate, macro in ibuskeysyms-compat
IBUS_Prev_Virtual_Screen, macro in ibuskeysyms-compat
IBUS_Print, macro in ibuskeysyms-compat
IBUS_Prior, macro in ibuskeysyms-compat
IBUS_prolongedsound, macro in ibuskeysyms-compat
IBusProperty, struct in IBusProperty
IBusProperty:icon, object property in IBusProperty
IBusProperty:key, object property in IBusProperty
IBusProperty:label, object property in IBusProperty
IBusProperty:prop-type, object property in IBusProperty
IBusProperty:sensitive, object property in IBusProperty
IBusProperty:state, object property in IBusProperty
IBusProperty:sub-props, object property in IBusProperty
IBusProperty:symbol, object property in IBusProperty
IBusProperty:tooltip, object property in IBusProperty
IBusProperty:visible, object property in IBusProperty
ibus_property_get_icon, function in IBusProperty
ibus_property_get_key, function in IBusProperty
ibus_property_get_label, function in IBusProperty
ibus_property_get_prop_type, function in IBusProperty
ibus_property_get_sensitive, function in IBusProperty
ibus_property_get_state, function in IBusProperty
ibus_property_get_sub_props, function in IBusProperty
ibus_property_get_symbol, function in IBusProperty
ibus_property_get_tooltip, function in IBusProperty
ibus_property_get_visible, function in IBusProperty
ibus_property_new, function in IBusProperty
ibus_property_new_varargs, function in IBusProperty
ibus_property_set_icon, function in IBusProperty
ibus_property_set_label, function in IBusProperty
ibus_property_set_sensitive, function in IBusProperty
ibus_property_set_state, function in IBusProperty
ibus_property_set_sub_props, function in IBusProperty
ibus_property_set_symbol, function in IBusProperty
ibus_property_set_tooltip, function in IBusProperty
ibus_property_set_visible, function in IBusProperty
ibus_property_update, function in IBusProperty
IBusPropList, struct in IBusPropList
IBusPropListClass, struct in IBusPropList
IBusPropState, enum in IBusProperty
IBusPropType, enum in IBusProperty
ibus_prop_list_append, function in IBusPropList
ibus_prop_list_get, function in IBusPropList
ibus_prop_list_new, function in IBusPropList
ibus_prop_list_update_property, function in IBusPropList
IBusProxy, struct in IBusProxy
IBusProxy::destroy, object signal in IBusProxy
ibus_proxy_destroy, function in IBusProxy
IBUS_PROXY_DESTROYED, macro in IBusProxy
IBUS_PROXY_FLAGS, macro in IBusProxy
IBUS_PROXY_SET_FLAGS, macro in IBusProxy
IBUS_PROXY_UNSET_FLAGS, macro in IBusProxy
IBUS_punctspace, macro in ibuskeysyms-compat

Q

IBUS_Q, macro in ibuskeysyms-compat
IBUS_q, macro in ibuskeysyms-compat
IBUS_quad, macro in ibuskeysyms-compat
IBUS_question, macro in ibuskeysyms-compat
IBUS_questiondown, macro in ibuskeysyms-compat
ibus_quit, function in ibusshare
IBUS_quotedbl, macro in ibuskeysyms-compat
IBUS_quoteleft, macro in ibuskeysyms-compat
IBUS_quoteright, macro in ibuskeysyms-compat

R

IBUS_R, macro in ibuskeysyms-compat
IBUS_r, macro in ibuskeysyms-compat
IBUS_R1, macro in ibuskeysyms-compat
IBUS_R10, macro in ibuskeysyms-compat
IBUS_R11, macro in ibuskeysyms-compat
IBUS_R12, macro in ibuskeysyms-compat
IBUS_R13, macro in ibuskeysyms-compat
IBUS_R14, macro in ibuskeysyms-compat
IBUS_R15, macro in ibuskeysyms-compat
IBUS_R2, macro in ibuskeysyms-compat
IBUS_R3, macro in ibuskeysyms-compat
IBUS_R4, macro in ibuskeysyms-compat
IBUS_R5, macro in ibuskeysyms-compat
IBUS_R6, macro in ibuskeysyms-compat
IBUS_R7, macro in ibuskeysyms-compat
IBUS_R8, macro in ibuskeysyms-compat
IBUS_R9, macro in ibuskeysyms-compat
IBUS_Racute, macro in ibuskeysyms-compat
IBUS_racute, macro in ibuskeysyms-compat
IBUS_radical, macro in ibuskeysyms-compat
IBUS_Rcaron, macro in ibuskeysyms-compat
IBUS_rcaron, macro in ibuskeysyms-compat
IBUS_Rcedilla, macro in ibuskeysyms-compat
IBUS_rcedilla, macro in ibuskeysyms-compat
IBusRectangle, struct in ibustypes
IBUS_Redo, macro in ibuskeysyms-compat
IBUS_registered, macro in ibuskeysyms-compat
IBusRegistry, struct in IBusRegistry
IBusRegistry::changed, object signal in IBusRegistry
ibus_registry_check_modification, function in IBusRegistry
ibus_registry_get_components, function in IBusRegistry
ibus_registry_get_observed_paths, function in IBusRegistry
ibus_registry_load, function in IBusRegistry
ibus_registry_load_cache, function in IBusRegistry
ibus_registry_load_cache_file, function in IBusRegistry
ibus_registry_load_in_dir, function in IBusRegistry
ibus_registry_new, function in IBusRegistry
ibus_registry_output, function in IBusRegistry
ibus_registry_save_cache, function in IBusRegistry
ibus_registry_save_cache_file, function in IBusRegistry
ibus_registry_start_monitor_changes, function in IBusRegistry
IBUS_RepeatKeys_Enable, macro in ibuskeysyms-compat
IBUS_Return, macro in ibuskeysyms-compat
IBUS_Right, macro in ibuskeysyms-compat
IBUS_rightanglebracket, macro in ibuskeysyms-compat
IBUS_rightarrow, macro in ibuskeysyms-compat
IBUS_rightcaret, macro in ibuskeysyms-compat
IBUS_rightdoublequotemark, macro in ibuskeysyms-compat
IBUS_rightmiddlecurlybrace, macro in ibuskeysyms-compat
IBUS_rightmiddlesummation, macro in ibuskeysyms-compat
IBUS_rightopentriangle, macro in ibuskeysyms-compat
IBUS_rightpointer, macro in ibuskeysyms-compat
IBUS_rightshoe, macro in ibuskeysyms-compat
IBUS_rightsinglequotemark, macro in ibuskeysyms-compat
IBUS_rightt, macro in ibuskeysyms-compat
IBUS_righttack, macro in ibuskeysyms-compat
IBUS_Romaji, macro in ibuskeysyms-compat
IBUS_RupeeSign, macro in ibuskeysyms-compat

S

IBUS_S, macro in ibuskeysyms-compat
IBUS_s, macro in ibuskeysyms-compat
IBUS_Sabovedot, macro in ibuskeysyms-compat
IBUS_sabovedot, macro in ibuskeysyms-compat
IBUS_Sacute, macro in ibuskeysyms-compat
IBUS_sacute, macro in ibuskeysyms-compat
IBUS_Scaron, macro in ibuskeysyms-compat
IBUS_scaron, macro in ibuskeysyms-compat
IBUS_Scedilla, macro in ibuskeysyms-compat
IBUS_scedilla, macro in ibuskeysyms-compat
IBUS_SCHWA, macro in ibuskeysyms-compat
IBUS_schwa, macro in ibuskeysyms-compat
IBUS_Scircumflex, macro in ibuskeysyms-compat
IBUS_scircumflex, macro in ibuskeysyms-compat
IBUS_script_switch, macro in ibuskeysyms-compat
IBUS_Scroll_Lock, macro in ibuskeysyms-compat
IBUS_seconds, macro in ibuskeysyms-compat
IBUS_section, macro in ibuskeysyms-compat
IBUS_Select, macro in ibuskeysyms-compat
IBUS_semicolon, macro in ibuskeysyms-compat
IBUS_semivoicedsound, macro in ibuskeysyms-compat
IBUS_Serbian_DJE, macro in ibuskeysyms-compat
IBUS_Serbian_dje, macro in ibuskeysyms-compat
IBUS_Serbian_DZE, macro in ibuskeysyms-compat
IBUS_Serbian_dze, macro in ibuskeysyms-compat
IBUS_Serbian_JE, macro in ibuskeysyms-compat
IBUS_Serbian_je, macro in ibuskeysyms-compat
IBUS_Serbian_LJE, macro in ibuskeysyms-compat
IBUS_Serbian_lje, macro in ibuskeysyms-compat
IBUS_Serbian_NJE, macro in ibuskeysyms-compat
IBUS_Serbian_nje, macro in ibuskeysyms-compat
IBUS_Serbian_TSHE, macro in ibuskeysyms-compat
IBUS_Serbian_tshe, macro in ibuskeysyms-compat
IBusSerializable, struct in IBusSerializable
IBusSerializableCopyFunc, user_function in IBusSerializable
IBusSerializableDeserializeFunc, user_function in IBusSerializable
IBusSerializableSerializeFunc, user_function in IBusSerializable
ibus_serializable_copy, function in IBusSerializable
ibus_serializable_deserialize, function in IBusSerializable
ibus_serializable_get_attachment, macro in IBusSerializable
ibus_serializable_get_qattachment, function in IBusSerializable
ibus_serializable_new, function in IBusSerializable
ibus_serializable_remove_attachment, macro in IBusSerializable
ibus_serializable_remove_qattachment, function in IBusSerializable
ibus_serializable_serialize, function in IBusSerializable
ibus_serializable_set_attachment, macro in IBusSerializable
ibus_serializable_set_qattachment, function in IBusSerializable
IBusService, struct in IBusService
ibus_service_class_add_interfaces, function in IBusService
IBUS_SERVICE_CONFIG, macro in ibusshare
ibus_service_emit_signal, function in IBusService
ibus_service_get_connection, function in IBusService
ibus_service_get_object_path, function in IBusService
IBUS_SERVICE_IBUS, macro in ibusshare
ibus_service_new, function in IBusService
IBUS_SERVICE_NOTIFICATIONS, macro in ibusshare
IBUS_SERVICE_PANEL, macro in ibusshare
ibus_service_register, function in IBusService
ibus_service_unregister, function in IBusService
ibus_set_display, function in ibusshare
ibus_set_log_handler, function in ibusshare
IBUS_seveneighths, macro in ibuskeysyms-compat
IBUS_sevensubscript, macro in ibuskeysyms-compat
IBUS_sevensuperior, macro in ibuskeysyms-compat
IBUS_Shift_L, macro in ibuskeysyms-compat
IBUS_Shift_Lock, macro in ibuskeysyms-compat
IBUS_Shift_R, macro in ibuskeysyms-compat
IBUS_signaturemark, macro in ibuskeysyms-compat
IBUS_signifblank, macro in ibuskeysyms-compat
IBUS_similarequal, macro in ibuskeysyms-compat
IBUS_SingleCandidate, macro in ibuskeysyms-compat
IBUS_singlelowquotemark, macro in ibuskeysyms-compat
IBUS_sixsubscript, macro in ibuskeysyms-compat
IBUS_sixsuperior, macro in ibuskeysyms-compat
IBUS_slash, macro in ibuskeysyms-compat
IBUS_SlowKeys_Enable, macro in ibuskeysyms-compat
IBUS_soliddiamond, macro in ibuskeysyms-compat
IBUS_space, macro in ibuskeysyms-compat
IBUS_squareroot, macro in ibuskeysyms-compat
IBUS_ssharp, macro in ibuskeysyms-compat
IBUS_sterling, macro in ibuskeysyms-compat
IBUS_StickyKeys_Enable, macro in ibuskeysyms-compat
IBUS_stricteq, macro in ibuskeysyms-compat
IBUS_Super_L, macro in ibuskeysyms-compat
IBUS_Super_R, macro in ibuskeysyms-compat
IBUS_Sys_Req, macro in ibuskeysyms-compat

T

IBUS_T, macro in ibuskeysyms-compat
IBUS_t, macro in ibuskeysyms-compat
IBUS_Tab, macro in ibuskeysyms-compat
IBUS_Tabovedot, macro in ibuskeysyms-compat
IBUS_tabovedot, macro in ibuskeysyms-compat
IBUS_Tcaron, macro in ibuskeysyms-compat
IBUS_tcaron, macro in ibuskeysyms-compat
IBUS_Tcedilla, macro in ibuskeysyms-compat
IBUS_tcedilla, macro in ibuskeysyms-compat
IBUS_telephone, macro in ibuskeysyms-compat
IBUS_telephonerecorder, macro in ibuskeysyms-compat
IBUS_Terminate_Server, macro in ibuskeysyms-compat
IBusText, struct in IBusText
ibus_text_append_attribute, function in IBusText
ibus_text_get_attributes, function in IBusText
ibus_text_get_is_static, function in IBusText
ibus_text_get_length, function in IBusText
ibus_text_get_text, function in IBusText
ibus_text_new_from_printf, function in IBusText
ibus_text_new_from_static_string, function in IBusText
ibus_text_new_from_string, function in IBusText
ibus_text_new_from_ucs4, function in IBusText
ibus_text_new_from_unichar, function in IBusText
ibus_text_set_attributes, function in IBusText
IBUS_Thai_baht, macro in ibuskeysyms-compat
IBUS_Thai_bobaimai, macro in ibuskeysyms-compat
IBUS_Thai_chochan, macro in ibuskeysyms-compat
IBUS_Thai_chochang, macro in ibuskeysyms-compat
IBUS_Thai_choching, macro in ibuskeysyms-compat
IBUS_Thai_chochoe, macro in ibuskeysyms-compat
IBUS_Thai_dochada, macro in ibuskeysyms-compat
IBUS_Thai_dodek, macro in ibuskeysyms-compat
IBUS_Thai_fofa, macro in ibuskeysyms-compat
IBUS_Thai_fofan, macro in ibuskeysyms-compat
IBUS_Thai_hohip, macro in ibuskeysyms-compat
IBUS_Thai_honokhuk, macro in ibuskeysyms-compat
IBUS_Thai_khokhai, macro in ibuskeysyms-compat
IBUS_Thai_khokhon, macro in ibuskeysyms-compat
IBUS_Thai_khokhuat, macro in ibuskeysyms-compat
IBUS_Thai_khokhwai, macro in ibuskeysyms-compat
IBUS_Thai_khorakhang, macro in ibuskeysyms-compat
IBUS_Thai_kokai, macro in ibuskeysyms-compat
IBUS_Thai_lakkhangyao, macro in ibuskeysyms-compat
IBUS_Thai_lekchet, macro in ibuskeysyms-compat
IBUS_Thai_lekha, macro in ibuskeysyms-compat
IBUS_Thai_lekhok, macro in ibuskeysyms-compat
IBUS_Thai_lekkao, macro in ibuskeysyms-compat
IBUS_Thai_leknung, macro in ibuskeysyms-compat
IBUS_Thai_lekpaet, macro in ibuskeysyms-compat
IBUS_Thai_leksam, macro in ibuskeysyms-compat
IBUS_Thai_leksi, macro in ibuskeysyms-compat
IBUS_Thai_leksong, macro in ibuskeysyms-compat
IBUS_Thai_leksun, macro in ibuskeysyms-compat
IBUS_Thai_lochula, macro in ibuskeysyms-compat
IBUS_Thai_loling, macro in ibuskeysyms-compat
IBUS_Thai_lu, macro in ibuskeysyms-compat
IBUS_Thai_maichattawa, macro in ibuskeysyms-compat
IBUS_Thai_maiek, macro in ibuskeysyms-compat
IBUS_Thai_maihanakat, macro in ibuskeysyms-compat
IBUS_Thai_maihanakat_maitho, macro in ibuskeysyms-compat
IBUS_Thai_maitaikhu, macro in ibuskeysyms-compat
IBUS_Thai_maitho, macro in ibuskeysyms-compat
IBUS_Thai_maitri, macro in ibuskeysyms-compat
IBUS_Thai_maiyamok, macro in ibuskeysyms-compat
IBUS_Thai_moma, macro in ibuskeysyms-compat
IBUS_Thai_ngongu, macro in ibuskeysyms-compat
IBUS_Thai_nikhahit, macro in ibuskeysyms-compat
IBUS_Thai_nonen, macro in ibuskeysyms-compat
IBUS_Thai_nonu, macro in ibuskeysyms-compat
IBUS_Thai_oang, macro in ibuskeysyms-compat
IBUS_Thai_paiyannoi, macro in ibuskeysyms-compat
IBUS_Thai_phinthu, macro in ibuskeysyms-compat
IBUS_Thai_phophan, macro in ibuskeysyms-compat
IBUS_Thai_phophung, macro in ibuskeysyms-compat
IBUS_Thai_phosamphao, macro in ibuskeysyms-compat
IBUS_Thai_popla, macro in ibuskeysyms-compat
IBUS_Thai_rorua, macro in ibuskeysyms-compat
IBUS_Thai_ru, macro in ibuskeysyms-compat
IBUS_Thai_saraa, macro in ibuskeysyms-compat
IBUS_Thai_saraaa, macro in ibuskeysyms-compat
IBUS_Thai_saraae, macro in ibuskeysyms-compat
IBUS_Thai_saraaimaimalai, macro in ibuskeysyms-compat
IBUS_Thai_saraaimaimuan, macro in ibuskeysyms-compat
IBUS_Thai_saraam, macro in ibuskeysyms-compat
IBUS_Thai_sarae, macro in ibuskeysyms-compat
IBUS_Thai_sarai, macro in ibuskeysyms-compat
IBUS_Thai_saraii, macro in ibuskeysyms-compat
IBUS_Thai_sarao, macro in ibuskeysyms-compat
IBUS_Thai_sarau, macro in ibuskeysyms-compat
IBUS_Thai_saraue, macro in ibuskeysyms-compat
IBUS_Thai_sarauee, macro in ibuskeysyms-compat
IBUS_Thai_sarauu, macro in ibuskeysyms-compat
IBUS_Thai_sorusi, macro in ibuskeysyms-compat
IBUS_Thai_sosala, macro in ibuskeysyms-compat
IBUS_Thai_soso, macro in ibuskeysyms-compat
IBUS_Thai_sosua, macro in ibuskeysyms-compat
IBUS_Thai_thanthakhat, macro in ibuskeysyms-compat
IBUS_Thai_thonangmontho, macro in ibuskeysyms-compat
IBUS_Thai_thophuthao, macro in ibuskeysyms-compat
IBUS_Thai_thothahan, macro in ibuskeysyms-compat
IBUS_Thai_thothan, macro in ibuskeysyms-compat
IBUS_Thai_thothong, macro in ibuskeysyms-compat
IBUS_Thai_thothung, macro in ibuskeysyms-compat
IBUS_Thai_topatak, macro in ibuskeysyms-compat
IBUS_Thai_totao, macro in ibuskeysyms-compat
IBUS_Thai_wowaen, macro in ibuskeysyms-compat
IBUS_Thai_yoyak, macro in ibuskeysyms-compat
IBUS_Thai_yoying, macro in ibuskeysyms-compat
IBUS_therefore, macro in ibuskeysyms-compat
IBUS_thinspace, macro in ibuskeysyms-compat
IBUS_THORN, macro in ibuskeysyms-compat
IBUS_Thorn, macro in ibuskeysyms-compat
IBUS_thorn, macro in ibuskeysyms-compat
IBUS_threeeighths, macro in ibuskeysyms-compat
IBUS_threefifths, macro in ibuskeysyms-compat
IBUS_threequarters, macro in ibuskeysyms-compat
IBUS_threesubscript, macro in ibuskeysyms-compat
IBUS_threesuperior, macro in ibuskeysyms-compat
IBUS_tintegral, macro in ibuskeysyms-compat
IBUS_topintegral, macro in ibuskeysyms-compat
IBUS_topleftparens, macro in ibuskeysyms-compat
IBUS_topleftradical, macro in ibuskeysyms-compat
IBUS_topleftsqbracket, macro in ibuskeysyms-compat
IBUS_topleftsummation, macro in ibuskeysyms-compat
IBUS_toprightparens, macro in ibuskeysyms-compat
IBUS_toprightsqbracket, macro in ibuskeysyms-compat
IBUS_toprightsummation, macro in ibuskeysyms-compat
IBUS_topt, macro in ibuskeysyms-compat
IBUS_topvertsummationconnector, macro in ibuskeysyms-compat
IBUS_Touroku, macro in ibuskeysyms-compat
IBUS_trademark, macro in ibuskeysyms-compat
IBUS_trademarkincircle, macro in ibuskeysyms-compat
IBUS_Tslash, macro in ibuskeysyms-compat
IBUS_tslash, macro in ibuskeysyms-compat
IBUS_twofifths, macro in ibuskeysyms-compat
IBUS_twosubscript, macro in ibuskeysyms-compat
IBUS_twosuperior, macro in ibuskeysyms-compat
IBUS_twothirds, macro in ibuskeysyms-compat

U

IBUS_U, macro in ibuskeysyms-compat
IBUS_u, macro in ibuskeysyms-compat
IBUS_Uacute, macro in ibuskeysyms-compat
IBUS_uacute, macro in ibuskeysyms-compat
IBUS_Ubelowdot, macro in ibuskeysyms-compat
IBUS_ubelowdot, macro in ibuskeysyms-compat
IBUS_Ubreve, macro in ibuskeysyms-compat
IBUS_ubreve, macro in ibuskeysyms-compat
IBUS_Ucircumflex, macro in ibuskeysyms-compat
IBUS_ucircumflex, macro in ibuskeysyms-compat
IBUS_Udiaeresis, macro in ibuskeysyms-compat
IBUS_udiaeresis, macro in ibuskeysyms-compat
IBUS_Udoubleacute, macro in ibuskeysyms-compat
IBUS_udoubleacute, macro in ibuskeysyms-compat
IBUS_Ugrave, macro in ibuskeysyms-compat
IBUS_ugrave, macro in ibuskeysyms-compat
IBUS_Uhook, macro in ibuskeysyms-compat
IBUS_uhook, macro in ibuskeysyms-compat
IBUS_Uhorn, macro in ibuskeysyms-compat
IBUS_uhorn, macro in ibuskeysyms-compat
IBUS_Uhornacute, macro in ibuskeysyms-compat
IBUS_uhornacute, macro in ibuskeysyms-compat
IBUS_Uhornbelowdot, macro in ibuskeysyms-compat
IBUS_uhornbelowdot, macro in ibuskeysyms-compat
IBUS_Uhorngrave, macro in ibuskeysyms-compat
IBUS_uhorngrave, macro in ibuskeysyms-compat
IBUS_Uhornhook, macro in ibuskeysyms-compat
IBUS_uhornhook, macro in ibuskeysyms-compat
IBUS_Uhorntilde, macro in ibuskeysyms-compat
IBUS_uhorntilde, macro in ibuskeysyms-compat
IBUS_Ukrainian_GHE_WITH_UPTURN, macro in ibuskeysyms-compat
IBUS_Ukrainian_ghe_with_upturn, macro in ibuskeysyms-compat
IBUS_Ukrainian_I, macro in ibuskeysyms-compat
IBUS_Ukrainian_i, macro in ibuskeysyms-compat
IBUS_Ukrainian_IE, macro in ibuskeysyms-compat
IBUS_Ukrainian_ie, macro in ibuskeysyms-compat
IBUS_Ukrainian_YI, macro in ibuskeysyms-compat
IBUS_Ukrainian_yi, macro in ibuskeysyms-compat
IBUS_Ukranian_I, macro in ibuskeysyms-compat
IBUS_Ukranian_i, macro in ibuskeysyms-compat
IBUS_Ukranian_JE, macro in ibuskeysyms-compat
IBUS_Ukranian_je, macro in ibuskeysyms-compat
IBUS_Ukranian_YI, macro in ibuskeysyms-compat
IBUS_Ukranian_yi, macro in ibuskeysyms-compat
IBUS_Umacron, macro in ibuskeysyms-compat
IBUS_umacron, macro in ibuskeysyms-compat
IBUS_underbar, macro in ibuskeysyms-compat
IBUS_underscore, macro in ibuskeysyms-compat
IBUS_Undo, macro in ibuskeysyms-compat
ibus_unicode_to_keyval, function in ibuskeys
IBUS_union, macro in ibuskeysyms-compat
ibus_unset_log_handler, function in ibusshare
IBUS_Uogonek, macro in ibuskeysyms-compat
IBUS_uogonek, macro in ibuskeysyms-compat
IBUS_Up, macro in ibuskeysyms-compat
IBUS_uparrow, macro in ibuskeysyms-compat
IBUS_upcaret, macro in ibuskeysyms-compat
IBUS_upleftcorner, macro in ibuskeysyms-compat
IBUS_uprightcorner, macro in ibuskeysyms-compat
IBUS_upshoe, macro in ibuskeysyms-compat
IBUS_upstile, macro in ibuskeysyms-compat
IBUS_uptack, macro in ibuskeysyms-compat
IBUS_Uring, macro in ibuskeysyms-compat
IBUS_uring, macro in ibuskeysyms-compat
IBUS_Utilde, macro in ibuskeysyms-compat
IBUS_utilde, macro in ibuskeysyms-compat

V

IBUS_V, macro in ibuskeysyms-compat
IBUS_v, macro in ibuskeysyms-compat
IBUS_variation, macro in ibuskeysyms-compat
IBUS_vertbar, macro in ibuskeysyms-compat
IBUS_vertconnector, macro in ibuskeysyms-compat
IBUS_voicedsound, macro in ibuskeysyms-compat
IBUS_VoidSymbol, macro in ibuskeysyms-compat
IBUS_vt, macro in ibuskeysyms-compat

W

IBUS_W, macro in ibuskeysyms-compat
IBUS_w, macro in ibuskeysyms-compat
IBUS_Wacute, macro in ibuskeysyms-compat
IBUS_wacute, macro in ibuskeysyms-compat
ibus_warning, macro in ibusdebug
IBUS_Wcircumflex, macro in ibuskeysyms-compat
IBUS_wcircumflex, macro in ibuskeysyms-compat
IBUS_Wdiaeresis, macro in ibuskeysyms-compat
IBUS_wdiaeresis, macro in ibuskeysyms-compat
IBUS_Wgrave, macro in ibuskeysyms-compat
IBUS_wgrave, macro in ibuskeysyms-compat
IBUS_WonSign, macro in ibuskeysyms-compat
ibus_write_address, function in ibusshare

X

IBUS_X, macro in ibuskeysyms-compat
IBUS_x, macro in ibuskeysyms-compat
IBUS_Xabovedot, macro in ibuskeysyms-compat
IBUS_xabovedot, macro in ibuskeysyms-compat
IBusXML, struct in ibusxml
XMLNode, macro in ibusxml
ibus_xml_copy, function in ibusxml
ibus_xml_free, function in ibusxml
ibus_xml_output, function in ibusxml
ibus_xml_parse_buffer, function in ibusxml
ibus_xml_parse_file, function in ibusxml

Y

IBUS_Y, macro in ibuskeysyms-compat
IBUS_y, macro in ibuskeysyms-compat
IBUS_Yacute, macro in ibuskeysyms-compat
IBUS_yacute, macro in ibuskeysyms-compat
IBUS_Ybelowdot, macro in ibuskeysyms-compat
IBUS_ybelowdot, macro in ibuskeysyms-compat
IBUS_Ycircumflex, macro in ibuskeysyms-compat
IBUS_ycircumflex, macro in ibuskeysyms-compat
IBUS_Ydiaeresis, macro in ibuskeysyms-compat
IBUS_ydiaeresis, macro in ibuskeysyms-compat
IBUS_yen, macro in ibuskeysyms-compat
IBUS_Ygrave, macro in ibuskeysyms-compat
IBUS_ygrave, macro in ibuskeysyms-compat
IBUS_Yhook, macro in ibuskeysyms-compat
IBUS_yhook, macro in ibuskeysyms-compat
IBUS_Ytilde, macro in ibuskeysyms-compat
IBUS_ytilde, macro in ibuskeysyms-compat

Z

IBUS_Z, macro in ibuskeysyms-compat
IBUS_z, macro in ibuskeysyms-compat
IBUS_Zabovedot, macro in ibuskeysyms-compat
IBUS_zabovedot, macro in ibuskeysyms-compat
IBUS_Zacute, macro in ibuskeysyms-compat
IBUS_zacute, macro in ibuskeysyms-compat
IBUS_Zcaron, macro in ibuskeysyms-compat
IBUS_zcaron, macro in ibuskeysyms-compat
IBUS_Zenkaku, macro in ibuskeysyms-compat
IBUS_Zenkaku_Hankaku, macro in ibuskeysyms-compat
IBUS_Zen_Koho, macro in ibuskeysyms-compat
IBUS_zerosubscript, macro in ibuskeysyms-compat
IBUS_zerosuperior, macro in ibuskeysyms-compat
IBUS_Zstroke, macro in ibuskeysyms-compat
IBUS_zstroke, macro in ibuskeysyms-compat
ibus-1.5.11/docs/reference/ibus/html/IBusText.html0000644000000000000000000006427712551655043016647 00000000000000 IBusText: IBus Reference Manual

IBusText

IBusText — Text with decorating information.

Types and Values

struct IBusText

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusText

Description

An IBusText is the main text object in IBus. The text is decorated according to associated IBusAttribute, e.g. the foreground/background color, underline, and applied scope.

see_also: IBusAttribute

Functions

ibus_text_new_from_string ()

IBusText *
ibus_text_new_from_string (const gchar *str);

Creates a new IBusText from a string. str will be duplicated in IBusText, so feel free to free str after this function.

Parameters

str

An text string to be set.

 

Returns

A newly allocated IBusText.


ibus_text_new_from_ucs4 ()

IBusText *
ibus_text_new_from_ucs4 (const gunichar *str);

Creates a new IBusText from an UCS-4 encoded string. str will be duplicated in IBusText, so feel free to free str after this function.

Parameters

str

An text string to be set.

 

Returns

A newly allocated IBusText.


ibus_text_new_from_static_string ()

IBusText *
ibus_text_new_from_static_string (const gchar *str);

Creates a new IBusText from a static string.

Since str is a static string which won't be freed. This function will NOT duplicate str .

[skip]

Parameters

str

An text string to be set.

 

Returns

A newly allocated IBusText.


ibus_text_new_from_printf ()

IBusText *
ibus_text_new_from_printf (const gchar *fmt,
                           ...);

Creates a new IBusText from a printf expression.

The result of printf expression is stored in the new IBusText instance.

Parameters

fmt

printf format string.

 

...

arguments for fmt .

 

Returns

A newly allocated IBusText.


ibus_text_new_from_unichar ()

IBusText *
ibus_text_new_from_unichar (gunichar c);

Creates a new IBusText from a single UCS4-encoded character.

Parameters

c

A single UCS4-encoded character.

 

Returns

A newly allocated IBusText.


ibus_text_append_attribute ()

void
ibus_text_append_attribute (IBusText *text,
                            guint type,
                            guint value,
                            guint start_index,
                            gint end_index);

Append an IBusAttribute for IBusText.

Parameters

text

an IBusText

 

type

IBusAttributeType for text .

 

value

Value for the type.

 

start_index

The starting index, inclusive.

 

end_index

The ending index, exclusive.

 

ibus_text_get_length ()

guint
ibus_text_get_length (IBusText *text);

Return number of characters in an IBusText. This function is based on g_utf8_strlen(), so unlike strlen(), it does not count by bytes but characters instead.

Parameters

text

An IBusText.

 

Returns

Number of character in text , not counted by bytes.


ibus_text_get_is_static ()

gboolean
ibus_text_get_is_static (IBusText *text);

Return the is_static in an IBusText.

[skip]

Parameters

text

An IBusText.

 

Returns

the is_static in text .


ibus_text_get_text ()

const gchar *
ibus_text_get_text (IBusText *text);

Return the text in an IBusText. Should not be freed.

Parameters

text

An IBusText.

 

Returns

the text in text .


ibus_text_get_attributes ()

IBusAttrList *
ibus_text_get_attributes (IBusText *text);

Return the attributes in an IBusText. Should not be freed.

Parameters

text

An IBusText.

 

Returns

the attrs in text .

[transfer none]


ibus_text_set_attributes ()

void
ibus_text_set_attributes (IBusText *text,
                          IBusAttrList *attrs);

Parameters

text

An IBusText.

 

attrs

An IBusAttrList

 

Types and Values

struct IBusText

struct IBusText {
    gboolean is_static;
    gchar  *text;
    IBusAttrList *attrs;
};

A text object in IBus.

Members

gboolean is_static;

Whether text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string().

 

gchar *text;

The string content of IBusText in UTF-8.

 

IBusAttrList *attrs;

Associated IBusAttributes.

 
ibus-1.5.11/docs/reference/ibus/html/left.png0000644000000000000000000000040612551655042015671 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ,`m;½“IDAT8ËÕÒ¯Áa‡ñ?ÁDAPY‘\‚$‹º[p¢+ÐÜIÐIªMlfü('Úì}MpâÙyží{Îá_ª…ž¨¤ÂÞ¥Â}œ^£‘q xZ <Æ=àYjî) <0ù4\~Ó+Púöl#Ü"ÂÕÉ—,QÏ‘ôp ÉÍIÇlswÒÆ>÷•[/]_i0‘3ÃIEND®B`‚ibus-1.5.11/docs/reference/ibus/html/ibus-ibuskeysyms-compat.html0000644000000000000000000257014612551655043021747 00000000000000 ibuskeysyms-compat: IBus Reference Manual

ibuskeysyms-compat

ibuskeysyms-compat

Types and Values

#define IBUS_VoidSymbol
#define IBUS_BackSpace
#define IBUS_Tab
#define IBUS_Linefeed
#define IBUS_Clear
#define IBUS_Return
#define IBUS_Pause
#define IBUS_Scroll_Lock
#define IBUS_Sys_Req
#define IBUS_Escape
#define IBUS_Delete
#define IBUS_Multi_key
#define IBUS_Codeinput
#define IBUS_SingleCandidate
#define IBUS_MultipleCandidate
#define IBUS_PreviousCandidate
#define IBUS_Kanji
#define IBUS_Muhenkan
#define IBUS_Henkan_Mode
#define IBUS_Henkan
#define IBUS_Romaji
#define IBUS_Hiragana
#define IBUS_Katakana
#define IBUS_Hiragana_Katakana
#define IBUS_Zenkaku
#define IBUS_Hankaku
#define IBUS_Zenkaku_Hankaku
#define IBUS_Touroku
#define IBUS_Massyo
#define IBUS_Kana_Lock
#define IBUS_Kana_Shift
#define IBUS_Eisu_Shift
#define IBUS_Eisu_toggle
#define IBUS_Kanji_Bangou
#define IBUS_Zen_Koho
#define IBUS_Mae_Koho
#define IBUS_Home
#define IBUS_Left
#define IBUS_Up
#define IBUS_Right
#define IBUS_Down
#define IBUS_Prior
#define IBUS_Page_Up
#define IBUS_Next
#define IBUS_Page_Down
#define IBUS_End
#define IBUS_Begin
#define IBUS_Select
#define IBUS_Print
#define IBUS_Execute
#define IBUS_Insert
#define IBUS_Undo
#define IBUS_Redo
#define IBUS_Menu
#define IBUS_Find
#define IBUS_Cancel
#define IBUS_Help
#define IBUS_Break
#define IBUS_Mode_switch
#define IBUS_script_switch
#define IBUS_Num_Lock
#define IBUS_KP_Space
#define IBUS_KP_Tab
#define IBUS_KP_Enter
#define IBUS_KP_F1
#define IBUS_KP_F2
#define IBUS_KP_F3
#define IBUS_KP_F4
#define IBUS_KP_Home
#define IBUS_KP_Left
#define IBUS_KP_Up
#define IBUS_KP_Right
#define IBUS_KP_Down
#define IBUS_KP_Prior
#define IBUS_KP_Page_Up
#define IBUS_KP_Next
#define IBUS_KP_Page_Down
#define IBUS_KP_End
#define IBUS_KP_Begin
#define IBUS_KP_Insert
#define IBUS_KP_Delete
#define IBUS_KP_Equal
#define IBUS_KP_Multiply
#define IBUS_KP_Add
#define IBUS_KP_Separator
#define IBUS_KP_Subtract
#define IBUS_KP_Decimal
#define IBUS_KP_Divide
#define IBUS_KP_0
#define IBUS_KP_1
#define IBUS_KP_2
#define IBUS_KP_3
#define IBUS_KP_4
#define IBUS_KP_5
#define IBUS_KP_6
#define IBUS_KP_7
#define IBUS_KP_8
#define IBUS_KP_9
#define IBUS_F1
#define IBUS_F2
#define IBUS_F3
#define IBUS_F4
#define IBUS_F5
#define IBUS_F6
#define IBUS_F7
#define IBUS_F8
#define IBUS_F9
#define IBUS_F10
#define IBUS_F11
#define IBUS_L1
#define IBUS_F12
#define IBUS_L2
#define IBUS_F13
#define IBUS_L3
#define IBUS_F14
#define IBUS_L4
#define IBUS_F15
#define IBUS_L5
#define IBUS_F16
#define IBUS_L6
#define IBUS_F17
#define IBUS_L7
#define IBUS_F18
#define IBUS_L8
#define IBUS_F19
#define IBUS_L9
#define IBUS_F20
#define IBUS_L10
#define IBUS_F21
#define IBUS_R1
#define IBUS_F22
#define IBUS_R2
#define IBUS_F23
#define IBUS_R3
#define IBUS_F24
#define IBUS_R4
#define IBUS_F25
#define IBUS_R5
#define IBUS_F26
#define IBUS_R6
#define IBUS_F27
#define IBUS_R7
#define IBUS_F28
#define IBUS_R8
#define IBUS_F29
#define IBUS_R9
#define IBUS_F30
#define IBUS_R10
#define IBUS_F31
#define IBUS_R11
#define IBUS_F32
#define IBUS_R12
#define IBUS_F33
#define IBUS_R13
#define IBUS_F34
#define IBUS_R14
#define IBUS_F35
#define IBUS_R15
#define IBUS_Shift_L
#define IBUS_Shift_R
#define IBUS_Control_L
#define IBUS_Control_R
#define IBUS_Caps_Lock
#define IBUS_Shift_Lock
#define IBUS_Meta_L
#define IBUS_Meta_R
#define IBUS_Alt_L
#define IBUS_Alt_R
#define IBUS_Super_L
#define IBUS_Super_R
#define IBUS_Hyper_L
#define IBUS_Hyper_R
#define IBUS_ISO_Lock
#define IBUS_ISO_Level2_Latch
#define IBUS_ISO_Level3_Shift
#define IBUS_ISO_Level3_Latch
#define IBUS_ISO_Level3_Lock
#define IBUS_ISO_Level5_Shift
#define IBUS_ISO_Level5_Latch
#define IBUS_ISO_Level5_Lock
#define IBUS_ISO_Group_Shift
#define IBUS_ISO_Group_Latch
#define IBUS_ISO_Group_Lock
#define IBUS_ISO_Next_Group
#define IBUS_ISO_Next_Group_Lock
#define IBUS_ISO_Prev_Group
#define IBUS_ISO_Prev_Group_Lock
#define IBUS_ISO_First_Group
#define IBUS_ISO_First_Group_Lock
#define IBUS_ISO_Last_Group
#define IBUS_ISO_Last_Group_Lock
#define IBUS_ISO_Left_Tab
#define IBUS_ISO_Move_Line_Up
#define IBUS_ISO_Move_Line_Down
#define IBUS_ISO_Partial_Line_Up
#define IBUS_ISO_Partial_Line_Down
#define IBUS_ISO_Partial_Space_Left
#define IBUS_ISO_Partial_Space_Right
#define IBUS_ISO_Set_Margin_Left
#define IBUS_ISO_Set_Margin_Right
#define IBUS_ISO_Release_Margin_Left
#define IBUS_ISO_Release_Margin_Right
#define IBUS_ISO_Release_Both_Margins
#define IBUS_ISO_Fast_Cursor_Left
#define IBUS_ISO_Fast_Cursor_Right
#define IBUS_ISO_Fast_Cursor_Up
#define IBUS_ISO_Fast_Cursor_Down
#define IBUS_ISO_Continuous_Underline
#define IBUS_ISO_Discontinuous_Underline
#define IBUS_ISO_Emphasize
#define IBUS_ISO_Center_Object
#define IBUS_ISO_Enter
#define IBUS_dead_grave
#define IBUS_dead_acute
#define IBUS_dead_circumflex
#define IBUS_dead_tilde
#define IBUS_dead_perispomeni
#define IBUS_dead_macron
#define IBUS_dead_breve
#define IBUS_dead_abovedot
#define IBUS_dead_diaeresis
#define IBUS_dead_abovering
#define IBUS_dead_doubleacute
#define IBUS_dead_caron
#define IBUS_dead_cedilla
#define IBUS_dead_ogonek
#define IBUS_dead_iota
#define IBUS_dead_voiced_sound
#define IBUS_dead_semivoiced_sound
#define IBUS_dead_belowdot
#define IBUS_dead_hook
#define IBUS_dead_horn
#define IBUS_dead_stroke
#define IBUS_dead_abovecomma
#define IBUS_dead_psili
#define IBUS_dead_abovereversedcomma
#define IBUS_dead_dasia
#define IBUS_dead_belowring
#define IBUS_dead_belowmacron
#define IBUS_dead_belowcircumflex
#define IBUS_dead_belowtilde
#define IBUS_dead_belowbreve
#define IBUS_dead_belowdiaeresis
#define IBUS_First_Virtual_Screen
#define IBUS_Prev_Virtual_Screen
#define IBUS_Next_Virtual_Screen
#define IBUS_Last_Virtual_Screen
#define IBUS_Terminate_Server
#define IBUS_AccessX_Enable
#define IBUS_AccessX_Feedback_Enable
#define IBUS_RepeatKeys_Enable
#define IBUS_SlowKeys_Enable
#define IBUS_BounceKeys_Enable
#define IBUS_StickyKeys_Enable
#define IBUS_MouseKeys_Enable
#define IBUS_MouseKeys_Accel_Enable
#define IBUS_Overlay1_Enable
#define IBUS_Overlay2_Enable
#define IBUS_AudibleBell_Enable
#define IBUS_Pointer_Left
#define IBUS_Pointer_Right
#define IBUS_Pointer_Up
#define IBUS_Pointer_Down
#define IBUS_Pointer_UpLeft
#define IBUS_Pointer_UpRight
#define IBUS_Pointer_DownLeft
#define IBUS_Pointer_DownRight
#define IBUS_Pointer_Button_Dflt
#define IBUS_Pointer_Button1
#define IBUS_Pointer_Button2
#define IBUS_Pointer_Button3
#define IBUS_Pointer_Button4
#define IBUS_Pointer_Button5
#define IBUS_Pointer_DblClick_Dflt
#define IBUS_Pointer_DblClick1
#define IBUS_Pointer_DblClick2
#define IBUS_Pointer_DblClick3
#define IBUS_Pointer_DblClick4
#define IBUS_Pointer_DblClick5
#define IBUS_Pointer_Drag_Dflt
#define IBUS_Pointer_Drag1
#define IBUS_Pointer_Drag2
#define IBUS_Pointer_Drag3
#define IBUS_Pointer_Drag4
#define IBUS_Pointer_Drag5
#define IBUS_Pointer_EnableKeys
#define IBUS_Pointer_Accelerate
#define IBUS_Pointer_DfltBtnNext
#define IBUS_Pointer_DfltBtnPrev
#define IBUS_3270_Duplicate
#define IBUS_3270_FieldMark
#define IBUS_3270_Right2
#define IBUS_3270_Left2
#define IBUS_3270_BackTab
#define IBUS_3270_EraseEOF
#define IBUS_3270_EraseInput
#define IBUS_3270_Reset
#define IBUS_3270_Quit
#define IBUS_3270_PA1
#define IBUS_3270_PA2
#define IBUS_3270_PA3
#define IBUS_3270_Test
#define IBUS_3270_Attn
#define IBUS_3270_CursorBlink
#define IBUS_3270_AltCursor
#define IBUS_3270_KeyClick
#define IBUS_3270_Jump
#define IBUS_3270_Ident
#define IBUS_3270_Rule
#define IBUS_3270_Copy
#define IBUS_3270_Play
#define IBUS_3270_Setup
#define IBUS_3270_Record
#define IBUS_3270_ChangeScreen
#define IBUS_3270_DeleteWord
#define IBUS_3270_ExSelect
#define IBUS_3270_CursorSelect
#define IBUS_3270_PrintScreen
#define IBUS_3270_Enter
#define IBUS_space
#define IBUS_exclam
#define IBUS_quotedbl
#define IBUS_numbersign
#define IBUS_dollar
#define IBUS_percent
#define IBUS_ampersand
#define IBUS_apostrophe
#define IBUS_quoteright
#define IBUS_parenleft
#define IBUS_parenright
#define IBUS_asterisk
#define IBUS_plus
#define IBUS_comma
#define IBUS_minus
#define IBUS_period
#define IBUS_slash
#define IBUS_0
#define IBUS_1
#define IBUS_2
#define IBUS_3
#define IBUS_4
#define IBUS_5
#define IBUS_6
#define IBUS_7
#define IBUS_8
#define IBUS_9
#define IBUS_colon
#define IBUS_semicolon
#define IBUS_less
#define IBUS_equal
#define IBUS_greater
#define IBUS_question
#define IBUS_at
#define IBUS_A
#define IBUS_B
#define IBUS_C
#define IBUS_D
#define IBUS_E
#define IBUS_F
#define IBUS_G
#define IBUS_H
#define IBUS_I
#define IBUS_J
#define IBUS_K
#define IBUS_L
#define IBUS_M
#define IBUS_N
#define IBUS_O
#define IBUS_P
#define IBUS_Q
#define IBUS_R
#define IBUS_S
#define IBUS_T
#define IBUS_U
#define IBUS_V
#define IBUS_W
#define IBUS_X
#define IBUS_Y
#define IBUS_Z
#define IBUS_bracketleft
#define IBUS_backslash
#define IBUS_bracketright
#define IBUS_asciicircum
#define IBUS_underscore
#define IBUS_grave
#define IBUS_quoteleft
#define IBUS_a
#define IBUS_b
#define IBUS_c
#define IBUS_d
#define IBUS_e
#define IBUS_f
#define IBUS_g
#define IBUS_h
#define IBUS_i
#define IBUS_j
#define IBUS_k
#define IBUS_l
#define IBUS_m
#define IBUS_n
#define IBUS_o
#define IBUS_p
#define IBUS_q
#define IBUS_r
#define IBUS_s
#define IBUS_t
#define IBUS_u
#define IBUS_v
#define IBUS_w
#define IBUS_x
#define IBUS_y
#define IBUS_z
#define IBUS_braceleft
#define IBUS_bar
#define IBUS_braceright
#define IBUS_asciitilde
#define IBUS_nobreakspace
#define IBUS_exclamdown
#define IBUS_cent
#define IBUS_sterling
#define IBUS_currency
#define IBUS_yen
#define IBUS_brokenbar
#define IBUS_section
#define IBUS_diaeresis
#define IBUS_copyright
#define IBUS_ordfeminine
#define IBUS_guillemotleft
#define IBUS_notsign
#define IBUS_hyphen
#define IBUS_registered
#define IBUS_macron
#define IBUS_degree
#define IBUS_plusminus
#define IBUS_twosuperior
#define IBUS_threesuperior
#define IBUS_acute
#define IBUS_mu
#define IBUS_paragraph
#define IBUS_periodcentered
#define IBUS_cedilla
#define IBUS_onesuperior
#define IBUS_masculine
#define IBUS_guillemotright
#define IBUS_onequarter
#define IBUS_onehalf
#define IBUS_threequarters
#define IBUS_questiondown
#define IBUS_Agrave
#define IBUS_Aacute
#define IBUS_Acircumflex
#define IBUS_Atilde
#define IBUS_Adiaeresis
#define IBUS_Aring
#define IBUS_AE
#define IBUS_Ccedilla
#define IBUS_Egrave
#define IBUS_Eacute
#define IBUS_Ecircumflex
#define IBUS_Ediaeresis
#define IBUS_Igrave
#define IBUS_Iacute
#define IBUS_Icircumflex
#define IBUS_Idiaeresis
#define IBUS_ETH
#define IBUS_Eth
#define IBUS_Ntilde
#define IBUS_Ograve
#define IBUS_Oacute
#define IBUS_Ocircumflex
#define IBUS_Otilde
#define IBUS_Odiaeresis
#define IBUS_multiply
#define IBUS_Oslash
#define IBUS_Ooblique
#define IBUS_Ugrave
#define IBUS_Uacute
#define IBUS_Ucircumflex
#define IBUS_Udiaeresis
#define IBUS_Yacute
#define IBUS_THORN
#define IBUS_Thorn
#define IBUS_ssharp
#define IBUS_agrave
#define IBUS_aacute
#define IBUS_acircumflex
#define IBUS_atilde
#define IBUS_adiaeresis
#define IBUS_aring
#define IBUS_ae
#define IBUS_ccedilla
#define IBUS_egrave
#define IBUS_eacute
#define IBUS_ecircumflex
#define IBUS_ediaeresis
#define IBUS_igrave
#define IBUS_iacute
#define IBUS_icircumflex
#define IBUS_idiaeresis
#define IBUS_eth
#define IBUS_ntilde
#define IBUS_ograve
#define IBUS_oacute
#define IBUS_ocircumflex
#define IBUS_otilde
#define IBUS_odiaeresis
#define IBUS_division
#define IBUS_oslash
#define IBUS_ooblique
#define IBUS_ugrave
#define IBUS_uacute
#define IBUS_ucircumflex
#define IBUS_udiaeresis
#define IBUS_yacute
#define IBUS_thorn
#define IBUS_ydiaeresis
#define IBUS_Aogonek
#define IBUS_breve
#define IBUS_Lstroke
#define IBUS_Lcaron
#define IBUS_Sacute
#define IBUS_Scaron
#define IBUS_Scedilla
#define IBUS_Tcaron
#define IBUS_Zacute
#define IBUS_Zcaron
#define IBUS_Zabovedot
#define IBUS_aogonek
#define IBUS_ogonek
#define IBUS_lstroke
#define IBUS_lcaron
#define IBUS_sacute
#define IBUS_caron
#define IBUS_scaron
#define IBUS_scedilla
#define IBUS_tcaron
#define IBUS_zacute
#define IBUS_doubleacute
#define IBUS_zcaron
#define IBUS_zabovedot
#define IBUS_Racute
#define IBUS_Abreve
#define IBUS_Lacute
#define IBUS_Cacute
#define IBUS_Ccaron
#define IBUS_Eogonek
#define IBUS_Ecaron
#define IBUS_Dcaron
#define IBUS_Dstroke
#define IBUS_Nacute
#define IBUS_Ncaron
#define IBUS_Odoubleacute
#define IBUS_Rcaron
#define IBUS_Uring
#define IBUS_Udoubleacute
#define IBUS_Tcedilla
#define IBUS_racute
#define IBUS_abreve
#define IBUS_lacute
#define IBUS_cacute
#define IBUS_ccaron
#define IBUS_eogonek
#define IBUS_ecaron
#define IBUS_dcaron
#define IBUS_dstroke
#define IBUS_nacute
#define IBUS_ncaron
#define IBUS_odoubleacute
#define IBUS_udoubleacute
#define IBUS_rcaron
#define IBUS_uring
#define IBUS_tcedilla
#define IBUS_abovedot
#define IBUS_Hstroke
#define IBUS_Hcircumflex
#define IBUS_Iabovedot
#define IBUS_Gbreve
#define IBUS_Jcircumflex
#define IBUS_hstroke
#define IBUS_hcircumflex
#define IBUS_idotless
#define IBUS_gbreve
#define IBUS_jcircumflex
#define IBUS_Cabovedot
#define IBUS_Ccircumflex
#define IBUS_Gabovedot
#define IBUS_Gcircumflex
#define IBUS_Ubreve
#define IBUS_Scircumflex
#define IBUS_cabovedot
#define IBUS_ccircumflex
#define IBUS_gabovedot
#define IBUS_gcircumflex
#define IBUS_ubreve
#define IBUS_scircumflex
#define IBUS_kra
#define IBUS_kappa
#define IBUS_Rcedilla
#define IBUS_Itilde
#define IBUS_Lcedilla
#define IBUS_Emacron
#define IBUS_Gcedilla
#define IBUS_Tslash
#define IBUS_rcedilla
#define IBUS_itilde
#define IBUS_lcedilla
#define IBUS_emacron
#define IBUS_gcedilla
#define IBUS_tslash
#define IBUS_ENG
#define IBUS_eng
#define IBUS_Amacron
#define IBUS_Iogonek
#define IBUS_Eabovedot
#define IBUS_Imacron
#define IBUS_Ncedilla
#define IBUS_Omacron
#define IBUS_Kcedilla
#define IBUS_Uogonek
#define IBUS_Utilde
#define IBUS_Umacron
#define IBUS_amacron
#define IBUS_iogonek
#define IBUS_eabovedot
#define IBUS_imacron
#define IBUS_ncedilla
#define IBUS_omacron
#define IBUS_kcedilla
#define IBUS_uogonek
#define IBUS_utilde
#define IBUS_umacron
#define IBUS_Babovedot
#define IBUS_babovedot
#define IBUS_Dabovedot
#define IBUS_Wgrave
#define IBUS_Wacute
#define IBUS_dabovedot
#define IBUS_Ygrave
#define IBUS_Fabovedot
#define IBUS_fabovedot
#define IBUS_Mabovedot
#define IBUS_mabovedot
#define IBUS_Pabovedot
#define IBUS_wgrave
#define IBUS_pabovedot
#define IBUS_wacute
#define IBUS_Sabovedot
#define IBUS_ygrave
#define IBUS_Wdiaeresis
#define IBUS_wdiaeresis
#define IBUS_sabovedot
#define IBUS_Wcircumflex
#define IBUS_Tabovedot
#define IBUS_Ycircumflex
#define IBUS_wcircumflex
#define IBUS_tabovedot
#define IBUS_ycircumflex
#define IBUS_OE
#define IBUS_oe
#define IBUS_Ydiaeresis
#define IBUS_overline
#define IBUS_kana_fullstop
#define IBUS_kana_openingbracket
#define IBUS_kana_closingbracket
#define IBUS_kana_comma
#define IBUS_kana_conjunctive
#define IBUS_kana_middledot
#define IBUS_kana_WO
#define IBUS_kana_a
#define IBUS_kana_i
#define IBUS_kana_u
#define IBUS_kana_e
#define IBUS_kana_o
#define IBUS_kana_ya
#define IBUS_kana_yu
#define IBUS_kana_yo
#define IBUS_kana_tsu
#define IBUS_kana_tu
#define IBUS_prolongedsound
#define IBUS_kana_A
#define IBUS_kana_I
#define IBUS_kana_U
#define IBUS_kana_E
#define IBUS_kana_O
#define IBUS_kana_KA
#define IBUS_kana_KI
#define IBUS_kana_KU
#define IBUS_kana_KE
#define IBUS_kana_KO
#define IBUS_kana_SA
#define IBUS_kana_SHI
#define IBUS_kana_SU
#define IBUS_kana_SE
#define IBUS_kana_SO
#define IBUS_kana_TA
#define IBUS_kana_CHI
#define IBUS_kana_TI
#define IBUS_kana_TSU
#define IBUS_kana_TU
#define IBUS_kana_TE
#define IBUS_kana_TO
#define IBUS_kana_NA
#define IBUS_kana_NI
#define IBUS_kana_NU
#define IBUS_kana_NE
#define IBUS_kana_NO
#define IBUS_kana_HA
#define IBUS_kana_HI
#define IBUS_kana_FU
#define IBUS_kana_HU
#define IBUS_kana_HE
#define IBUS_kana_HO
#define IBUS_kana_MA
#define IBUS_kana_MI
#define IBUS_kana_MU
#define IBUS_kana_ME
#define IBUS_kana_MO
#define IBUS_kana_YA
#define IBUS_kana_YU
#define IBUS_kana_YO
#define IBUS_kana_RA
#define IBUS_kana_RI
#define IBUS_kana_RU
#define IBUS_kana_RE
#define IBUS_kana_RO
#define IBUS_kana_WA
#define IBUS_kana_N
#define IBUS_voicedsound
#define IBUS_semivoicedsound
#define IBUS_kana_switch
#define IBUS_Farsi_0
#define IBUS_Farsi_1
#define IBUS_Farsi_2
#define IBUS_Farsi_3
#define IBUS_Farsi_4
#define IBUS_Farsi_5
#define IBUS_Farsi_6
#define IBUS_Farsi_7
#define IBUS_Farsi_8
#define IBUS_Farsi_9
#define IBUS_Arabic_percent
#define IBUS_Arabic_superscript_alef
#define IBUS_Arabic_tteh
#define IBUS_Arabic_peh
#define IBUS_Arabic_tcheh
#define IBUS_Arabic_ddal
#define IBUS_Arabic_rreh
#define IBUS_Arabic_comma
#define IBUS_Arabic_fullstop
#define IBUS_Arabic_0
#define IBUS_Arabic_1
#define IBUS_Arabic_2
#define IBUS_Arabic_3
#define IBUS_Arabic_4
#define IBUS_Arabic_5
#define IBUS_Arabic_6
#define IBUS_Arabic_7
#define IBUS_Arabic_8
#define IBUS_Arabic_9
#define IBUS_Arabic_semicolon
#define IBUS_Arabic_question_mark
#define IBUS_Arabic_hamza
#define IBUS_Arabic_maddaonalef
#define IBUS_Arabic_hamzaonalef
#define IBUS_Arabic_hamzaonwaw
#define IBUS_Arabic_hamzaunderalef
#define IBUS_Arabic_hamzaonyeh
#define IBUS_Arabic_alef
#define IBUS_Arabic_beh
#define IBUS_Arabic_tehmarbuta
#define IBUS_Arabic_teh
#define IBUS_Arabic_theh
#define IBUS_Arabic_jeem
#define IBUS_Arabic_hah
#define IBUS_Arabic_khah
#define IBUS_Arabic_dal
#define IBUS_Arabic_thal
#define IBUS_Arabic_ra
#define IBUS_Arabic_zain
#define IBUS_Arabic_seen
#define IBUS_Arabic_sheen
#define IBUS_Arabic_sad
#define IBUS_Arabic_dad
#define IBUS_Arabic_tah
#define IBUS_Arabic_zah
#define IBUS_Arabic_ain
#define IBUS_Arabic_ghain
#define IBUS_Arabic_tatweel
#define IBUS_Arabic_feh
#define IBUS_Arabic_qaf
#define IBUS_Arabic_kaf
#define IBUS_Arabic_lam
#define IBUS_Arabic_meem
#define IBUS_Arabic_noon
#define IBUS_Arabic_ha
#define IBUS_Arabic_heh
#define IBUS_Arabic_waw
#define IBUS_Arabic_alefmaksura
#define IBUS_Arabic_yeh
#define IBUS_Arabic_fathatan
#define IBUS_Arabic_dammatan
#define IBUS_Arabic_kasratan
#define IBUS_Arabic_fatha
#define IBUS_Arabic_damma
#define IBUS_Arabic_kasra
#define IBUS_Arabic_shadda
#define IBUS_Arabic_sukun
#define IBUS_Arabic_madda_above
#define IBUS_Arabic_hamza_above
#define IBUS_Arabic_hamza_below
#define IBUS_Arabic_jeh
#define IBUS_Arabic_veh
#define IBUS_Arabic_keheh
#define IBUS_Arabic_gaf
#define IBUS_Arabic_noon_ghunna
#define IBUS_Arabic_heh_doachashmee
#define IBUS_Farsi_yeh
#define IBUS_Arabic_farsi_yeh
#define IBUS_Arabic_yeh_baree
#define IBUS_Arabic_heh_goal
#define IBUS_Arabic_switch
#define IBUS_Cyrillic_GHE_bar
#define IBUS_Cyrillic_ghe_bar
#define IBUS_Cyrillic_ZHE_descender
#define IBUS_Cyrillic_zhe_descender
#define IBUS_Cyrillic_KA_descender
#define IBUS_Cyrillic_ka_descender
#define IBUS_Cyrillic_KA_vertstroke
#define IBUS_Cyrillic_ka_vertstroke
#define IBUS_Cyrillic_EN_descender
#define IBUS_Cyrillic_en_descender
#define IBUS_Cyrillic_U_straight
#define IBUS_Cyrillic_u_straight
#define IBUS_Cyrillic_U_straight_bar
#define IBUS_Cyrillic_u_straight_bar
#define IBUS_Cyrillic_HA_descender
#define IBUS_Cyrillic_ha_descender
#define IBUS_Cyrillic_CHE_descender
#define IBUS_Cyrillic_che_descender
#define IBUS_Cyrillic_CHE_vertstroke
#define IBUS_Cyrillic_che_vertstroke
#define IBUS_Cyrillic_SHHA
#define IBUS_Cyrillic_shha
#define IBUS_Cyrillic_SCHWA
#define IBUS_Cyrillic_schwa
#define IBUS_Cyrillic_I_macron
#define IBUS_Cyrillic_i_macron
#define IBUS_Cyrillic_O_bar
#define IBUS_Cyrillic_o_bar
#define IBUS_Cyrillic_U_macron
#define IBUS_Cyrillic_u_macron
#define IBUS_Serbian_dje
#define IBUS_Macedonia_gje
#define IBUS_Cyrillic_io
#define IBUS_Ukrainian_ie
#define IBUS_Ukranian_je
#define IBUS_Macedonia_dse
#define IBUS_Ukrainian_i
#define IBUS_Ukranian_i
#define IBUS_Ukrainian_yi
#define IBUS_Ukranian_yi
#define IBUS_Cyrillic_je
#define IBUS_Serbian_je
#define IBUS_Cyrillic_lje
#define IBUS_Serbian_lje
#define IBUS_Cyrillic_nje
#define IBUS_Serbian_nje
#define IBUS_Serbian_tshe
#define IBUS_Macedonia_kje
#define IBUS_Ukrainian_ghe_with_upturn
#define IBUS_Byelorussian_shortu
#define IBUS_Cyrillic_dzhe
#define IBUS_Serbian_dze
#define IBUS_numerosign
#define IBUS_Serbian_DJE
#define IBUS_Macedonia_GJE
#define IBUS_Cyrillic_IO
#define IBUS_Ukrainian_IE
#define IBUS_Ukranian_JE
#define IBUS_Macedonia_DSE
#define IBUS_Ukrainian_I
#define IBUS_Ukranian_I
#define IBUS_Ukrainian_YI
#define IBUS_Ukranian_YI
#define IBUS_Cyrillic_JE
#define IBUS_Serbian_JE
#define IBUS_Cyrillic_LJE
#define IBUS_Serbian_LJE
#define IBUS_Cyrillic_NJE
#define IBUS_Serbian_NJE
#define IBUS_Serbian_TSHE
#define IBUS_Macedonia_KJE
#define IBUS_Ukrainian_GHE_WITH_UPTURN
#define IBUS_Byelorussian_SHORTU
#define IBUS_Cyrillic_DZHE
#define IBUS_Serbian_DZE
#define IBUS_Cyrillic_yu
#define IBUS_Cyrillic_a
#define IBUS_Cyrillic_be
#define IBUS_Cyrillic_tse
#define IBUS_Cyrillic_de
#define IBUS_Cyrillic_ie
#define IBUS_Cyrillic_ef
#define IBUS_Cyrillic_ghe
#define IBUS_Cyrillic_ha
#define IBUS_Cyrillic_i
#define IBUS_Cyrillic_shorti
#define IBUS_Cyrillic_ka
#define IBUS_Cyrillic_el
#define IBUS_Cyrillic_em
#define IBUS_Cyrillic_en
#define IBUS_Cyrillic_o
#define IBUS_Cyrillic_pe
#define IBUS_Cyrillic_ya
#define IBUS_Cyrillic_er
#define IBUS_Cyrillic_es
#define IBUS_Cyrillic_te
#define IBUS_Cyrillic_u
#define IBUS_Cyrillic_zhe
#define IBUS_Cyrillic_ve
#define IBUS_Cyrillic_softsign
#define IBUS_Cyrillic_yeru
#define IBUS_Cyrillic_ze
#define IBUS_Cyrillic_sha
#define IBUS_Cyrillic_e
#define IBUS_Cyrillic_shcha
#define IBUS_Cyrillic_che
#define IBUS_Cyrillic_hardsign
#define IBUS_Cyrillic_YU
#define IBUS_Cyrillic_A
#define IBUS_Cyrillic_BE
#define IBUS_Cyrillic_TSE
#define IBUS_Cyrillic_DE
#define IBUS_Cyrillic_IE
#define IBUS_Cyrillic_EF
#define IBUS_Cyrillic_GHE
#define IBUS_Cyrillic_HA
#define IBUS_Cyrillic_I
#define IBUS_Cyrillic_SHORTI
#define IBUS_Cyrillic_KA
#define IBUS_Cyrillic_EL
#define IBUS_Cyrillic_EM
#define IBUS_Cyrillic_EN
#define IBUS_Cyrillic_O
#define IBUS_Cyrillic_PE
#define IBUS_Cyrillic_YA
#define IBUS_Cyrillic_ER
#define IBUS_Cyrillic_ES
#define IBUS_Cyrillic_TE
#define IBUS_Cyrillic_U
#define IBUS_Cyrillic_ZHE
#define IBUS_Cyrillic_VE
#define IBUS_Cyrillic_SOFTSIGN
#define IBUS_Cyrillic_YERU
#define IBUS_Cyrillic_ZE
#define IBUS_Cyrillic_SHA
#define IBUS_Cyrillic_E
#define IBUS_Cyrillic_SHCHA
#define IBUS_Cyrillic_CHE
#define IBUS_Cyrillic_HARDSIGN
#define IBUS_Greek_ALPHAaccent
#define IBUS_Greek_EPSILONaccent
#define IBUS_Greek_ETAaccent
#define IBUS_Greek_IOTAaccent
#define IBUS_Greek_IOTAdieresis
#define IBUS_Greek_IOTAdiaeresis
#define IBUS_Greek_OMICRONaccent
#define IBUS_Greek_UPSILONaccent
#define IBUS_Greek_UPSILONdieresis
#define IBUS_Greek_OMEGAaccent
#define IBUS_Greek_accentdieresis
#define IBUS_Greek_horizbar
#define IBUS_Greek_alphaaccent
#define IBUS_Greek_epsilonaccent
#define IBUS_Greek_etaaccent
#define IBUS_Greek_iotaaccent
#define IBUS_Greek_iotadieresis
#define IBUS_Greek_iotaaccentdieresis
#define IBUS_Greek_omicronaccent
#define IBUS_Greek_upsilonaccent
#define IBUS_Greek_upsilondieresis
#define IBUS_Greek_upsilonaccentdieresis
#define IBUS_Greek_omegaaccent
#define IBUS_Greek_ALPHA
#define IBUS_Greek_BETA
#define IBUS_Greek_GAMMA
#define IBUS_Greek_DELTA
#define IBUS_Greek_EPSILON
#define IBUS_Greek_ZETA
#define IBUS_Greek_ETA
#define IBUS_Greek_THETA
#define IBUS_Greek_IOTA
#define IBUS_Greek_KAPPA
#define IBUS_Greek_LAMDA
#define IBUS_Greek_LAMBDA
#define IBUS_Greek_MU
#define IBUS_Greek_NU
#define IBUS_Greek_XI
#define IBUS_Greek_OMICRON
#define IBUS_Greek_PI
#define IBUS_Greek_RHO
#define IBUS_Greek_SIGMA
#define IBUS_Greek_TAU
#define IBUS_Greek_UPSILON
#define IBUS_Greek_PHI
#define IBUS_Greek_CHI
#define IBUS_Greek_PSI
#define IBUS_Greek_OMEGA
#define IBUS_Greek_alpha
#define IBUS_Greek_beta
#define IBUS_Greek_gamma
#define IBUS_Greek_delta
#define IBUS_Greek_epsilon
#define IBUS_Greek_zeta
#define IBUS_Greek_eta
#define IBUS_Greek_theta
#define IBUS_Greek_iota
#define IBUS_Greek_kappa
#define IBUS_Greek_lamda
#define IBUS_Greek_lambda
#define IBUS_Greek_mu
#define IBUS_Greek_nu
#define IBUS_Greek_xi
#define IBUS_Greek_omicron
#define IBUS_Greek_pi
#define IBUS_Greek_rho
#define IBUS_Greek_sigma
#define IBUS_Greek_finalsmallsigma
#define IBUS_Greek_tau
#define IBUS_Greek_upsilon
#define IBUS_Greek_phi
#define IBUS_Greek_chi
#define IBUS_Greek_psi
#define IBUS_Greek_omega
#define IBUS_Greek_switch
#define IBUS_leftradical
#define IBUS_topleftradical
#define IBUS_horizconnector
#define IBUS_topintegral
#define IBUS_botintegral
#define IBUS_vertconnector
#define IBUS_topleftsqbracket
#define IBUS_botleftsqbracket
#define IBUS_toprightsqbracket
#define IBUS_botrightsqbracket
#define IBUS_topleftparens
#define IBUS_botleftparens
#define IBUS_toprightparens
#define IBUS_botrightparens
#define IBUS_leftmiddlecurlybrace
#define IBUS_rightmiddlecurlybrace
#define IBUS_topleftsummation
#define IBUS_botleftsummation
#define IBUS_topvertsummationconnector
#define IBUS_botvertsummationconnector
#define IBUS_toprightsummation
#define IBUS_botrightsummation
#define IBUS_rightmiddlesummation
#define IBUS_lessthanequal
#define IBUS_notequal
#define IBUS_greaterthanequal
#define IBUS_integral
#define IBUS_therefore
#define IBUS_variation
#define IBUS_infinity
#define IBUS_nabla
#define IBUS_approximate
#define IBUS_similarequal
#define IBUS_ifonlyif
#define IBUS_implies
#define IBUS_identical
#define IBUS_radical
#define IBUS_includedin
#define IBUS_includes
#define IBUS_intersection
#define IBUS_union
#define IBUS_logicaland
#define IBUS_logicalor
#define IBUS_partialderivative
#define IBUS_function
#define IBUS_leftarrow
#define IBUS_uparrow
#define IBUS_rightarrow
#define IBUS_downarrow
#define IBUS_blank
#define IBUS_soliddiamond
#define IBUS_checkerboard
#define IBUS_ht
#define IBUS_ff
#define IBUS_cr
#define IBUS_lf
#define IBUS_nl
#define IBUS_vt
#define IBUS_lowrightcorner
#define IBUS_uprightcorner
#define IBUS_upleftcorner
#define IBUS_lowleftcorner
#define IBUS_crossinglines
#define IBUS_horizlinescan1
#define IBUS_horizlinescan3
#define IBUS_horizlinescan5
#define IBUS_horizlinescan7
#define IBUS_horizlinescan9
#define IBUS_leftt
#define IBUS_rightt
#define IBUS_bott
#define IBUS_topt
#define IBUS_vertbar
#define IBUS_emspace
#define IBUS_enspace
#define IBUS_em3space
#define IBUS_em4space
#define IBUS_digitspace
#define IBUS_punctspace
#define IBUS_thinspace
#define IBUS_hairspace
#define IBUS_emdash
#define IBUS_endash
#define IBUS_signifblank
#define IBUS_ellipsis
#define IBUS_doubbaselinedot
#define IBUS_onethird
#define IBUS_twothirds
#define IBUS_onefifth
#define IBUS_twofifths
#define IBUS_threefifths
#define IBUS_fourfifths
#define IBUS_onesixth
#define IBUS_fivesixths
#define IBUS_careof
#define IBUS_figdash
#define IBUS_leftanglebracket
#define IBUS_decimalpoint
#define IBUS_rightanglebracket
#define IBUS_marker
#define IBUS_oneeighth
#define IBUS_threeeighths
#define IBUS_fiveeighths
#define IBUS_seveneighths
#define IBUS_trademark
#define IBUS_signaturemark
#define IBUS_trademarkincircle
#define IBUS_leftopentriangle
#define IBUS_rightopentriangle
#define IBUS_emopencircle
#define IBUS_emopenrectangle
#define IBUS_leftsinglequotemark
#define IBUS_rightsinglequotemark
#define IBUS_leftdoublequotemark
#define IBUS_rightdoublequotemark
#define IBUS_prescription
#define IBUS_minutes
#define IBUS_seconds
#define IBUS_latincross
#define IBUS_hexagram
#define IBUS_filledrectbullet
#define IBUS_filledlefttribullet
#define IBUS_filledrighttribullet
#define IBUS_emfilledcircle
#define IBUS_emfilledrect
#define IBUS_enopencircbullet
#define IBUS_enopensquarebullet
#define IBUS_openrectbullet
#define IBUS_opentribulletup
#define IBUS_opentribulletdown
#define IBUS_openstar
#define IBUS_enfilledcircbullet
#define IBUS_enfilledsqbullet
#define IBUS_filledtribulletup
#define IBUS_filledtribulletdown
#define IBUS_leftpointer
#define IBUS_rightpointer
#define IBUS_club
#define IBUS_diamond
#define IBUS_heart
#define IBUS_maltesecross
#define IBUS_dagger
#define IBUS_doubledagger
#define IBUS_checkmark
#define IBUS_ballotcross
#define IBUS_musicalsharp
#define IBUS_musicalflat
#define IBUS_malesymbol
#define IBUS_femalesymbol
#define IBUS_telephone
#define IBUS_telephonerecorder
#define IBUS_phonographcopyright
#define IBUS_caret
#define IBUS_singlelowquotemark
#define IBUS_doublelowquotemark
#define IBUS_cursor
#define IBUS_leftcaret
#define IBUS_rightcaret
#define IBUS_downcaret
#define IBUS_upcaret
#define IBUS_overbar
#define IBUS_downtack
#define IBUS_upshoe
#define IBUS_downstile
#define IBUS_underbar
#define IBUS_jot
#define IBUS_quad
#define IBUS_uptack
#define IBUS_circle
#define IBUS_upstile
#define IBUS_downshoe
#define IBUS_rightshoe
#define IBUS_leftshoe
#define IBUS_lefttack
#define IBUS_righttack
#define IBUS_hebrew_doublelowline
#define IBUS_hebrew_aleph
#define IBUS_hebrew_bet
#define IBUS_hebrew_beth
#define IBUS_hebrew_gimel
#define IBUS_hebrew_gimmel
#define IBUS_hebrew_dalet
#define IBUS_hebrew_daleth
#define IBUS_hebrew_he
#define IBUS_hebrew_waw
#define IBUS_hebrew_zain
#define IBUS_hebrew_zayin
#define IBUS_hebrew_chet
#define IBUS_hebrew_het
#define IBUS_hebrew_tet
#define IBUS_hebrew_teth
#define IBUS_hebrew_yod
#define IBUS_hebrew_finalkaph
#define IBUS_hebrew_kaph
#define IBUS_hebrew_lamed
#define IBUS_hebrew_finalmem
#define IBUS_hebrew_mem
#define IBUS_hebrew_finalnun
#define IBUS_hebrew_nun
#define IBUS_hebrew_samech
#define IBUS_hebrew_samekh
#define IBUS_hebrew_ayin
#define IBUS_hebrew_finalpe
#define IBUS_hebrew_pe
#define IBUS_hebrew_finalzade
#define IBUS_hebrew_finalzadi
#define IBUS_hebrew_zade
#define IBUS_hebrew_zadi
#define IBUS_hebrew_qoph
#define IBUS_hebrew_kuf
#define IBUS_hebrew_resh
#define IBUS_hebrew_shin
#define IBUS_hebrew_taw
#define IBUS_hebrew_taf
#define IBUS_Hebrew_switch
#define IBUS_Thai_kokai
#define IBUS_Thai_khokhai
#define IBUS_Thai_khokhuat
#define IBUS_Thai_khokhwai
#define IBUS_Thai_khokhon
#define IBUS_Thai_khorakhang
#define IBUS_Thai_ngongu
#define IBUS_Thai_chochan
#define IBUS_Thai_choching
#define IBUS_Thai_chochang
#define IBUS_Thai_soso
#define IBUS_Thai_chochoe
#define IBUS_Thai_yoying
#define IBUS_Thai_dochada
#define IBUS_Thai_topatak
#define IBUS_Thai_thothan
#define IBUS_Thai_thonangmontho
#define IBUS_Thai_thophuthao
#define IBUS_Thai_nonen
#define IBUS_Thai_dodek
#define IBUS_Thai_totao
#define IBUS_Thai_thothung
#define IBUS_Thai_thothahan
#define IBUS_Thai_thothong
#define IBUS_Thai_nonu
#define IBUS_Thai_bobaimai
#define IBUS_Thai_popla
#define IBUS_Thai_phophung
#define IBUS_Thai_fofa
#define IBUS_Thai_phophan
#define IBUS_Thai_fofan
#define IBUS_Thai_phosamphao
#define IBUS_Thai_moma
#define IBUS_Thai_yoyak
#define IBUS_Thai_rorua
#define IBUS_Thai_ru
#define IBUS_Thai_loling
#define IBUS_Thai_lu
#define IBUS_Thai_wowaen
#define IBUS_Thai_sosala
#define IBUS_Thai_sorusi
#define IBUS_Thai_sosua
#define IBUS_Thai_hohip
#define IBUS_Thai_lochula
#define IBUS_Thai_oang
#define IBUS_Thai_honokhuk
#define IBUS_Thai_paiyannoi
#define IBUS_Thai_saraa
#define IBUS_Thai_maihanakat
#define IBUS_Thai_saraaa
#define IBUS_Thai_saraam
#define IBUS_Thai_sarai
#define IBUS_Thai_saraii
#define IBUS_Thai_saraue
#define IBUS_Thai_sarauee
#define IBUS_Thai_sarau
#define IBUS_Thai_sarauu
#define IBUS_Thai_phinthu
#define IBUS_Thai_maihanakat_maitho
#define IBUS_Thai_baht
#define IBUS_Thai_sarae
#define IBUS_Thai_saraae
#define IBUS_Thai_sarao
#define IBUS_Thai_saraaimaimuan
#define IBUS_Thai_saraaimaimalai
#define IBUS_Thai_lakkhangyao
#define IBUS_Thai_maiyamok
#define IBUS_Thai_maitaikhu
#define IBUS_Thai_maiek
#define IBUS_Thai_maitho
#define IBUS_Thai_maitri
#define IBUS_Thai_maichattawa
#define IBUS_Thai_thanthakhat
#define IBUS_Thai_nikhahit
#define IBUS_Thai_leksun
#define IBUS_Thai_leknung
#define IBUS_Thai_leksong
#define IBUS_Thai_leksam
#define IBUS_Thai_leksi
#define IBUS_Thai_lekha
#define IBUS_Thai_lekhok
#define IBUS_Thai_lekchet
#define IBUS_Thai_lekpaet
#define IBUS_Thai_lekkao
#define IBUS_Hangul
#define IBUS_Hangul_Start
#define IBUS_Hangul_End
#define IBUS_Hangul_Hanja
#define IBUS_Hangul_Jamo
#define IBUS_Hangul_Romaja
#define IBUS_Hangul_Codeinput
#define IBUS_Hangul_Jeonja
#define IBUS_Hangul_Banja
#define IBUS_Hangul_PreHanja
#define IBUS_Hangul_PostHanja
#define IBUS_Hangul_SingleCandidate
#define IBUS_Hangul_MultipleCandidate
#define IBUS_Hangul_PreviousCandidate
#define IBUS_Hangul_Special
#define IBUS_Hangul_switch
#define IBUS_Hangul_Kiyeog
#define IBUS_Hangul_SsangKiyeog
#define IBUS_Hangul_KiyeogSios
#define IBUS_Hangul_Nieun
#define IBUS_Hangul_NieunJieuj
#define IBUS_Hangul_NieunHieuh
#define IBUS_Hangul_Dikeud
#define IBUS_Hangul_SsangDikeud
#define IBUS_Hangul_Rieul
#define IBUS_Hangul_RieulKiyeog
#define IBUS_Hangul_RieulMieum
#define IBUS_Hangul_RieulPieub
#define IBUS_Hangul_RieulSios
#define IBUS_Hangul_RieulTieut
#define IBUS_Hangul_RieulPhieuf
#define IBUS_Hangul_RieulHieuh
#define IBUS_Hangul_Mieum
#define IBUS_Hangul_Pieub
#define IBUS_Hangul_SsangPieub
#define IBUS_Hangul_PieubSios
#define IBUS_Hangul_Sios
#define IBUS_Hangul_SsangSios
#define IBUS_Hangul_Ieung
#define IBUS_Hangul_Jieuj
#define IBUS_Hangul_SsangJieuj
#define IBUS_Hangul_Cieuc
#define IBUS_Hangul_Khieuq
#define IBUS_Hangul_Tieut
#define IBUS_Hangul_Phieuf
#define IBUS_Hangul_Hieuh
#define IBUS_Hangul_A
#define IBUS_Hangul_AE
#define IBUS_Hangul_YA
#define IBUS_Hangul_YAE
#define IBUS_Hangul_EO
#define IBUS_Hangul_E
#define IBUS_Hangul_YEO
#define IBUS_Hangul_YE
#define IBUS_Hangul_O
#define IBUS_Hangul_WA
#define IBUS_Hangul_WAE
#define IBUS_Hangul_OE
#define IBUS_Hangul_YO
#define IBUS_Hangul_U
#define IBUS_Hangul_WEO
#define IBUS_Hangul_WE
#define IBUS_Hangul_WI
#define IBUS_Hangul_YU
#define IBUS_Hangul_EU
#define IBUS_Hangul_YI
#define IBUS_Hangul_I
#define IBUS_Hangul_J_Kiyeog
#define IBUS_Hangul_J_SsangKiyeog
#define IBUS_Hangul_J_KiyeogSios
#define IBUS_Hangul_J_Nieun
#define IBUS_Hangul_J_NieunJieuj
#define IBUS_Hangul_J_NieunHieuh
#define IBUS_Hangul_J_Dikeud
#define IBUS_Hangul_J_Rieul
#define IBUS_Hangul_J_RieulKiyeog
#define IBUS_Hangul_J_RieulMieum
#define IBUS_Hangul_J_RieulPieub
#define IBUS_Hangul_J_RieulSios
#define IBUS_Hangul_J_RieulTieut
#define IBUS_Hangul_J_RieulPhieuf
#define IBUS_Hangul_J_RieulHieuh
#define IBUS_Hangul_J_Mieum
#define IBUS_Hangul_J_Pieub
#define IBUS_Hangul_J_PieubSios
#define IBUS_Hangul_J_Sios
#define IBUS_Hangul_J_SsangSios
#define IBUS_Hangul_J_Ieung
#define IBUS_Hangul_J_Jieuj
#define IBUS_Hangul_J_Cieuc
#define IBUS_Hangul_J_Khieuq
#define IBUS_Hangul_J_Tieut
#define IBUS_Hangul_J_Phieuf
#define IBUS_Hangul_J_Hieuh
#define IBUS_Hangul_RieulYeorinHieuh
#define IBUS_Hangul_SunkyeongeumMieum
#define IBUS_Hangul_SunkyeongeumPieub
#define IBUS_Hangul_PanSios
#define IBUS_Hangul_KkogjiDalrinIeung
#define IBUS_Hangul_SunkyeongeumPhieuf
#define IBUS_Hangul_YeorinHieuh
#define IBUS_Hangul_AraeA
#define IBUS_Hangul_AraeAE
#define IBUS_Hangul_J_PanSios
#define IBUS_Hangul_J_KkogjiDalrinIeung
#define IBUS_Hangul_J_YeorinHieuh
#define IBUS_Korean_Won
#define IBUS_Armenian_ligature_ew
#define IBUS_Armenian_full_stop
#define IBUS_Armenian_verjaket
#define IBUS_Armenian_separation_mark
#define IBUS_Armenian_but
#define IBUS_Armenian_hyphen
#define IBUS_Armenian_yentamna
#define IBUS_Armenian_exclam
#define IBUS_Armenian_amanak
#define IBUS_Armenian_accent
#define IBUS_Armenian_shesht
#define IBUS_Armenian_question
#define IBUS_Armenian_paruyk
#define IBUS_Armenian_AYB
#define IBUS_Armenian_ayb
#define IBUS_Armenian_BEN
#define IBUS_Armenian_ben
#define IBUS_Armenian_GIM
#define IBUS_Armenian_gim
#define IBUS_Armenian_DA
#define IBUS_Armenian_da
#define IBUS_Armenian_YECH
#define IBUS_Armenian_yech
#define IBUS_Armenian_ZA
#define IBUS_Armenian_za
#define IBUS_Armenian_E
#define IBUS_Armenian_e
#define IBUS_Armenian_AT
#define IBUS_Armenian_at
#define IBUS_Armenian_TO
#define IBUS_Armenian_to
#define IBUS_Armenian_ZHE
#define IBUS_Armenian_zhe
#define IBUS_Armenian_INI
#define IBUS_Armenian_ini
#define IBUS_Armenian_LYUN
#define IBUS_Armenian_lyun
#define IBUS_Armenian_KHE
#define IBUS_Armenian_khe
#define IBUS_Armenian_TSA
#define IBUS_Armenian_tsa
#define IBUS_Armenian_KEN
#define IBUS_Armenian_ken
#define IBUS_Armenian_HO
#define IBUS_Armenian_ho
#define IBUS_Armenian_DZA
#define IBUS_Armenian_dza
#define IBUS_Armenian_GHAT
#define IBUS_Armenian_ghat
#define IBUS_Armenian_TCHE
#define IBUS_Armenian_tche
#define IBUS_Armenian_MEN
#define IBUS_Armenian_men
#define IBUS_Armenian_HI
#define IBUS_Armenian_hi
#define IBUS_Armenian_NU
#define IBUS_Armenian_nu
#define IBUS_Armenian_SHA
#define IBUS_Armenian_sha
#define IBUS_Armenian_VO
#define IBUS_Armenian_vo
#define IBUS_Armenian_CHA
#define IBUS_Armenian_cha
#define IBUS_Armenian_PE
#define IBUS_Armenian_pe
#define IBUS_Armenian_JE
#define IBUS_Armenian_je
#define IBUS_Armenian_RA
#define IBUS_Armenian_ra
#define IBUS_Armenian_SE
#define IBUS_Armenian_se
#define IBUS_Armenian_VEV
#define IBUS_Armenian_vev
#define IBUS_Armenian_TYUN
#define IBUS_Armenian_tyun
#define IBUS_Armenian_RE
#define IBUS_Armenian_re
#define IBUS_Armenian_TSO
#define IBUS_Armenian_tso
#define IBUS_Armenian_VYUN
#define IBUS_Armenian_vyun
#define IBUS_Armenian_PYUR
#define IBUS_Armenian_pyur
#define IBUS_Armenian_KE
#define IBUS_Armenian_ke
#define IBUS_Armenian_O
#define IBUS_Armenian_o
#define IBUS_Armenian_FE
#define IBUS_Armenian_fe
#define IBUS_Armenian_apostrophe
#define IBUS_Georgian_an
#define IBUS_Georgian_ban
#define IBUS_Georgian_gan
#define IBUS_Georgian_don
#define IBUS_Georgian_en
#define IBUS_Georgian_vin
#define IBUS_Georgian_zen
#define IBUS_Georgian_tan
#define IBUS_Georgian_in
#define IBUS_Georgian_kan
#define IBUS_Georgian_las
#define IBUS_Georgian_man
#define IBUS_Georgian_nar
#define IBUS_Georgian_on
#define IBUS_Georgian_par
#define IBUS_Georgian_zhar
#define IBUS_Georgian_rae
#define IBUS_Georgian_san
#define IBUS_Georgian_tar
#define IBUS_Georgian_un
#define IBUS_Georgian_phar
#define IBUS_Georgian_khar
#define IBUS_Georgian_ghan
#define IBUS_Georgian_qar
#define IBUS_Georgian_shin
#define IBUS_Georgian_chin
#define IBUS_Georgian_can
#define IBUS_Georgian_jil
#define IBUS_Georgian_cil
#define IBUS_Georgian_char
#define IBUS_Georgian_xan
#define IBUS_Georgian_jhan
#define IBUS_Georgian_hae
#define IBUS_Georgian_he
#define IBUS_Georgian_hie
#define IBUS_Georgian_we
#define IBUS_Georgian_har
#define IBUS_Georgian_hoe
#define IBUS_Georgian_fi
#define IBUS_Xabovedot
#define IBUS_Ibreve
#define IBUS_Zstroke
#define IBUS_Gcaron
#define IBUS_Ocaron
#define IBUS_Obarred
#define IBUS_xabovedot
#define IBUS_ibreve
#define IBUS_zstroke
#define IBUS_gcaron
#define IBUS_ocaron
#define IBUS_obarred
#define IBUS_SCHWA
#define IBUS_schwa
#define IBUS_Lbelowdot
#define IBUS_lbelowdot
#define IBUS_Abelowdot
#define IBUS_abelowdot
#define IBUS_Ahook
#define IBUS_ahook
#define IBUS_Acircumflexacute
#define IBUS_acircumflexacute
#define IBUS_Acircumflexgrave
#define IBUS_acircumflexgrave
#define IBUS_Acircumflexhook
#define IBUS_acircumflexhook
#define IBUS_Acircumflextilde
#define IBUS_acircumflextilde
#define IBUS_Acircumflexbelowdot
#define IBUS_acircumflexbelowdot
#define IBUS_Abreveacute
#define IBUS_abreveacute
#define IBUS_Abrevegrave
#define IBUS_abrevegrave
#define IBUS_Abrevehook
#define IBUS_abrevehook
#define IBUS_Abrevetilde
#define IBUS_abrevetilde
#define IBUS_Abrevebelowdot
#define IBUS_abrevebelowdot
#define IBUS_Ebelowdot
#define IBUS_ebelowdot
#define IBUS_Ehook
#define IBUS_ehook
#define IBUS_Etilde
#define IBUS_etilde
#define IBUS_Ecircumflexacute
#define IBUS_ecircumflexacute
#define IBUS_Ecircumflexgrave
#define IBUS_ecircumflexgrave
#define IBUS_Ecircumflexhook
#define IBUS_ecircumflexhook
#define IBUS_Ecircumflextilde
#define IBUS_ecircumflextilde
#define IBUS_Ecircumflexbelowdot
#define IBUS_ecircumflexbelowdot
#define IBUS_Ihook
#define IBUS_ihook
#define IBUS_Ibelowdot
#define IBUS_ibelowdot
#define IBUS_Obelowdot
#define IBUS_obelowdot
#define IBUS_Ohook
#define IBUS_ohook
#define IBUS_Ocircumflexacute
#define IBUS_ocircumflexacute
#define IBUS_Ocircumflexgrave
#define IBUS_ocircumflexgrave
#define IBUS_Ocircumflexhook
#define IBUS_ocircumflexhook
#define IBUS_Ocircumflextilde
#define IBUS_ocircumflextilde
#define IBUS_Ocircumflexbelowdot
#define IBUS_ocircumflexbelowdot
#define IBUS_Ohornacute
#define IBUS_ohornacute
#define IBUS_Ohorngrave
#define IBUS_ohorngrave
#define IBUS_Ohornhook
#define IBUS_ohornhook
#define IBUS_Ohorntilde
#define IBUS_ohorntilde
#define IBUS_Ohornbelowdot
#define IBUS_ohornbelowdot
#define IBUS_Ubelowdot
#define IBUS_ubelowdot
#define IBUS_Uhook
#define IBUS_uhook
#define IBUS_Uhornacute
#define IBUS_uhornacute
#define IBUS_Uhorngrave
#define IBUS_uhorngrave
#define IBUS_Uhornhook
#define IBUS_uhornhook
#define IBUS_Uhorntilde
#define IBUS_uhorntilde
#define IBUS_Uhornbelowdot
#define IBUS_uhornbelowdot
#define IBUS_Ybelowdot
#define IBUS_ybelowdot
#define IBUS_Yhook
#define IBUS_yhook
#define IBUS_Ytilde
#define IBUS_ytilde
#define IBUS_Ohorn
#define IBUS_ohorn
#define IBUS_Uhorn
#define IBUS_uhorn
#define IBUS_EcuSign
#define IBUS_ColonSign
#define IBUS_CruzeiroSign
#define IBUS_FFrancSign
#define IBUS_LiraSign
#define IBUS_MillSign
#define IBUS_NairaSign
#define IBUS_PesetaSign
#define IBUS_RupeeSign
#define IBUS_WonSign
#define IBUS_NewSheqelSign
#define IBUS_DongSign
#define IBUS_EuroSign
#define IBUS_zerosuperior
#define IBUS_foursuperior
#define IBUS_fivesuperior
#define IBUS_sixsuperior
#define IBUS_sevensuperior
#define IBUS_eightsuperior
#define IBUS_ninesuperior
#define IBUS_zerosubscript
#define IBUS_onesubscript
#define IBUS_twosubscript
#define IBUS_threesubscript
#define IBUS_foursubscript
#define IBUS_fivesubscript
#define IBUS_sixsubscript
#define IBUS_sevensubscript
#define IBUS_eightsubscript
#define IBUS_ninesubscript
#define IBUS_partdifferential
#define IBUS_emptyset
#define IBUS_elementof
#define IBUS_notelementof
#define IBUS_containsas
#define IBUS_squareroot
#define IBUS_cuberoot
#define IBUS_fourthroot
#define IBUS_dintegral
#define IBUS_tintegral
#define IBUS_because
#define IBUS_approxeq
#define IBUS_notapproxeq
#define IBUS_notidentical
#define IBUS_stricteq
#define IBUS_braille_dot_1
#define IBUS_braille_dot_2
#define IBUS_braille_dot_3
#define IBUS_braille_dot_4
#define IBUS_braille_dot_5
#define IBUS_braille_dot_6
#define IBUS_braille_dot_7
#define IBUS_braille_dot_8
#define IBUS_braille_dot_9
#define IBUS_braille_dot_10
#define IBUS_braille_blank
#define IBUS_braille_dots_1
#define IBUS_braille_dots_2
#define IBUS_braille_dots_12
#define IBUS_braille_dots_3
#define IBUS_braille_dots_13
#define IBUS_braille_dots_23
#define IBUS_braille_dots_123
#define IBUS_braille_dots_4
#define IBUS_braille_dots_14
#define IBUS_braille_dots_24
#define IBUS_braille_dots_124
#define IBUS_braille_dots_34
#define IBUS_braille_dots_134
#define IBUS_braille_dots_234
#define IBUS_braille_dots_1234
#define IBUS_braille_dots_5
#define IBUS_braille_dots_15
#define IBUS_braille_dots_25
#define IBUS_braille_dots_125
#define IBUS_braille_dots_35
#define IBUS_braille_dots_135
#define IBUS_braille_dots_235
#define IBUS_braille_dots_1235
#define IBUS_braille_dots_45
#define IBUS_braille_dots_145
#define IBUS_braille_dots_245
#define IBUS_braille_dots_1245
#define IBUS_braille_dots_345
#define IBUS_braille_dots_1345
#define IBUS_braille_dots_2345
#define IBUS_braille_dots_12345
#define IBUS_braille_dots_6
#define IBUS_braille_dots_16
#define IBUS_braille_dots_26
#define IBUS_braille_dots_126
#define IBUS_braille_dots_36
#define IBUS_braille_dots_136
#define IBUS_braille_dots_236
#define IBUS_braille_dots_1236
#define IBUS_braille_dots_46
#define IBUS_braille_dots_146
#define IBUS_braille_dots_246
#define IBUS_braille_dots_1246
#define IBUS_braille_dots_346
#define IBUS_braille_dots_1346
#define IBUS_braille_dots_2346
#define IBUS_braille_dots_12346
#define IBUS_braille_dots_56
#define IBUS_braille_dots_156
#define IBUS_braille_dots_256
#define IBUS_braille_dots_1256
#define IBUS_braille_dots_356
#define IBUS_braille_dots_1356
#define IBUS_braille_dots_2356
#define IBUS_braille_dots_12356
#define IBUS_braille_dots_456
#define IBUS_braille_dots_1456
#define IBUS_braille_dots_2456
#define IBUS_braille_dots_12456
#define IBUS_braille_dots_3456
#define IBUS_braille_dots_13456
#define IBUS_braille_dots_23456
#define IBUS_braille_dots_123456
#define IBUS_braille_dots_7
#define IBUS_braille_dots_17
#define IBUS_braille_dots_27
#define IBUS_braille_dots_127
#define IBUS_braille_dots_37
#define IBUS_braille_dots_137
#define IBUS_braille_dots_237
#define IBUS_braille_dots_1237
#define IBUS_braille_dots_47
#define IBUS_braille_dots_147
#define IBUS_braille_dots_247
#define IBUS_braille_dots_1247
#define IBUS_braille_dots_347
#define IBUS_braille_dots_1347
#define IBUS_braille_dots_2347
#define IBUS_braille_dots_12347
#define IBUS_braille_dots_57
#define IBUS_braille_dots_157
#define IBUS_braille_dots_257
#define IBUS_braille_dots_1257
#define IBUS_braille_dots_357
#define IBUS_braille_dots_1357
#define IBUS_braille_dots_2357
#define IBUS_braille_dots_12357
#define IBUS_braille_dots_457
#define IBUS_braille_dots_1457
#define IBUS_braille_dots_2457
#define IBUS_braille_dots_12457
#define IBUS_braille_dots_3457
#define IBUS_braille_dots_13457
#define IBUS_braille_dots_23457
#define IBUS_braille_dots_123457
#define IBUS_braille_dots_67
#define IBUS_braille_dots_167
#define IBUS_braille_dots_267
#define IBUS_braille_dots_1267
#define IBUS_braille_dots_367
#define IBUS_braille_dots_1367
#define IBUS_braille_dots_2367
#define IBUS_braille_dots_12367
#define IBUS_braille_dots_467
#define IBUS_braille_dots_1467
#define IBUS_braille_dots_2467
#define IBUS_braille_dots_12467
#define IBUS_braille_dots_3467
#define IBUS_braille_dots_13467
#define IBUS_braille_dots_23467
#define IBUS_braille_dots_123467
#define IBUS_braille_dots_567
#define IBUS_braille_dots_1567
#define IBUS_braille_dots_2567
#define IBUS_braille_dots_12567
#define IBUS_braille_dots_3567
#define IBUS_braille_dots_13567
#define IBUS_braille_dots_23567
#define IBUS_braille_dots_123567
#define IBUS_braille_dots_4567
#define IBUS_braille_dots_14567
#define IBUS_braille_dots_24567
#define IBUS_braille_dots_124567
#define IBUS_braille_dots_34567
#define IBUS_braille_dots_134567
#define IBUS_braille_dots_234567
#define IBUS_braille_dots_1234567
#define IBUS_braille_dots_8
#define IBUS_braille_dots_18
#define IBUS_braille_dots_28
#define IBUS_braille_dots_128
#define IBUS_braille_dots_38
#define IBUS_braille_dots_138
#define IBUS_braille_dots_238
#define IBUS_braille_dots_1238
#define IBUS_braille_dots_48
#define IBUS_braille_dots_148
#define IBUS_braille_dots_248
#define IBUS_braille_dots_1248
#define IBUS_braille_dots_348
#define IBUS_braille_dots_1348
#define IBUS_braille_dots_2348
#define IBUS_braille_dots_12348
#define IBUS_braille_dots_58
#define IBUS_braille_dots_158
#define IBUS_braille_dots_258
#define IBUS_braille_dots_1258
#define IBUS_braille_dots_358
#define IBUS_braille_dots_1358
#define IBUS_braille_dots_2358
#define IBUS_braille_dots_12358
#define IBUS_braille_dots_458
#define IBUS_braille_dots_1458
#define IBUS_braille_dots_2458
#define IBUS_braille_dots_12458
#define IBUS_braille_dots_3458
#define IBUS_braille_dots_13458
#define IBUS_braille_dots_23458
#define IBUS_braille_dots_123458
#define IBUS_braille_dots_68
#define IBUS_braille_dots_168
#define IBUS_braille_dots_268
#define IBUS_braille_dots_1268
#define IBUS_braille_dots_368
#define IBUS_braille_dots_1368
#define IBUS_braille_dots_2368
#define IBUS_braille_dots_12368
#define IBUS_braille_dots_468
#define IBUS_braille_dots_1468
#define IBUS_braille_dots_2468
#define IBUS_braille_dots_12468
#define IBUS_braille_dots_3468
#define IBUS_braille_dots_13468
#define IBUS_braille_dots_23468
#define IBUS_braille_dots_123468
#define IBUS_braille_dots_568
#define IBUS_braille_dots_1568
#define IBUS_braille_dots_2568
#define IBUS_braille_dots_12568
#define IBUS_braille_dots_3568
#define IBUS_braille_dots_13568
#define IBUS_braille_dots_23568
#define IBUS_braille_dots_123568
#define IBUS_braille_dots_4568
#define IBUS_braille_dots_14568
#define IBUS_braille_dots_24568
#define IBUS_braille_dots_124568
#define IBUS_braille_dots_34568
#define IBUS_braille_dots_134568
#define IBUS_braille_dots_234568
#define IBUS_braille_dots_1234568
#define IBUS_braille_dots_78
#define IBUS_braille_dots_178
#define IBUS_braille_dots_278
#define IBUS_braille_dots_1278
#define IBUS_braille_dots_378
#define IBUS_braille_dots_1378
#define IBUS_braille_dots_2378
#define IBUS_braille_dots_12378
#define IBUS_braille_dots_478
#define IBUS_braille_dots_1478
#define IBUS_braille_dots_2478
#define IBUS_braille_dots_12478
#define IBUS_braille_dots_3478
#define IBUS_braille_dots_13478
#define IBUS_braille_dots_23478
#define IBUS_braille_dots_123478
#define IBUS_braille_dots_578
#define IBUS_braille_dots_1578
#define IBUS_braille_dots_2578
#define IBUS_braille_dots_12578
#define IBUS_braille_dots_3578
#define IBUS_braille_dots_13578
#define IBUS_braille_dots_23578
#define IBUS_braille_dots_123578
#define IBUS_braille_dots_4578
#define IBUS_braille_dots_14578
#define IBUS_braille_dots_24578
#define IBUS_braille_dots_124578
#define IBUS_braille_dots_34578
#define IBUS_braille_dots_134578
#define IBUS_braille_dots_234578
#define IBUS_braille_dots_1234578
#define IBUS_braille_dots_678
#define IBUS_braille_dots_1678
#define IBUS_braille_dots_2678
#define IBUS_braille_dots_12678
#define IBUS_braille_dots_3678
#define IBUS_braille_dots_13678
#define IBUS_braille_dots_23678
#define IBUS_braille_dots_123678
#define IBUS_braille_dots_4678
#define IBUS_braille_dots_14678
#define IBUS_braille_dots_24678
#define IBUS_braille_dots_124678
#define IBUS_braille_dots_34678
#define IBUS_braille_dots_134678
#define IBUS_braille_dots_234678
#define IBUS_braille_dots_1234678
#define IBUS_braille_dots_5678
#define IBUS_braille_dots_15678
#define IBUS_braille_dots_25678
#define IBUS_braille_dots_125678
#define IBUS_braille_dots_35678
#define IBUS_braille_dots_135678
#define IBUS_braille_dots_235678
#define IBUS_braille_dots_1235678
#define IBUS_braille_dots_45678
#define IBUS_braille_dots_145678
#define IBUS_braille_dots_245678
#define IBUS_braille_dots_1245678
#define IBUS_braille_dots_345678
#define IBUS_braille_dots_1345678
#define IBUS_braille_dots_2345678
#define IBUS_braille_dots_12345678

Description

Functions

Types and Values

IBUS_VoidSymbol

#define IBUS_VoidSymbol 0xffffff

IBUS_BackSpace

#define IBUS_BackSpace 0xff08

IBUS_Tab

#define IBUS_Tab 0xff09

IBUS_Linefeed

#define IBUS_Linefeed 0xff0a

IBUS_Clear

#define IBUS_Clear 0xff0b

IBUS_Return

#define IBUS_Return 0xff0d

IBUS_Pause

#define IBUS_Pause 0xff13

IBUS_Scroll_Lock

#define IBUS_Scroll_Lock 0xff14

IBUS_Sys_Req

#define IBUS_Sys_Req 0xff15

IBUS_Escape

#define IBUS_Escape 0xff1b

IBUS_Delete

#define IBUS_Delete 0xffff

IBUS_Multi_key

#define IBUS_Multi_key 0xff20

Key for composing characters. A.k.a. Compose Key.


IBUS_Codeinput

#define IBUS_Codeinput 0xff37

International and multi-key character composition.


IBUS_SingleCandidate

#define IBUS_SingleCandidate 0xff3c

IBUS_MultipleCandidate

#define IBUS_MultipleCandidate 0xff3d

IBUS_PreviousCandidate

#define IBUS_PreviousCandidate 0xff3e

IBUS_Kanji

#define IBUS_Kanji 0xff21

Japanese keyboard support.


IBUS_Muhenkan

#define IBUS_Muhenkan 0xff22

Japanese keyboard support.


IBUS_Henkan_Mode

#define IBUS_Henkan_Mode 0xff23

Japanese keyboard support.


IBUS_Henkan

#define IBUS_Henkan 0xff23

Japanese keyboard support.


IBUS_Romaji

#define IBUS_Romaji 0xff24

Japanese keyboard support.


IBUS_Hiragana

#define IBUS_Hiragana 0xff25

Japanese keyboard support.


IBUS_Katakana

#define IBUS_Katakana 0xff26

Japanese keyboard support.


IBUS_Hiragana_Katakana

#define IBUS_Hiragana_Katakana 0xff27

Japanese keyboard support.


IBUS_Zenkaku

#define IBUS_Zenkaku 0xff28

IBUS_Hankaku

#define IBUS_Hankaku 0xff29

IBUS_Zenkaku_Hankaku

#define IBUS_Zenkaku_Hankaku 0xff2a

IBUS_Touroku

#define IBUS_Touroku 0xff2b

IBUS_Massyo

#define IBUS_Massyo 0xff2c

IBUS_Kana_Lock

#define IBUS_Kana_Lock 0xff2d

IBUS_Kana_Shift

#define IBUS_Kana_Shift 0xff2e

IBUS_Eisu_Shift

#define IBUS_Eisu_Shift 0xff2f

IBUS_Eisu_toggle

#define IBUS_Eisu_toggle 0xff30

IBUS_Kanji_Bangou

#define IBUS_Kanji_Bangou 0xff37

IBUS_Zen_Koho

#define IBUS_Zen_Koho 0xff3d

IBUS_Mae_Koho

#define IBUS_Mae_Koho 0xff3e

IBUS_Home

#define IBUS_Home 0xff50

IBUS_Left

#define IBUS_Left 0xff51

IBUS_Up

#define IBUS_Up 0xff52

IBUS_Right

#define IBUS_Right 0xff53

IBUS_Down

#define IBUS_Down 0xff54

IBUS_Prior

#define IBUS_Prior 0xff55

IBUS_Page_Up

#define IBUS_Page_Up 0xff55

IBUS_Next

#define IBUS_Next 0xff56

IBUS_Page_Down

#define IBUS_Page_Down 0xff56

IBUS_End

#define IBUS_End 0xff57

IBUS_Begin

#define IBUS_Begin 0xff58

IBUS_Select

#define IBUS_Select 0xff60

IBUS_Print

#define IBUS_Print 0xff61

IBUS_Execute

#define IBUS_Execute 0xff62

IBUS_Insert

#define IBUS_Insert 0xff63

IBUS_Undo

#define IBUS_Undo 0xff65

IBUS_Redo

#define IBUS_Redo 0xff66

IBUS_Menu

#define IBUS_Menu 0xff67

IBUS_Find

#define IBUS_Find 0xff68

IBUS_Cancel

#define IBUS_Cancel 0xff69

IBUS_Help

#define IBUS_Help 0xff6a

IBUS_Break

#define IBUS_Break 0xff6b

IBUS_Mode_switch

#define IBUS_Mode_switch 0xff7e

IBUS_script_switch

#define IBUS_script_switch 0xff7e

IBUS_Num_Lock

#define IBUS_Num_Lock 0xff7f

IBUS_KP_Space

#define IBUS_KP_Space 0xff80

IBUS_KP_Tab

#define IBUS_KP_Tab 0xff89

IBUS_KP_Enter

#define IBUS_KP_Enter 0xff8d

IBUS_KP_F1

#define IBUS_KP_F1 0xff91

IBUS_KP_F2

#define IBUS_KP_F2 0xff92

IBUS_KP_F3

#define IBUS_KP_F3 0xff93

IBUS_KP_F4

#define IBUS_KP_F4 0xff94

IBUS_KP_Home

#define IBUS_KP_Home 0xff95

IBUS_KP_Left

#define IBUS_KP_Left 0xff96

IBUS_KP_Up

#define IBUS_KP_Up 0xff97

IBUS_KP_Right

#define IBUS_KP_Right 0xff98

IBUS_KP_Down

#define IBUS_KP_Down 0xff99

IBUS_KP_Prior

#define IBUS_KP_Prior 0xff9a

IBUS_KP_Page_Up

#define IBUS_KP_Page_Up 0xff9a

IBUS_KP_Next

#define IBUS_KP_Next 0xff9b

IBUS_KP_Page_Down

#define IBUS_KP_Page_Down 0xff9b

IBUS_KP_End

#define IBUS_KP_End 0xff9c

IBUS_KP_Begin

#define IBUS_KP_Begin 0xff9d

IBUS_KP_Insert

#define IBUS_KP_Insert 0xff9e

IBUS_KP_Delete

#define IBUS_KP_Delete 0xff9f

IBUS_KP_Equal

#define IBUS_KP_Equal 0xffbd

IBUS_KP_Multiply

#define IBUS_KP_Multiply 0xffaa

IBUS_KP_Add

#define IBUS_KP_Add 0xffab

IBUS_KP_Separator

#define IBUS_KP_Separator 0xffac

IBUS_KP_Subtract

#define IBUS_KP_Subtract 0xffad

IBUS_KP_Decimal

#define IBUS_KP_Decimal 0xffae

IBUS_KP_Divide

#define IBUS_KP_Divide 0xffaf

IBUS_KP_0

#define IBUS_KP_0 0xffb0

IBUS_KP_1

#define IBUS_KP_1 0xffb1

IBUS_KP_2

#define IBUS_KP_2 0xffb2

IBUS_KP_3

#define IBUS_KP_3 0xffb3

IBUS_KP_4

#define IBUS_KP_4 0xffb4

IBUS_KP_5

#define IBUS_KP_5 0xffb5

IBUS_KP_6

#define IBUS_KP_6 0xffb6

IBUS_KP_7

#define IBUS_KP_7 0xffb7

IBUS_KP_8

#define IBUS_KP_8 0xffb8

IBUS_KP_9

#define IBUS_KP_9 0xffb9

IBUS_F1

#define IBUS_F1 0xffbe

IBUS_F2

#define IBUS_F2 0xffbf

IBUS_F3

#define IBUS_F3 0xffc0

IBUS_F4

#define IBUS_F4 0xffc1

IBUS_F5

#define IBUS_F5 0xffc2

IBUS_F6

#define IBUS_F6 0xffc3

IBUS_F7

#define IBUS_F7 0xffc4

IBUS_F8

#define IBUS_F8 0xffc5

IBUS_F9

#define IBUS_F9 0xffc6

IBUS_F10

#define IBUS_F10 0xffc7

IBUS_F11

#define IBUS_F11 0xffc8

IBUS_L1

#define IBUS_L1 0xffc8

IBUS_F12

#define IBUS_F12 0xffc9

IBUS_L2

#define IBUS_L2 0xffc9

IBUS_F13

#define IBUS_F13 0xffca

IBUS_L3

#define IBUS_L3 0xffca

IBUS_F14

#define IBUS_F14 0xffcb

IBUS_L4

#define IBUS_L4 0xffcb

IBUS_F15

#define IBUS_F15 0xffcc

IBUS_L5

#define IBUS_L5 0xffcc

IBUS_F16

#define IBUS_F16 0xffcd

IBUS_L6

#define IBUS_L6 0xffcd

IBUS_F17

#define IBUS_F17 0xffce

IBUS_L7

#define IBUS_L7 0xffce

IBUS_F18

#define IBUS_F18 0xffcf

IBUS_L8

#define IBUS_L8 0xffcf

IBUS_F19

#define IBUS_F19 0xffd0

IBUS_L9

#define IBUS_L9 0xffd0

IBUS_F20

#define IBUS_F20 0xffd1

IBUS_L10

#define IBUS_L10 0xffd1

IBUS_F21

#define IBUS_F21 0xffd2

IBUS_R1

#define IBUS_R1 0xffd2

IBUS_F22

#define IBUS_F22 0xffd3

IBUS_R2

#define IBUS_R2 0xffd3

IBUS_F23

#define IBUS_F23 0xffd4

IBUS_R3

#define IBUS_R3 0xffd4

IBUS_F24

#define IBUS_F24 0xffd5

IBUS_R4

#define IBUS_R4 0xffd5

IBUS_F25

#define IBUS_F25 0xffd6

IBUS_R5

#define IBUS_R5 0xffd6

IBUS_F26

#define IBUS_F26 0xffd7

IBUS_R6

#define IBUS_R6 0xffd7

IBUS_F27

#define IBUS_F27 0xffd8

IBUS_R7

#define IBUS_R7 0xffd8

IBUS_F28

#define IBUS_F28 0xffd9

IBUS_R8

#define IBUS_R8 0xffd9

IBUS_F29

#define IBUS_F29 0xffda

IBUS_R9

#define IBUS_R9 0xffda

IBUS_F30

#define IBUS_F30 0xffdb

IBUS_R10

#define IBUS_R10 0xffdb

IBUS_F31

#define IBUS_F31 0xffdc

IBUS_R11

#define IBUS_R11 0xffdc

IBUS_F32

#define IBUS_F32 0xffdd

IBUS_R12

#define IBUS_R12 0xffdd

IBUS_F33

#define IBUS_F33 0xffde

IBUS_R13

#define IBUS_R13 0xffde

IBUS_F34

#define IBUS_F34 0xffdf

IBUS_R14

#define IBUS_R14 0xffdf

IBUS_F35

#define IBUS_F35 0xffe0

IBUS_R15

#define IBUS_R15 0xffe0

IBUS_Shift_L

#define IBUS_Shift_L 0xffe1

IBUS_Shift_R

#define IBUS_Shift_R 0xffe2

IBUS_Control_L

#define IBUS_Control_L 0xffe3

IBUS_Control_R

#define IBUS_Control_R 0xffe4

IBUS_Caps_Lock

#define IBUS_Caps_Lock 0xffe5

IBUS_Shift_Lock

#define IBUS_Shift_Lock 0xffe6

IBUS_Meta_L

#define IBUS_Meta_L 0xffe7

IBUS_Meta_R

#define IBUS_Meta_R 0xffe8

IBUS_Alt_L

#define IBUS_Alt_L 0xffe9

IBUS_Alt_R

#define IBUS_Alt_R 0xffea

IBUS_Super_L

#define IBUS_Super_L 0xffeb

IBUS_Super_R

#define IBUS_Super_R 0xffec

IBUS_Hyper_L

#define IBUS_Hyper_L 0xffed

IBUS_Hyper_R

#define IBUS_Hyper_R 0xffee

IBUS_ISO_Lock

#define IBUS_ISO_Lock 0xfe01

IBUS_ISO_Level2_Latch

#define IBUS_ISO_Level2_Latch 0xfe02

IBUS_ISO_Level3_Shift

#define IBUS_ISO_Level3_Shift 0xfe03

IBUS_ISO_Level3_Latch

#define IBUS_ISO_Level3_Latch 0xfe04

IBUS_ISO_Level3_Lock

#define IBUS_ISO_Level3_Lock 0xfe05

IBUS_ISO_Level5_Shift

#define IBUS_ISO_Level5_Shift 0xfe11

IBUS_ISO_Level5_Latch

#define IBUS_ISO_Level5_Latch 0xfe12

IBUS_ISO_Level5_Lock

#define IBUS_ISO_Level5_Lock 0xfe13

IBUS_ISO_Group_Shift

#define IBUS_ISO_Group_Shift 0xff7e

IBUS_ISO_Group_Latch

#define IBUS_ISO_Group_Latch 0xfe06

IBUS_ISO_Group_Lock

#define IBUS_ISO_Group_Lock 0xfe07

IBUS_ISO_Next_Group

#define IBUS_ISO_Next_Group 0xfe08

IBUS_ISO_Next_Group_Lock

#define IBUS_ISO_Next_Group_Lock 0xfe09

IBUS_ISO_Prev_Group

#define IBUS_ISO_Prev_Group 0xfe0a

IBUS_ISO_Prev_Group_Lock

#define IBUS_ISO_Prev_Group_Lock 0xfe0b

IBUS_ISO_First_Group

#define IBUS_ISO_First_Group 0xfe0c

IBUS_ISO_First_Group_Lock

#define IBUS_ISO_First_Group_Lock 0xfe0d

IBUS_ISO_Last_Group

#define IBUS_ISO_Last_Group 0xfe0e

IBUS_ISO_Last_Group_Lock

#define IBUS_ISO_Last_Group_Lock 0xfe0f

IBUS_ISO_Left_Tab

#define IBUS_ISO_Left_Tab 0xfe20

IBUS_ISO_Move_Line_Up

#define IBUS_ISO_Move_Line_Up 0xfe21

IBUS_ISO_Move_Line_Down

#define IBUS_ISO_Move_Line_Down 0xfe22

IBUS_ISO_Partial_Line_Up

#define IBUS_ISO_Partial_Line_Up 0xfe23

IBUS_ISO_Partial_Line_Down

#define IBUS_ISO_Partial_Line_Down 0xfe24

IBUS_ISO_Partial_Space_Left

#define IBUS_ISO_Partial_Space_Left 0xfe25

IBUS_ISO_Partial_Space_Right

#define IBUS_ISO_Partial_Space_Right 0xfe26

IBUS_ISO_Set_Margin_Left

#define IBUS_ISO_Set_Margin_Left 0xfe27

IBUS_ISO_Set_Margin_Right

#define IBUS_ISO_Set_Margin_Right 0xfe28

IBUS_ISO_Release_Margin_Left

#define IBUS_ISO_Release_Margin_Left 0xfe29

IBUS_ISO_Release_Margin_Right

#define IBUS_ISO_Release_Margin_Right 0xfe2a

IBUS_ISO_Release_Both_Margins

#define IBUS_ISO_Release_Both_Margins 0xfe2b

IBUS_ISO_Fast_Cursor_Left

#define IBUS_ISO_Fast_Cursor_Left 0xfe2c

IBUS_ISO_Fast_Cursor_Right

#define IBUS_ISO_Fast_Cursor_Right 0xfe2d

IBUS_ISO_Fast_Cursor_Up

#define IBUS_ISO_Fast_Cursor_Up 0xfe2e

IBUS_ISO_Fast_Cursor_Down

#define IBUS_ISO_Fast_Cursor_Down 0xfe2f

IBUS_ISO_Continuous_Underline

#define IBUS_ISO_Continuous_Underline 0xfe30

IBUS_ISO_Discontinuous_Underline

#define IBUS_ISO_Discontinuous_Underline 0xfe31

IBUS_ISO_Emphasize

#define IBUS_ISO_Emphasize 0xfe32

IBUS_ISO_Center_Object

#define IBUS_ISO_Center_Object 0xfe33

IBUS_ISO_Enter

#define IBUS_ISO_Enter 0xfe34

IBUS_dead_grave

#define IBUS_dead_grave 0xfe50

IBUS_dead_acute

#define IBUS_dead_acute 0xfe51

IBUS_dead_circumflex

#define IBUS_dead_circumflex 0xfe52

IBUS_dead_tilde

#define IBUS_dead_tilde 0xfe53

IBUS_dead_perispomeni

#define IBUS_dead_perispomeni 0xfe53

IBUS_dead_macron

#define IBUS_dead_macron 0xfe54

IBUS_dead_breve

#define IBUS_dead_breve 0xfe55

IBUS_dead_abovedot

#define IBUS_dead_abovedot 0xfe56

IBUS_dead_diaeresis

#define IBUS_dead_diaeresis 0xfe57

IBUS_dead_abovering

#define IBUS_dead_abovering 0xfe58

IBUS_dead_doubleacute

#define IBUS_dead_doubleacute 0xfe59

IBUS_dead_caron

#define IBUS_dead_caron 0xfe5a

IBUS_dead_cedilla

#define IBUS_dead_cedilla 0xfe5b

IBUS_dead_ogonek

#define IBUS_dead_ogonek 0xfe5c

IBUS_dead_iota

#define IBUS_dead_iota 0xfe5d

IBUS_dead_voiced_sound

#define IBUS_dead_voiced_sound 0xfe5e

IBUS_dead_semivoiced_sound

#define IBUS_dead_semivoiced_sound 0xfe5f

IBUS_dead_belowdot

#define IBUS_dead_belowdot 0xfe60

IBUS_dead_hook

#define IBUS_dead_hook 0xfe61

IBUS_dead_horn

#define IBUS_dead_horn 0xfe62

IBUS_dead_stroke

#define IBUS_dead_stroke 0xfe63

IBUS_dead_abovecomma

#define IBUS_dead_abovecomma 0xfe64

IBUS_dead_psili

#define IBUS_dead_psili 0xfe64

IBUS_dead_abovereversedcomma

#define IBUS_dead_abovereversedcomma 0xfe65

IBUS_dead_dasia

#define IBUS_dead_dasia 0xfe65

IBUS_dead_belowring

#define IBUS_dead_belowring 0xfe67

IBUS_dead_belowmacron

#define IBUS_dead_belowmacron 0xfe68

IBUS_dead_belowcircumflex

#define IBUS_dead_belowcircumflex 0xfe69

IBUS_dead_belowtilde

#define IBUS_dead_belowtilde 0xfe6a

IBUS_dead_belowbreve

#define IBUS_dead_belowbreve 0xfe6b

IBUS_dead_belowdiaeresis

#define IBUS_dead_belowdiaeresis 0xfe6c

IBUS_First_Virtual_Screen

#define IBUS_First_Virtual_Screen 0xfed0

IBUS_Prev_Virtual_Screen

#define IBUS_Prev_Virtual_Screen 0xfed1

IBUS_Next_Virtual_Screen

#define IBUS_Next_Virtual_Screen 0xfed2

IBUS_Last_Virtual_Screen

#define IBUS_Last_Virtual_Screen 0xfed4

IBUS_Terminate_Server

#define IBUS_Terminate_Server 0xfed5

IBUS_AccessX_Enable

#define IBUS_AccessX_Enable 0xfe70

IBUS_AccessX_Feedback_Enable

#define IBUS_AccessX_Feedback_Enable 0xfe71

IBUS_RepeatKeys_Enable

#define IBUS_RepeatKeys_Enable 0xfe72

IBUS_SlowKeys_Enable

#define IBUS_SlowKeys_Enable 0xfe73

IBUS_BounceKeys_Enable

#define IBUS_BounceKeys_Enable 0xfe74

IBUS_StickyKeys_Enable

#define IBUS_StickyKeys_Enable 0xfe75

IBUS_MouseKeys_Enable

#define IBUS_MouseKeys_Enable 0xfe76

IBUS_MouseKeys_Accel_Enable

#define IBUS_MouseKeys_Accel_Enable 0xfe77

IBUS_Overlay1_Enable

#define IBUS_Overlay1_Enable 0xfe78

IBUS_Overlay2_Enable

#define IBUS_Overlay2_Enable 0xfe79

IBUS_AudibleBell_Enable

#define IBUS_AudibleBell_Enable 0xfe7a

IBUS_Pointer_Left

#define IBUS_Pointer_Left 0xfee0

IBUS_Pointer_Right

#define IBUS_Pointer_Right 0xfee1

IBUS_Pointer_Up

#define IBUS_Pointer_Up 0xfee2

IBUS_Pointer_Down

#define IBUS_Pointer_Down 0xfee3

IBUS_Pointer_UpLeft

#define IBUS_Pointer_UpLeft 0xfee4

IBUS_Pointer_UpRight

#define IBUS_Pointer_UpRight 0xfee5

IBUS_Pointer_DownLeft

#define IBUS_Pointer_DownLeft 0xfee6

IBUS_Pointer_DownRight

#define IBUS_Pointer_DownRight 0xfee7

IBUS_Pointer_Button_Dflt

#define IBUS_Pointer_Button_Dflt 0xfee8

IBUS_Pointer_Button1

#define IBUS_Pointer_Button1 0xfee9

IBUS_Pointer_Button2

#define IBUS_Pointer_Button2 0xfeea

IBUS_Pointer_Button3

#define IBUS_Pointer_Button3 0xfeeb

IBUS_Pointer_Button4

#define IBUS_Pointer_Button4 0xfeec

IBUS_Pointer_Button5

#define IBUS_Pointer_Button5 0xfeed

IBUS_Pointer_DblClick_Dflt

#define IBUS_Pointer_DblClick_Dflt 0xfeee

IBUS_Pointer_DblClick1

#define IBUS_Pointer_DblClick1 0xfeef

IBUS_Pointer_DblClick2

#define IBUS_Pointer_DblClick2 0xfef0

IBUS_Pointer_DblClick3

#define IBUS_Pointer_DblClick3 0xfef1

IBUS_Pointer_DblClick4

#define IBUS_Pointer_DblClick4 0xfef2

IBUS_Pointer_DblClick5

#define IBUS_Pointer_DblClick5 0xfef3

IBUS_Pointer_Drag_Dflt

#define IBUS_Pointer_Drag_Dflt 0xfef4

IBUS_Pointer_Drag1

#define IBUS_Pointer_Drag1 0xfef5

IBUS_Pointer_Drag2

#define IBUS_Pointer_Drag2 0xfef6

IBUS_Pointer_Drag3

#define IBUS_Pointer_Drag3 0xfef7

IBUS_Pointer_Drag4

#define IBUS_Pointer_Drag4 0xfef8

IBUS_Pointer_Drag5

#define IBUS_Pointer_Drag5 0xfefd

IBUS_Pointer_EnableKeys

#define IBUS_Pointer_EnableKeys 0xfef9

IBUS_Pointer_Accelerate

#define IBUS_Pointer_Accelerate 0xfefa

IBUS_Pointer_DfltBtnNext

#define IBUS_Pointer_DfltBtnNext 0xfefb

IBUS_Pointer_DfltBtnPrev

#define IBUS_Pointer_DfltBtnPrev 0xfefc

IBUS_3270_Duplicate

#define IBUS_3270_Duplicate 0xfd01

IBUS_3270_FieldMark

#define IBUS_3270_FieldMark 0xfd02

IBUS_3270_Right2

#define IBUS_3270_Right2 0xfd03

IBUS_3270_Left2

#define IBUS_3270_Left2 0xfd04

IBUS_3270_BackTab

#define IBUS_3270_BackTab 0xfd05

IBUS_3270_EraseEOF

#define IBUS_3270_EraseEOF 0xfd06

IBUS_3270_EraseInput

#define IBUS_3270_EraseInput 0xfd07

IBUS_3270_Reset

#define IBUS_3270_Reset 0xfd08

IBUS_3270_Quit

#define IBUS_3270_Quit 0xfd09

IBUS_3270_PA1

#define IBUS_3270_PA1 0xfd0a

IBUS_3270_PA2

#define IBUS_3270_PA2 0xfd0b

IBUS_3270_PA3

#define IBUS_3270_PA3 0xfd0c

IBUS_3270_Test

#define IBUS_3270_Test 0xfd0d

IBUS_3270_Attn

#define IBUS_3270_Attn 0xfd0e

IBUS_3270_CursorBlink

#define IBUS_3270_CursorBlink 0xfd0f

IBUS_3270_AltCursor

#define IBUS_3270_AltCursor 0xfd10

IBUS_3270_KeyClick

#define IBUS_3270_KeyClick 0xfd11

IBUS_3270_Jump

#define IBUS_3270_Jump 0xfd12

IBUS_3270_Ident

#define IBUS_3270_Ident 0xfd13

IBUS_3270_Rule

#define IBUS_3270_Rule 0xfd14

IBUS_3270_Copy

#define IBUS_3270_Copy 0xfd15

IBUS_3270_Play

#define IBUS_3270_Play 0xfd16

IBUS_3270_Setup

#define IBUS_3270_Setup 0xfd17

IBUS_3270_Record

#define IBUS_3270_Record 0xfd18

IBUS_3270_ChangeScreen

#define IBUS_3270_ChangeScreen 0xfd19

IBUS_3270_DeleteWord

#define IBUS_3270_DeleteWord 0xfd1a

IBUS_3270_ExSelect

#define IBUS_3270_ExSelect 0xfd1b

IBUS_3270_CursorSelect

#define IBUS_3270_CursorSelect 0xfd1c

IBUS_3270_PrintScreen

#define IBUS_3270_PrintScreen 0xfd1d

IBUS_3270_Enter

#define IBUS_3270_Enter 0xfd1e

IBUS_space

#define IBUS_space 0x020

IBUS_exclam

#define IBUS_exclam 0x021

IBUS_quotedbl

#define IBUS_quotedbl 0x022

IBUS_numbersign

#define IBUS_numbersign 0x023

IBUS_dollar

#define IBUS_dollar 0x024

IBUS_percent

#define IBUS_percent 0x025

IBUS_ampersand

#define IBUS_ampersand 0x026

IBUS_apostrophe

#define IBUS_apostrophe 0x027

IBUS_quoteright

#define IBUS_quoteright 0x027

IBUS_parenleft

#define IBUS_parenleft 0x028

IBUS_parenright

#define IBUS_parenright 0x029

IBUS_asterisk

#define IBUS_asterisk 0x02a

IBUS_plus

#define IBUS_plus 0x02b

IBUS_comma

#define IBUS_comma 0x02c

IBUS_minus

#define IBUS_minus 0x02d

IBUS_period

#define IBUS_period 0x02e

IBUS_slash

#define IBUS_slash 0x02f

IBUS_0

#define IBUS_0 0x030

IBUS_1

#define IBUS_1 0x031

IBUS_2

#define IBUS_2 0x032

IBUS_3

#define IBUS_3 0x033

IBUS_4

#define IBUS_4 0x034

IBUS_5

#define IBUS_5 0x035

IBUS_6

#define IBUS_6 0x036

IBUS_7

#define IBUS_7 0x037

IBUS_8

#define IBUS_8 0x038

IBUS_9

#define IBUS_9 0x039

IBUS_colon

#define IBUS_colon 0x03a

IBUS_semicolon

#define IBUS_semicolon 0x03b

IBUS_less

#define IBUS_less 0x03c

IBUS_equal

#define IBUS_equal 0x03d

IBUS_greater

#define IBUS_greater 0x03e

IBUS_question

#define IBUS_question 0x03f

IBUS_at

#define IBUS_at 0x040

IBUS_A

#define IBUS_A 0x041

IBUS_B

#define IBUS_B 0x042

IBUS_C

#define IBUS_C 0x043

IBUS_D

#define IBUS_D 0x044

IBUS_E

#define IBUS_E 0x045

IBUS_F

#define IBUS_F 0x046

IBUS_G

#define IBUS_G 0x047

IBUS_H

#define IBUS_H 0x048

IBUS_I

#define IBUS_I 0x049

IBUS_J

#define IBUS_J 0x04a

IBUS_K

#define IBUS_K 0x04b

IBUS_L

#define IBUS_L 0x04c

IBUS_M

#define IBUS_M 0x04d

IBUS_N

#define IBUS_N 0x04e

IBUS_O

#define IBUS_O 0x04f

IBUS_P

#define IBUS_P 0x050

IBUS_Q

#define IBUS_Q 0x051

IBUS_R

#define IBUS_R 0x052

IBUS_S

#define IBUS_S 0x053

IBUS_T

#define IBUS_T 0x054

IBUS_U

#define IBUS_U 0x055

IBUS_V

#define IBUS_V 0x056

IBUS_W

#define IBUS_W 0x057

IBUS_X

#define IBUS_X 0x058

IBUS_Y

#define IBUS_Y 0x059

IBUS_Z

#define IBUS_Z 0x05a

IBUS_bracketleft

#define IBUS_bracketleft 0x05b

IBUS_backslash

#define IBUS_backslash 0x05c

IBUS_bracketright

#define IBUS_bracketright 0x05d

IBUS_asciicircum

#define IBUS_asciicircum 0x05e

IBUS_underscore

#define IBUS_underscore 0x05f

IBUS_grave

#define IBUS_grave 0x060

IBUS_quoteleft

#define IBUS_quoteleft 0x060

IBUS_a

#define IBUS_a 0x061

IBUS_b

#define IBUS_b 0x062

IBUS_c

#define IBUS_c 0x063

IBUS_d

#define IBUS_d 0x064

IBUS_e

#define IBUS_e 0x065

IBUS_f

#define IBUS_f 0x066

IBUS_g

#define IBUS_g 0x067

IBUS_h

#define IBUS_h 0x068

IBUS_i

#define IBUS_i 0x069

IBUS_j

#define IBUS_j 0x06a

IBUS_k

#define IBUS_k 0x06b

IBUS_l

#define IBUS_l 0x06c

IBUS_m

#define IBUS_m 0x06d

IBUS_n

#define IBUS_n 0x06e

IBUS_o

#define IBUS_o 0x06f

IBUS_p

#define IBUS_p 0x070

IBUS_q

#define IBUS_q 0x071

IBUS_r

#define IBUS_r 0x072

IBUS_s

#define IBUS_s 0x073

IBUS_t

#define IBUS_t 0x074

IBUS_u

#define IBUS_u 0x075

IBUS_v

#define IBUS_v 0x076

IBUS_w

#define IBUS_w 0x077

IBUS_x

#define IBUS_x 0x078

IBUS_y

#define IBUS_y 0x079

IBUS_z

#define IBUS_z 0x07a

IBUS_braceleft

#define IBUS_braceleft 0x07b

IBUS_bar

#define IBUS_bar 0x07c

IBUS_braceright

#define IBUS_braceright 0x07d

IBUS_asciitilde

#define IBUS_asciitilde 0x07e

IBUS_nobreakspace

#define IBUS_nobreakspace 0x0a0

IBUS_exclamdown

#define IBUS_exclamdown 0x0a1

IBUS_cent

#define IBUS_cent 0x0a2

IBUS_sterling

#define IBUS_sterling 0x0a3

IBUS_currency

#define IBUS_currency 0x0a4

IBUS_yen

#define IBUS_yen 0x0a5

IBUS_brokenbar

#define IBUS_brokenbar 0x0a6

IBUS_section

#define IBUS_section 0x0a7

IBUS_diaeresis

#define IBUS_diaeresis 0x0a8

IBUS_copyright

#define IBUS_copyright 0x0a9

IBUS_ordfeminine

#define IBUS_ordfeminine 0x0aa

IBUS_guillemotleft

#define IBUS_guillemotleft 0x0ab

IBUS_notsign

#define IBUS_notsign 0x0ac

IBUS_hyphen

#define IBUS_hyphen 0x0ad

IBUS_registered

#define IBUS_registered 0x0ae

IBUS_macron

#define IBUS_macron 0x0af

IBUS_degree

#define IBUS_degree 0x0b0

IBUS_plusminus

#define IBUS_plusminus 0x0b1

IBUS_twosuperior

#define IBUS_twosuperior 0x0b2

IBUS_threesuperior

#define IBUS_threesuperior 0x0b3

IBUS_acute

#define IBUS_acute 0x0b4

IBUS_mu

#define IBUS_mu 0x0b5

IBUS_paragraph

#define IBUS_paragraph 0x0b6

IBUS_periodcentered

#define IBUS_periodcentered 0x0b7

IBUS_cedilla

#define IBUS_cedilla 0x0b8

IBUS_onesuperior

#define IBUS_onesuperior 0x0b9

IBUS_masculine

#define IBUS_masculine 0x0ba

IBUS_guillemotright

#define IBUS_guillemotright 0x0bb

IBUS_onequarter

#define IBUS_onequarter 0x0bc

IBUS_onehalf

#define IBUS_onehalf 0x0bd

IBUS_threequarters

#define IBUS_threequarters 0x0be

IBUS_questiondown

#define IBUS_questiondown 0x0bf

IBUS_Agrave

#define IBUS_Agrave 0x0c0

IBUS_Aacute

#define IBUS_Aacute 0x0c1

IBUS_Acircumflex

#define IBUS_Acircumflex 0x0c2

IBUS_Atilde

#define IBUS_Atilde 0x0c3

IBUS_Adiaeresis

#define IBUS_Adiaeresis 0x0c4

IBUS_Aring

#define IBUS_Aring 0x0c5

IBUS_AE

#define IBUS_AE 0x0c6

IBUS_Ccedilla

#define IBUS_Ccedilla 0x0c7

IBUS_Egrave

#define IBUS_Egrave 0x0c8

IBUS_Eacute

#define IBUS_Eacute 0x0c9

IBUS_Ecircumflex

#define IBUS_Ecircumflex 0x0ca

IBUS_Ediaeresis

#define IBUS_Ediaeresis 0x0cb

IBUS_Igrave

#define IBUS_Igrave 0x0cc

IBUS_Iacute

#define IBUS_Iacute 0x0cd

IBUS_Icircumflex

#define IBUS_Icircumflex 0x0ce

IBUS_Idiaeresis

#define IBUS_Idiaeresis 0x0cf

IBUS_ETH

#define IBUS_ETH 0x0d0

IBUS_Eth

#define IBUS_Eth 0x0d0

IBUS_Ntilde

#define IBUS_Ntilde 0x0d1

IBUS_Ograve

#define IBUS_Ograve 0x0d2

IBUS_Oacute

#define IBUS_Oacute 0x0d3

IBUS_Ocircumflex

#define IBUS_Ocircumflex 0x0d4

IBUS_Otilde

#define IBUS_Otilde 0x0d5

IBUS_Odiaeresis

#define IBUS_Odiaeresis 0x0d6

IBUS_multiply

#define IBUS_multiply 0x0d7

IBUS_Oslash

#define IBUS_Oslash 0x0d8

IBUS_Ooblique

#define IBUS_Ooblique 0x0d8

IBUS_Ugrave

#define IBUS_Ugrave 0x0d9

IBUS_Uacute

#define IBUS_Uacute 0x0da

IBUS_Ucircumflex

#define IBUS_Ucircumflex 0x0db

IBUS_Udiaeresis

#define IBUS_Udiaeresis 0x0dc

IBUS_Yacute

#define IBUS_Yacute 0x0dd

IBUS_THORN

#define IBUS_THORN 0x0de

IBUS_Thorn

#define IBUS_Thorn 0x0de

IBUS_ssharp

#define IBUS_ssharp 0x0df

IBUS_agrave

#define IBUS_agrave 0x0e0

IBUS_aacute

#define IBUS_aacute 0x0e1

IBUS_acircumflex

#define IBUS_acircumflex 0x0e2

IBUS_atilde

#define IBUS_atilde 0x0e3

IBUS_adiaeresis

#define IBUS_adiaeresis 0x0e4

IBUS_aring

#define IBUS_aring 0x0e5

IBUS_ae

#define IBUS_ae 0x0e6

IBUS_ccedilla

#define IBUS_ccedilla 0x0e7

IBUS_egrave

#define IBUS_egrave 0x0e8

IBUS_eacute

#define IBUS_eacute 0x0e9

IBUS_ecircumflex

#define IBUS_ecircumflex 0x0ea

IBUS_ediaeresis

#define IBUS_ediaeresis 0x0eb

IBUS_igrave

#define IBUS_igrave 0x0ec

IBUS_iacute

#define IBUS_iacute 0x0ed

IBUS_icircumflex

#define IBUS_icircumflex 0x0ee

IBUS_idiaeresis

#define IBUS_idiaeresis 0x0ef

IBUS_eth

#define IBUS_eth 0x0f0

IBUS_ntilde

#define IBUS_ntilde 0x0f1

IBUS_ograve

#define IBUS_ograve 0x0f2

IBUS_oacute

#define IBUS_oacute 0x0f3

IBUS_ocircumflex

#define IBUS_ocircumflex 0x0f4

IBUS_otilde

#define IBUS_otilde 0x0f5

IBUS_odiaeresis

#define IBUS_odiaeresis 0x0f6

IBUS_division

#define IBUS_division 0x0f7

IBUS_oslash

#define IBUS_oslash 0x0f8

IBUS_ooblique

#define IBUS_ooblique 0x0f8

IBUS_ugrave

#define IBUS_ugrave 0x0f9

IBUS_uacute

#define IBUS_uacute 0x0fa

IBUS_ucircumflex

#define IBUS_ucircumflex 0x0fb

IBUS_udiaeresis

#define IBUS_udiaeresis 0x0fc

IBUS_yacute

#define IBUS_yacute 0x0fd

IBUS_thorn

#define IBUS_thorn 0x0fe

IBUS_ydiaeresis

#define IBUS_ydiaeresis 0x0ff

IBUS_Aogonek

#define IBUS_Aogonek 0x1a1

IBUS_breve

#define IBUS_breve 0x1a2

IBUS_Lstroke

#define IBUS_Lstroke 0x1a3

IBUS_Lcaron

#define IBUS_Lcaron 0x1a5

IBUS_Sacute

#define IBUS_Sacute 0x1a6

IBUS_Scaron

#define IBUS_Scaron 0x1a9

IBUS_Scedilla

#define IBUS_Scedilla 0x1aa

IBUS_Tcaron

#define IBUS_Tcaron 0x1ab

IBUS_Zacute

#define IBUS_Zacute 0x1ac

IBUS_Zcaron

#define IBUS_Zcaron 0x1ae

IBUS_Zabovedot

#define IBUS_Zabovedot 0x1af

IBUS_aogonek

#define IBUS_aogonek 0x1b1

IBUS_ogonek

#define IBUS_ogonek 0x1b2

IBUS_lstroke

#define IBUS_lstroke 0x1b3

IBUS_lcaron

#define IBUS_lcaron 0x1b5

IBUS_sacute

#define IBUS_sacute 0x1b6

IBUS_caron

#define IBUS_caron 0x1b7

IBUS_scaron

#define IBUS_scaron 0x1b9

IBUS_scedilla

#define IBUS_scedilla 0x1ba

IBUS_tcaron

#define IBUS_tcaron 0x1bb

IBUS_zacute

#define IBUS_zacute 0x1bc

IBUS_doubleacute

#define IBUS_doubleacute 0x1bd

IBUS_zcaron

#define IBUS_zcaron 0x1be

IBUS_zabovedot

#define IBUS_zabovedot 0x1bf

IBUS_Racute

#define IBUS_Racute 0x1c0

IBUS_Abreve

#define IBUS_Abreve 0x1c3

IBUS_Lacute

#define IBUS_Lacute 0x1c5

IBUS_Cacute

#define IBUS_Cacute 0x1c6

IBUS_Ccaron

#define IBUS_Ccaron 0x1c8

IBUS_Eogonek

#define IBUS_Eogonek 0x1ca

IBUS_Ecaron

#define IBUS_Ecaron 0x1cc

IBUS_Dcaron

#define IBUS_Dcaron 0x1cf

IBUS_Dstroke

#define IBUS_Dstroke 0x1d0

IBUS_Nacute

#define IBUS_Nacute 0x1d1

IBUS_Ncaron

#define IBUS_Ncaron 0x1d2

IBUS_Odoubleacute

#define IBUS_Odoubleacute 0x1d5

IBUS_Rcaron

#define IBUS_Rcaron 0x1d8

IBUS_Uring

#define IBUS_Uring 0x1d9

IBUS_Udoubleacute

#define IBUS_Udoubleacute 0x1db

IBUS_Tcedilla

#define IBUS_Tcedilla 0x1de

IBUS_racute

#define IBUS_racute 0x1e0

IBUS_abreve

#define IBUS_abreve 0x1e3

IBUS_lacute

#define IBUS_lacute 0x1e5

IBUS_cacute

#define IBUS_cacute 0x1e6

IBUS_ccaron

#define IBUS_ccaron 0x1e8

IBUS_eogonek

#define IBUS_eogonek 0x1ea

IBUS_ecaron

#define IBUS_ecaron 0x1ec

IBUS_dcaron

#define IBUS_dcaron 0x1ef

IBUS_dstroke

#define IBUS_dstroke 0x1f0

IBUS_nacute

#define IBUS_nacute 0x1f1

IBUS_ncaron

#define IBUS_ncaron 0x1f2

IBUS_odoubleacute

#define IBUS_odoubleacute 0x1f5

IBUS_udoubleacute

#define IBUS_udoubleacute 0x1fb

IBUS_rcaron

#define IBUS_rcaron 0x1f8

IBUS_uring

#define IBUS_uring 0x1f9

IBUS_tcedilla

#define IBUS_tcedilla 0x1fe

IBUS_abovedot

#define IBUS_abovedot 0x1ff

IBUS_Hstroke

#define IBUS_Hstroke 0x2a1

IBUS_Hcircumflex

#define IBUS_Hcircumflex 0x2a6

IBUS_Iabovedot

#define IBUS_Iabovedot 0x2a9

IBUS_Gbreve

#define IBUS_Gbreve 0x2ab

IBUS_Jcircumflex

#define IBUS_Jcircumflex 0x2ac

IBUS_hstroke

#define IBUS_hstroke 0x2b1

IBUS_hcircumflex

#define IBUS_hcircumflex 0x2b6

IBUS_idotless

#define IBUS_idotless 0x2b9

IBUS_gbreve

#define IBUS_gbreve 0x2bb

IBUS_jcircumflex

#define IBUS_jcircumflex 0x2bc

IBUS_Cabovedot

#define IBUS_Cabovedot 0x2c5

IBUS_Ccircumflex

#define IBUS_Ccircumflex 0x2c6

IBUS_Gabovedot

#define IBUS_Gabovedot 0x2d5

IBUS_Gcircumflex

#define IBUS_Gcircumflex 0x2d8

IBUS_Ubreve

#define IBUS_Ubreve 0x2dd

IBUS_Scircumflex

#define IBUS_Scircumflex 0x2de

IBUS_cabovedot

#define IBUS_cabovedot 0x2e5

IBUS_ccircumflex

#define IBUS_ccircumflex 0x2e6

IBUS_gabovedot

#define IBUS_gabovedot 0x2f5

IBUS_gcircumflex

#define IBUS_gcircumflex 0x2f8

IBUS_ubreve

#define IBUS_ubreve 0x2fd

IBUS_scircumflex

#define IBUS_scircumflex 0x2fe

IBUS_kra

#define IBUS_kra 0x3a2

IBUS_kappa

#define IBUS_kappa 0x3a2

IBUS_Rcedilla

#define IBUS_Rcedilla 0x3a3

IBUS_Itilde

#define IBUS_Itilde 0x3a5

IBUS_Lcedilla

#define IBUS_Lcedilla 0x3a6

IBUS_Emacron

#define IBUS_Emacron 0x3aa

IBUS_Gcedilla

#define IBUS_Gcedilla 0x3ab

IBUS_Tslash

#define IBUS_Tslash 0x3ac

IBUS_rcedilla

#define IBUS_rcedilla 0x3b3

IBUS_itilde

#define IBUS_itilde 0x3b5

IBUS_lcedilla

#define IBUS_lcedilla 0x3b6

IBUS_emacron

#define IBUS_emacron 0x3ba

IBUS_gcedilla

#define IBUS_gcedilla 0x3bb

IBUS_tslash

#define IBUS_tslash 0x3bc

IBUS_ENG

#define IBUS_ENG 0x3bd

IBUS_eng

#define IBUS_eng 0x3bf

IBUS_Amacron

#define IBUS_Amacron 0x3c0

IBUS_Iogonek

#define IBUS_Iogonek 0x3c7

IBUS_Eabovedot

#define IBUS_Eabovedot 0x3cc

IBUS_Imacron

#define IBUS_Imacron 0x3cf

IBUS_Ncedilla

#define IBUS_Ncedilla 0x3d1

IBUS_Omacron

#define IBUS_Omacron 0x3d2

IBUS_Kcedilla

#define IBUS_Kcedilla 0x3d3

IBUS_Uogonek

#define IBUS_Uogonek 0x3d9

IBUS_Utilde

#define IBUS_Utilde 0x3dd

IBUS_Umacron

#define IBUS_Umacron 0x3de

IBUS_amacron

#define IBUS_amacron 0x3e0

IBUS_iogonek

#define IBUS_iogonek 0x3e7

IBUS_eabovedot

#define IBUS_eabovedot 0x3ec

IBUS_imacron

#define IBUS_imacron 0x3ef

IBUS_ncedilla

#define IBUS_ncedilla 0x3f1

IBUS_omacron

#define IBUS_omacron 0x3f2

IBUS_kcedilla

#define IBUS_kcedilla 0x3f3

IBUS_uogonek

#define IBUS_uogonek 0x3f9

IBUS_utilde

#define IBUS_utilde 0x3fd

IBUS_umacron

#define IBUS_umacron 0x3fe

IBUS_Babovedot

#define IBUS_Babovedot 0x1001e02

IBUS_babovedot

#define IBUS_babovedot 0x1001e03

IBUS_Dabovedot

#define IBUS_Dabovedot 0x1001e0a

IBUS_Wgrave

#define IBUS_Wgrave 0x1001e80

IBUS_Wacute

#define IBUS_Wacute 0x1001e82

IBUS_dabovedot

#define IBUS_dabovedot 0x1001e0b

IBUS_Ygrave

#define IBUS_Ygrave 0x1001ef2

IBUS_Fabovedot

#define IBUS_Fabovedot 0x1001e1e

IBUS_fabovedot

#define IBUS_fabovedot 0x1001e1f

IBUS_Mabovedot

#define IBUS_Mabovedot 0x1001e40

IBUS_mabovedot

#define IBUS_mabovedot 0x1001e41

IBUS_Pabovedot

#define IBUS_Pabovedot 0x1001e56

IBUS_wgrave

#define IBUS_wgrave 0x1001e81

IBUS_pabovedot

#define IBUS_pabovedot 0x1001e57

IBUS_wacute

#define IBUS_wacute 0x1001e83

IBUS_Sabovedot

#define IBUS_Sabovedot 0x1001e60

IBUS_ygrave

#define IBUS_ygrave 0x1001ef3

IBUS_Wdiaeresis

#define IBUS_Wdiaeresis 0x1001e84

IBUS_wdiaeresis

#define IBUS_wdiaeresis 0x1001e85

IBUS_sabovedot

#define IBUS_sabovedot 0x1001e61

IBUS_Wcircumflex

#define IBUS_Wcircumflex 0x1000174

IBUS_Tabovedot

#define IBUS_Tabovedot 0x1001e6a

IBUS_Ycircumflex

#define IBUS_Ycircumflex 0x1000176

IBUS_wcircumflex

#define IBUS_wcircumflex 0x1000175

IBUS_tabovedot

#define IBUS_tabovedot 0x1001e6b

IBUS_ycircumflex

#define IBUS_ycircumflex 0x1000177

IBUS_OE

#define IBUS_OE 0x13bc

IBUS_oe

#define IBUS_oe 0x13bd

IBUS_Ydiaeresis

#define IBUS_Ydiaeresis 0x13be

IBUS_overline

#define IBUS_overline 0x47e

IBUS_kana_fullstop

#define IBUS_kana_fullstop 0x4a1

IBUS_kana_openingbracket

#define IBUS_kana_openingbracket 0x4a2

IBUS_kana_closingbracket

#define IBUS_kana_closingbracket 0x4a3

IBUS_kana_comma

#define IBUS_kana_comma 0x4a4

IBUS_kana_conjunctive

#define IBUS_kana_conjunctive 0x4a5

IBUS_kana_middledot

#define IBUS_kana_middledot 0x4a5

IBUS_kana_WO

#define IBUS_kana_WO 0x4a6

IBUS_kana_a

#define IBUS_kana_a 0x4a7

IBUS_kana_i

#define IBUS_kana_i 0x4a8

IBUS_kana_u

#define IBUS_kana_u 0x4a9

IBUS_kana_e

#define IBUS_kana_e 0x4aa

IBUS_kana_o

#define IBUS_kana_o 0x4ab

IBUS_kana_ya

#define IBUS_kana_ya 0x4ac

IBUS_kana_yu

#define IBUS_kana_yu 0x4ad

IBUS_kana_yo

#define IBUS_kana_yo 0x4ae

IBUS_kana_tsu

#define IBUS_kana_tsu 0x4af

IBUS_kana_tu

#define IBUS_kana_tu 0x4af

IBUS_prolongedsound

#define IBUS_prolongedsound 0x4b0

IBUS_kana_A

#define IBUS_kana_A 0x4b1

IBUS_kana_I

#define IBUS_kana_I 0x4b2

IBUS_kana_U

#define IBUS_kana_U 0x4b3

IBUS_kana_E

#define IBUS_kana_E 0x4b4

IBUS_kana_O

#define IBUS_kana_O 0x4b5

IBUS_kana_KA

#define IBUS_kana_KA 0x4b6

IBUS_kana_KI

#define IBUS_kana_KI 0x4b7

IBUS_kana_KU

#define IBUS_kana_KU 0x4b8

IBUS_kana_KE

#define IBUS_kana_KE 0x4b9

IBUS_kana_KO

#define IBUS_kana_KO 0x4ba

IBUS_kana_SA

#define IBUS_kana_SA 0x4bb

IBUS_kana_SHI

#define IBUS_kana_SHI 0x4bc

IBUS_kana_SU

#define IBUS_kana_SU 0x4bd

IBUS_kana_SE

#define IBUS_kana_SE 0x4be

IBUS_kana_SO

#define IBUS_kana_SO 0x4bf

IBUS_kana_TA

#define IBUS_kana_TA 0x4c0

IBUS_kana_CHI

#define IBUS_kana_CHI 0x4c1

IBUS_kana_TI

#define IBUS_kana_TI 0x4c1

IBUS_kana_TSU

#define IBUS_kana_TSU 0x4c2

IBUS_kana_TU

#define IBUS_kana_TU 0x4c2

IBUS_kana_TE

#define IBUS_kana_TE 0x4c3

IBUS_kana_TO

#define IBUS_kana_TO 0x4c4

IBUS_kana_NA

#define IBUS_kana_NA 0x4c5

IBUS_kana_NI

#define IBUS_kana_NI 0x4c6

IBUS_kana_NU

#define IBUS_kana_NU 0x4c7

IBUS_kana_NE

#define IBUS_kana_NE 0x4c8

IBUS_kana_NO

#define IBUS_kana_NO 0x4c9

IBUS_kana_HA

#define IBUS_kana_HA 0x4ca

IBUS_kana_HI

#define IBUS_kana_HI 0x4cb

IBUS_kana_FU

#define IBUS_kana_FU 0x4cc

IBUS_kana_HU

#define IBUS_kana_HU 0x4cc

IBUS_kana_HE

#define IBUS_kana_HE 0x4cd

IBUS_kana_HO

#define IBUS_kana_HO 0x4ce

IBUS_kana_MA

#define IBUS_kana_MA 0x4cf

IBUS_kana_MI

#define IBUS_kana_MI 0x4d0

IBUS_kana_MU

#define IBUS_kana_MU 0x4d1

IBUS_kana_ME

#define IBUS_kana_ME 0x4d2

IBUS_kana_MO

#define IBUS_kana_MO 0x4d3

IBUS_kana_YA

#define IBUS_kana_YA 0x4d4

IBUS_kana_YU

#define IBUS_kana_YU 0x4d5

IBUS_kana_YO

#define IBUS_kana_YO 0x4d6

IBUS_kana_RA

#define IBUS_kana_RA 0x4d7

IBUS_kana_RI

#define IBUS_kana_RI 0x4d8

IBUS_kana_RU

#define IBUS_kana_RU 0x4d9

IBUS_kana_RE

#define IBUS_kana_RE 0x4da

IBUS_kana_RO

#define IBUS_kana_RO 0x4db

IBUS_kana_WA

#define IBUS_kana_WA 0x4dc

IBUS_kana_N

#define IBUS_kana_N 0x4dd

IBUS_voicedsound

#define IBUS_voicedsound 0x4de

IBUS_semivoicedsound

#define IBUS_semivoicedsound 0x4df

IBUS_kana_switch

#define IBUS_kana_switch 0xff7e

IBUS_Farsi_0

#define IBUS_Farsi_0 0x10006f0

IBUS_Farsi_1

#define IBUS_Farsi_1 0x10006f1

IBUS_Farsi_2

#define IBUS_Farsi_2 0x10006f2

IBUS_Farsi_3

#define IBUS_Farsi_3 0x10006f3

IBUS_Farsi_4

#define IBUS_Farsi_4 0x10006f4

IBUS_Farsi_5

#define IBUS_Farsi_5 0x10006f5

IBUS_Farsi_6

#define IBUS_Farsi_6 0x10006f6

IBUS_Farsi_7

#define IBUS_Farsi_7 0x10006f7

IBUS_Farsi_8

#define IBUS_Farsi_8 0x10006f8

IBUS_Farsi_9

#define IBUS_Farsi_9 0x10006f9

IBUS_Arabic_percent

#define IBUS_Arabic_percent 0x100066a

IBUS_Arabic_superscript_alef

#define IBUS_Arabic_superscript_alef 0x1000670

IBUS_Arabic_tteh

#define IBUS_Arabic_tteh 0x1000679

IBUS_Arabic_peh

#define IBUS_Arabic_peh 0x100067e

IBUS_Arabic_tcheh

#define IBUS_Arabic_tcheh 0x1000686

IBUS_Arabic_ddal

#define IBUS_Arabic_ddal 0x1000688

IBUS_Arabic_rreh

#define IBUS_Arabic_rreh 0x1000691

IBUS_Arabic_comma

#define IBUS_Arabic_comma 0x5ac

IBUS_Arabic_fullstop

#define IBUS_Arabic_fullstop 0x10006d4

IBUS_Arabic_0

#define IBUS_Arabic_0 0x1000660

IBUS_Arabic_1

#define IBUS_Arabic_1 0x1000661

IBUS_Arabic_2

#define IBUS_Arabic_2 0x1000662

IBUS_Arabic_3

#define IBUS_Arabic_3 0x1000663

IBUS_Arabic_4

#define IBUS_Arabic_4 0x1000664

IBUS_Arabic_5

#define IBUS_Arabic_5 0x1000665

IBUS_Arabic_6

#define IBUS_Arabic_6 0x1000666

IBUS_Arabic_7

#define IBUS_Arabic_7 0x1000667

IBUS_Arabic_8

#define IBUS_Arabic_8 0x1000668

IBUS_Arabic_9

#define IBUS_Arabic_9 0x1000669

IBUS_Arabic_semicolon

#define IBUS_Arabic_semicolon 0x5bb

IBUS_Arabic_question_mark

#define IBUS_Arabic_question_mark 0x5bf

IBUS_Arabic_hamza

#define IBUS_Arabic_hamza 0x5c1

IBUS_Arabic_maddaonalef

#define IBUS_Arabic_maddaonalef 0x5c2

IBUS_Arabic_hamzaonalef

#define IBUS_Arabic_hamzaonalef 0x5c3

IBUS_Arabic_hamzaonwaw

#define IBUS_Arabic_hamzaonwaw 0x5c4

IBUS_Arabic_hamzaunderalef

#define IBUS_Arabic_hamzaunderalef 0x5c5

IBUS_Arabic_hamzaonyeh

#define IBUS_Arabic_hamzaonyeh 0x5c6

IBUS_Arabic_alef

#define IBUS_Arabic_alef 0x5c7

IBUS_Arabic_beh

#define IBUS_Arabic_beh 0x5c8

IBUS_Arabic_tehmarbuta

#define IBUS_Arabic_tehmarbuta 0x5c9

IBUS_Arabic_teh

#define IBUS_Arabic_teh 0x5ca

IBUS_Arabic_theh

#define IBUS_Arabic_theh 0x5cb

IBUS_Arabic_jeem

#define IBUS_Arabic_jeem 0x5cc

IBUS_Arabic_hah

#define IBUS_Arabic_hah 0x5cd

IBUS_Arabic_khah

#define IBUS_Arabic_khah 0x5ce

IBUS_Arabic_dal

#define IBUS_Arabic_dal 0x5cf

IBUS_Arabic_thal

#define IBUS_Arabic_thal 0x5d0

IBUS_Arabic_ra

#define IBUS_Arabic_ra 0x5d1

IBUS_Arabic_zain

#define IBUS_Arabic_zain 0x5d2

IBUS_Arabic_seen

#define IBUS_Arabic_seen 0x5d3

IBUS_Arabic_sheen

#define IBUS_Arabic_sheen 0x5d4

IBUS_Arabic_sad

#define IBUS_Arabic_sad 0x5d5

IBUS_Arabic_dad

#define IBUS_Arabic_dad 0x5d6

IBUS_Arabic_tah

#define IBUS_Arabic_tah 0x5d7

IBUS_Arabic_zah

#define IBUS_Arabic_zah 0x5d8

IBUS_Arabic_ain

#define IBUS_Arabic_ain 0x5d9

IBUS_Arabic_ghain

#define IBUS_Arabic_ghain 0x5da

IBUS_Arabic_tatweel

#define IBUS_Arabic_tatweel 0x5e0

IBUS_Arabic_feh

#define IBUS_Arabic_feh 0x5e1

IBUS_Arabic_qaf

#define IBUS_Arabic_qaf 0x5e2

IBUS_Arabic_kaf

#define IBUS_Arabic_kaf 0x5e3

IBUS_Arabic_lam

#define IBUS_Arabic_lam 0x5e4

IBUS_Arabic_meem

#define IBUS_Arabic_meem 0x5e5

IBUS_Arabic_noon

#define IBUS_Arabic_noon 0x5e6

IBUS_Arabic_ha

#define IBUS_Arabic_ha 0x5e7

IBUS_Arabic_heh

#define IBUS_Arabic_heh 0x5e7

IBUS_Arabic_waw

#define IBUS_Arabic_waw 0x5e8

IBUS_Arabic_alefmaksura

#define IBUS_Arabic_alefmaksura 0x5e9

IBUS_Arabic_yeh

#define IBUS_Arabic_yeh 0x5ea

IBUS_Arabic_fathatan

#define IBUS_Arabic_fathatan 0x5eb

IBUS_Arabic_dammatan

#define IBUS_Arabic_dammatan 0x5ec

IBUS_Arabic_kasratan

#define IBUS_Arabic_kasratan 0x5ed

IBUS_Arabic_fatha

#define IBUS_Arabic_fatha 0x5ee

IBUS_Arabic_damma

#define IBUS_Arabic_damma 0x5ef

IBUS_Arabic_kasra

#define IBUS_Arabic_kasra 0x5f0

IBUS_Arabic_shadda

#define IBUS_Arabic_shadda 0x5f1

IBUS_Arabic_sukun

#define IBUS_Arabic_sukun 0x5f2

IBUS_Arabic_madda_above

#define IBUS_Arabic_madda_above 0x1000653

IBUS_Arabic_hamza_above

#define IBUS_Arabic_hamza_above 0x1000654

IBUS_Arabic_hamza_below

#define IBUS_Arabic_hamza_below 0x1000655

IBUS_Arabic_jeh

#define IBUS_Arabic_jeh 0x1000698

IBUS_Arabic_veh

#define IBUS_Arabic_veh 0x10006a4

IBUS_Arabic_keheh

#define IBUS_Arabic_keheh 0x10006a9

IBUS_Arabic_gaf

#define IBUS_Arabic_gaf 0x10006af

IBUS_Arabic_noon_ghunna

#define IBUS_Arabic_noon_ghunna 0x10006ba

IBUS_Arabic_heh_doachashmee

#define IBUS_Arabic_heh_doachashmee 0x10006be

IBUS_Farsi_yeh

#define IBUS_Farsi_yeh 0x10006cc

IBUS_Arabic_farsi_yeh

#define IBUS_Arabic_farsi_yeh 0x10006cc

IBUS_Arabic_yeh_baree

#define IBUS_Arabic_yeh_baree 0x10006d2

IBUS_Arabic_heh_goal

#define IBUS_Arabic_heh_goal 0x10006c1

IBUS_Arabic_switch

#define IBUS_Arabic_switch 0xff7e

IBUS_Cyrillic_GHE_bar

#define IBUS_Cyrillic_GHE_bar 0x1000492

IBUS_Cyrillic_ghe_bar

#define IBUS_Cyrillic_ghe_bar 0x1000493

IBUS_Cyrillic_ZHE_descender

#define IBUS_Cyrillic_ZHE_descender 0x1000496

IBUS_Cyrillic_zhe_descender

#define IBUS_Cyrillic_zhe_descender 0x1000497

IBUS_Cyrillic_KA_descender

#define IBUS_Cyrillic_KA_descender 0x100049a

IBUS_Cyrillic_ka_descender

#define IBUS_Cyrillic_ka_descender 0x100049b

IBUS_Cyrillic_KA_vertstroke

#define IBUS_Cyrillic_KA_vertstroke 0x100049c

IBUS_Cyrillic_ka_vertstroke

#define IBUS_Cyrillic_ka_vertstroke 0x100049d

IBUS_Cyrillic_EN_descender

#define IBUS_Cyrillic_EN_descender 0x10004a2

IBUS_Cyrillic_en_descender

#define IBUS_Cyrillic_en_descender 0x10004a3

IBUS_Cyrillic_U_straight

#define IBUS_Cyrillic_U_straight 0x10004ae

IBUS_Cyrillic_u_straight

#define IBUS_Cyrillic_u_straight 0x10004af

IBUS_Cyrillic_U_straight_bar

#define IBUS_Cyrillic_U_straight_bar 0x10004b0

IBUS_Cyrillic_u_straight_bar

#define IBUS_Cyrillic_u_straight_bar 0x10004b1

IBUS_Cyrillic_HA_descender

#define IBUS_Cyrillic_HA_descender 0x10004b2

IBUS_Cyrillic_ha_descender

#define IBUS_Cyrillic_ha_descender 0x10004b3

IBUS_Cyrillic_CHE_descender

#define IBUS_Cyrillic_CHE_descender 0x10004b6

IBUS_Cyrillic_che_descender

#define IBUS_Cyrillic_che_descender 0x10004b7

IBUS_Cyrillic_CHE_vertstroke

#define IBUS_Cyrillic_CHE_vertstroke 0x10004b8

IBUS_Cyrillic_che_vertstroke

#define IBUS_Cyrillic_che_vertstroke 0x10004b9

IBUS_Cyrillic_SHHA

#define IBUS_Cyrillic_SHHA 0x10004ba

IBUS_Cyrillic_shha

#define IBUS_Cyrillic_shha 0x10004bb

IBUS_Cyrillic_SCHWA

#define IBUS_Cyrillic_SCHWA 0x10004d8

IBUS_Cyrillic_schwa

#define IBUS_Cyrillic_schwa 0x10004d9

IBUS_Cyrillic_I_macron

#define IBUS_Cyrillic_I_macron 0x10004e2

IBUS_Cyrillic_i_macron

#define IBUS_Cyrillic_i_macron 0x10004e3

IBUS_Cyrillic_O_bar

#define IBUS_Cyrillic_O_bar 0x10004e8

IBUS_Cyrillic_o_bar

#define IBUS_Cyrillic_o_bar 0x10004e9

IBUS_Cyrillic_U_macron

#define IBUS_Cyrillic_U_macron 0x10004ee

IBUS_Cyrillic_u_macron

#define IBUS_Cyrillic_u_macron 0x10004ef

IBUS_Serbian_dje

#define IBUS_Serbian_dje 0x6a1

IBUS_Macedonia_gje

#define IBUS_Macedonia_gje 0x6a2

IBUS_Cyrillic_io

#define IBUS_Cyrillic_io 0x6a3

IBUS_Ukrainian_ie

#define IBUS_Ukrainian_ie 0x6a4

IBUS_Ukranian_je

#define IBUS_Ukranian_je 0x6a4

IBUS_Macedonia_dse

#define IBUS_Macedonia_dse 0x6a5

IBUS_Ukrainian_i

#define IBUS_Ukrainian_i 0x6a6

IBUS_Ukranian_i

#define IBUS_Ukranian_i 0x6a6

IBUS_Ukrainian_yi

#define IBUS_Ukrainian_yi 0x6a7

IBUS_Ukranian_yi

#define IBUS_Ukranian_yi 0x6a7

IBUS_Cyrillic_je

#define IBUS_Cyrillic_je 0x6a8

IBUS_Serbian_je

#define IBUS_Serbian_je 0x6a8

IBUS_Cyrillic_lje

#define IBUS_Cyrillic_lje 0x6a9

IBUS_Serbian_lje

#define IBUS_Serbian_lje 0x6a9

IBUS_Cyrillic_nje

#define IBUS_Cyrillic_nje 0x6aa

IBUS_Serbian_nje

#define IBUS_Serbian_nje 0x6aa

IBUS_Serbian_tshe

#define IBUS_Serbian_tshe 0x6ab

IBUS_Macedonia_kje

#define IBUS_Macedonia_kje 0x6ac

IBUS_Ukrainian_ghe_with_upturn

#define IBUS_Ukrainian_ghe_with_upturn 0x6ad

IBUS_Byelorussian_shortu

#define IBUS_Byelorussian_shortu 0x6ae

IBUS_Cyrillic_dzhe

#define IBUS_Cyrillic_dzhe 0x6af

IBUS_Serbian_dze

#define IBUS_Serbian_dze 0x6af

IBUS_numerosign

#define IBUS_numerosign 0x6b0

IBUS_Serbian_DJE

#define IBUS_Serbian_DJE 0x6b1

IBUS_Macedonia_GJE

#define IBUS_Macedonia_GJE 0x6b2

IBUS_Cyrillic_IO

#define IBUS_Cyrillic_IO 0x6b3

IBUS_Ukrainian_IE

#define IBUS_Ukrainian_IE 0x6b4

IBUS_Ukranian_JE

#define IBUS_Ukranian_JE 0x6b4

IBUS_Macedonia_DSE

#define IBUS_Macedonia_DSE 0x6b5

IBUS_Ukrainian_I

#define IBUS_Ukrainian_I 0x6b6

IBUS_Ukranian_I

#define IBUS_Ukranian_I 0x6b6

IBUS_Ukrainian_YI

#define IBUS_Ukrainian_YI 0x6b7

IBUS_Ukranian_YI

#define IBUS_Ukranian_YI 0x6b7

IBUS_Cyrillic_JE

#define IBUS_Cyrillic_JE 0x6b8

IBUS_Serbian_JE

#define IBUS_Serbian_JE 0x6b8

IBUS_Cyrillic_LJE

#define IBUS_Cyrillic_LJE 0x6b9

IBUS_Serbian_LJE

#define IBUS_Serbian_LJE 0x6b9

IBUS_Cyrillic_NJE

#define IBUS_Cyrillic_NJE 0x6ba

IBUS_Serbian_NJE

#define IBUS_Serbian_NJE 0x6ba

IBUS_Serbian_TSHE

#define IBUS_Serbian_TSHE 0x6bb

IBUS_Macedonia_KJE

#define IBUS_Macedonia_KJE 0x6bc

IBUS_Ukrainian_GHE_WITH_UPTURN

#define IBUS_Ukrainian_GHE_WITH_UPTURN 0x6bd

IBUS_Byelorussian_SHORTU

#define IBUS_Byelorussian_SHORTU 0x6be

IBUS_Cyrillic_DZHE

#define IBUS_Cyrillic_DZHE 0x6bf

IBUS_Serbian_DZE

#define IBUS_Serbian_DZE 0x6bf

IBUS_Cyrillic_yu

#define IBUS_Cyrillic_yu 0x6c0

IBUS_Cyrillic_a

#define IBUS_Cyrillic_a 0x6c1

IBUS_Cyrillic_be

#define IBUS_Cyrillic_be 0x6c2

IBUS_Cyrillic_tse

#define IBUS_Cyrillic_tse 0x6c3

IBUS_Cyrillic_de

#define IBUS_Cyrillic_de 0x6c4

IBUS_Cyrillic_ie

#define IBUS_Cyrillic_ie 0x6c5

IBUS_Cyrillic_ef

#define IBUS_Cyrillic_ef 0x6c6

IBUS_Cyrillic_ghe

#define IBUS_Cyrillic_ghe 0x6c7

IBUS_Cyrillic_ha

#define IBUS_Cyrillic_ha 0x6c8

IBUS_Cyrillic_i

#define IBUS_Cyrillic_i 0x6c9

IBUS_Cyrillic_shorti

#define IBUS_Cyrillic_shorti 0x6ca

IBUS_Cyrillic_ka

#define IBUS_Cyrillic_ka 0x6cb

IBUS_Cyrillic_el

#define IBUS_Cyrillic_el 0x6cc

IBUS_Cyrillic_em

#define IBUS_Cyrillic_em 0x6cd

IBUS_Cyrillic_en

#define IBUS_Cyrillic_en 0x6ce

IBUS_Cyrillic_o

#define IBUS_Cyrillic_o 0x6cf

IBUS_Cyrillic_pe

#define IBUS_Cyrillic_pe 0x6d0

IBUS_Cyrillic_ya

#define IBUS_Cyrillic_ya 0x6d1

IBUS_Cyrillic_er

#define IBUS_Cyrillic_er 0x6d2

IBUS_Cyrillic_es

#define IBUS_Cyrillic_es 0x6d3

IBUS_Cyrillic_te

#define IBUS_Cyrillic_te 0x6d4

IBUS_Cyrillic_u

#define IBUS_Cyrillic_u 0x6d5

IBUS_Cyrillic_zhe

#define IBUS_Cyrillic_zhe 0x6d6

IBUS_Cyrillic_ve

#define IBUS_Cyrillic_ve 0x6d7

IBUS_Cyrillic_softsign

#define IBUS_Cyrillic_softsign 0x6d8

IBUS_Cyrillic_yeru

#define IBUS_Cyrillic_yeru 0x6d9

IBUS_Cyrillic_ze

#define IBUS_Cyrillic_ze 0x6da

IBUS_Cyrillic_sha

#define IBUS_Cyrillic_sha 0x6db

IBUS_Cyrillic_e

#define IBUS_Cyrillic_e 0x6dc

IBUS_Cyrillic_shcha

#define IBUS_Cyrillic_shcha 0x6dd

IBUS_Cyrillic_che

#define IBUS_Cyrillic_che 0x6de

IBUS_Cyrillic_hardsign

#define IBUS_Cyrillic_hardsign 0x6df

IBUS_Cyrillic_YU

#define IBUS_Cyrillic_YU 0x6e0

IBUS_Cyrillic_A

#define IBUS_Cyrillic_A 0x6e1

IBUS_Cyrillic_BE

#define IBUS_Cyrillic_BE 0x6e2

IBUS_Cyrillic_TSE

#define IBUS_Cyrillic_TSE 0x6e3

IBUS_Cyrillic_DE

#define IBUS_Cyrillic_DE 0x6e4

IBUS_Cyrillic_IE

#define IBUS_Cyrillic_IE 0x6e5

IBUS_Cyrillic_EF

#define IBUS_Cyrillic_EF 0x6e6

IBUS_Cyrillic_GHE

#define IBUS_Cyrillic_GHE 0x6e7

IBUS_Cyrillic_HA

#define IBUS_Cyrillic_HA 0x6e8

IBUS_Cyrillic_I

#define IBUS_Cyrillic_I 0x6e9

IBUS_Cyrillic_SHORTI

#define IBUS_Cyrillic_SHORTI 0x6ea

IBUS_Cyrillic_KA

#define IBUS_Cyrillic_KA 0x6eb

IBUS_Cyrillic_EL

#define IBUS_Cyrillic_EL 0x6ec

IBUS_Cyrillic_EM

#define IBUS_Cyrillic_EM 0x6ed

IBUS_Cyrillic_EN

#define IBUS_Cyrillic_EN 0x6ee

IBUS_Cyrillic_O

#define IBUS_Cyrillic_O 0x6ef

IBUS_Cyrillic_PE

#define IBUS_Cyrillic_PE 0x6f0

IBUS_Cyrillic_YA

#define IBUS_Cyrillic_YA 0x6f1

IBUS_Cyrillic_ER

#define IBUS_Cyrillic_ER 0x6f2

IBUS_Cyrillic_ES

#define IBUS_Cyrillic_ES 0x6f3

IBUS_Cyrillic_TE

#define IBUS_Cyrillic_TE 0x6f4

IBUS_Cyrillic_U

#define IBUS_Cyrillic_U 0x6f5

IBUS_Cyrillic_ZHE

#define IBUS_Cyrillic_ZHE 0x6f6

IBUS_Cyrillic_VE

#define IBUS_Cyrillic_VE 0x6f7

IBUS_Cyrillic_SOFTSIGN

#define IBUS_Cyrillic_SOFTSIGN 0x6f8

IBUS_Cyrillic_YERU

#define IBUS_Cyrillic_YERU 0x6f9

IBUS_Cyrillic_ZE

#define IBUS_Cyrillic_ZE 0x6fa

IBUS_Cyrillic_SHA

#define IBUS_Cyrillic_SHA 0x6fb

IBUS_Cyrillic_E

#define IBUS_Cyrillic_E 0x6fc

IBUS_Cyrillic_SHCHA

#define IBUS_Cyrillic_SHCHA 0x6fd

IBUS_Cyrillic_CHE

#define IBUS_Cyrillic_CHE 0x6fe

IBUS_Cyrillic_HARDSIGN

#define IBUS_Cyrillic_HARDSIGN 0x6ff

IBUS_Greek_ALPHAaccent

#define IBUS_Greek_ALPHAaccent 0x7a1

IBUS_Greek_EPSILONaccent

#define IBUS_Greek_EPSILONaccent 0x7a2

IBUS_Greek_ETAaccent

#define IBUS_Greek_ETAaccent 0x7a3

IBUS_Greek_IOTAaccent

#define IBUS_Greek_IOTAaccent 0x7a4

IBUS_Greek_IOTAdieresis

#define IBUS_Greek_IOTAdieresis 0x7a5

IBUS_Greek_IOTAdiaeresis

#define IBUS_Greek_IOTAdiaeresis 0x7a5

IBUS_Greek_OMICRONaccent

#define IBUS_Greek_OMICRONaccent 0x7a7

IBUS_Greek_UPSILONaccent

#define IBUS_Greek_UPSILONaccent 0x7a8

IBUS_Greek_UPSILONdieresis

#define IBUS_Greek_UPSILONdieresis 0x7a9

IBUS_Greek_OMEGAaccent

#define IBUS_Greek_OMEGAaccent 0x7ab

IBUS_Greek_accentdieresis

#define IBUS_Greek_accentdieresis 0x7ae

IBUS_Greek_horizbar

#define IBUS_Greek_horizbar 0x7af

IBUS_Greek_alphaaccent

#define IBUS_Greek_alphaaccent 0x7b1

IBUS_Greek_epsilonaccent

#define IBUS_Greek_epsilonaccent 0x7b2

IBUS_Greek_etaaccent

#define IBUS_Greek_etaaccent 0x7b3

IBUS_Greek_iotaaccent

#define IBUS_Greek_iotaaccent 0x7b4

IBUS_Greek_iotadieresis

#define IBUS_Greek_iotadieresis 0x7b5

IBUS_Greek_iotaaccentdieresis

#define IBUS_Greek_iotaaccentdieresis 0x7b6

IBUS_Greek_omicronaccent

#define IBUS_Greek_omicronaccent 0x7b7

IBUS_Greek_upsilonaccent

#define IBUS_Greek_upsilonaccent 0x7b8

IBUS_Greek_upsilondieresis

#define IBUS_Greek_upsilondieresis 0x7b9

IBUS_Greek_upsilonaccentdieresis

#define IBUS_Greek_upsilonaccentdieresis 0x7ba

IBUS_Greek_omegaaccent

#define IBUS_Greek_omegaaccent 0x7bb

IBUS_Greek_ALPHA

#define IBUS_Greek_ALPHA 0x7c1

IBUS_Greek_BETA

#define IBUS_Greek_BETA 0x7c2

IBUS_Greek_GAMMA

#define IBUS_Greek_GAMMA 0x7c3

IBUS_Greek_DELTA

#define IBUS_Greek_DELTA 0x7c4

IBUS_Greek_EPSILON

#define IBUS_Greek_EPSILON 0x7c5

IBUS_Greek_ZETA

#define IBUS_Greek_ZETA 0x7c6

IBUS_Greek_ETA

#define IBUS_Greek_ETA 0x7c7

IBUS_Greek_THETA

#define IBUS_Greek_THETA 0x7c8

IBUS_Greek_IOTA

#define IBUS_Greek_IOTA 0x7c9

IBUS_Greek_KAPPA

#define IBUS_Greek_KAPPA 0x7ca

IBUS_Greek_LAMDA

#define IBUS_Greek_LAMDA 0x7cb

IBUS_Greek_LAMBDA

#define IBUS_Greek_LAMBDA 0x7cb

IBUS_Greek_MU

#define IBUS_Greek_MU 0x7cc

IBUS_Greek_NU

#define IBUS_Greek_NU 0x7cd

IBUS_Greek_XI

#define IBUS_Greek_XI 0x7ce

IBUS_Greek_OMICRON

#define IBUS_Greek_OMICRON 0x7cf

IBUS_Greek_PI

#define IBUS_Greek_PI 0x7d0

IBUS_Greek_RHO

#define IBUS_Greek_RHO 0x7d1

IBUS_Greek_SIGMA

#define IBUS_Greek_SIGMA 0x7d2

IBUS_Greek_TAU

#define IBUS_Greek_TAU 0x7d4

IBUS_Greek_UPSILON

#define IBUS_Greek_UPSILON 0x7d5

IBUS_Greek_PHI

#define IBUS_Greek_PHI 0x7d6

IBUS_Greek_CHI

#define IBUS_Greek_CHI 0x7d7

IBUS_Greek_PSI

#define IBUS_Greek_PSI 0x7d8

IBUS_Greek_OMEGA

#define IBUS_Greek_OMEGA 0x7d9

IBUS_Greek_alpha

#define IBUS_Greek_alpha 0x7e1

IBUS_Greek_beta

#define IBUS_Greek_beta 0x7e2

IBUS_Greek_gamma

#define IBUS_Greek_gamma 0x7e3

IBUS_Greek_delta

#define IBUS_Greek_delta 0x7e4

IBUS_Greek_epsilon

#define IBUS_Greek_epsilon 0x7e5

IBUS_Greek_zeta

#define IBUS_Greek_zeta 0x7e6

IBUS_Greek_eta

#define IBUS_Greek_eta 0x7e7

IBUS_Greek_theta

#define IBUS_Greek_theta 0x7e8

IBUS_Greek_iota

#define IBUS_Greek_iota 0x7e9

IBUS_Greek_kappa

#define IBUS_Greek_kappa 0x7ea

IBUS_Greek_lamda

#define IBUS_Greek_lamda 0x7eb

IBUS_Greek_lambda

#define IBUS_Greek_lambda 0x7eb

IBUS_Greek_mu

#define IBUS_Greek_mu 0x7ec

IBUS_Greek_nu

#define IBUS_Greek_nu 0x7ed

IBUS_Greek_xi

#define IBUS_Greek_xi 0x7ee

IBUS_Greek_omicron

#define IBUS_Greek_omicron 0x7ef

IBUS_Greek_pi

#define IBUS_Greek_pi 0x7f0

IBUS_Greek_rho

#define IBUS_Greek_rho 0x7f1

IBUS_Greek_sigma

#define IBUS_Greek_sigma 0x7f2

IBUS_Greek_finalsmallsigma

#define IBUS_Greek_finalsmallsigma 0x7f3

IBUS_Greek_tau

#define IBUS_Greek_tau 0x7f4

IBUS_Greek_upsilon

#define IBUS_Greek_upsilon 0x7f5

IBUS_Greek_phi

#define IBUS_Greek_phi 0x7f6

IBUS_Greek_chi

#define IBUS_Greek_chi 0x7f7

IBUS_Greek_psi

#define IBUS_Greek_psi 0x7f8

IBUS_Greek_omega

#define IBUS_Greek_omega 0x7f9

IBUS_Greek_switch

#define IBUS_Greek_switch 0xff7e

IBUS_leftradical

#define IBUS_leftradical 0x8a1

IBUS_topleftradical

#define IBUS_topleftradical 0x8a2

IBUS_horizconnector

#define IBUS_horizconnector 0x8a3

IBUS_topintegral

#define IBUS_topintegral 0x8a4

IBUS_botintegral

#define IBUS_botintegral 0x8a5

IBUS_vertconnector

#define IBUS_vertconnector 0x8a6

IBUS_topleftsqbracket

#define IBUS_topleftsqbracket 0x8a7

IBUS_botleftsqbracket

#define IBUS_botleftsqbracket 0x8a8

IBUS_toprightsqbracket

#define IBUS_toprightsqbracket 0x8a9

IBUS_botrightsqbracket

#define IBUS_botrightsqbracket 0x8aa

IBUS_topleftparens

#define IBUS_topleftparens 0x8ab

IBUS_botleftparens

#define IBUS_botleftparens 0x8ac

IBUS_toprightparens

#define IBUS_toprightparens 0x8ad

IBUS_botrightparens

#define IBUS_botrightparens 0x8ae

IBUS_leftmiddlecurlybrace

#define IBUS_leftmiddlecurlybrace 0x8af

IBUS_rightmiddlecurlybrace

#define IBUS_rightmiddlecurlybrace 0x8b0

IBUS_topleftsummation

#define IBUS_topleftsummation 0x8b1

IBUS_botleftsummation

#define IBUS_botleftsummation 0x8b2

IBUS_topvertsummationconnector

#define IBUS_topvertsummationconnector 0x8b3

IBUS_botvertsummationconnector

#define IBUS_botvertsummationconnector 0x8b4

IBUS_toprightsummation

#define IBUS_toprightsummation 0x8b5

IBUS_botrightsummation

#define IBUS_botrightsummation 0x8b6

IBUS_rightmiddlesummation

#define IBUS_rightmiddlesummation 0x8b7

IBUS_lessthanequal

#define IBUS_lessthanequal 0x8bc

IBUS_notequal

#define IBUS_notequal 0x8bd

IBUS_greaterthanequal

#define IBUS_greaterthanequal 0x8be

IBUS_integral

#define IBUS_integral 0x8bf

IBUS_therefore

#define IBUS_therefore 0x8c0

IBUS_variation

#define IBUS_variation 0x8c1

IBUS_infinity

#define IBUS_infinity 0x8c2

IBUS_nabla

#define IBUS_nabla 0x8c5

IBUS_approximate

#define IBUS_approximate 0x8c8

IBUS_similarequal

#define IBUS_similarequal 0x8c9

IBUS_ifonlyif

#define IBUS_ifonlyif 0x8cd

IBUS_implies

#define IBUS_implies 0x8ce

IBUS_identical

#define IBUS_identical 0x8cf

IBUS_radical

#define IBUS_radical 0x8d6

IBUS_includedin

#define IBUS_includedin 0x8da

IBUS_includes

#define IBUS_includes 0x8db

IBUS_intersection

#define IBUS_intersection 0x8dc

IBUS_union

#define IBUS_union 0x8dd

IBUS_logicaland

#define IBUS_logicaland 0x8de

IBUS_logicalor

#define IBUS_logicalor 0x8df

IBUS_partialderivative

#define IBUS_partialderivative 0x8ef

IBUS_function

#define IBUS_function 0x8f6

IBUS_leftarrow

#define IBUS_leftarrow 0x8fb

IBUS_uparrow

#define IBUS_uparrow 0x8fc

IBUS_rightarrow

#define IBUS_rightarrow 0x8fd

IBUS_downarrow

#define IBUS_downarrow 0x8fe

IBUS_blank

#define IBUS_blank 0x9df

IBUS_soliddiamond

#define IBUS_soliddiamond 0x9e0

IBUS_checkerboard

#define IBUS_checkerboard 0x9e1

IBUS_ht

#define IBUS_ht 0x9e2

IBUS_ff

#define IBUS_ff 0x9e3

IBUS_cr

#define IBUS_cr 0x9e4

IBUS_lf

#define IBUS_lf 0x9e5

IBUS_nl

#define IBUS_nl 0x9e8

IBUS_vt

#define IBUS_vt 0x9e9

IBUS_lowrightcorner

#define IBUS_lowrightcorner 0x9ea

IBUS_uprightcorner

#define IBUS_uprightcorner 0x9eb

IBUS_upleftcorner

#define IBUS_upleftcorner 0x9ec

IBUS_lowleftcorner

#define IBUS_lowleftcorner 0x9ed

IBUS_crossinglines

#define IBUS_crossinglines 0x9ee

IBUS_horizlinescan1

#define IBUS_horizlinescan1 0x9ef

IBUS_horizlinescan3

#define IBUS_horizlinescan3 0x9f0

IBUS_horizlinescan5

#define IBUS_horizlinescan5 0x9f1

IBUS_horizlinescan7

#define IBUS_horizlinescan7 0x9f2

IBUS_horizlinescan9

#define IBUS_horizlinescan9 0x9f3

IBUS_leftt

#define IBUS_leftt 0x9f4

IBUS_rightt

#define IBUS_rightt 0x9f5

IBUS_bott

#define IBUS_bott 0x9f6

IBUS_topt

#define IBUS_topt 0x9f7

IBUS_vertbar

#define IBUS_vertbar 0x9f8

IBUS_emspace

#define IBUS_emspace 0xaa1

IBUS_enspace

#define IBUS_enspace 0xaa2

IBUS_em3space

#define IBUS_em3space 0xaa3

IBUS_em4space

#define IBUS_em4space 0xaa4

IBUS_digitspace

#define IBUS_digitspace 0xaa5

IBUS_punctspace

#define IBUS_punctspace 0xaa6

IBUS_thinspace

#define IBUS_thinspace 0xaa7

IBUS_hairspace

#define IBUS_hairspace 0xaa8

IBUS_emdash

#define IBUS_emdash 0xaa9

IBUS_endash

#define IBUS_endash 0xaaa

IBUS_signifblank

#define IBUS_signifblank 0xaac

IBUS_ellipsis

#define IBUS_ellipsis 0xaae

IBUS_doubbaselinedot

#define IBUS_doubbaselinedot 0xaaf

IBUS_onethird

#define IBUS_onethird 0xab0

IBUS_twothirds

#define IBUS_twothirds 0xab1

IBUS_onefifth

#define IBUS_onefifth 0xab2

IBUS_twofifths

#define IBUS_twofifths 0xab3

IBUS_threefifths

#define IBUS_threefifths 0xab4

IBUS_fourfifths

#define IBUS_fourfifths 0xab5

IBUS_onesixth

#define IBUS_onesixth 0xab6

IBUS_fivesixths

#define IBUS_fivesixths 0xab7

IBUS_careof

#define IBUS_careof 0xab8

IBUS_figdash

#define IBUS_figdash 0xabb

IBUS_leftanglebracket

#define IBUS_leftanglebracket 0xabc

IBUS_decimalpoint

#define IBUS_decimalpoint 0xabd

IBUS_rightanglebracket

#define IBUS_rightanglebracket 0xabe

IBUS_marker

#define IBUS_marker 0xabf

IBUS_oneeighth

#define IBUS_oneeighth 0xac3

IBUS_threeeighths

#define IBUS_threeeighths 0xac4

IBUS_fiveeighths

#define IBUS_fiveeighths 0xac5

IBUS_seveneighths

#define IBUS_seveneighths 0xac6

IBUS_trademark

#define IBUS_trademark 0xac9

IBUS_signaturemark

#define IBUS_signaturemark 0xaca

IBUS_trademarkincircle

#define IBUS_trademarkincircle 0xacb

IBUS_leftopentriangle

#define IBUS_leftopentriangle 0xacc

IBUS_rightopentriangle

#define IBUS_rightopentriangle 0xacd

IBUS_emopencircle

#define IBUS_emopencircle 0xace

IBUS_emopenrectangle

#define IBUS_emopenrectangle 0xacf

IBUS_leftsinglequotemark

#define IBUS_leftsinglequotemark 0xad0

IBUS_rightsinglequotemark

#define IBUS_rightsinglequotemark 0xad1

IBUS_leftdoublequotemark

#define IBUS_leftdoublequotemark 0xad2

IBUS_rightdoublequotemark

#define IBUS_rightdoublequotemark 0xad3

IBUS_prescription

#define IBUS_prescription 0xad4

IBUS_minutes

#define IBUS_minutes 0xad6

IBUS_seconds

#define IBUS_seconds 0xad7

IBUS_latincross

#define IBUS_latincross 0xad9

IBUS_hexagram

#define IBUS_hexagram 0xada

IBUS_filledrectbullet

#define IBUS_filledrectbullet 0xadb

IBUS_filledlefttribullet

#define IBUS_filledlefttribullet 0xadc

IBUS_filledrighttribullet

#define IBUS_filledrighttribullet 0xadd

IBUS_emfilledcircle

#define IBUS_emfilledcircle 0xade

IBUS_emfilledrect

#define IBUS_emfilledrect 0xadf

IBUS_enopencircbullet

#define IBUS_enopencircbullet 0xae0

IBUS_enopensquarebullet

#define IBUS_enopensquarebullet 0xae1

IBUS_openrectbullet

#define IBUS_openrectbullet 0xae2

IBUS_opentribulletup

#define IBUS_opentribulletup 0xae3

IBUS_opentribulletdown

#define IBUS_opentribulletdown 0xae4

IBUS_openstar

#define IBUS_openstar 0xae5

IBUS_enfilledcircbullet

#define IBUS_enfilledcircbullet 0xae6

IBUS_enfilledsqbullet

#define IBUS_enfilledsqbullet 0xae7

IBUS_filledtribulletup

#define IBUS_filledtribulletup 0xae8

IBUS_filledtribulletdown

#define IBUS_filledtribulletdown 0xae9

IBUS_leftpointer

#define IBUS_leftpointer 0xaea

IBUS_rightpointer

#define IBUS_rightpointer 0xaeb

IBUS_club

#define IBUS_club 0xaec

IBUS_diamond

#define IBUS_diamond 0xaed

IBUS_heart

#define IBUS_heart 0xaee

IBUS_maltesecross

#define IBUS_maltesecross 0xaf0

IBUS_dagger

#define IBUS_dagger 0xaf1

IBUS_doubledagger

#define IBUS_doubledagger 0xaf2

IBUS_checkmark

#define IBUS_checkmark 0xaf3

IBUS_ballotcross

#define IBUS_ballotcross 0xaf4

IBUS_musicalsharp

#define IBUS_musicalsharp 0xaf5

IBUS_musicalflat

#define IBUS_musicalflat 0xaf6

IBUS_malesymbol

#define IBUS_malesymbol 0xaf7

IBUS_femalesymbol

#define IBUS_femalesymbol 0xaf8

IBUS_telephone

#define IBUS_telephone 0xaf9

IBUS_telephonerecorder

#define IBUS_telephonerecorder 0xafa

IBUS_phonographcopyright

#define IBUS_phonographcopyright 0xafb

IBUS_caret

#define IBUS_caret 0xafc

IBUS_singlelowquotemark

#define IBUS_singlelowquotemark 0xafd

IBUS_doublelowquotemark

#define IBUS_doublelowquotemark 0xafe

IBUS_cursor

#define IBUS_cursor 0xaff

IBUS_leftcaret

#define IBUS_leftcaret 0xba3

IBUS_rightcaret

#define IBUS_rightcaret 0xba6

IBUS_downcaret

#define IBUS_downcaret 0xba8

IBUS_upcaret

#define IBUS_upcaret 0xba9

IBUS_overbar

#define IBUS_overbar 0xbc0

IBUS_downtack

#define IBUS_downtack 0xbc2

IBUS_upshoe

#define IBUS_upshoe 0xbc3

IBUS_downstile

#define IBUS_downstile 0xbc4

IBUS_underbar

#define IBUS_underbar 0xbc6

IBUS_jot

#define IBUS_jot 0xbca

IBUS_quad

#define IBUS_quad 0xbcc

IBUS_uptack

#define IBUS_uptack 0xbce

IBUS_circle

#define IBUS_circle 0xbcf

IBUS_upstile

#define IBUS_upstile 0xbd3

IBUS_downshoe

#define IBUS_downshoe 0xbd6

IBUS_rightshoe

#define IBUS_rightshoe 0xbd8

IBUS_leftshoe

#define IBUS_leftshoe 0xbda

IBUS_lefttack

#define IBUS_lefttack 0xbdc

IBUS_righttack

#define IBUS_righttack 0xbfc

IBUS_hebrew_doublelowline

#define IBUS_hebrew_doublelowline 0xcdf

IBUS_hebrew_aleph

#define IBUS_hebrew_aleph 0xce0

IBUS_hebrew_bet

#define IBUS_hebrew_bet 0xce1

IBUS_hebrew_beth

#define IBUS_hebrew_beth 0xce1

IBUS_hebrew_gimel

#define IBUS_hebrew_gimel 0xce2

IBUS_hebrew_gimmel

#define IBUS_hebrew_gimmel 0xce2

IBUS_hebrew_dalet

#define IBUS_hebrew_dalet 0xce3

IBUS_hebrew_daleth

#define IBUS_hebrew_daleth 0xce3

IBUS_hebrew_he

#define IBUS_hebrew_he 0xce4

IBUS_hebrew_waw

#define IBUS_hebrew_waw 0xce5

IBUS_hebrew_zain

#define IBUS_hebrew_zain 0xce6

IBUS_hebrew_zayin

#define IBUS_hebrew_zayin 0xce6

IBUS_hebrew_chet

#define IBUS_hebrew_chet 0xce7

IBUS_hebrew_het

#define IBUS_hebrew_het 0xce7

IBUS_hebrew_tet

#define IBUS_hebrew_tet 0xce8

IBUS_hebrew_teth

#define IBUS_hebrew_teth 0xce8

IBUS_hebrew_yod

#define IBUS_hebrew_yod 0xce9

IBUS_hebrew_finalkaph

#define IBUS_hebrew_finalkaph 0xcea

IBUS_hebrew_kaph

#define IBUS_hebrew_kaph 0xceb

IBUS_hebrew_lamed

#define IBUS_hebrew_lamed 0xcec

IBUS_hebrew_finalmem

#define IBUS_hebrew_finalmem 0xced

IBUS_hebrew_mem

#define IBUS_hebrew_mem 0xcee

IBUS_hebrew_finalnun

#define IBUS_hebrew_finalnun 0xcef

IBUS_hebrew_nun

#define IBUS_hebrew_nun 0xcf0

IBUS_hebrew_samech

#define IBUS_hebrew_samech 0xcf1

IBUS_hebrew_samekh

#define IBUS_hebrew_samekh 0xcf1

IBUS_hebrew_ayin

#define IBUS_hebrew_ayin 0xcf2

IBUS_hebrew_finalpe

#define IBUS_hebrew_finalpe 0xcf3

IBUS_hebrew_pe

#define IBUS_hebrew_pe 0xcf4

IBUS_hebrew_finalzade

#define IBUS_hebrew_finalzade 0xcf5

IBUS_hebrew_finalzadi

#define IBUS_hebrew_finalzadi 0xcf5

IBUS_hebrew_zade

#define IBUS_hebrew_zade 0xcf6

IBUS_hebrew_zadi

#define IBUS_hebrew_zadi 0xcf6

IBUS_hebrew_qoph

#define IBUS_hebrew_qoph 0xcf7

IBUS_hebrew_kuf

#define IBUS_hebrew_kuf 0xcf7

IBUS_hebrew_resh

#define IBUS_hebrew_resh 0xcf8

IBUS_hebrew_shin

#define IBUS_hebrew_shin 0xcf9

IBUS_hebrew_taw

#define IBUS_hebrew_taw 0xcfa

IBUS_hebrew_taf

#define IBUS_hebrew_taf 0xcfa

IBUS_Hebrew_switch

#define IBUS_Hebrew_switch 0xff7e

IBUS_Thai_kokai

#define IBUS_Thai_kokai 0xda1

IBUS_Thai_khokhai

#define IBUS_Thai_khokhai 0xda2

IBUS_Thai_khokhuat

#define IBUS_Thai_khokhuat 0xda3

IBUS_Thai_khokhwai

#define IBUS_Thai_khokhwai 0xda4

IBUS_Thai_khokhon

#define IBUS_Thai_khokhon 0xda5

IBUS_Thai_khorakhang

#define IBUS_Thai_khorakhang 0xda6

IBUS_Thai_ngongu

#define IBUS_Thai_ngongu 0xda7

IBUS_Thai_chochan

#define IBUS_Thai_chochan 0xda8

IBUS_Thai_choching

#define IBUS_Thai_choching 0xda9

IBUS_Thai_chochang

#define IBUS_Thai_chochang 0xdaa

IBUS_Thai_soso

#define IBUS_Thai_soso 0xdab

IBUS_Thai_chochoe

#define IBUS_Thai_chochoe 0xdac

IBUS_Thai_yoying

#define IBUS_Thai_yoying 0xdad

IBUS_Thai_dochada

#define IBUS_Thai_dochada 0xdae

IBUS_Thai_topatak

#define IBUS_Thai_topatak 0xdaf

IBUS_Thai_thothan

#define IBUS_Thai_thothan 0xdb0

IBUS_Thai_thonangmontho

#define IBUS_Thai_thonangmontho 0xdb1

IBUS_Thai_thophuthao

#define IBUS_Thai_thophuthao 0xdb2

IBUS_Thai_nonen

#define IBUS_Thai_nonen 0xdb3

IBUS_Thai_dodek

#define IBUS_Thai_dodek 0xdb4

IBUS_Thai_totao

#define IBUS_Thai_totao 0xdb5

IBUS_Thai_thothung

#define IBUS_Thai_thothung 0xdb6

IBUS_Thai_thothahan

#define IBUS_Thai_thothahan 0xdb7

IBUS_Thai_thothong

#define IBUS_Thai_thothong 0xdb8

IBUS_Thai_nonu

#define IBUS_Thai_nonu 0xdb9

IBUS_Thai_bobaimai

#define IBUS_Thai_bobaimai 0xdba

IBUS_Thai_popla

#define IBUS_Thai_popla 0xdbb

IBUS_Thai_phophung

#define IBUS_Thai_phophung 0xdbc

IBUS_Thai_fofa

#define IBUS_Thai_fofa 0xdbd

IBUS_Thai_phophan

#define IBUS_Thai_phophan 0xdbe

IBUS_Thai_fofan

#define IBUS_Thai_fofan 0xdbf

IBUS_Thai_phosamphao

#define IBUS_Thai_phosamphao 0xdc0

IBUS_Thai_moma

#define IBUS_Thai_moma 0xdc1

IBUS_Thai_yoyak

#define IBUS_Thai_yoyak 0xdc2

IBUS_Thai_rorua

#define IBUS_Thai_rorua 0xdc3

IBUS_Thai_ru

#define IBUS_Thai_ru 0xdc4

IBUS_Thai_loling

#define IBUS_Thai_loling 0xdc5

IBUS_Thai_lu

#define IBUS_Thai_lu 0xdc6

IBUS_Thai_wowaen

#define IBUS_Thai_wowaen 0xdc7

IBUS_Thai_sosala

#define IBUS_Thai_sosala 0xdc8

IBUS_Thai_sorusi

#define IBUS_Thai_sorusi 0xdc9

IBUS_Thai_sosua

#define IBUS_Thai_sosua 0xdca

IBUS_Thai_hohip

#define IBUS_Thai_hohip 0xdcb

IBUS_Thai_lochula

#define IBUS_Thai_lochula 0xdcc

IBUS_Thai_oang

#define IBUS_Thai_oang 0xdcd

IBUS_Thai_honokhuk

#define IBUS_Thai_honokhuk 0xdce

IBUS_Thai_paiyannoi

#define IBUS_Thai_paiyannoi 0xdcf

IBUS_Thai_saraa

#define IBUS_Thai_saraa 0xdd0

IBUS_Thai_maihanakat

#define IBUS_Thai_maihanakat 0xdd1

IBUS_Thai_saraaa

#define IBUS_Thai_saraaa 0xdd2

IBUS_Thai_saraam

#define IBUS_Thai_saraam 0xdd3

IBUS_Thai_sarai

#define IBUS_Thai_sarai 0xdd4

IBUS_Thai_saraii

#define IBUS_Thai_saraii 0xdd5

IBUS_Thai_saraue

#define IBUS_Thai_saraue 0xdd6

IBUS_Thai_sarauee

#define IBUS_Thai_sarauee 0xdd7

IBUS_Thai_sarau

#define IBUS_Thai_sarau 0xdd8

IBUS_Thai_sarauu

#define IBUS_Thai_sarauu 0xdd9

IBUS_Thai_phinthu

#define IBUS_Thai_phinthu 0xdda

IBUS_Thai_maihanakat_maitho

#define IBUS_Thai_maihanakat_maitho 0xdde

IBUS_Thai_baht

#define IBUS_Thai_baht 0xddf

IBUS_Thai_sarae

#define IBUS_Thai_sarae 0xde0

IBUS_Thai_saraae

#define IBUS_Thai_saraae 0xde1

IBUS_Thai_sarao

#define IBUS_Thai_sarao 0xde2

IBUS_Thai_saraaimaimuan

#define IBUS_Thai_saraaimaimuan 0xde3

IBUS_Thai_saraaimaimalai

#define IBUS_Thai_saraaimaimalai 0xde4

IBUS_Thai_lakkhangyao

#define IBUS_Thai_lakkhangyao 0xde5

IBUS_Thai_maiyamok

#define IBUS_Thai_maiyamok 0xde6

IBUS_Thai_maitaikhu

#define IBUS_Thai_maitaikhu 0xde7

IBUS_Thai_maiek

#define IBUS_Thai_maiek 0xde8

IBUS_Thai_maitho

#define IBUS_Thai_maitho 0xde9

IBUS_Thai_maitri

#define IBUS_Thai_maitri 0xdea

IBUS_Thai_maichattawa

#define IBUS_Thai_maichattawa 0xdeb

IBUS_Thai_thanthakhat

#define IBUS_Thai_thanthakhat 0xdec

IBUS_Thai_nikhahit

#define IBUS_Thai_nikhahit 0xded

IBUS_Thai_leksun

#define IBUS_Thai_leksun 0xdf0

IBUS_Thai_leknung

#define IBUS_Thai_leknung 0xdf1

IBUS_Thai_leksong

#define IBUS_Thai_leksong 0xdf2

IBUS_Thai_leksam

#define IBUS_Thai_leksam 0xdf3

IBUS_Thai_leksi

#define IBUS_Thai_leksi 0xdf4

IBUS_Thai_lekha

#define IBUS_Thai_lekha 0xdf5

IBUS_Thai_lekhok

#define IBUS_Thai_lekhok 0xdf6

IBUS_Thai_lekchet

#define IBUS_Thai_lekchet 0xdf7

IBUS_Thai_lekpaet

#define IBUS_Thai_lekpaet 0xdf8

IBUS_Thai_lekkao

#define IBUS_Thai_lekkao 0xdf9

IBUS_Hangul

#define IBUS_Hangul 0xff31

IBUS_Hangul_Start

#define IBUS_Hangul_Start 0xff32

IBUS_Hangul_End

#define IBUS_Hangul_End 0xff33

IBUS_Hangul_Hanja

#define IBUS_Hangul_Hanja 0xff34

IBUS_Hangul_Jamo

#define IBUS_Hangul_Jamo 0xff35

IBUS_Hangul_Romaja

#define IBUS_Hangul_Romaja 0xff36

IBUS_Hangul_Codeinput

#define IBUS_Hangul_Codeinput 0xff37

IBUS_Hangul_Jeonja

#define IBUS_Hangul_Jeonja 0xff38

IBUS_Hangul_Banja

#define IBUS_Hangul_Banja 0xff39

IBUS_Hangul_PreHanja

#define IBUS_Hangul_PreHanja 0xff3a

IBUS_Hangul_PostHanja

#define IBUS_Hangul_PostHanja 0xff3b

IBUS_Hangul_SingleCandidate

#define IBUS_Hangul_SingleCandidate 0xff3c

IBUS_Hangul_MultipleCandidate

#define IBUS_Hangul_MultipleCandidate 0xff3d

IBUS_Hangul_PreviousCandidate

#define IBUS_Hangul_PreviousCandidate 0xff3e

IBUS_Hangul_Special

#define IBUS_Hangul_Special 0xff3f

IBUS_Hangul_switch

#define IBUS_Hangul_switch 0xff7e

IBUS_Hangul_Kiyeog

#define IBUS_Hangul_Kiyeog 0xea1

IBUS_Hangul_SsangKiyeog

#define IBUS_Hangul_SsangKiyeog 0xea2

IBUS_Hangul_KiyeogSios

#define IBUS_Hangul_KiyeogSios 0xea3

IBUS_Hangul_Nieun

#define IBUS_Hangul_Nieun 0xea4

IBUS_Hangul_NieunJieuj

#define IBUS_Hangul_NieunJieuj 0xea5

IBUS_Hangul_NieunHieuh

#define IBUS_Hangul_NieunHieuh 0xea6

IBUS_Hangul_Dikeud

#define IBUS_Hangul_Dikeud 0xea7

IBUS_Hangul_SsangDikeud

#define IBUS_Hangul_SsangDikeud 0xea8

IBUS_Hangul_Rieul

#define IBUS_Hangul_Rieul 0xea9

IBUS_Hangul_RieulKiyeog

#define IBUS_Hangul_RieulKiyeog 0xeaa

IBUS_Hangul_RieulMieum

#define IBUS_Hangul_RieulMieum 0xeab

IBUS_Hangul_RieulPieub

#define IBUS_Hangul_RieulPieub 0xeac

IBUS_Hangul_RieulSios

#define IBUS_Hangul_RieulSios 0xead

IBUS_Hangul_RieulTieut

#define IBUS_Hangul_RieulTieut 0xeae

IBUS_Hangul_RieulPhieuf

#define IBUS_Hangul_RieulPhieuf 0xeaf

IBUS_Hangul_RieulHieuh

#define IBUS_Hangul_RieulHieuh 0xeb0

IBUS_Hangul_Mieum

#define IBUS_Hangul_Mieum 0xeb1

IBUS_Hangul_Pieub

#define IBUS_Hangul_Pieub 0xeb2

IBUS_Hangul_SsangPieub

#define IBUS_Hangul_SsangPieub 0xeb3

IBUS_Hangul_PieubSios

#define IBUS_Hangul_PieubSios 0xeb4

IBUS_Hangul_Sios

#define IBUS_Hangul_Sios 0xeb5

IBUS_Hangul_SsangSios

#define IBUS_Hangul_SsangSios 0xeb6

IBUS_Hangul_Ieung

#define IBUS_Hangul_Ieung 0xeb7

IBUS_Hangul_Jieuj

#define IBUS_Hangul_Jieuj 0xeb8

IBUS_Hangul_SsangJieuj

#define IBUS_Hangul_SsangJieuj 0xeb9

IBUS_Hangul_Cieuc

#define IBUS_Hangul_Cieuc 0xeba

IBUS_Hangul_Khieuq

#define IBUS_Hangul_Khieuq 0xebb

IBUS_Hangul_Tieut

#define IBUS_Hangul_Tieut 0xebc

IBUS_Hangul_Phieuf

#define IBUS_Hangul_Phieuf 0xebd

IBUS_Hangul_Hieuh

#define IBUS_Hangul_Hieuh 0xebe

IBUS_Hangul_A

#define IBUS_Hangul_A 0xebf

IBUS_Hangul_AE

#define IBUS_Hangul_AE 0xec0

IBUS_Hangul_YA

#define IBUS_Hangul_YA 0xec1

IBUS_Hangul_YAE

#define IBUS_Hangul_YAE 0xec2

IBUS_Hangul_EO

#define IBUS_Hangul_EO 0xec3

IBUS_Hangul_E

#define IBUS_Hangul_E 0xec4

IBUS_Hangul_YEO

#define IBUS_Hangul_YEO 0xec5

IBUS_Hangul_YE

#define IBUS_Hangul_YE 0xec6

IBUS_Hangul_O

#define IBUS_Hangul_O 0xec7

IBUS_Hangul_WA

#define IBUS_Hangul_WA 0xec8

IBUS_Hangul_WAE

#define IBUS_Hangul_WAE 0xec9

IBUS_Hangul_OE

#define IBUS_Hangul_OE 0xeca

IBUS_Hangul_YO

#define IBUS_Hangul_YO 0xecb

IBUS_Hangul_U

#define IBUS_Hangul_U 0xecc

IBUS_Hangul_WEO

#define IBUS_Hangul_WEO 0xecd

IBUS_Hangul_WE

#define IBUS_Hangul_WE 0xece

IBUS_Hangul_WI

#define IBUS_Hangul_WI 0xecf

IBUS_Hangul_YU

#define IBUS_Hangul_YU 0xed0

IBUS_Hangul_EU

#define IBUS_Hangul_EU 0xed1

IBUS_Hangul_YI

#define IBUS_Hangul_YI 0xed2

IBUS_Hangul_I

#define IBUS_Hangul_I 0xed3

IBUS_Hangul_J_Kiyeog

#define IBUS_Hangul_J_Kiyeog 0xed4

IBUS_Hangul_J_SsangKiyeog

#define IBUS_Hangul_J_SsangKiyeog 0xed5

IBUS_Hangul_J_KiyeogSios

#define IBUS_Hangul_J_KiyeogSios 0xed6

IBUS_Hangul_J_Nieun

#define IBUS_Hangul_J_Nieun 0xed7

IBUS_Hangul_J_NieunJieuj

#define IBUS_Hangul_J_NieunJieuj 0xed8

IBUS_Hangul_J_NieunHieuh

#define IBUS_Hangul_J_NieunHieuh 0xed9

IBUS_Hangul_J_Dikeud

#define IBUS_Hangul_J_Dikeud 0xeda

IBUS_Hangul_J_Rieul

#define IBUS_Hangul_J_Rieul 0xedb

IBUS_Hangul_J_RieulKiyeog

#define IBUS_Hangul_J_RieulKiyeog 0xedc

IBUS_Hangul_J_RieulMieum

#define IBUS_Hangul_J_RieulMieum 0xedd

IBUS_Hangul_J_RieulPieub

#define IBUS_Hangul_J_RieulPieub 0xede

IBUS_Hangul_J_RieulSios

#define IBUS_Hangul_J_RieulSios 0xedf

IBUS_Hangul_J_RieulTieut

#define IBUS_Hangul_J_RieulTieut 0xee0

IBUS_Hangul_J_RieulPhieuf

#define IBUS_Hangul_J_RieulPhieuf 0xee1

IBUS_Hangul_J_RieulHieuh

#define IBUS_Hangul_J_RieulHieuh 0xee2

IBUS_Hangul_J_Mieum

#define IBUS_Hangul_J_Mieum 0xee3

IBUS_Hangul_J_Pieub

#define IBUS_Hangul_J_Pieub 0xee4

IBUS_Hangul_J_PieubSios

#define IBUS_Hangul_J_PieubSios 0xee5

IBUS_Hangul_J_Sios

#define IBUS_Hangul_J_Sios 0xee6

IBUS_Hangul_J_SsangSios

#define IBUS_Hangul_J_SsangSios 0xee7

IBUS_Hangul_J_Ieung

#define IBUS_Hangul_J_Ieung 0xee8

IBUS_Hangul_J_Jieuj

#define IBUS_Hangul_J_Jieuj 0xee9

IBUS_Hangul_J_Cieuc

#define IBUS_Hangul_J_Cieuc 0xeea

IBUS_Hangul_J_Khieuq

#define IBUS_Hangul_J_Khieuq 0xeeb

IBUS_Hangul_J_Tieut

#define IBUS_Hangul_J_Tieut 0xeec

IBUS_Hangul_J_Phieuf

#define IBUS_Hangul_J_Phieuf 0xeed

IBUS_Hangul_J_Hieuh

#define IBUS_Hangul_J_Hieuh 0xeee

IBUS_Hangul_RieulYeorinHieuh

#define IBUS_Hangul_RieulYeorinHieuh 0xeef

IBUS_Hangul_SunkyeongeumMieum

#define IBUS_Hangul_SunkyeongeumMieum 0xef0

IBUS_Hangul_SunkyeongeumPieub

#define IBUS_Hangul_SunkyeongeumPieub 0xef1

IBUS_Hangul_PanSios

#define IBUS_Hangul_PanSios 0xef2

IBUS_Hangul_KkogjiDalrinIeung

#define IBUS_Hangul_KkogjiDalrinIeung 0xef3

IBUS_Hangul_SunkyeongeumPhieuf

#define IBUS_Hangul_SunkyeongeumPhieuf 0xef4

IBUS_Hangul_YeorinHieuh

#define IBUS_Hangul_YeorinHieuh 0xef5

IBUS_Hangul_AraeA

#define IBUS_Hangul_AraeA 0xef6

IBUS_Hangul_AraeAE

#define IBUS_Hangul_AraeAE 0xef7

IBUS_Hangul_J_PanSios

#define IBUS_Hangul_J_PanSios 0xef8

IBUS_Hangul_J_KkogjiDalrinIeung

#define IBUS_Hangul_J_KkogjiDalrinIeung 0xef9

IBUS_Hangul_J_YeorinHieuh

#define IBUS_Hangul_J_YeorinHieuh 0xefa

IBUS_Korean_Won

#define IBUS_Korean_Won 0xeff

IBUS_Armenian_ligature_ew

#define IBUS_Armenian_ligature_ew 0x1000587

IBUS_Armenian_full_stop

#define IBUS_Armenian_full_stop 0x1000589

IBUS_Armenian_verjaket

#define IBUS_Armenian_verjaket 0x1000589

IBUS_Armenian_separation_mark

#define IBUS_Armenian_separation_mark 0x100055d

IBUS_Armenian_but

#define IBUS_Armenian_but 0x100055d

IBUS_Armenian_hyphen

#define IBUS_Armenian_hyphen 0x100058a

IBUS_Armenian_yentamna

#define IBUS_Armenian_yentamna 0x100058a

IBUS_Armenian_exclam

#define IBUS_Armenian_exclam 0x100055c

IBUS_Armenian_amanak

#define IBUS_Armenian_amanak 0x100055c

IBUS_Armenian_accent

#define IBUS_Armenian_accent 0x100055b

IBUS_Armenian_shesht

#define IBUS_Armenian_shesht 0x100055b

IBUS_Armenian_question

#define IBUS_Armenian_question 0x100055e

IBUS_Armenian_paruyk

#define IBUS_Armenian_paruyk 0x100055e

IBUS_Armenian_AYB

#define IBUS_Armenian_AYB 0x1000531

IBUS_Armenian_ayb

#define IBUS_Armenian_ayb 0x1000561

IBUS_Armenian_BEN

#define IBUS_Armenian_BEN 0x1000532

IBUS_Armenian_ben

#define IBUS_Armenian_ben 0x1000562

IBUS_Armenian_GIM

#define IBUS_Armenian_GIM 0x1000533

IBUS_Armenian_gim

#define IBUS_Armenian_gim 0x1000563

IBUS_Armenian_DA

#define IBUS_Armenian_DA 0x1000534

IBUS_Armenian_da

#define IBUS_Armenian_da 0x1000564

IBUS_Armenian_YECH

#define IBUS_Armenian_YECH 0x1000535

IBUS_Armenian_yech

#define IBUS_Armenian_yech 0x1000565

IBUS_Armenian_ZA

#define IBUS_Armenian_ZA 0x1000536

IBUS_Armenian_za

#define IBUS_Armenian_za 0x1000566

IBUS_Armenian_E

#define IBUS_Armenian_E 0x1000537

IBUS_Armenian_e

#define IBUS_Armenian_e 0x1000567

IBUS_Armenian_AT

#define IBUS_Armenian_AT 0x1000538

IBUS_Armenian_at

#define IBUS_Armenian_at 0x1000568

IBUS_Armenian_TO

#define IBUS_Armenian_TO 0x1000539

IBUS_Armenian_to

#define IBUS_Armenian_to 0x1000569

IBUS_Armenian_ZHE

#define IBUS_Armenian_ZHE 0x100053a

IBUS_Armenian_zhe

#define IBUS_Armenian_zhe 0x100056a

IBUS_Armenian_INI

#define IBUS_Armenian_INI 0x100053b

IBUS_Armenian_ini

#define IBUS_Armenian_ini 0x100056b

IBUS_Armenian_LYUN

#define IBUS_Armenian_LYUN 0x100053c

IBUS_Armenian_lyun

#define IBUS_Armenian_lyun 0x100056c

IBUS_Armenian_KHE

#define IBUS_Armenian_KHE 0x100053d

IBUS_Armenian_khe

#define IBUS_Armenian_khe 0x100056d

IBUS_Armenian_TSA

#define IBUS_Armenian_TSA 0x100053e

IBUS_Armenian_tsa

#define IBUS_Armenian_tsa 0x100056e

IBUS_Armenian_KEN

#define IBUS_Armenian_KEN 0x100053f

IBUS_Armenian_ken

#define IBUS_Armenian_ken 0x100056f

IBUS_Armenian_HO

#define IBUS_Armenian_HO 0x1000540

IBUS_Armenian_ho

#define IBUS_Armenian_ho 0x1000570

IBUS_Armenian_DZA

#define IBUS_Armenian_DZA 0x1000541

IBUS_Armenian_dza

#define IBUS_Armenian_dza 0x1000571

IBUS_Armenian_GHAT

#define IBUS_Armenian_GHAT 0x1000542

IBUS_Armenian_ghat

#define IBUS_Armenian_ghat 0x1000572

IBUS_Armenian_TCHE

#define IBUS_Armenian_TCHE 0x1000543

IBUS_Armenian_tche

#define IBUS_Armenian_tche 0x1000573

IBUS_Armenian_MEN

#define IBUS_Armenian_MEN 0x1000544

IBUS_Armenian_men

#define IBUS_Armenian_men 0x1000574

IBUS_Armenian_HI

#define IBUS_Armenian_HI 0x1000545

IBUS_Armenian_hi

#define IBUS_Armenian_hi 0x1000575

IBUS_Armenian_NU

#define IBUS_Armenian_NU 0x1000546

IBUS_Armenian_nu

#define IBUS_Armenian_nu 0x1000576

IBUS_Armenian_SHA

#define IBUS_Armenian_SHA 0x1000547

IBUS_Armenian_sha

#define IBUS_Armenian_sha 0x1000577

IBUS_Armenian_VO

#define IBUS_Armenian_VO 0x1000548

IBUS_Armenian_vo

#define IBUS_Armenian_vo 0x1000578

IBUS_Armenian_CHA

#define IBUS_Armenian_CHA 0x1000549

IBUS_Armenian_cha

#define IBUS_Armenian_cha 0x1000579

IBUS_Armenian_PE

#define IBUS_Armenian_PE 0x100054a

IBUS_Armenian_pe

#define IBUS_Armenian_pe 0x100057a

IBUS_Armenian_JE

#define IBUS_Armenian_JE 0x100054b

IBUS_Armenian_je

#define IBUS_Armenian_je 0x100057b

IBUS_Armenian_RA

#define IBUS_Armenian_RA 0x100054c

IBUS_Armenian_ra

#define IBUS_Armenian_ra 0x100057c

IBUS_Armenian_SE

#define IBUS_Armenian_SE 0x100054d

IBUS_Armenian_se

#define IBUS_Armenian_se 0x100057d

IBUS_Armenian_VEV

#define IBUS_Armenian_VEV 0x100054e

IBUS_Armenian_vev

#define IBUS_Armenian_vev 0x100057e

IBUS_Armenian_TYUN

#define IBUS_Armenian_TYUN 0x100054f

IBUS_Armenian_tyun

#define IBUS_Armenian_tyun 0x100057f

IBUS_Armenian_RE

#define IBUS_Armenian_RE 0x1000550

IBUS_Armenian_re

#define IBUS_Armenian_re 0x1000580

IBUS_Armenian_TSO

#define IBUS_Armenian_TSO 0x1000551

IBUS_Armenian_tso

#define IBUS_Armenian_tso 0x1000581

IBUS_Armenian_VYUN

#define IBUS_Armenian_VYUN 0x1000552

IBUS_Armenian_vyun

#define IBUS_Armenian_vyun 0x1000582

IBUS_Armenian_PYUR

#define IBUS_Armenian_PYUR 0x1000553

IBUS_Armenian_pyur

#define IBUS_Armenian_pyur 0x1000583

IBUS_Armenian_KE

#define IBUS_Armenian_KE 0x1000554

IBUS_Armenian_ke

#define IBUS_Armenian_ke 0x1000584

IBUS_Armenian_O

#define IBUS_Armenian_O 0x1000555

IBUS_Armenian_o

#define IBUS_Armenian_o 0x1000585

IBUS_Armenian_FE

#define IBUS_Armenian_FE 0x1000556

IBUS_Armenian_fe

#define IBUS_Armenian_fe 0x1000586

IBUS_Armenian_apostrophe

#define IBUS_Armenian_apostrophe 0x100055a

IBUS_Georgian_an

#define IBUS_Georgian_an 0x10010d0

IBUS_Georgian_ban

#define IBUS_Georgian_ban 0x10010d1

IBUS_Georgian_gan

#define IBUS_Georgian_gan 0x10010d2

IBUS_Georgian_don

#define IBUS_Georgian_don 0x10010d3

IBUS_Georgian_en

#define IBUS_Georgian_en 0x10010d4

IBUS_Georgian_vin

#define IBUS_Georgian_vin 0x10010d5

IBUS_Georgian_zen

#define IBUS_Georgian_zen 0x10010d6

IBUS_Georgian_tan

#define IBUS_Georgian_tan 0x10010d7

IBUS_Georgian_in

#define IBUS_Georgian_in 0x10010d8

IBUS_Georgian_kan

#define IBUS_Georgian_kan 0x10010d9

IBUS_Georgian_las

#define IBUS_Georgian_las 0x10010da

IBUS_Georgian_man

#define IBUS_Georgian_man 0x10010db

IBUS_Georgian_nar

#define IBUS_Georgian_nar 0x10010dc

IBUS_Georgian_on

#define IBUS_Georgian_on 0x10010dd

IBUS_Georgian_par

#define IBUS_Georgian_par 0x10010de

IBUS_Georgian_zhar

#define IBUS_Georgian_zhar 0x10010df

IBUS_Georgian_rae

#define IBUS_Georgian_rae 0x10010e0

IBUS_Georgian_san

#define IBUS_Georgian_san 0x10010e1

IBUS_Georgian_tar

#define IBUS_Georgian_tar 0x10010e2

IBUS_Georgian_un

#define IBUS_Georgian_un 0x10010e3

IBUS_Georgian_phar

#define IBUS_Georgian_phar 0x10010e4

IBUS_Georgian_khar

#define IBUS_Georgian_khar 0x10010e5

IBUS_Georgian_ghan

#define IBUS_Georgian_ghan 0x10010e6

IBUS_Georgian_qar

#define IBUS_Georgian_qar 0x10010e7

IBUS_Georgian_shin

#define IBUS_Georgian_shin 0x10010e8

IBUS_Georgian_chin

#define IBUS_Georgian_chin 0x10010e9

IBUS_Georgian_can

#define IBUS_Georgian_can 0x10010ea

IBUS_Georgian_jil

#define IBUS_Georgian_jil 0x10010eb

IBUS_Georgian_cil

#define IBUS_Georgian_cil 0x10010ec

IBUS_Georgian_char

#define IBUS_Georgian_char 0x10010ed

IBUS_Georgian_xan

#define IBUS_Georgian_xan 0x10010ee

IBUS_Georgian_jhan

#define IBUS_Georgian_jhan 0x10010ef

IBUS_Georgian_hae

#define IBUS_Georgian_hae 0x10010f0

IBUS_Georgian_he

#define IBUS_Georgian_he 0x10010f1

IBUS_Georgian_hie

#define IBUS_Georgian_hie 0x10010f2

IBUS_Georgian_we

#define IBUS_Georgian_we 0x10010f3

IBUS_Georgian_har

#define IBUS_Georgian_har 0x10010f4

IBUS_Georgian_hoe

#define IBUS_Georgian_hoe 0x10010f5

IBUS_Georgian_fi

#define IBUS_Georgian_fi 0x10010f6

IBUS_Xabovedot

#define IBUS_Xabovedot 0x1001e8a

IBUS_Ibreve

#define IBUS_Ibreve 0x100012c

IBUS_Zstroke

#define IBUS_Zstroke 0x10001b5

IBUS_Gcaron

#define IBUS_Gcaron 0x10001e6

IBUS_Ocaron

#define IBUS_Ocaron 0x10001d1

IBUS_Obarred

#define IBUS_Obarred 0x100019f

IBUS_xabovedot

#define IBUS_xabovedot 0x1001e8b

IBUS_ibreve

#define IBUS_ibreve 0x100012d

IBUS_zstroke

#define IBUS_zstroke 0x10001b6

IBUS_gcaron

#define IBUS_gcaron 0x10001e7

IBUS_ocaron

#define IBUS_ocaron 0x10001d2

IBUS_obarred

#define IBUS_obarred 0x1000275

IBUS_SCHWA

#define IBUS_SCHWA 0x100018f

IBUS_schwa

#define IBUS_schwa 0x1000259

IBUS_Lbelowdot

#define IBUS_Lbelowdot 0x1001e36

IBUS_lbelowdot

#define IBUS_lbelowdot 0x1001e37

IBUS_Abelowdot

#define IBUS_Abelowdot 0x1001ea0

IBUS_abelowdot

#define IBUS_abelowdot 0x1001ea1

IBUS_Ahook

#define IBUS_Ahook 0x1001ea2

IBUS_ahook

#define IBUS_ahook 0x1001ea3

IBUS_Acircumflexacute

#define IBUS_Acircumflexacute 0x1001ea4

IBUS_acircumflexacute

#define IBUS_acircumflexacute 0x1001ea5

IBUS_Acircumflexgrave

#define IBUS_Acircumflexgrave 0x1001ea6

IBUS_acircumflexgrave

#define IBUS_acircumflexgrave 0x1001ea7

IBUS_Acircumflexhook

#define IBUS_Acircumflexhook 0x1001ea8

IBUS_acircumflexhook

#define IBUS_acircumflexhook 0x1001ea9

IBUS_Acircumflextilde

#define IBUS_Acircumflextilde 0x1001eaa

IBUS_acircumflextilde

#define IBUS_acircumflextilde 0x1001eab

IBUS_Acircumflexbelowdot

#define IBUS_Acircumflexbelowdot 0x1001eac

IBUS_acircumflexbelowdot

#define IBUS_acircumflexbelowdot 0x1001ead

IBUS_Abreveacute

#define IBUS_Abreveacute 0x1001eae

IBUS_abreveacute

#define IBUS_abreveacute 0x1001eaf

IBUS_Abrevegrave

#define IBUS_Abrevegrave 0x1001eb0

IBUS_abrevegrave

#define IBUS_abrevegrave 0x1001eb1

IBUS_Abrevehook

#define IBUS_Abrevehook 0x1001eb2

IBUS_abrevehook

#define IBUS_abrevehook 0x1001eb3

IBUS_Abrevetilde

#define IBUS_Abrevetilde 0x1001eb4

IBUS_abrevetilde

#define IBUS_abrevetilde 0x1001eb5

IBUS_Abrevebelowdot

#define IBUS_Abrevebelowdot 0x1001eb6

IBUS_abrevebelowdot

#define IBUS_abrevebelowdot 0x1001eb7

IBUS_Ebelowdot

#define IBUS_Ebelowdot 0x1001eb8

IBUS_ebelowdot

#define IBUS_ebelowdot 0x1001eb9

IBUS_Ehook

#define IBUS_Ehook 0x1001eba

IBUS_ehook

#define IBUS_ehook 0x1001ebb

IBUS_Etilde

#define IBUS_Etilde 0x1001ebc

IBUS_etilde

#define IBUS_etilde 0x1001ebd

IBUS_Ecircumflexacute

#define IBUS_Ecircumflexacute 0x1001ebe

IBUS_ecircumflexacute

#define IBUS_ecircumflexacute 0x1001ebf

IBUS_Ecircumflexgrave

#define IBUS_Ecircumflexgrave 0x1001ec0

IBUS_ecircumflexgrave

#define IBUS_ecircumflexgrave 0x1001ec1

IBUS_Ecircumflexhook

#define IBUS_Ecircumflexhook 0x1001ec2

IBUS_ecircumflexhook

#define IBUS_ecircumflexhook 0x1001ec3

IBUS_Ecircumflextilde

#define IBUS_Ecircumflextilde 0x1001ec4

IBUS_ecircumflextilde

#define IBUS_ecircumflextilde 0x1001ec5

IBUS_Ecircumflexbelowdot

#define IBUS_Ecircumflexbelowdot 0x1001ec6

IBUS_ecircumflexbelowdot

#define IBUS_ecircumflexbelowdot 0x1001ec7

IBUS_Ihook

#define IBUS_Ihook 0x1001ec8

IBUS_ihook

#define IBUS_ihook 0x1001ec9

IBUS_Ibelowdot

#define IBUS_Ibelowdot 0x1001eca

IBUS_ibelowdot

#define IBUS_ibelowdot 0x1001ecb

IBUS_Obelowdot

#define IBUS_Obelowdot 0x1001ecc

IBUS_obelowdot

#define IBUS_obelowdot 0x1001ecd

IBUS_Ohook

#define IBUS_Ohook 0x1001ece

IBUS_ohook

#define IBUS_ohook 0x1001ecf

IBUS_Ocircumflexacute

#define IBUS_Ocircumflexacute 0x1001ed0

IBUS_ocircumflexacute

#define IBUS_ocircumflexacute 0x1001ed1

IBUS_Ocircumflexgrave

#define IBUS_Ocircumflexgrave 0x1001ed2

IBUS_ocircumflexgrave

#define IBUS_ocircumflexgrave 0x1001ed3

IBUS_Ocircumflexhook

#define IBUS_Ocircumflexhook 0x1001ed4

IBUS_ocircumflexhook

#define IBUS_ocircumflexhook 0x1001ed5

IBUS_Ocircumflextilde

#define IBUS_Ocircumflextilde 0x1001ed6

IBUS_ocircumflextilde

#define IBUS_ocircumflextilde 0x1001ed7

IBUS_Ocircumflexbelowdot

#define IBUS_Ocircumflexbelowdot 0x1001ed8

IBUS_ocircumflexbelowdot

#define IBUS_ocircumflexbelowdot 0x1001ed9

IBUS_Ohornacute

#define IBUS_Ohornacute 0x1001eda

IBUS_ohornacute

#define IBUS_ohornacute 0x1001edb

IBUS_Ohorngrave

#define IBUS_Ohorngrave 0x1001edc

IBUS_ohorngrave

#define IBUS_ohorngrave 0x1001edd

IBUS_Ohornhook

#define IBUS_Ohornhook 0x1001ede

IBUS_ohornhook

#define IBUS_ohornhook 0x1001edf

IBUS_Ohorntilde

#define IBUS_Ohorntilde 0x1001ee0

IBUS_ohorntilde

#define IBUS_ohorntilde 0x1001ee1

IBUS_Ohornbelowdot

#define IBUS_Ohornbelowdot 0x1001ee2

IBUS_ohornbelowdot

#define IBUS_ohornbelowdot 0x1001ee3

IBUS_Ubelowdot

#define IBUS_Ubelowdot 0x1001ee4

IBUS_ubelowdot

#define IBUS_ubelowdot 0x1001ee5

IBUS_Uhook

#define IBUS_Uhook 0x1001ee6

IBUS_uhook

#define IBUS_uhook 0x1001ee7

IBUS_Uhornacute

#define IBUS_Uhornacute 0x1001ee8

IBUS_uhornacute

#define IBUS_uhornacute 0x1001ee9

IBUS_Uhorngrave

#define IBUS_Uhorngrave 0x1001eea

IBUS_uhorngrave

#define IBUS_uhorngrave 0x1001eeb

IBUS_Uhornhook

#define IBUS_Uhornhook 0x1001eec

IBUS_uhornhook

#define IBUS_uhornhook 0x1001eed

IBUS_Uhorntilde

#define IBUS_Uhorntilde 0x1001eee

IBUS_uhorntilde

#define IBUS_uhorntilde 0x1001eef

IBUS_Uhornbelowdot

#define IBUS_Uhornbelowdot 0x1001ef0

IBUS_uhornbelowdot

#define IBUS_uhornbelowdot 0x1001ef1

IBUS_Ybelowdot

#define IBUS_Ybelowdot 0x1001ef4

IBUS_ybelowdot

#define IBUS_ybelowdot 0x1001ef5

IBUS_Yhook

#define IBUS_Yhook 0x1001ef6

IBUS_yhook

#define IBUS_yhook 0x1001ef7

IBUS_Ytilde

#define IBUS_Ytilde 0x1001ef8

IBUS_ytilde

#define IBUS_ytilde 0x1001ef9

IBUS_Ohorn

#define IBUS_Ohorn 0x10001a0

IBUS_ohorn

#define IBUS_ohorn 0x10001a1

IBUS_Uhorn

#define IBUS_Uhorn 0x10001af

IBUS_uhorn

#define IBUS_uhorn 0x10001b0

IBUS_EcuSign

#define IBUS_EcuSign 0x10020a0

IBUS_ColonSign

#define IBUS_ColonSign 0x10020a1

IBUS_CruzeiroSign

#define IBUS_CruzeiroSign 0x10020a2

IBUS_FFrancSign

#define IBUS_FFrancSign 0x10020a3

IBUS_LiraSign

#define IBUS_LiraSign 0x10020a4

IBUS_MillSign

#define IBUS_MillSign 0x10020a5

IBUS_NairaSign

#define IBUS_NairaSign 0x10020a6

IBUS_PesetaSign

#define IBUS_PesetaSign 0x10020a7

IBUS_RupeeSign

#define IBUS_RupeeSign 0x10020a8

IBUS_WonSign

#define IBUS_WonSign 0x10020a9

IBUS_NewSheqelSign

#define IBUS_NewSheqelSign 0x10020aa

IBUS_DongSign

#define IBUS_DongSign 0x10020ab

IBUS_EuroSign

#define IBUS_EuroSign 0x20ac

IBUS_zerosuperior

#define IBUS_zerosuperior 0x1002070

IBUS_foursuperior

#define IBUS_foursuperior 0x1002074

IBUS_fivesuperior

#define IBUS_fivesuperior 0x1002075

IBUS_sixsuperior

#define IBUS_sixsuperior 0x1002076

IBUS_sevensuperior

#define IBUS_sevensuperior 0x1002077

IBUS_eightsuperior

#define IBUS_eightsuperior 0x1002078

IBUS_ninesuperior

#define IBUS_ninesuperior 0x1002079

IBUS_zerosubscript

#define IBUS_zerosubscript 0x1002080

IBUS_onesubscript

#define IBUS_onesubscript 0x1002081

IBUS_twosubscript

#define IBUS_twosubscript 0x1002082

IBUS_threesubscript

#define IBUS_threesubscript 0x1002083

IBUS_foursubscript

#define IBUS_foursubscript 0x1002084

IBUS_fivesubscript

#define IBUS_fivesubscript 0x1002085

IBUS_sixsubscript

#define IBUS_sixsubscript 0x1002086

IBUS_sevensubscript

#define IBUS_sevensubscript 0x1002087

IBUS_eightsubscript

#define IBUS_eightsubscript 0x1002088

IBUS_ninesubscript

#define IBUS_ninesubscript 0x1002089

IBUS_partdifferential

#define IBUS_partdifferential 0x1002202

IBUS_emptyset

#define IBUS_emptyset 0x1002205

IBUS_elementof

#define IBUS_elementof 0x1002208

IBUS_notelementof

#define IBUS_notelementof 0x1002209

IBUS_containsas

#define IBUS_containsas 0x100220b

IBUS_squareroot

#define IBUS_squareroot 0x100221a

IBUS_cuberoot

#define IBUS_cuberoot 0x100221b

IBUS_fourthroot

#define IBUS_fourthroot 0x100221c

IBUS_dintegral

#define IBUS_dintegral 0x100222c

IBUS_tintegral

#define IBUS_tintegral 0x100222d

IBUS_because

#define IBUS_because 0x1002235

IBUS_approxeq

#define IBUS_approxeq 0x1002248

IBUS_notapproxeq

#define IBUS_notapproxeq 0x1002247

IBUS_notidentical

#define IBUS_notidentical 0x1002262

IBUS_stricteq

#define IBUS_stricteq 0x1002263

IBUS_braille_dot_1

#define IBUS_braille_dot_1 0xfff1

IBUS_braille_dot_2

#define IBUS_braille_dot_2 0xfff2

IBUS_braille_dot_3

#define IBUS_braille_dot_3 0xfff3

IBUS_braille_dot_4

#define IBUS_braille_dot_4 0xfff4

IBUS_braille_dot_5

#define IBUS_braille_dot_5 0xfff5

IBUS_braille_dot_6

#define IBUS_braille_dot_6 0xfff6

IBUS_braille_dot_7

#define IBUS_braille_dot_7 0xfff7

IBUS_braille_dot_8

#define IBUS_braille_dot_8 0xfff8

IBUS_braille_dot_9

#define IBUS_braille_dot_9 0xfff9

IBUS_braille_dot_10

#define IBUS_braille_dot_10 0xfffa

IBUS_braille_blank

#define IBUS_braille_blank 0x1002800

IBUS_braille_dots_1

#define IBUS_braille_dots_1 0x1002801

IBUS_braille_dots_2

#define IBUS_braille_dots_2 0x1002802

IBUS_braille_dots_12

#define IBUS_braille_dots_12 0x1002803

IBUS_braille_dots_3

#define IBUS_braille_dots_3 0x1002804

IBUS_braille_dots_13

#define IBUS_braille_dots_13 0x1002805

IBUS_braille_dots_23

#define IBUS_braille_dots_23 0x1002806

IBUS_braille_dots_123

#define IBUS_braille_dots_123 0x1002807

IBUS_braille_dots_4

#define IBUS_braille_dots_4 0x1002808

IBUS_braille_dots_14

#define IBUS_braille_dots_14 0x1002809

IBUS_braille_dots_24

#define IBUS_braille_dots_24 0x100280a

IBUS_braille_dots_124

#define IBUS_braille_dots_124 0x100280b

IBUS_braille_dots_34

#define IBUS_braille_dots_34 0x100280c

IBUS_braille_dots_134

#define IBUS_braille_dots_134 0x100280d

IBUS_braille_dots_234

#define IBUS_braille_dots_234 0x100280e

IBUS_braille_dots_1234

#define IBUS_braille_dots_1234 0x100280f

IBUS_braille_dots_5

#define IBUS_braille_dots_5 0x1002810

IBUS_braille_dots_15

#define IBUS_braille_dots_15 0x1002811

IBUS_braille_dots_25

#define IBUS_braille_dots_25 0x1002812

IBUS_braille_dots_125

#define IBUS_braille_dots_125 0x1002813

IBUS_braille_dots_35

#define IBUS_braille_dots_35 0x1002814

IBUS_braille_dots_135

#define IBUS_braille_dots_135 0x1002815

IBUS_braille_dots_235

#define IBUS_braille_dots_235 0x1002816

IBUS_braille_dots_1235

#define IBUS_braille_dots_1235 0x1002817

IBUS_braille_dots_45

#define IBUS_braille_dots_45 0x1002818

IBUS_braille_dots_145

#define IBUS_braille_dots_145 0x1002819

IBUS_braille_dots_245

#define IBUS_braille_dots_245 0x100281a

IBUS_braille_dots_1245

#define IBUS_braille_dots_1245 0x100281b

IBUS_braille_dots_345

#define IBUS_braille_dots_345 0x100281c

IBUS_braille_dots_1345

#define IBUS_braille_dots_1345 0x100281d

IBUS_braille_dots_2345

#define IBUS_braille_dots_2345 0x100281e

IBUS_braille_dots_12345

#define IBUS_braille_dots_12345 0x100281f

IBUS_braille_dots_6

#define IBUS_braille_dots_6 0x1002820

IBUS_braille_dots_16

#define IBUS_braille_dots_16 0x1002821

IBUS_braille_dots_26

#define IBUS_braille_dots_26 0x1002822

IBUS_braille_dots_126

#define IBUS_braille_dots_126 0x1002823

IBUS_braille_dots_36

#define IBUS_braille_dots_36 0x1002824

IBUS_braille_dots_136

#define IBUS_braille_dots_136 0x1002825

IBUS_braille_dots_236

#define IBUS_braille_dots_236 0x1002826

IBUS_braille_dots_1236

#define IBUS_braille_dots_1236 0x1002827

IBUS_braille_dots_46

#define IBUS_braille_dots_46 0x1002828

IBUS_braille_dots_146

#define IBUS_braille_dots_146 0x1002829

IBUS_braille_dots_246

#define IBUS_braille_dots_246 0x100282a

IBUS_braille_dots_1246

#define IBUS_braille_dots_1246 0x100282b

IBUS_braille_dots_346

#define IBUS_braille_dots_346 0x100282c

IBUS_braille_dots_1346

#define IBUS_braille_dots_1346 0x100282d

IBUS_braille_dots_2346

#define IBUS_braille_dots_2346 0x100282e

IBUS_braille_dots_12346

#define IBUS_braille_dots_12346 0x100282f

IBUS_braille_dots_56

#define IBUS_braille_dots_56 0x1002830

IBUS_braille_dots_156

#define IBUS_braille_dots_156 0x1002831

IBUS_braille_dots_256

#define IBUS_braille_dots_256 0x1002832

IBUS_braille_dots_1256

#define IBUS_braille_dots_1256 0x1002833

IBUS_braille_dots_356

#define IBUS_braille_dots_356 0x1002834

IBUS_braille_dots_1356

#define IBUS_braille_dots_1356 0x1002835

IBUS_braille_dots_2356

#define IBUS_braille_dots_2356 0x1002836

IBUS_braille_dots_12356

#define IBUS_braille_dots_12356 0x1002837

IBUS_braille_dots_456

#define IBUS_braille_dots_456 0x1002838

IBUS_braille_dots_1456

#define IBUS_braille_dots_1456 0x1002839

IBUS_braille_dots_2456

#define IBUS_braille_dots_2456 0x100283a

IBUS_braille_dots_12456

#define IBUS_braille_dots_12456 0x100283b

IBUS_braille_dots_3456

#define IBUS_braille_dots_3456 0x100283c

IBUS_braille_dots_13456

#define IBUS_braille_dots_13456 0x100283d

IBUS_braille_dots_23456

#define IBUS_braille_dots_23456 0x100283e

IBUS_braille_dots_123456

#define IBUS_braille_dots_123456 0x100283f

IBUS_braille_dots_7

#define IBUS_braille_dots_7 0x1002840

IBUS_braille_dots_17

#define IBUS_braille_dots_17 0x1002841

IBUS_braille_dots_27

#define IBUS_braille_dots_27 0x1002842

IBUS_braille_dots_127

#define IBUS_braille_dots_127 0x1002843

IBUS_braille_dots_37

#define IBUS_braille_dots_37 0x1002844

IBUS_braille_dots_137

#define IBUS_braille_dots_137 0x1002845

IBUS_braille_dots_237

#define IBUS_braille_dots_237 0x1002846

IBUS_braille_dots_1237

#define IBUS_braille_dots_1237 0x1002847

IBUS_braille_dots_47

#define IBUS_braille_dots_47 0x1002848

IBUS_braille_dots_147

#define IBUS_braille_dots_147 0x1002849

IBUS_braille_dots_247

#define IBUS_braille_dots_247 0x100284a

IBUS_braille_dots_1247

#define IBUS_braille_dots_1247 0x100284b

IBUS_braille_dots_347

#define IBUS_braille_dots_347 0x100284c

IBUS_braille_dots_1347

#define IBUS_braille_dots_1347 0x100284d

IBUS_braille_dots_2347

#define IBUS_braille_dots_2347 0x100284e

IBUS_braille_dots_12347

#define IBUS_braille_dots_12347 0x100284f

IBUS_braille_dots_57

#define IBUS_braille_dots_57 0x1002850

IBUS_braille_dots_157

#define IBUS_braille_dots_157 0x1002851

IBUS_braille_dots_257

#define IBUS_braille_dots_257 0x1002852

IBUS_braille_dots_1257

#define IBUS_braille_dots_1257 0x1002853

IBUS_braille_dots_357

#define IBUS_braille_dots_357 0x1002854

IBUS_braille_dots_1357

#define IBUS_braille_dots_1357 0x1002855

IBUS_braille_dots_2357

#define IBUS_braille_dots_2357 0x1002856

IBUS_braille_dots_12357

#define IBUS_braille_dots_12357 0x1002857

IBUS_braille_dots_457

#define IBUS_braille_dots_457 0x1002858

IBUS_braille_dots_1457

#define IBUS_braille_dots_1457 0x1002859

IBUS_braille_dots_2457

#define IBUS_braille_dots_2457 0x100285a

IBUS_braille_dots_12457

#define IBUS_braille_dots_12457 0x100285b

IBUS_braille_dots_3457

#define IBUS_braille_dots_3457 0x100285c

IBUS_braille_dots_13457

#define IBUS_braille_dots_13457 0x100285d

IBUS_braille_dots_23457

#define IBUS_braille_dots_23457 0x100285e

IBUS_braille_dots_123457

#define IBUS_braille_dots_123457 0x100285f

IBUS_braille_dots_67

#define IBUS_braille_dots_67 0x1002860

IBUS_braille_dots_167

#define IBUS_braille_dots_167 0x1002861

IBUS_braille_dots_267

#define IBUS_braille_dots_267 0x1002862

IBUS_braille_dots_1267

#define IBUS_braille_dots_1267 0x1002863

IBUS_braille_dots_367

#define IBUS_braille_dots_367 0x1002864

IBUS_braille_dots_1367

#define IBUS_braille_dots_1367 0x1002865

IBUS_braille_dots_2367

#define IBUS_braille_dots_2367 0x1002866

IBUS_braille_dots_12367

#define IBUS_braille_dots_12367 0x1002867

IBUS_braille_dots_467

#define IBUS_braille_dots_467 0x1002868

IBUS_braille_dots_1467

#define IBUS_braille_dots_1467 0x1002869

IBUS_braille_dots_2467

#define IBUS_braille_dots_2467 0x100286a

IBUS_braille_dots_12467

#define IBUS_braille_dots_12467 0x100286b

IBUS_braille_dots_3467

#define IBUS_braille_dots_3467 0x100286c

IBUS_braille_dots_13467

#define IBUS_braille_dots_13467 0x100286d

IBUS_braille_dots_23467

#define IBUS_braille_dots_23467 0x100286e

IBUS_braille_dots_123467

#define IBUS_braille_dots_123467 0x100286f

IBUS_braille_dots_567

#define IBUS_braille_dots_567 0x1002870

IBUS_braille_dots_1567

#define IBUS_braille_dots_1567 0x1002871

IBUS_braille_dots_2567

#define IBUS_braille_dots_2567 0x1002872

IBUS_braille_dots_12567

#define IBUS_braille_dots_12567 0x1002873

IBUS_braille_dots_3567

#define IBUS_braille_dots_3567 0x1002874

IBUS_braille_dots_13567

#define IBUS_braille_dots_13567 0x1002875

IBUS_braille_dots_23567

#define IBUS_braille_dots_23567 0x1002876

IBUS_braille_dots_123567

#define IBUS_braille_dots_123567 0x1002877

IBUS_braille_dots_4567

#define IBUS_braille_dots_4567 0x1002878

IBUS_braille_dots_14567

#define IBUS_braille_dots_14567 0x1002879

IBUS_braille_dots_24567

#define IBUS_braille_dots_24567 0x100287a

IBUS_braille_dots_124567

#define IBUS_braille_dots_124567 0x100287b

IBUS_braille_dots_34567

#define IBUS_braille_dots_34567 0x100287c

IBUS_braille_dots_134567

#define IBUS_braille_dots_134567 0x100287d

IBUS_braille_dots_234567

#define IBUS_braille_dots_234567 0x100287e

IBUS_braille_dots_1234567

#define IBUS_braille_dots_1234567 0x100287f

IBUS_braille_dots_8

#define IBUS_braille_dots_8 0x1002880

IBUS_braille_dots_18

#define IBUS_braille_dots_18 0x1002881

IBUS_braille_dots_28

#define IBUS_braille_dots_28 0x1002882

IBUS_braille_dots_128

#define IBUS_braille_dots_128 0x1002883

IBUS_braille_dots_38

#define IBUS_braille_dots_38 0x1002884

IBUS_braille_dots_138

#define IBUS_braille_dots_138 0x1002885

IBUS_braille_dots_238

#define IBUS_braille_dots_238 0x1002886

IBUS_braille_dots_1238

#define IBUS_braille_dots_1238 0x1002887

IBUS_braille_dots_48

#define IBUS_braille_dots_48 0x1002888

IBUS_braille_dots_148

#define IBUS_braille_dots_148 0x1002889

IBUS_braille_dots_248

#define IBUS_braille_dots_248 0x100288a

IBUS_braille_dots_1248

#define IBUS_braille_dots_1248 0x100288b

IBUS_braille_dots_348

#define IBUS_braille_dots_348 0x100288c

IBUS_braille_dots_1348

#define IBUS_braille_dots_1348 0x100288d

IBUS_braille_dots_2348

#define IBUS_braille_dots_2348 0x100288e

IBUS_braille_dots_12348

#define IBUS_braille_dots_12348 0x100288f

IBUS_braille_dots_58

#define IBUS_braille_dots_58 0x1002890

IBUS_braille_dots_158

#define IBUS_braille_dots_158 0x1002891

IBUS_braille_dots_258

#define IBUS_braille_dots_258 0x1002892

IBUS_braille_dots_1258

#define IBUS_braille_dots_1258 0x1002893

IBUS_braille_dots_358

#define IBUS_braille_dots_358 0x1002894

IBUS_braille_dots_1358

#define IBUS_braille_dots_1358 0x1002895

IBUS_braille_dots_2358

#define IBUS_braille_dots_2358 0x1002896

IBUS_braille_dots_12358

#define IBUS_braille_dots_12358 0x1002897

IBUS_braille_dots_458

#define IBUS_braille_dots_458 0x1002898

IBUS_braille_dots_1458

#define IBUS_braille_dots_1458 0x1002899

IBUS_braille_dots_2458

#define IBUS_braille_dots_2458 0x100289a

IBUS_braille_dots_12458

#define IBUS_braille_dots_12458 0x100289b

IBUS_braille_dots_3458

#define IBUS_braille_dots_3458 0x100289c

IBUS_braille_dots_13458

#define IBUS_braille_dots_13458 0x100289d

IBUS_braille_dots_23458

#define IBUS_braille_dots_23458 0x100289e

IBUS_braille_dots_123458

#define IBUS_braille_dots_123458 0x100289f

IBUS_braille_dots_68

#define IBUS_braille_dots_68 0x10028a0

IBUS_braille_dots_168

#define IBUS_braille_dots_168 0x10028a1

IBUS_braille_dots_268

#define IBUS_braille_dots_268 0x10028a2

IBUS_braille_dots_1268

#define IBUS_braille_dots_1268 0x10028a3

IBUS_braille_dots_368

#define IBUS_braille_dots_368 0x10028a4

IBUS_braille_dots_1368

#define IBUS_braille_dots_1368 0x10028a5

IBUS_braille_dots_2368

#define IBUS_braille_dots_2368 0x10028a6

IBUS_braille_dots_12368

#define IBUS_braille_dots_12368 0x10028a7

IBUS_braille_dots_468

#define IBUS_braille_dots_468 0x10028a8

IBUS_braille_dots_1468

#define IBUS_braille_dots_1468 0x10028a9

IBUS_braille_dots_2468

#define IBUS_braille_dots_2468 0x10028aa

IBUS_braille_dots_12468

#define IBUS_braille_dots_12468 0x10028ab

IBUS_braille_dots_3468

#define IBUS_braille_dots_3468 0x10028ac

IBUS_braille_dots_13468

#define IBUS_braille_dots_13468 0x10028ad

IBUS_braille_dots_23468

#define IBUS_braille_dots_23468 0x10028ae

IBUS_braille_dots_123468

#define IBUS_braille_dots_123468 0x10028af

IBUS_braille_dots_568

#define IBUS_braille_dots_568 0x10028b0

IBUS_braille_dots_1568

#define IBUS_braille_dots_1568 0x10028b1

IBUS_braille_dots_2568

#define IBUS_braille_dots_2568 0x10028b2

IBUS_braille_dots_12568

#define IBUS_braille_dots_12568 0x10028b3

IBUS_braille_dots_3568

#define IBUS_braille_dots_3568 0x10028b4

IBUS_braille_dots_13568

#define IBUS_braille_dots_13568 0x10028b5

IBUS_braille_dots_23568

#define IBUS_braille_dots_23568 0x10028b6

IBUS_braille_dots_123568

#define IBUS_braille_dots_123568 0x10028b7

IBUS_braille_dots_4568

#define IBUS_braille_dots_4568 0x10028b8

IBUS_braille_dots_14568

#define IBUS_braille_dots_14568 0x10028b9

IBUS_braille_dots_24568

#define IBUS_braille_dots_24568 0x10028ba

IBUS_braille_dots_124568

#define IBUS_braille_dots_124568 0x10028bb

IBUS_braille_dots_34568

#define IBUS_braille_dots_34568 0x10028bc

IBUS_braille_dots_134568

#define IBUS_braille_dots_134568 0x10028bd

IBUS_braille_dots_234568

#define IBUS_braille_dots_234568 0x10028be

IBUS_braille_dots_1234568

#define IBUS_braille_dots_1234568 0x10028bf

IBUS_braille_dots_78

#define IBUS_braille_dots_78 0x10028c0

IBUS_braille_dots_178

#define IBUS_braille_dots_178 0x10028c1

IBUS_braille_dots_278

#define IBUS_braille_dots_278 0x10028c2

IBUS_braille_dots_1278

#define IBUS_braille_dots_1278 0x10028c3

IBUS_braille_dots_378

#define IBUS_braille_dots_378 0x10028c4

IBUS_braille_dots_1378

#define IBUS_braille_dots_1378 0x10028c5

IBUS_braille_dots_2378

#define IBUS_braille_dots_2378 0x10028c6

IBUS_braille_dots_12378

#define IBUS_braille_dots_12378 0x10028c7

IBUS_braille_dots_478

#define IBUS_braille_dots_478 0x10028c8

IBUS_braille_dots_1478

#define IBUS_braille_dots_1478 0x10028c9

IBUS_braille_dots_2478

#define IBUS_braille_dots_2478 0x10028ca

IBUS_braille_dots_12478

#define IBUS_braille_dots_12478 0x10028cb

IBUS_braille_dots_3478

#define IBUS_braille_dots_3478 0x10028cc

IBUS_braille_dots_13478

#define IBUS_braille_dots_13478 0x10028cd

IBUS_braille_dots_23478

#define IBUS_braille_dots_23478 0x10028ce

IBUS_braille_dots_123478

#define IBUS_braille_dots_123478 0x10028cf

IBUS_braille_dots_578

#define IBUS_braille_dots_578 0x10028d0

IBUS_braille_dots_1578

#define IBUS_braille_dots_1578 0x10028d1

IBUS_braille_dots_2578

#define IBUS_braille_dots_2578 0x10028d2

IBUS_braille_dots_12578

#define IBUS_braille_dots_12578 0x10028d3

IBUS_braille_dots_3578

#define IBUS_braille_dots_3578 0x10028d4

IBUS_braille_dots_13578

#define IBUS_braille_dots_13578 0x10028d5

IBUS_braille_dots_23578

#define IBUS_braille_dots_23578 0x10028d6

IBUS_braille_dots_123578

#define IBUS_braille_dots_123578 0x10028d7

IBUS_braille_dots_4578

#define IBUS_braille_dots_4578 0x10028d8

IBUS_braille_dots_14578

#define IBUS_braille_dots_14578 0x10028d9

IBUS_braille_dots_24578

#define IBUS_braille_dots_24578 0x10028da

IBUS_braille_dots_124578

#define IBUS_braille_dots_124578 0x10028db

IBUS_braille_dots_34578

#define IBUS_braille_dots_34578 0x10028dc

IBUS_braille_dots_134578

#define IBUS_braille_dots_134578 0x10028dd

IBUS_braille_dots_234578

#define IBUS_braille_dots_234578 0x10028de

IBUS_braille_dots_1234578

#define IBUS_braille_dots_1234578 0x10028df

IBUS_braille_dots_678

#define IBUS_braille_dots_678 0x10028e0

IBUS_braille_dots_1678

#define IBUS_braille_dots_1678 0x10028e1

IBUS_braille_dots_2678

#define IBUS_braille_dots_2678 0x10028e2

IBUS_braille_dots_12678

#define IBUS_braille_dots_12678 0x10028e3

IBUS_braille_dots_3678

#define IBUS_braille_dots_3678 0x10028e4

IBUS_braille_dots_13678

#define IBUS_braille_dots_13678 0x10028e5

IBUS_braille_dots_23678

#define IBUS_braille_dots_23678 0x10028e6

IBUS_braille_dots_123678

#define IBUS_braille_dots_123678 0x10028e7

IBUS_braille_dots_4678

#define IBUS_braille_dots_4678 0x10028e8

IBUS_braille_dots_14678

#define IBUS_braille_dots_14678 0x10028e9

IBUS_braille_dots_24678

#define IBUS_braille_dots_24678 0x10028ea

IBUS_braille_dots_124678

#define IBUS_braille_dots_124678 0x10028eb

IBUS_braille_dots_34678

#define IBUS_braille_dots_34678 0x10028ec

IBUS_braille_dots_134678

#define IBUS_braille_dots_134678 0x10028ed

IBUS_braille_dots_234678

#define IBUS_braille_dots_234678 0x10028ee

IBUS_braille_dots_1234678

#define IBUS_braille_dots_1234678 0x10028ef

IBUS_braille_dots_5678

#define IBUS_braille_dots_5678 0x10028f0

IBUS_braille_dots_15678

#define IBUS_braille_dots_15678 0x10028f1

IBUS_braille_dots_25678

#define IBUS_braille_dots_25678 0x10028f2

IBUS_braille_dots_125678

#define IBUS_braille_dots_125678 0x10028f3

IBUS_braille_dots_35678

#define IBUS_braille_dots_35678 0x10028f4

IBUS_braille_dots_135678

#define IBUS_braille_dots_135678 0x10028f5

IBUS_braille_dots_235678

#define IBUS_braille_dots_235678 0x10028f6

IBUS_braille_dots_1235678

#define IBUS_braille_dots_1235678 0x10028f7

IBUS_braille_dots_45678

#define IBUS_braille_dots_45678 0x10028f8

IBUS_braille_dots_145678

#define IBUS_braille_dots_145678 0x10028f9

IBUS_braille_dots_245678

#define IBUS_braille_dots_245678 0x10028fa

IBUS_braille_dots_1245678

#define IBUS_braille_dots_1245678 0x10028fb

IBUS_braille_dots_345678

#define IBUS_braille_dots_345678 0x10028fc

IBUS_braille_dots_1345678

#define IBUS_braille_dots_1345678 0x10028fd

IBUS_braille_dots_2345678

#define IBUS_braille_dots_2345678 0x10028fe

IBUS_braille_dots_12345678

#define IBUS_braille_dots_12345678 0x10028ff
ibus-1.5.11/docs/reference/ibus/html/IBusFactory.html0000644000000000000000000003413212551655043017315 00000000000000 IBusFactory: IBus Reference Manual

IBusFactory

IBusFactory — Factory for creating engine instances.

Stability Level

Stable, unless otherwise indicated

Types and Values

struct IBusFactory

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ╰── IBusFactory

Description

An IBusFactory is an IBusService that creates input method engine (IME) instance. It provides CreateEngine remote method, which creates an IME instance by name, and returns the D-Bus object path to IBus daemon.

see_also: IBusEngine

Functions

ibus_factory_new ()

IBusFactory *
ibus_factory_new (GDBusConnection *connection);

Creates a new IBusFactory.

Parameters

connection

An GDBusConnection.

 

Returns

A newly allocated IBusFactory.


ibus_factory_add_engine ()

void
ibus_factory_add_engine (IBusFactory *factory,
                         const gchar *engine_name,
                         GType engine_type);

Add an engine to the factory.

Parameters

factory

An IBusFactory.

 

engine_name

Name of an engine.

 

engine_type

GType of an engine.

 

ibus_factory_create_engine ()

IBusEngine *
ibus_factory_create_engine (IBusFactory *factory,
                            const gchar *engine_name);

Creates an IBusEngine with engine_name .

Parameters

factory

An IBusFactory.

 

engine_name

Name of an engine.

 

Returns

IBusEngine with engine_name .

[transfer full]

Types and Values

struct IBusFactory

struct IBusFactory;

An opaque data type representing an IBusFactory.

Signal Details

The “create-engine†signal

IBusEngine*
user_function (IBusFactory *factory,
               gchar       *engine_name,
               gpointer     user_data)

The ::create-engine signal is a signal to create IBusEngine with engine_name , which gets emitted when IBusFactory received CreateEngine dbus method. The callback functions will be called until a callback returns a non-null object of IBusEngine.

Parameters

factory

the factory which received the signal

 

engine_name

the engine_name which received the signal

 

returns

An IBusEngine.

[nullable][transfer full]

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/annotation-glossary.html0000644000000000000000000001307412551655043021140 00000000000000 Annotation Glossary: IBus Reference Manual

Annotation Glossary

A

allow-none

NULL is OK, both for passing and for returning.

array

Parameter points to an array of items.

E

element-type

Generics and defining elements of containers and arrays.

N

nullable

NULL may be passed as the value in, out, in-out; or as a return value.

O

out

Parameter for returning results. Default is transfer full.

S

skip

Exposed in C code, not necessarily available in other languages.

Stable

The intention of a Stable interface is to enable arbitrary third parties to develop applications to these interfaces, release them, and have confidence that they will run on all minor releases of the product (after the one in which the interface was introduced, and within the same major release). Even at a major release, incompatible changes are expected to be rare, and to have strong justifications.

T

transfer container

Free data container after the code is done.

transfer full

Free data after the code is done.

transfer none

Don't free data after the code is done.

U

Unstable

Unstable interfaces are experimental or transitional. They are typically used to give outside developers early access to new or rapidly changing technology, or to provide an interim solution to a problem where a more general solution is anticipated. No claims are made about either source or binary compatibility from one minor release to the next. The Unstable interface level is a warning that these interfaces are subject to change without warning and should not be used in unbundled products. Given such caveats, customer impact need not be a factor when considering incompatible changes to an Unstable interface in a major or minor release. Nonetheless, when such changes are introduced, the changes should still be mentioned in the release notes for the affected release.

ibus-1.5.11/docs/reference/ibus/html/ibus-ibusdebug.html0000644000000000000000000001056712551655043020042 00000000000000 ibusdebug: IBus Reference Manual

ibusdebug

ibusdebug — Debug message output.

Stability Level

Stable, unless otherwise indicated

Functions

#define ibus_warning()

Description

This section lists functions that generate debug and warning messages.

Functions

ibus_warning()

#define             ibus_warning(msg, args...)

A convenient wrapper for g_warning. The output format will be

    source_file:line, message...

Parameters

msg

A printf formatted message to be print.

 

...

Necessary arguments for msg .

 

Types and Values

ibus-1.5.11/docs/reference/ibus/html/IBusConfigService.html0000644000000000000000000003012112551655043020426 00000000000000 IBusConfigService: IBus Reference Manual

IBusConfigService

IBusConfigService — Configuration service back-end.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ╰── IBusConfigService

Description

An IBusConfigService is a base class for other configuration services such as GConf. Currently, directly known sub class is IBusConfigGConf.

IBusConfigServiceClass has following member functions:

  • gboolean set_value(IBusConfigService *config, const gchar *section, const gchar *name, const GValue *value, IBusError **error)

    config:

    A configure service

    section:

    Section name of the configuration option.

    name:

    Name of the configuration option.

    value:

    GValue that holds the value.

    error:

    Error outputs here.

    Returns:

    TRUE if succeed; FALSE otherwise.

    Set a value to a configuration option.

  • gboolean get_value(IBusConfigService *config, const gchar *section, const gchar *name, GValue *value, IBusError **error)

    config:

    A configure service

    section:

    Section name of the configuration option.

    name:

    Name of the configuration option.

    value:

    GValue that holds the value.

    error:

    Error outputs here.

    Returns:

    TRUE if succeed; FALSE otherwise.

    Get value of a configuration option.

  • gboolean unset(IBusConfigService *config, const gchar *section, const gchar *name, IBusError **error)

    config:

    A configure service

    section:

    Section name of the configuration option.

    name:

    Name of the configuration option.

    error:

    Error outputs here.

    Returns:

    TRUE if succeed; FALSE otherwise.

    Remove an entry to a configuration option.

Functions

ibus_config_service_new ()

IBusConfigService *
ibus_config_service_new (GDBusConnection *connection);

Creates an new IBusConfigService from an GDBusConnection.

Parameters

connection

An GDBusConnection.

 

Returns

A newly allocated IBusConfigServices.


ibus_config_service_value_changed ()

void
ibus_config_service_value_changed (IBusConfigService *config,
                                   const gchar *section,
                                   const gchar *name,
                                   GVariant *value);

Change a value of a configuration option by sending a "ValueChanged" message to IBus service.

Parameters

config

An IBusConfigService.

 

section

Section name of the configuration option.

 

name

Name of the configure option.

 

value

GVariant that holds the value.

 

Types and Values

struct IBusConfigService

struct IBusConfigService;

An opaque data type representing a configure service.

ibus-1.5.11/docs/reference/ibus/html/home.png0000644000000000000000000000040012551655042015661 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ¡ &IDAT8ËÝÒ½ AÅñßž¦f`n v`6`/¶`Y€š˜Ü¡`f&k$,Ëá}˜ˆ ÌüßÀ0ü§bŒ+Ô¸aQW~bæ ËOà e˜{‡y N°Á£üö[LáØÌ}.pÇiÀ­÷¨BzüžÆmm Šoæ·.I]7Ì^[úÃô;%:å†ÁVIEND®B`‚ibus-1.5.11/docs/reference/ibus/html/IBusAttribute.html0000644000000000000000000006676412551655043017671 00000000000000 IBusAttribute: IBus Reference Manual

IBusAttribute

IBusAttribute — Attributes of IBusText.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GEnum
    ├── IBusAttrType
    ╰── IBusAttrUnderline
    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusAttribute

Description

An IBusAttribute represents an attribute that associate to IBusText. It decorates preedit buffer and auxiliary text with underline, foreground and background colors.

Functions

ibus_attribute_new ()

IBusAttribute *
ibus_attribute_new (guint type,
                    guint value,
                    guint start_index,
                    guint end_index);

Creates a new IBusAttribute.

Parameters

type

Type of the attribute.

 

value

Value of the attribute.

 

start_index

Where attribute starts.

 

end_index

Where attribute ends.

 

Returns

A newly allocated IBusAttribute.

[transfer none]


ibus_attribute_get_attr_type ()

guint
ibus_attribute_get_attr_type (IBusAttribute *attr);

Gets an enum of IBusAttrType.

Parameters

attr

An IBusAttribute

 

Returns

An enum of IBusAttrType.


ibus_attribute_get_value ()

guint
ibus_attribute_get_value (IBusAttribute *attr);

Gets an unsigned int value relative with IBusAttrType. If the type is IBUS_ATTR_TYPE_UNDERLINE, the return value is IBusAttrUnderline. If the type is IBUS_ATTR_TYPE_FOREGROUND, the return value is the color RGB.

Parameters

attr

An IBusAttribute

 

Returns

An unsigned int value relative with IBusAttrType.


ibus_attribute_get_start_index ()

guint
ibus_attribute_get_start_index (IBusAttribute *attr);

Gets a start unsigned index

Parameters

attr

An IBusAttribute

 

Returns

A start unsigned index


ibus_attribute_get_end_index ()

guint
ibus_attribute_get_end_index (IBusAttribute *attr);

Gets an end unsigned index

Parameters

attr

An IBusAttribute

 

Returns

A end unsigned index


ibus_attr_underline_new ()

IBusAttribute *
ibus_attr_underline_new (guint underline_type,
                         guint start_index,
                         guint end_index);

Creates a new underline IBusAttribute.

Parameters

underline_type

Type of underline.

 

start_index

Where attribute starts.

 

end_index

Where attribute ends.

 

Returns

A newly allocated IBusAttribute.

[transfer none]


ibus_attr_foreground_new ()

IBusAttribute *
ibus_attr_foreground_new (guint color,
                          guint start_index,
                          guint end_index);

Creates a new foreground IBusAttribute.

Parameters

color

Color in RGB.

 

start_index

Where attribute starts.

 

end_index

Where attribute ends.

 

Returns

A newly allocated IBusAttribute.

[transfer none]


ibus_attr_background_new ()

IBusAttribute *
ibus_attr_background_new (guint color,
                          guint start_index,
                          guint end_index);

Creates a new background IBusAttribute.

Parameters

color

Color in RGB.

 

start_index

Where attribute starts.

 

end_index

Where attribute ends.

 

Returns

A newly allocated IBusAttribute.

[transfer none]

Types and Values

enum IBusAttrType

Type enumeration of IBusText attribute.

Members

IBUS_ATTR_TYPE_UNDERLINE

Decorate with underline.

 

IBUS_ATTR_TYPE_FOREGROUND

Foreground color.

 

IBUS_ATTR_TYPE_BACKGROUND

Background color.

 

enum IBusAttrUnderline

Type of IBusText attribute.

Members

IBUS_ATTR_UNDERLINE_NONE

No underline.

 

IBUS_ATTR_UNDERLINE_SINGLE

Single underline.

 

IBUS_ATTR_UNDERLINE_DOUBLE

Double underline.

 

IBUS_ATTR_UNDERLINE_LOW

Low underline ? FIXME

 

IBUS_ATTR_UNDERLINE_ERROR

Error underline

 

struct IBusAttribute

struct IBusAttribute {
    guint type;
    guint value;
    guint start_index;
    guint end_index;
};

Signify the type, value and scope of the attribute. The scope starts from start_index till the end_index -1.

Members

guint type;

IBusAttributeType

 

guint value;

Value for the type.

 

guint start_index;

The starting index, inclusive.

 

guint end_index;

The ending index, exclusive.

 

See Also

IBusText

ibus-1.5.11/docs/reference/ibus/html/ch01.html0000644000000000000000000000605012551655043015654 00000000000000 Overview: IBus Reference Manual

Overview

This manual is the API specification for the IBus. IBus is built upon GObject and D-Bus, so you may find that modules are named as classes and objects in the sense of GObject, and may D-Bus wrapper API.

According to the puroposes of modules, we categorized them into following parts:

Panel

A IBus-panel is an UI which provides UI components such as language bar, property buttons and so on.

Input method engine (IME)

An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts.

Configuration

This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here.

Communication

Here lists the service communication functions.

Internal

Definition and functions for IBus internal use.

Normally input method developers need only to read the first three parts.

ibus-1.5.11/docs/reference/ibus/html/ibus-ibuskeys.html0000644000000000000000000003520212551655043017720 00000000000000 ibuskeys: IBus Reference Manual

ibuskeys

ibuskeys

Description

Functions

ibus_keyval_name ()

const gchar *
ibus_keyval_name (guint keyval);

Return the name of a key symbol.

Note that the returned string is used internally, so don't free it.

Parameters

keyval

Key symbol.

 

Returns

Corresponding key name. NULL if no such key symbol.


ibus_keyval_from_name ()

guint
ibus_keyval_from_name (const gchar *keyval_name);

Return the key symbol that associate with the key name.

Parameters

keyval_name

Key name in gdk_keys_by_name.

 

Returns

Corresponding key symbol.


ibus_unicode_to_keyval ()

guint
ibus_unicode_to_keyval (gunichar wc);

Convert from a ISO10646 character to a key symbol.

Parameters

wc

a ISO10646 encoded character

 

Returns

the corresponding IBus key symbol, if one exists. or, if there is no corresponding symbol, wc | 0x01000000


ibus_keyval_to_unicode ()

gunichar
ibus_keyval_to_unicode (guint keyval);

Convert from an IBus key symbol to the corresponding ISO10646 (Unicode) character.

Parameters

keyval

an IBus key symbol

 

Returns

the corresponding unicode character, or 0 if there is no corresponding character.


ibus_keyval_to_upper ()

guint
ibus_keyval_to_upper (guint keyval);

Converts a key value to upper case, if applicable.

Parameters

keyval

a key value.

 

Returns

the upper case form of keyval , or keyval itself if it is already in upper case or it is not subject to case conversion.


ibus_keyval_to_lower ()

guint
ibus_keyval_to_lower (guint keyval);

Converts a key value to lower case, if applicable.

Parameters

keyval

a key value.

 

Returns

the lower case form of keyval , or keyval itself if it is already in lower case or it is not subject to case conversion.


ibus_keyval_convert_case ()

void
ibus_keyval_convert_case (guint symbol,
                          guint *lower,
                          guint *upper);

Obtains the upper- and lower-case versions of the keyval symbol . Examples of keyvals are IBUS_KEY_a, IBUS_KEY_Return, IBUS_KEY_F1, etc.

Parameters

symbol

a keyval

 

lower

return location for lowercase version of symbol .

[out]

upper

return location for uppercase version of symbol .

[out]

Types and Values

ibus-1.5.11/docs/reference/ibus/html/style.css0000644000000000000000000002115412551655042016106 00000000000000body { font-family: cantarell, sans-serif; } .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; background: rgba(238, 238, 236, 0.5); border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; background: rgba(114, 159, 207, 0.1); border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.informaltable table { border-collapse: separate; border-spacing: 1em 0.3em; border: none; } div.informaltable table td, div.informaltable table th { vertical-align: top; } .function_type, .variable_type, .property_type, .signal_type, .parameter_name, .struct_member_name, .union_member_name, .define_keyword, .datatype_keyword, .typedef_keyword { text-align: right; } /* dim non-primary columns */ .c_punctuation, .function_type, .variable_type, .property_type, .signal_type, .define_keyword, .datatype_keyword, .typedef_keyword, .property_flags, .signal_flags, .parameter_annotations, .enum_member_annotations, .struct_member_annotations, .union_member_annotations { color: #888a85; } .function_type a, .function_type a:visited, .function_type a:hover, .property_type a, .property_type a:visited, .property_type a:hover, .signal_type a, .signal_type a:visited, .signal_type a:hover, .signal_flags a, .signal_flags a:visited, .signal_flags a:hover { color: #729fcf; } td p { margin: 0.25em; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } h4 { color: #555753; margin-top: 1em; margin-bottom: 1em; } hr { /* tango:aluminium 1 */ color: #d3d7cf; background: #d3d7cf; border: none 0px; height: 1px; clear: both; margin: 2.0em 0em 2.0em 0em; } dl.toc dt { padding-bottom: 0.25em; } dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; font-weight: bold; } dl.toc > dl { padding-bottom: 0.5em; } .parameter { font-style: normal; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .informalfigure, .figure { margin: 1em; } .informalexample, .example { margin-top: 1em; margin-bottom: 1em; } .warning { /* tango:orange 0/1 */ background: #ffeed9; background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; background: rgba(138, 226, 52, 0.1); border-color: #abf562; border-color: rgba(138, 226, 52, 0.2); } div.blockquote { border-color: #eeeeec; } .note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; margin: 2em; } .note p, .warning p { margin: 0; } div.warning h3.title, div.note h3.title { display: none; } p + div.section { margin-top: 1em; } div.refnamediv, div.refsynopsisdiv, div.refsect1, div.refsect2, div.toc, div.section { margin-bottom: 1em; } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .lineart { color: #d3d7cf; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-weight: normal; } .structfield { font-style: normal; font-weight: normal; } acronym,abbr { border-bottom: 1px dotted gray; } /* code listings */ .listing_code .programlisting .normal, .listing_code .programlisting .normal a, .listing_code .programlisting .number, .listing_code .programlisting .cbracket, .listing_code .programlisting .symbol { color: #555753; } .listing_code .programlisting .comment, .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .function, .listing_code .programlisting .function a, .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ .listing_code .programlisting .keyword, .listing_code .programlisting .usertype, .listing_code .programlisting .type, .listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; background: none; } .listing_lines pre, .listing_code pre { margin: 0px; } @media screen { /* these have a as a first child, but since there are no parent selectors * we can't use that. */ a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 2.5em; padding-bottom: 500px; max-width: 60em; } p { max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; background: #e2e2e2; border-bottom: solid 1px #babdb6; border-spacing: 5px; margin-top: 0; margin-bottom: 0; top: 0; left: 0; z-index: 10; } table.navigation#top td { padding-left: 6px; padding-right: 6px; } .navigation a, .navigation a:visited { /* tango:sky blue 3 */ color: #204a87; } .navigation a:hover { /* tango:sky blue 2 */ color: #3465a4; } td.shortcuts { /* tango:sky blue 2 */ color: #3465a4; font-size: 80%; white-space: nowrap; } td.shortcuts .dim { color: #babdb6; } .navigation .title { font-size: 80%; max-width: none; margin: 0px; font-weight: normal; } } @media screen and (min-width: 60em) { /* screen larger than 60em */ body { margin: auto; } } @media screen and (max-width: 60em) { /* screen less than 60em */ #nav_hierarchy { display: none; } #nav_interfaces { display: none; } #nav_prerequisites { display: none; } #nav_derived_interfaces { display: none; } #nav_implementations { display: none; } #nav_child_properties { display: none; } #nav_style_properties { display: none; } #nav_index { display: none; } #nav_glossary { display: none; } .gallery_image { display: none; } .property_flags { display: none; } .signal_flags { display: none; } .parameter_annotations { display: none; } .enum_member_annotations { display: none; } .struct_member_annotations { display: none; } .union_member_annotations { display: none; } /* now that a column is hidden, optimize space */ col.parameters_name { width: auto; } col.parameters_description { width: auto; } col.struct_members_name { width: auto; } col.struct_members_description { width: auto; } col.enum_members_name { width: auto; } col.enum_members_description { width: auto; } col.union_members_name { width: auto; } col.union_members_description { width: auto; } .listing_lines { display: none; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; background: #e2e2e2; border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } ibus-1.5.11/docs/reference/ibus/html/ch06.html0000644000000000000000000000457212551655043015670 00000000000000 Internal: IBus Reference Manual

Internal

ibusdebug — Debug message output.
ibuserror — Error functions and definition.
IBusObject — Base object of IBus.
ibusshare — Shared utility functions and definition.
ibustypes — Generic types for IBus.

Definition and functions for IBus internal use.

ibus-1.5.11/docs/reference/ibus/html/IBusEngineSimple.html0000644000000000000000000003303312551655043020264 00000000000000 IBusEngineSimple: IBus Reference Manual

IBusEngineSimple

IBusEngineSimple — Input method engine supporting table-based input method

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ╰── IBusEngine
                    ╰── IBusEngineSimple

Description

An IBusEngineSimple provides table-based input method logic.

see_also: IBusEngine

Functions

ibus_engine_simple_add_table ()

void
ibus_engine_simple_add_table (IBusEngineSimple *simple,
                              const guint16 *data,
                              gint max_seq_len,
                              gint n_seqs);

Adds an additional table to search to the engine. Each row of the table consists of max_seq_len key symbols followed by two guint16 interpreted as the high and low words of a gunicode value. Tables are searched starting from the last added.

The table must be sorted in dictionary order on the numeric value of the key symbol fields. (Values beyond the length of the sequence should be zero.)

Parameters

simple

An IBusEngineSimple.

 

data

The table which must be available during the whole life of the simple engine.

[element-type guint16][array]

max_seq_len

Maximum length of a swquence in the table (cannot be greater than IBUS_MAX_COMPOSE_LEN)

 

n_seqs

number of sequences in the table

 

ibus_engine_simple_add_table_by_locale ()

gboolean
ibus_engine_simple_add_table_by_locale
                               (IBusEngineSimple *simple,
                                const gchar *locale);

Call ibus_engine_simple_add_table() internally by locale.

Parameters

simple

An IBusEngineSimple.

 

locale

The locale name. If the locale is NULL, the current locale is used.

[allow-none]

Returns

TRUE if the locale is matched to the table.


ibus_engine_simple_add_compose_file ()

gboolean
ibus_engine_simple_add_compose_file (IBusEngineSimple *simple,
                                     const gchar *file);

Call ibus_engine_simple_add_table() internally by locale.

Parameters

simple

An IBusEngineSimple.

 

file

The compose file. If the file is NULL, the current locale is used.

 

Returns

TRUE if the file is loaded.

Types and Values

IBUS_MAX_COMPOSE_LEN

#define IBUS_MAX_COMPOSE_LEN 7

struct IBusEngineSimple

struct IBusEngineSimple;

IBusEngineSimple properties.

ibus-1.5.11/docs/reference/ibus/html/ibus-ibusshare.html0000644000000000000000000007536712551655043020067 00000000000000 ibusshare: IBus Reference Manual

ibusshare

ibusshare — Shared utility functions and definition.

Stability Level

Stable, unless otherwise indicated

Functions

const gchar * ibus_get_local_machine_id ()
void ibus_set_display ()
const gchar * ibus_get_address ()
void ibus_write_address ()
const gchar * ibus_get_user_name ()
glong ibus_get_daemon_uid ()
const gchar * ibus_get_socket_path ()
gint ibus_get_timeout ()
void ibus_free_strv ()
const gchar * ibus_key_event_to_string ()
gboolean ibus_key_event_from_string ()
void ibus_init ()
void ibus_main ()
void ibus_quit ()
void ibus_set_log_handler ()
void ibus_unset_log_handler ()

Description

This file defines some utility functions and definition which are shared among ibus component and services.

Functions

ibus_get_local_machine_id ()

const gchar *
ibus_get_local_machine_id (void);

Obtains the machine UUID of the machine this process is running on.

Returns

A newly allocated string that shows the UUID of the machine.


ibus_set_display ()

void
ibus_set_display (const gchar *display);

Set the display address.

Parameters

display

Display address, as in DISPLAY environment for X.

 

ibus_get_address ()

const gchar *
ibus_get_address (void);

Return the D-Bus address of IBus. It will find the address from following source:

  1. Environment variable IBUS_ADDRESS

  2. Socket file under ~/.config/ibus/bus/

Returns

D-Bus address of IBus. NULL for not found.

See also: ibus_write_address().


ibus_write_address ()

void
ibus_write_address (const gchar *address);

Write D-Bus address to socket file.

See also: ibus_get_address().

Parameters

address

D-Bus address of IBus.

 

ibus_get_user_name ()

const gchar *
ibus_get_user_name (void);

Get the current user name. It is determined by:

  1. getlogin()

  2. Environment variable SUDO_USER

  3. Environment variable USERHELPER_UID

  4. Environment variable USERNAME

  5. Environment variable LOGNAME

  6. Environment variable USER

  7. Environment variable LNAME

Returns

A newly allocated string that stores current user name.


ibus_get_daemon_uid ()

glong
ibus_get_daemon_uid (void);

ibus_get_daemon_uid is deprecated and should not be used in newly-written code.

This function has been deprecated and should not be used in newly written code.

Get UID of ibus-daemon.

Returns

UID of ibus-daemon; or 0 if UID is not available.


ibus_get_socket_path ()

const gchar *
ibus_get_socket_path (void);

Get the path of socket file.

Returns

A newly allocated string that stores the path of socket file.


ibus_get_timeout ()

gint
ibus_get_timeout (void);

Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. im-ibus.so), not for ibus-daemon. Note that the timeout for ibus-daemon could be set by --timeout command line option of the daemon.

Returns

A GDBus timeout in milliseconds. -1 when default timeout for GDBus should be used.


ibus_free_strv ()

void
ibus_free_strv (gchar **strv);

ibus_free_strv is deprecated and should not be used in newly-written code.

This function has been deprecated and should not be used in newly written code.

Free a list of strings.

Parameters

strv

List of strings.

 

ibus_key_event_to_string ()

const gchar *
ibus_key_event_to_string (guint keyval,
                          guint modifiers);

Return the name of a key symbol and modifiers.

For example, if press ctrl, shift, and enter, then this function returns: Shift+Control+enter.

Parameters

keyval

Key symbol.

 

modifiers

Modifiers such as Ctrl or Shift.

 

Returns

The name of a key symbol and modifier.


ibus_key_event_from_string ()

gboolean
ibus_key_event_from_string (const gchar *string,
                            guint *keyval,
                            guint *modifiers);

Parse key event string and return key symbol and modifiers.

Parameters

string

Key event string.

 

keyval

Variable that hold key symbol result.

 

modifiers

Variable that hold modifiers result.

 

Returns

TRUE for succeed; FALSE if failed.


ibus_init ()

void
ibus_init (void);

Initialize the ibus types.


ibus_main ()

void
ibus_main (void);

Runs an IBus main loop until ibus_quit() is called in the loop.

See also: ibus_quit().


ibus_quit ()

void
ibus_quit (void);

Stops an IBus from running.

Any calls to ibus_quit() for the loop will return. See also: ibus_main().


ibus_set_log_handler ()

void
ibus_set_log_handler (gboolean verbose);

Sets GLIB's log handler to ours. Our log handler adds time info including hour, minute, second, and microsecond, like:

(ibus-daemon:7088): IBUS-DEBUG: 18:06:45.822819: ibus-daemon started

If verbose is TRUE, all levels of messages will be logged. Otherwise, DEBUG and WARNING messages will be ignored. The function is used in ibus-daemon, but can be useful for IBus client programs as well for debugging. It's totally fine for not calling this function. If you don't set a custom GLIB log handler, the default GLIB log handler will be used.

Parameters

verbose

TRUE for verbose logging.

 

ibus_unset_log_handler ()

void
ibus_unset_log_handler (void);

Remove the log handler which is set by ibus_set_log_handler.

Types and Values

IBUS_DEPRECATED

#define IBUS_DEPRECATED

IBUS_SERVICE_IBUS

#define IBUS_SERVICE_IBUS       "org.freedesktop.IBus"

Address of IBus service.


IBUS_SERVICE_PANEL

#define IBUS_SERVICE_PANEL      "org.freedesktop.IBus.Panel"

Address of IBus panel service.


IBUS_SERVICE_CONFIG

#define IBUS_SERVICE_CONFIG     "org.freedesktop.IBus.Config"

Address of IBus config service.


IBUS_SERVICE_NOTIFICATIONS

#define IBUS_SERVICE_NOTIFICATIONS    "org.freedesktop.IBus.Notifications"

Address of IBus notification service.


IBUS_PATH_IBUS

#define IBUS_PATH_IBUS          "/org/freedesktop/IBus"

D-Bus path for IBus


IBUS_PATH_FACTORY

#define IBUS_PATH_FACTORY       "/org/freedesktop/IBus/Factory"

D-Bus path for IBus factory.


IBUS_PATH_PANEL

#define IBUS_PATH_PANEL         "/org/freedesktop/IBus/Panel"

D-Bus path for IBus panel.


IBUS_PATH_CONFIG

#define IBUS_PATH_CONFIG        "/org/freedesktop/IBus/Config"

D-Bus path for IBus config.


IBUS_PATH_NOTIFICATIONS

#define IBUS_PATH_NOTIFICATIONS "/org/freedesktop/IBus/Notifications"

D-Bus path for IBus notifications.


IBUS_PATH_INPUT_CONTEXT

#define IBUS_PATH_INPUT_CONTEXT "/org/freedesktop/IBus/InputContext_%d"

Template of D-Bus path for IBus input context.


IBUS_INTERFACE_IBUS

#define IBUS_INTERFACE_IBUS     "org.freedesktop.IBus"

D-Bus interface for IBus.


IBUS_INTERFACE_INPUT_CONTEXT

#define             IBUS_INTERFACE_INPUT_CONTEXT

D-Bus interface for IBus input context.


IBUS_INTERFACE_FACTORY

#define IBUS_INTERFACE_FACTORY  "org.freedesktop.IBus.Factory"

D-Bus interface for IBus factory.


IBUS_INTERFACE_ENGINE

#define IBUS_INTERFACE_ENGINE   "org.freedesktop.IBus.Engine"

D-Bus interface for IBus engine.


IBUS_INTERFACE_PANEL

#define IBUS_INTERFACE_PANEL    "org.freedesktop.IBus.Panel"

D-Bus interface for IBus panel.


IBUS_INTERFACE_CONFIG

#define IBUS_INTERFACE_CONFIG   "org.freedesktop.IBus.Config"

D-Bus interface for IBus config.


IBUS_INTERFACE_NOTIFICATIONS

#define IBUS_INTERFACE_NOTIFICATIONS    "org.freedesktop.IBus.Notifications"

D-Bus interface for IBus notifications.

ibus-1.5.11/docs/reference/ibus/html/ibus-ibusversion.html0000644000000000000000000001366112551655043020437 00000000000000 ibusversion: IBus Reference Manual

ibusversion

ibusversion — Current version of IBus.

Stability Level

Stable, unless otherwise indicated

Functions

#define IBUS_CHECK_VERSION()

Types and Values

Description

IBusVersion shows the current IBus version.

Functions

IBUS_CHECK_VERSION()

#define             IBUS_CHECK_VERSION(major,minor,micro)

Check whether the current IBus version is equal to or greater than given major.minor.micro.

Parameters

major

Major version of ibus.

 

minor

Minor version of ibus.

 

micro

Micro version of ibus.

 

Types and Values

IBUS_MAJOR_VERSION

#define IBUS_MAJOR_VERSION				(1)

IBus major version.


IBUS_MINOR_VERSION

#define IBUS_MINOR_VERSION				(5)

IBus minor version.


IBUS_MICRO_VERSION

#define IBUS_MICRO_VERSION				(11)

IBus micro version.

ibus-1.5.11/docs/reference/ibus/html/IBusService.html0000644000000000000000000004421212551655043017306 00000000000000 IBusService: IBus Reference Manual

IBusService

IBusService — IBus service back-end.

Stability Level

Stable, unless otherwise indicated

Types and Values

struct IBusService

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ├── IBusFactory
                ├── IBusConfigService
                ├── IBusEngine
                ╰── IBusPanelService

Description

An IBusService is a base class for services.

Functions

ibus_service_new ()

IBusService *
ibus_service_new (GDBusConnection *connection,
                  const gchar *path);

Creantes a new IBusService.

Parameters

connection

A GDBusConnection.

 

path

Object path.

 

Returns

A newly allocated IBusService


ibus_service_get_object_path ()

const gchar *
ibus_service_get_object_path (IBusService *service);

Gets the object path of an IBusService.

Parameters

service

An IBusService.

 

Returns

The object path of service


ibus_service_get_connection ()

GDBusConnection *
ibus_service_get_connection (IBusService *service);

Gets a connections.

Parameters

service

An IBusService.

 

Returns

A GDBusConnection of an IBusService instance.

[transfer none]


ibus_service_register ()

gboolean
ibus_service_register (IBusService *service,
                       GDBusConnection *connection,
                       GError **error);

Registers service to a connection.

Parameters

service

An IBusService.

 

connection

A GDBusConnection the service will be registered to.

 

error

Return location for error or NULL.

 

Returns

TRUE if the service was registered, FALSE otherwise.


ibus_service_unregister ()

void
ibus_service_unregister (IBusService *service,
                         GDBusConnection *connection);

Unregisters service from a connection.

Parameters

service

An IBusService.

 

connection

A GDBusConnection the service was registered with.

 

ibus_service_emit_signal ()

gboolean
ibus_service_emit_signal (IBusService *service,
                          const gchar *dest_bus_name,
                          const gchar *interface_name,
                          const gchar *signal_name,
                          GVariant *parameters,
                          GError **error);

ibus_service_class_add_interfaces ()

gboolean
ibus_service_class_add_interfaces (IBusServiceClass *klass,
                                   const gchar *xml_data);

Set the interface introspection information with the service class.

Parameters

klass

An IBusServiceClass.

 

xml_data

The introspection xml data.

 

Returns

TRUE if xml_data is valid and succeeded to be added; FALSE otherwise.

Types and Values

struct IBusService

struct IBusService;

An opaque data type representing an IBusService.

ibus-1.5.11/docs/reference/ibus/html/up-insensitive.png0000644000000000000000000000056612551655042017730 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝwIûIDAT8Ëí’?/QÅÏ™?[êu$¾€V³î›ÑâHTD³ø”ÛˆBM+¡!™ÂÌ<ˆDã+èô[mdÞ\…·bø{º{sÎ/97˜ªSÖÚ£º®»<ìTõ8ŒcÌÉ¿UU­‘¼‡•WÕÍ,Ë®ÿ”e¹EÑ €žªîÉSïmÛ®æy~û+À9·è½¿0`hŒ9u†ªº`Çñr¿ßùpÎÍ{ïÌ8‘m’ ªJkí€-o$—Dä¢  išË¾'¹; ‡ Jr‡äCð\¨*¿HΑ|JÓtCDÆßo#"ã$IÖ<«êBQ½é£êêÉ]•TKúIEND®B`‚ibus-1.5.11/docs/reference/ibus/html/ibus-ibusutil.html0000644000000000000000000001467512551655043017735 00000000000000 ibusutil: IBus Reference Manual

ibusutil

ibusutil — Utilities with C-Language.

Stability Level

Unstable, unless otherwise indicated

Functions

Description

Utilized functions are available for miscellaneous purposes.

Functions

ibus_get_untranslated_language_name ()

const gchar *
ibus_get_untranslated_language_name (const gchar *_locale);

Parameters

_locale

A const locale name.

 

Returns

untranslated language name


ibus_get_language_name ()

const gchar *
ibus_get_language_name (const gchar *_locale);

Parameters

_locale

A const locale name.

 

Returns

translated language name

Types and Values

ibus-1.5.11/docs/reference/ibus/html/ibus-ibustypes.html0000644000000000000000000007450612551655043020123 00000000000000 ibustypes: IBus Reference Manual

ibustypes

ibustypes — Generic types for IBus.

Stability Level

Stable, unless otherwise indicated

Functions

void (*IBusFreeFunc) ()

Object Hierarchy

    GEnum
    ╰── IBusOrientation
    GFlags
    ├── IBusCapabilite
    ╰── IBusModifierType

Description

This section consists generic types for IBus, including shift/control key modifiers, and a rectangle structure.

Functions

IBusFreeFunc ()

void
(*IBusFreeFunc) (gpointer object);

Free function prototype.

Parameters

object

object to be freed.

 

Types and Values

enum IBusModifierType

Handles key modifier such as control, shift and alt and release event. Note that nits 15 - 25 are currently unused, while bit 29 is used internally.

Members

IBUS_SHIFT_MASK

Shift is activated.

 

IBUS_LOCK_MASK

Cap Lock is locked.

 

IBUS_CONTROL_MASK

Control key is activated.

 

IBUS_MOD1_MASK

Modifier 1 (Usually Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)) activated.

 

IBUS_MOD2_MASK

Modifier 2 (Usually Num_Lock (0x4d)) activated.

 

IBUS_MOD3_MASK

Modifier 3 activated.

 

IBUS_MOD4_MASK

Modifier 4 (Usually Super_L (0xce), Hyper_L (0xcf)) activated.

 

IBUS_MOD5_MASK

Modifier 5 (ISO_Level3_Shift (0x5c), Mode_switch (0xcb)) activated.

 

IBUS_BUTTON1_MASK

Mouse button 1 (left) is activated.

 

IBUS_BUTTON2_MASK

Mouse button 2 (middle) is activated.

 

IBUS_BUTTON3_MASK

Mouse button 3 (right) is activated.

 

IBUS_BUTTON4_MASK

Mouse button 4 (scroll up) is activated.

 

IBUS_BUTTON5_MASK

Mouse button 5 (scroll down) is activated.

 

IBUS_HANDLED_MASK

Handled mask indicates the event has been handled by ibus.

 

IBUS_FORWARD_MASK

Forward mask indicates the event has been forward from ibus.

 

IBUS_IGNORED_MASK

It is an alias of IBUS_FORWARD_MASK.

 

IBUS_SUPER_MASK

Super (Usually Win) key is activated.

 

IBUS_HYPER_MASK

Hyper key is activated.

 

IBUS_META_MASK

Meta key is activated.

 

IBUS_RELEASE_MASK

Key is released.

 

IBUS_MODIFIER_MASK

Modifier mask for the all the masks above.

 

enum IBusCapabilite

Capability flags of UI.

Members

IBUS_CAP_PREEDIT_TEXT

UI is capable to show pre-edit text.

 

IBUS_CAP_AUXILIARY_TEXT

UI is capable to show auxiliary text.

 

IBUS_CAP_LOOKUP_TABLE

UI is capable to show the lookup table.

 

IBUS_CAP_FOCUS

UI is capable to get focus.

 

IBUS_CAP_PROPERTY

UI is capable to have property.

 

IBUS_CAP_SURROUNDING_TEXT

Client can provide surround text, or IME can handle surround text.

 

enum IBusPreeditFocusMode

Pre-edit commit mode when the focus is lost.

Members

IBUS_ENGINE_PREEDIT_CLEAR

pre-edit text is cleared.

 

IBUS_ENGINE_PREEDIT_COMMIT

pre-edit text is committed.

 

enum IBusOrientation

Orientation of UI.

Members

IBUS_ORIENTATION_HORIZONTAL

Horizontal orientation.

 

IBUS_ORIENTATION_VERTICAL

Vertival orientation.

 

IBUS_ORIENTATION_SYSTEM

Use ibus global orientation setup.

 

enum IBusBusNameFlag

Members

IBUS_BUS_NAME_FLAG_ALLOW_REPLACEMENT

same as DBUS_NAME_FLAG_ALLOW_REPLACEMENT

 

IBUS_BUS_NAME_FLAG_REPLACE_EXISTING

same as DBUS_NAME_FLAG_REPLACE_EXISTING

 

IBUS_BUS_NAME_FLAG_DO_NOT_QUEUE

same as DBUS_NAME_FLAG_DO_NOT_QUEUE

 

enum IBusBusRequestNameReply

Members

IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER

same as DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER

 

IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE

same as DBUS_REQUEST_NAME_REPLY_IN_QUEUE

 

IBUS_BUS_REQUEST_NAME_REPLY_EXISTS

same as DBUS_REQUEST_NAME_REPLY_EXISTS

 

IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER

same as DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER

 

enum IBusBusStartServiceByNameReply

Members

IBUS_BUS_START_REPLY_SUCCESS

same as DBUS_START_REPLY_SUCCESS

 

IBUS_BUS_START_REPLY_ALREADY_RUNNING

same as DBUS_START_REPLY_ALREADY_RUNNING

 

enum IBusError

Members

IBUS_ERROR_NO_ENGINE

There is no engine associated with input context.

 

IBUS_ERROR_NO_CONFIG

There is no config module running.

 

IBUS_ERROR_FAILED

General failure.

 

struct IBusRectangle

struct IBusRectangle {
    gint x;
    gint y;
    gint width;
    gint height;
};

Rectangle definition.

Members

gint x;

x coordinate.

 

gint y;

y coordinate.

 

gint width;

width of the rectangle.

 

gint height;

height of the renctangl.

 

enum IBusInputPurpose

Describes primary purpose of the input context. This information is particularly useful to implement intelligent behavior in engines, such as automatic input-mode switch and text prediction.

This enumeration may be extended in the future; engines should interpret unknown values as 'free form'.

Members

IBUS_INPUT_PURPOSE_FREE_FORM

Allow any character

 

IBUS_INPUT_PURPOSE_ALPHA

Allow only alphabetic characters

 

IBUS_INPUT_PURPOSE_DIGITS

Allow only digits

 

IBUS_INPUT_PURPOSE_NUMBER

Edited field expects numbers

 

IBUS_INPUT_PURPOSE_PHONE

Edited field expects phone number

 

IBUS_INPUT_PURPOSE_URL

Edited field expects URL

 

IBUS_INPUT_PURPOSE_EMAIL

Edited field expects email address

 

IBUS_INPUT_PURPOSE_NAME

Edited field expects the name of a person

 

IBUS_INPUT_PURPOSE_PASSWORD

Like IBUS_INPUT_PURPOSE_FREE_FORM , but characters are hidden

 

IBUS_INPUT_PURPOSE_PIN

Like IBUS_INPUT_PURPOSE_DIGITS , but characters are hidden

 

enum IBusInputHints

Describes hints that might be taken into account by engines. Note that engines may already tailor their behaviour according to the IBusInputPurpose of the entry.

Members

IBUS_INPUT_HINT_NONE

No special behaviour suggested

 

IBUS_INPUT_HINT_SPELLCHECK

Suggest checking for typos

 

IBUS_INPUT_HINT_NO_SPELLCHECK

Suggest not checking for typos

 

IBUS_INPUT_HINT_WORD_COMPLETION

Suggest word completion

 

IBUS_INPUT_HINT_LOWERCASE

Suggest to convert all text to lowercase

 

IBUS_INPUT_HINT_UPPERCASE_CHARS

Suggest to capitalize all text

 

IBUS_INPUT_HINT_UPPERCASE_WORDS

Suggest to capitalize the first character of each word

 

IBUS_INPUT_HINT_UPPERCASE_SENTENCES

Suggest to capitalize the first word of each sentence

 

IBUS_INPUT_HINT_INHIBIT_OSK

Suggest to not show an onscreen keyboard (e.g for a calculator that already has all the keys).

 

IBUS_INPUT_HINT_VERTICAL_WRITING

The text is vertical.

 
ibus-1.5.11/docs/reference/ibus/html/IBusObservedPath.html0000644000000000000000000004213612551655043020277 00000000000000 IBusObservedPath: IBus Reference Manual

IBusObservedPath

IBusObservedPath — Path object of IBus.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusObservedPath

Description

IBusObservedPath provides methods for file path manipulation, such as monitor modification, directory tree traversal.

Functions

ibus_observed_path_new_from_xml_node ()

IBusObservedPath *
ibus_observed_path_new_from_xml_node (XMLNode *node,
                                      gboolean fill_stat);

Creates an new IBusObservedPath from an XML node.

Parameters

node

An XML node that contain path.

 

fill_stat

Auto-fill the path status.

 

Returns

A newly allocated IBusObservedPath.


ibus_observed_path_new ()

IBusObservedPath *
ibus_observed_path_new (const gchar *path,
                        gboolean fill_stat);

Creates a new IBusObservedPath from an XML node.

Parameters

path

The path string.

 

fill_stat

Auto-fill the path status.

 

Returns

A newly allocated IBusObservedPath.


ibus_observed_path_traverse ()

GList *
ibus_observed_path_traverse (IBusObservedPath *path,
                             gboolean dir_only);

Recursively traverse the path and put the files and subdirectory in to a newly allocated GLists, if the path is a directory. Otherwise returns NULL.

Parameters

path

An IBusObservedPath.

 

dir_only

Only looks for subdirs, not files

 

Returns

A newly allocate GList which holds content in path; NULL if path is not directory.

[transfer full][element-type IBusObservedPath]


ibus_observed_path_check_modification ()

gboolean
ibus_observed_path_check_modification (IBusObservedPath *path);

Checks whether the path is modified by comparing the mtime in object and mtime in file system.

Parameters

path

An IBusObservedPath.

 

Returns

TRUE if imtime is changed, otherwise FALSE.


ibus_observed_path_output ()

void
ibus_observed_path_output (IBusObservedPath *path,
                           GString *output,
                           gint indent);

Append the observed path to a string with following format: <path mtime="<i>modified time</i>" ><i>path</i></path>

Parameters

path

An IBusObservedPath.

 

output

Path is appended to.

 

indent

number of indent.

 

Types and Values

struct IBusObservedPath

struct IBusObservedPath {
    gchar *path;
    glong mtime;
    gboolean is_dir;
    gboolean is_exist;
};

Data structure of IBusObservedPath.

Members

gchar *path;

Path to be handled.

 

glong mtime;

Modified time.

 

gboolean is_dir;

Whether the file is the path directory.

 

gboolean is_exist;

Whether the file exists.

 
ibus-1.5.11/docs/reference/ibus/html/api-index-deprecated.html0000644000000000000000000001447312551655043021105 00000000000000 Index of deprecated symbols: IBus Reference Manual ibus-1.5.11/docs/reference/ibus/html/IBusRegistry.html0000644000000000000000000007525212551655043017526 00000000000000 IBusRegistry: IBus Reference Manual

IBusRegistry

IBusRegistry — Registry cache handling.

Stability Level

Stable, unless otherwise indicated

Signals

Types and Values

struct IBusRegistry

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusRegistry

Description

An IBusRegistry loads IBus component files and generates the cache files.

see_also: IBusComponent

Functions

ibus_registry_new ()

IBusRegistry *
ibus_registry_new (void);

Creates a new IBusRegistry

Returns

A newly allocated IBusRegistry.


ibus_registry_load ()

void
ibus_registry_load (IBusRegistry *registry);

Read all XML files in a IBus component directory (typically /usr/share/ibus/component/ *.xml) and update the registry object. IBUS_COMPONENT_PATH environment valuable is also available for the custom component directories, whose delimiter is ':'.

Parameters

registry

An IBusRegistry.

 

ibus_registry_load_in_dir ()

void
ibus_registry_load_in_dir (IBusRegistry *registry,
                           const gchar *dirname);

Read all XML files in dirname , create a IBusComponent object for each file, and add the component objects to the registry. If dirname is "/usr/share/ibus/component", this API and ibus_registry_load() are same.

Parameters

registry

An IBusRegistry.

 

dirname

IBus component directory which includes XML files.

 

ibus_registry_load_cache ()

gboolean
ibus_registry_load_cache (IBusRegistry *registry,
                          gboolean is_user);

Load the user or system registry cache.

Parameters

registry

An IBusRegistry.

 

is_user

TRUE if the registry cache is loaded in the user directory.

 

Returns

TRUE if the cache exists and is loaded successfully, FALSE otherwise.


ibus_registry_load_cache_file ()

gboolean
ibus_registry_load_cache_file (IBusRegistry *registry,
                               const gchar *filename);

Load the registry cache filename .

Parameters

registry

An IBusRegistry.

 

filename

The file path of the registry cache

 

Returns

TRUE if the cache exists and is loaded successfully, FALSE otherwise.


ibus_registry_save_cache ()

gboolean
ibus_registry_save_cache (IBusRegistry *registry,
                          gboolean is_user);

Save the registry in a user directory or system directory.

Parameters

registry

An IBusRegistry.

 

is_user

TRUE if the registry cache is saved in the user directory.

 

Returns

TRUE if the cache is saved successfully, FALSE otherwise.


ibus_registry_save_cache_file ()

gboolean
ibus_registry_save_cache_file (IBusRegistry *registry,
                               const gchar *filename);

Save the registry cache filename .

Parameters

registry

An IBusRegistry.

 

filename

The file path of the registry cache

 

Returns

TRUE if the cache is saved successfully, FALSE otherwise.


ibus_registry_output ()

void
ibus_registry_output (IBusRegistry *registry,
                      GString *output,
                      int indent);

Output IBusRegistry as an XML-formatted string. The output string can be then shown on the screen or written to file.

Parameters

registry

An IBusRegistry.

 

output

GString that holds the result.

 

indent

level of indent.

 

ibus_registry_check_modification ()

gboolean
ibus_registry_check_modification (IBusRegistry *registry);

Check if the registry is updated.

Parameters

registry

An IBusRegistry.

 

Returns

TRUE if mtime is changed; FALSE otherwise.


ibus_registry_get_components ()

GList *
ibus_registry_get_components (IBusRegistry *registry);

List components.

Parameters

registry

An IBusRegistry.

 

Returns

a list of IBusComponent objects. The caller has to call g_list_free() for the returned list.

[transfer container][element-type IBusComponent]


ibus_registry_get_observed_paths ()

GList *
ibus_registry_get_observed_paths (IBusRegistry *registry);

List observed paths.

Parameters

registry

An IBusRegistry.

 

Returns

a list of IBusObservedPath objects. The caller has to call g_list_free() for the returned list.

[transfer container][element-type IBusObservedPath]


ibus_registry_start_monitor_changes ()

void
ibus_registry_start_monitor_changes (IBusRegistry *registry);

Start to monitor observed paths.

Parameters

registry

An IBusRegistry.

 

Types and Values

struct IBusRegistry

struct IBusRegistry;

Registry cache handling. You can load the registry from compose files or a cache file.

Signal Details

The “changed†signal

void
user_function (IBusRegistry *registry,
               gpointer      user_data)

Emitted when any observed paths are changed. A method is not associated in this class. the "changed" signal would be handled in other classes.

See also: ibus_registry_start_monitor_changes().

Parameters

registry

An IBusRegistry.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/IBusObject.html0000644000000000000000000003406112551655043017115 00000000000000 IBusObject: IBus Reference Manual

IBusObject

IBusObject — Base object of IBus.

Stability Level

Stable, unless otherwise indicated

Signals

Types and Values

Object Hierarchy

    GFlags
    ╰── IBusObjectFlags
    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ├── IBusSerializable
            ├── IBusBus
            ├── IBusService
            ╰── IBusKeymap

Description

IBusObject is the base object for all objects in IBus.

Functions

IBUS_OBJECT_FLAGS()

#define IBUS_OBJECT_FLAGS(obj)             (IBUS_OBJECT (obj)->flags)

IBUS_OBJECT_SET_FLAGS()

#define IBUS_OBJECT_SET_FLAGS(obj,flag)    G_STMT_START{ (IBUS_OBJECT_FLAGS (obj) |= (flag)); }G_STMT_END

IBUS_OBJECT_UNSET_FLAGS()

#define IBUS_OBJECT_UNSET_FLAGS(obj,flag)  G_STMT_START{ (IBUS_OBJECT_FLAGS (obj) &= ~(flag)); }G_STMT_END

IBUS_OBJECT_IN_DESTRUCTION()

#define IBUS_OBJECT_IN_DESTRUCTION(obj)    (IBUS_OBJECT_FLAGS (obj) & IBUS_IN_DESTRUCTION)

IBUS_OBJECT_DESTROYED()

#define IBUS_OBJECT_DESTROYED(obj)         (IBUS_OBJECT_FLAGS (obj) & IBUS_DESTROYED)

ibus_object_new ()

IBusObject *
ibus_object_new (void);

Creates a new IBusObject.

Returns

A newly allocated IBusObject


ibus_object_destroy ()

void
ibus_object_destroy (IBusObject *object);

Emit the "destory" signal notifying all reference holders that they should release the IBusObject.

The memory for the object itself won't be deleted until its reference count actually drops to 0; ibus_object_destroy merely asks reference holders to release their references. It does not free the object.

Parameters

object

an IBusObject to destroy.

 

Types and Values

enum IBusObjectFlags

The flags are used internally.

Members

IBUS_IN_DESTRUCTION

Used in GObjectClass::dispose

 

IBUS_DESTROYED

Used during emitting IBusObject::destroy signal.

 

IBUS_RESERVED_1

Reserved.

 

IBUS_RESERVED_2

Reserved.

 

struct IBusObject

struct IBusObject;

All the fields in the IBusObject structure are private to the IBusObject and should never be accessed directly.

Signal Details

The “destroy†signal

void
user_function (IBusObject *object,
               gpointer    user_data)

Destroy and free an IBusObject

See also: ibus_object_destroy().

Argument user_data is ignored in this function.

Parameters

object

An IBusObject.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/index.html0000644000000000000000000001640712551655043016237 00000000000000 IBus Reference Manual: IBus Reference Manual

Intelligent Input Bus (IBus) 1.5.11 reference manual. The latest version of this documentation can be found on-line at https://github.com/ibus/ibus/wiki.


Overview
Panel (User Interfaces)
IBusAttribute — Attributes of IBusText.
IBusAttrList — AttrList of IBusText.
IBusHotkeyProfile — Hotkeys and associated events.
IBusLookupTable — Candidate word/phrase lookup table.
IBusPanelService — Panel service back-end.
IBusProperty — UI component for input method engine property.
IBusPropList — An IBusProperty container.
IBusText — Text with decorating information.
Input method engine
IBusComponent — Component (executable) specification.
IBusEngine — Input method engine abstract.
IBusEngineDesc — Input method engine description data.
IBusEngineSimple — Input method engine supporting table-based input method
IBusFactory — Factory for creating engine instances.
IBusInputContext — IBus input context proxy object.
ibuskeys
IBusKeymap — Keyboard mapping handling.
ibuskeysyms-compat
IBusKeysyms — Key symbol definition.
ibusutil — Utilities with C-Language.
Configuration
IBusConfig — IBus engine configuration module.
IBusConfigService — Configuration service back-end.
IBusObservedPath — Path object of IBus.
IBusRegistry — Registry cache handling.
ibusversion — Current version of IBus.
ibusxml — XML handling functions for IBus.
Communication
IBusBus — Connect with IBus daemon.
IBusProxy — Base proxy object.
IBusSerializable — A serializable object.
IBusService — IBus service back-end.
Internal
ibusdebug — Debug message output.
ibuserror — Error functions and definition.
IBusObject — Base object of IBus.
ibusshare — Shared utility functions and definition.
ibustypes — Generic types for IBus.
Index
Index of deprecated symbols
Annotation Glossary
ibus-1.5.11/docs/reference/ibus/html/IBusPanelService.html0000644000000000000000000023315112551655043020270 00000000000000 IBusPanelService: IBus Reference Manual

IBusPanelService

IBusPanelService — Panel service back-end.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ╰── IBusPanelService

Description

An IBusPanelService is a base class for UI services. Developers can "extend" this class for panel UI development.

Functions

ibus_panel_service_new ()

IBusPanelService *
ibus_panel_service_new (GDBusConnection *connection);

Creates a new IBusPanelService from an GDBusConnection.

Parameters

connection

An GDBusConnection.

 

Returns

A newly allocated IBusPanelService.


ibus_panel_service_candidate_clicked ()

void
ibus_panel_service_candidate_clicked (IBusPanelService *panel,
                                      guint index,
                                      guint button,
                                      guint state);

Notify that a candidate is clicked by sending a "CandidateClicked" to IBus service.

Parameters

panel

An IBusPanelService

 

index

Index in the Lookup table

 

button

GdkEventButton::button (1: left button, etc.)

 

state

GdkEventButton::state (key modifier flags)

 

ibus_panel_service_cursor_down ()

void
ibus_panel_service_cursor_down (IBusPanelService *panel);

Notify that the cursor is down by sending a "CursorDown" to IBus service.

Parameters

panel

An IBusPanelService

 

ibus_panel_service_cursor_up ()

void
ibus_panel_service_cursor_up (IBusPanelService *panel);

Notify that the cursor is up by sending a "CursorUp" to IBus service.

Parameters

panel

An IBusPanelService

 

ibus_panel_service_page_down ()

void
ibus_panel_service_page_down (IBusPanelService *panel);

Notify that the page is down by sending a "PageDown" to IBus service.

Parameters

panel

An IBusPanelService

 

ibus_panel_service_page_up ()

void
ibus_panel_service_page_up (IBusPanelService *panel);

Notify that the page is up by sending a "PageUp" to IBus service.

Parameters

panel

An IBusPanelService

 

ibus_panel_service_property_activate ()

void
ibus_panel_service_property_activate (IBusPanelService *panel,
                                      const gchar *prop_name,
                                      guint prop_state);

Notify that a property is active by sending a "PropertyActivate" message to IBus service.

Parameters

panel

An IBusPanelService

 

prop_name

A property name

 

prop_state

State of the property

 

ibus_panel_service_property_show ()

void
ibus_panel_service_property_show (IBusPanelService *panel,
                                  const gchar *prop_name);

Notify that a property is shown by sending a "ValueChanged" message to IBus service.

Parameters

panel

An IBusPanelService

 

prop_name

A property name

 

ibus_panel_service_property_hide ()

void
ibus_panel_service_property_hide (IBusPanelService *panel,
                                  const gchar *prop_name);

Notify that a property is hidden by sending a "ValueChanged" message to IBus service.

Parameters

panel

An IBusPanelService

 

prop_name

A property name

 

Types and Values

struct IBusPanelService

struct IBusPanelService;

An opaque data type representing an IBusPanelService.

Signal Details

The “cursor-down-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::cursor-down-lookup-table. Implement the member function IBusPanelServiceClass::cursor_down_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “cursor-up-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::cursor-up-lookup-table. Implement the member function IBusPanelServiceClass::cursor_up_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “destroy-context†signal

void
user_function (IBusPanelService *panel,
               gchar            *input_context_path,
               gpointer          user_data)

Emitted when the client application destroys. Implement the member function IBusPanelServiceClass::destroy_context in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

input_context_path

Object path of InputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “focus-in†signal

void
user_function (IBusPanelService *panel,
               gchar            *input_context_path,
               gpointer          user_data)

Emitted when the client application get the ::focus-in. Implement the member function IBusPanelServiceClass::focus_in in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

input_context_path

Object path of InputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “focus-out†signal

void
user_function (IBusPanelService *panel,
               gchar            *input_context_path,
               gpointer          user_data)

Emitted when the client application get the ::focus-out. Implement the member function IBusPanelServiceClass::focus_out in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

input_context_path

Object path of InputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-auxiliary-text†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::hide-auxiliary-text. Implement the member function IBusPanelServiceClass::hide_auxiliary_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-language-bar†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::hide-language-bar. Implement the member function IBusPanelServiceClass::hide_language_bar in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::hide-lookup-table. Implement the member function IBusPanelServiceClass::hide_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-preedit-text†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::hide-preedit-text. Implement the member function IBusPanelServiceClass::hide_preedit_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-down-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::page-down-lookup-table. Implement the member function IBusPanelServiceClass::page_down_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-up-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::page-up-lookup-table. Implement the member function IBusPanelServiceClass::page_up_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “register-properties†signal

void
user_function (IBusPanelService *panel,
               IBusPropList     *prop_list,
               gpointer          user_data)

Emitted when the client application get the ::register-properties. Implement the member function IBusPanelServiceClass::register_properties in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

prop_list

An IBusPropList that contains properties.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “reset†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::reset. Implement the member function IBusPanelServiceClass::reset in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-content-type†signal

void
user_function (IBusPanelService *panel,
               guint             purpose,
               guint             hints,
               gpointer          user_data)

Emitted when the client application get the ::set-content-type. Implement the member function IBusPanelServiceClass::set_content_type in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

purpose

Input purpose.

 

hints

Input hints.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-cursor-location†signal

void
user_function (IBusPanelService *panel,
               gint              x,
               gint              y,
               gint              w,
               gint              h,
               gpointer          user_data)

Emitted when the client application get the ::set-cursor-location. Implement the member function IBusPanelServiceClass::set_cursor_location in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

x

X coordinate of the cursor.

 

y

Y coordinate of the cursor.

 

w

Width of the cursor.

 

h

Height of the cursor.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-auxiliary-text†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::show-auxiliary-text. Implement the member function IBusPanelServiceClass::show_auxiliary_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-language-bar†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::show-language-bar. Implement the member function IBusPanelServiceClass::show_language_bar in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-lookup-table†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::show-lookup-table. Implement the member function IBusPanelServiceClass::show_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-preedit-text†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::show-preedit-text. Implement the member function IBusPanelServiceClass::show_preedit_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “start-setup†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::start-setup. Implement the member function IBusPanelServiceClass::start_setup in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “state-changed†signal

void
user_function (IBusPanelService *panel,
               gpointer          user_data)

Emitted when the client application get the ::state-changed. Implement the member function IBusPanelServiceClass::state_changed in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-auxiliary-text†signal

void
user_function (IBusPanelService *panel,
               IBusText         *text,
               gboolean          visible,
               gpointer          user_data)

Emitted when the client application get the ::update-auxiliary-text. Implement the member function IBusPanelServiceClass::update_auxiliary_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

text

A preedit text to be updated.

 

visible

Whether the update is visible.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-lookup-table†signal

void
user_function (IBusPanelService *panel,
               IBusLookupTable  *lookup_table,
               gboolean          visible,
               gpointer          user_data)

Emitted when the client application get the ::update-lookup-table. Implement the member function IBusPanelServiceClass::update_lookup_table in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

lookup_table

A lookup table to be updated.

 

visible

Whether the update is visible.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-preedit-text†signal

void
user_function (IBusPanelService *panel,
               IBusText         *text,
               guint             cursor_pos,
               gboolean          visible,
               gpointer          user_data)

Emitted when the client application get the ::update-preedit-text. Implement the member function IBusPanelServiceClass::update_preedit_text in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

text

A preedit text to be updated.

 

cursor_pos

The cursor position of the text.

 

visible

Whether the update is visible.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-property†signal

void
user_function (IBusPanelService *panel,
               IBusProperty     *prop,
               gpointer          user_data)

Emitted when the client application get the ::update-property. Implement the member function IBusPanelServiceClass::update_property in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

prop

The IBusProperty to be updated.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/index.sgml0000644000000000000000000160130012551655042016225 00000000000000 ibus-1.5.11/docs/reference/ibus/html/ibus-IBusKeysyms.html0000644000000000000000000300433312551655043020315 00000000000000 IBusKeysyms: IBus Reference Manual

IBusKeysyms

IBusKeysyms — Key symbol definition.

Stability Level

Stable, unless otherwise indicated

Types and Values

#define IBUS_KEY_VoidSymbol
#define IBUS_KEY_BackSpace
#define IBUS_KEY_Tab
#define IBUS_KEY_Linefeed
#define IBUS_KEY_Clear
#define IBUS_KEY_Return
#define IBUS_KEY_Pause
#define IBUS_KEY_Scroll_Lock
#define IBUS_KEY_Sys_Req
#define IBUS_KEY_Escape
#define IBUS_KEY_Delete
#define IBUS_KEY_Multi_key
#define IBUS_KEY_Codeinput
#define IBUS_KEY_SingleCandidate
#define IBUS_KEY_MultipleCandidate
#define IBUS_KEY_PreviousCandidate
#define IBUS_KEY_Kanji
#define IBUS_KEY_Muhenkan
#define IBUS_KEY_Henkan_Mode
#define IBUS_KEY_Henkan
#define IBUS_KEY_Romaji
#define IBUS_KEY_Hiragana
#define IBUS_KEY_Katakana
#define IBUS_KEY_Hiragana_Katakana
#define IBUS_KEY_Zenkaku
#define IBUS_KEY_Hankaku
#define IBUS_KEY_Zenkaku_Hankaku
#define IBUS_KEY_Touroku
#define IBUS_KEY_Massyo
#define IBUS_KEY_Kana_Lock
#define IBUS_KEY_Kana_Shift
#define IBUS_KEY_Eisu_Shift
#define IBUS_KEY_Eisu_toggle
#define IBUS_KEY_Kanji_Bangou
#define IBUS_KEY_Zen_Koho
#define IBUS_KEY_Mae_Koho
#define IBUS_KEY_Home
#define IBUS_KEY_Left
#define IBUS_KEY_Up
#define IBUS_KEY_Right
#define IBUS_KEY_Down
#define IBUS_KEY_Prior
#define IBUS_KEY_Page_Up
#define IBUS_KEY_Next
#define IBUS_KEY_Page_Down
#define IBUS_KEY_End
#define IBUS_KEY_Begin
#define IBUS_KEY_Select
#define IBUS_KEY_Print
#define IBUS_KEY_Execute
#define IBUS_KEY_Insert
#define IBUS_KEY_Undo
#define IBUS_KEY_Redo
#define IBUS_KEY_Menu
#define IBUS_KEY_Find
#define IBUS_KEY_Cancel
#define IBUS_KEY_Help
#define IBUS_KEY_Break
#define IBUS_KEY_Mode_switch
#define IBUS_KEY_script_switch
#define IBUS_KEY_Num_Lock
#define IBUS_KEY_KP_Space
#define IBUS_KEY_KP_Tab
#define IBUS_KEY_KP_Enter
#define IBUS_KEY_KP_F1
#define IBUS_KEY_KP_F2
#define IBUS_KEY_KP_F3
#define IBUS_KEY_KP_F4
#define IBUS_KEY_KP_Home
#define IBUS_KEY_KP_Left
#define IBUS_KEY_KP_Up
#define IBUS_KEY_KP_Right
#define IBUS_KEY_KP_Down
#define IBUS_KEY_KP_Prior
#define IBUS_KEY_KP_Page_Up
#define IBUS_KEY_KP_Next
#define IBUS_KEY_KP_Page_Down
#define IBUS_KEY_KP_End
#define IBUS_KEY_KP_Begin
#define IBUS_KEY_KP_Insert
#define IBUS_KEY_KP_Delete
#define IBUS_KEY_KP_Equal
#define IBUS_KEY_KP_Multiply
#define IBUS_KEY_KP_Add
#define IBUS_KEY_KP_Separator
#define IBUS_KEY_KP_Subtract
#define IBUS_KEY_KP_Decimal
#define IBUS_KEY_KP_Divide
#define IBUS_KEY_KP_0
#define IBUS_KEY_KP_1
#define IBUS_KEY_KP_2
#define IBUS_KEY_KP_3
#define IBUS_KEY_KP_4
#define IBUS_KEY_KP_5
#define IBUS_KEY_KP_6
#define IBUS_KEY_KP_7
#define IBUS_KEY_KP_8
#define IBUS_KEY_KP_9
#define IBUS_KEY_F1
#define IBUS_KEY_F2
#define IBUS_KEY_F3
#define IBUS_KEY_F4
#define IBUS_KEY_F5
#define IBUS_KEY_F6
#define IBUS_KEY_F7
#define IBUS_KEY_F8
#define IBUS_KEY_F9
#define IBUS_KEY_F10
#define IBUS_KEY_F11
#define IBUS_KEY_L1
#define IBUS_KEY_F12
#define IBUS_KEY_L2
#define IBUS_KEY_F13
#define IBUS_KEY_L3
#define IBUS_KEY_F14
#define IBUS_KEY_L4
#define IBUS_KEY_F15
#define IBUS_KEY_L5
#define IBUS_KEY_F16
#define IBUS_KEY_L6
#define IBUS_KEY_F17
#define IBUS_KEY_L7
#define IBUS_KEY_F18
#define IBUS_KEY_L8
#define IBUS_KEY_F19
#define IBUS_KEY_L9
#define IBUS_KEY_F20
#define IBUS_KEY_L10
#define IBUS_KEY_F21
#define IBUS_KEY_R1
#define IBUS_KEY_F22
#define IBUS_KEY_R2
#define IBUS_KEY_F23
#define IBUS_KEY_R3
#define IBUS_KEY_F24
#define IBUS_KEY_R4
#define IBUS_KEY_F25
#define IBUS_KEY_R5
#define IBUS_KEY_F26
#define IBUS_KEY_R6
#define IBUS_KEY_F27
#define IBUS_KEY_R7
#define IBUS_KEY_F28
#define IBUS_KEY_R8
#define IBUS_KEY_F29
#define IBUS_KEY_R9
#define IBUS_KEY_F30
#define IBUS_KEY_R10
#define IBUS_KEY_F31
#define IBUS_KEY_R11
#define IBUS_KEY_F32
#define IBUS_KEY_R12
#define IBUS_KEY_F33
#define IBUS_KEY_R13
#define IBUS_KEY_F34
#define IBUS_KEY_R14
#define IBUS_KEY_F35
#define IBUS_KEY_R15
#define IBUS_KEY_Shift_L
#define IBUS_KEY_Shift_R
#define IBUS_KEY_Control_L
#define IBUS_KEY_Control_R
#define IBUS_KEY_Caps_Lock
#define IBUS_KEY_Shift_Lock
#define IBUS_KEY_Meta_L
#define IBUS_KEY_Meta_R
#define IBUS_KEY_Alt_L
#define IBUS_KEY_Alt_R
#define IBUS_KEY_Super_L
#define IBUS_KEY_Super_R
#define IBUS_KEY_Hyper_L
#define IBUS_KEY_Hyper_R
#define IBUS_KEY_ISO_Lock
#define IBUS_KEY_ISO_Level2_Latch
#define IBUS_KEY_ISO_Level3_Shift
#define IBUS_KEY_ISO_Level3_Latch
#define IBUS_KEY_ISO_Level3_Lock
#define IBUS_KEY_ISO_Level5_Shift
#define IBUS_KEY_ISO_Level5_Latch
#define IBUS_KEY_ISO_Level5_Lock
#define IBUS_KEY_ISO_Group_Shift
#define IBUS_KEY_ISO_Group_Latch
#define IBUS_KEY_ISO_Group_Lock
#define IBUS_KEY_ISO_Next_Group
#define IBUS_KEY_ISO_Next_Group_Lock
#define IBUS_KEY_ISO_Prev_Group
#define IBUS_KEY_ISO_Prev_Group_Lock
#define IBUS_KEY_ISO_First_Group
#define IBUS_KEY_ISO_First_Group_Lock
#define IBUS_KEY_ISO_Last_Group
#define IBUS_KEY_ISO_Last_Group_Lock
#define IBUS_KEY_ISO_Left_Tab
#define IBUS_KEY_ISO_Move_Line_Up
#define IBUS_KEY_ISO_Move_Line_Down
#define IBUS_KEY_ISO_Partial_Line_Up
#define IBUS_KEY_ISO_Partial_Line_Down
#define IBUS_KEY_ISO_Partial_Space_Left
#define IBUS_KEY_ISO_Partial_Space_Right
#define IBUS_KEY_ISO_Set_Margin_Left
#define IBUS_KEY_ISO_Set_Margin_Right
#define IBUS_KEY_ISO_Release_Margin_Left
#define IBUS_KEY_ISO_Release_Margin_Right
#define IBUS_KEY_ISO_Release_Both_Margins
#define IBUS_KEY_ISO_Fast_Cursor_Left
#define IBUS_KEY_ISO_Fast_Cursor_Right
#define IBUS_KEY_ISO_Fast_Cursor_Up
#define IBUS_KEY_ISO_Fast_Cursor_Down
#define IBUS_KEY_ISO_Continuous_Underline
#define IBUS_KEY_ISO_Discontinuous_Underline
#define IBUS_KEY_ISO_Emphasize
#define IBUS_KEY_ISO_Center_Object
#define IBUS_KEY_ISO_Enter
#define IBUS_KEY_dead_grave
#define IBUS_KEY_dead_acute
#define IBUS_KEY_dead_circumflex
#define IBUS_KEY_dead_tilde
#define IBUS_KEY_dead_perispomeni
#define IBUS_KEY_dead_macron
#define IBUS_KEY_dead_breve
#define IBUS_KEY_dead_abovedot
#define IBUS_KEY_dead_diaeresis
#define IBUS_KEY_dead_abovering
#define IBUS_KEY_dead_doubleacute
#define IBUS_KEY_dead_caron
#define IBUS_KEY_dead_cedilla
#define IBUS_KEY_dead_ogonek
#define IBUS_KEY_dead_iota
#define IBUS_KEY_dead_voiced_sound
#define IBUS_KEY_dead_semivoiced_sound
#define IBUS_KEY_dead_belowdot
#define IBUS_KEY_dead_hook
#define IBUS_KEY_dead_horn
#define IBUS_KEY_dead_stroke
#define IBUS_KEY_dead_abovecomma
#define IBUS_KEY_dead_psili
#define IBUS_KEY_dead_abovereversedcomma
#define IBUS_KEY_dead_dasia
#define IBUS_KEY_dead_doublegrave
#define IBUS_KEY_dead_belowring
#define IBUS_KEY_dead_belowmacron
#define IBUS_KEY_dead_belowcircumflex
#define IBUS_KEY_dead_belowtilde
#define IBUS_KEY_dead_belowbreve
#define IBUS_KEY_dead_belowdiaeresis
#define IBUS_KEY_dead_invertedbreve
#define IBUS_KEY_dead_belowcomma
#define IBUS_KEY_dead_currency
#define IBUS_KEY_dead_a
#define IBUS_KEY_dead_A
#define IBUS_KEY_dead_e
#define IBUS_KEY_dead_E
#define IBUS_KEY_dead_i
#define IBUS_KEY_dead_I
#define IBUS_KEY_dead_o
#define IBUS_KEY_dead_O
#define IBUS_KEY_dead_u
#define IBUS_KEY_dead_U
#define IBUS_KEY_dead_small_schwa
#define IBUS_KEY_dead_capital_schwa
#define IBUS_KEY_dead_greek
#define IBUS_KEY_First_Virtual_Screen
#define IBUS_KEY_Prev_Virtual_Screen
#define IBUS_KEY_Next_Virtual_Screen
#define IBUS_KEY_Last_Virtual_Screen
#define IBUS_KEY_Terminate_Server
#define IBUS_KEY_AccessX_Enable
#define IBUS_KEY_AccessX_Feedback_Enable
#define IBUS_KEY_RepeatKeys_Enable
#define IBUS_KEY_SlowKeys_Enable
#define IBUS_KEY_BounceKeys_Enable
#define IBUS_KEY_StickyKeys_Enable
#define IBUS_KEY_MouseKeys_Enable
#define IBUS_KEY_MouseKeys_Accel_Enable
#define IBUS_KEY_Overlay1_Enable
#define IBUS_KEY_Overlay2_Enable
#define IBUS_KEY_AudibleBell_Enable
#define IBUS_KEY_Pointer_Left
#define IBUS_KEY_Pointer_Right
#define IBUS_KEY_Pointer_Up
#define IBUS_KEY_Pointer_Down
#define IBUS_KEY_Pointer_UpLeft
#define IBUS_KEY_Pointer_UpRight
#define IBUS_KEY_Pointer_DownLeft
#define IBUS_KEY_Pointer_DownRight
#define IBUS_KEY_Pointer_Button_Dflt
#define IBUS_KEY_Pointer_Button1
#define IBUS_KEY_Pointer_Button2
#define IBUS_KEY_Pointer_Button3
#define IBUS_KEY_Pointer_Button4
#define IBUS_KEY_Pointer_Button5
#define IBUS_KEY_Pointer_DblClick_Dflt
#define IBUS_KEY_Pointer_DblClick1
#define IBUS_KEY_Pointer_DblClick2
#define IBUS_KEY_Pointer_DblClick3
#define IBUS_KEY_Pointer_DblClick4
#define IBUS_KEY_Pointer_DblClick5
#define IBUS_KEY_Pointer_Drag_Dflt
#define IBUS_KEY_Pointer_Drag1
#define IBUS_KEY_Pointer_Drag2
#define IBUS_KEY_Pointer_Drag3
#define IBUS_KEY_Pointer_Drag4
#define IBUS_KEY_Pointer_Drag5
#define IBUS_KEY_Pointer_EnableKeys
#define IBUS_KEY_Pointer_Accelerate
#define IBUS_KEY_Pointer_DfltBtnNext
#define IBUS_KEY_Pointer_DfltBtnPrev
#define IBUS_KEY_ch
#define IBUS_KEY_Ch
#define IBUS_KEY_CH
#define IBUS_KEY_c_h
#define IBUS_KEY_C_h
#define IBUS_KEY_C_H
#define IBUS_KEY_3270_Duplicate
#define IBUS_KEY_3270_FieldMark
#define IBUS_KEY_3270_Right2
#define IBUS_KEY_3270_Left2
#define IBUS_KEY_3270_BackTab
#define IBUS_KEY_3270_EraseEOF
#define IBUS_KEY_3270_EraseInput
#define IBUS_KEY_3270_Reset
#define IBUS_KEY_3270_Quit
#define IBUS_KEY_3270_PA1
#define IBUS_KEY_3270_PA2
#define IBUS_KEY_3270_PA3
#define IBUS_KEY_3270_Test
#define IBUS_KEY_3270_Attn
#define IBUS_KEY_3270_CursorBlink
#define IBUS_KEY_3270_AltCursor
#define IBUS_KEY_3270_KeyClick
#define IBUS_KEY_3270_Jump
#define IBUS_KEY_3270_Ident
#define IBUS_KEY_3270_Rule
#define IBUS_KEY_3270_Copy
#define IBUS_KEY_3270_Play
#define IBUS_KEY_3270_Setup
#define IBUS_KEY_3270_Record
#define IBUS_KEY_3270_ChangeScreen
#define IBUS_KEY_3270_DeleteWord
#define IBUS_KEY_3270_ExSelect
#define IBUS_KEY_3270_CursorSelect
#define IBUS_KEY_3270_PrintScreen
#define IBUS_KEY_3270_Enter
#define IBUS_KEY_space
#define IBUS_KEY_exclam
#define IBUS_KEY_quotedbl
#define IBUS_KEY_numbersign
#define IBUS_KEY_dollar
#define IBUS_KEY_percent
#define IBUS_KEY_ampersand
#define IBUS_KEY_apostrophe
#define IBUS_KEY_quoteright
#define IBUS_KEY_parenleft
#define IBUS_KEY_parenright
#define IBUS_KEY_asterisk
#define IBUS_KEY_plus
#define IBUS_KEY_comma
#define IBUS_KEY_minus
#define IBUS_KEY_period
#define IBUS_KEY_slash
#define IBUS_KEY_0
#define IBUS_KEY_1
#define IBUS_KEY_2
#define IBUS_KEY_3
#define IBUS_KEY_4
#define IBUS_KEY_5
#define IBUS_KEY_6
#define IBUS_KEY_7
#define IBUS_KEY_8
#define IBUS_KEY_9
#define IBUS_KEY_colon
#define IBUS_KEY_semicolon
#define IBUS_KEY_less
#define IBUS_KEY_equal
#define IBUS_KEY_greater
#define IBUS_KEY_question
#define IBUS_KEY_at
#define IBUS_KEY_A
#define IBUS_KEY_B
#define IBUS_KEY_C
#define IBUS_KEY_D
#define IBUS_KEY_E
#define IBUS_KEY_F
#define IBUS_KEY_G
#define IBUS_KEY_H
#define IBUS_KEY_I
#define IBUS_KEY_J
#define IBUS_KEY_K
#define IBUS_KEY_L
#define IBUS_KEY_M
#define IBUS_KEY_N
#define IBUS_KEY_O
#define IBUS_KEY_P
#define IBUS_KEY_Q
#define IBUS_KEY_R
#define IBUS_KEY_S
#define IBUS_KEY_T
#define IBUS_KEY_U
#define IBUS_KEY_V
#define IBUS_KEY_W
#define IBUS_KEY_X
#define IBUS_KEY_Y
#define IBUS_KEY_Z
#define IBUS_KEY_bracketleft
#define IBUS_KEY_backslash
#define IBUS_KEY_bracketright
#define IBUS_KEY_asciicircum
#define IBUS_KEY_underscore
#define IBUS_KEY_grave
#define IBUS_KEY_quoteleft
#define IBUS_KEY_a
#define IBUS_KEY_b
#define IBUS_KEY_c
#define IBUS_KEY_d
#define IBUS_KEY_e
#define IBUS_KEY_f
#define IBUS_KEY_g
#define IBUS_KEY_h
#define IBUS_KEY_i
#define IBUS_KEY_j
#define IBUS_KEY_k
#define IBUS_KEY_l
#define IBUS_KEY_m
#define IBUS_KEY_n
#define IBUS_KEY_o
#define IBUS_KEY_p
#define IBUS_KEY_q
#define IBUS_KEY_r
#define IBUS_KEY_s
#define IBUS_KEY_t
#define IBUS_KEY_u
#define IBUS_KEY_v
#define IBUS_KEY_w
#define IBUS_KEY_x
#define IBUS_KEY_y
#define IBUS_KEY_z
#define IBUS_KEY_braceleft
#define IBUS_KEY_bar
#define IBUS_KEY_braceright
#define IBUS_KEY_asciitilde
#define IBUS_KEY_nobreakspace
#define IBUS_KEY_exclamdown
#define IBUS_KEY_cent
#define IBUS_KEY_sterling
#define IBUS_KEY_currency
#define IBUS_KEY_yen
#define IBUS_KEY_brokenbar
#define IBUS_KEY_section
#define IBUS_KEY_diaeresis
#define IBUS_KEY_copyright
#define IBUS_KEY_ordfeminine
#define IBUS_KEY_guillemotleft
#define IBUS_KEY_notsign
#define IBUS_KEY_hyphen
#define IBUS_KEY_registered
#define IBUS_KEY_macron
#define IBUS_KEY_degree
#define IBUS_KEY_plusminus
#define IBUS_KEY_twosuperior
#define IBUS_KEY_threesuperior
#define IBUS_KEY_acute
#define IBUS_KEY_mu
#define IBUS_KEY_paragraph
#define IBUS_KEY_periodcentered
#define IBUS_KEY_cedilla
#define IBUS_KEY_onesuperior
#define IBUS_KEY_masculine
#define IBUS_KEY_guillemotright
#define IBUS_KEY_onequarter
#define IBUS_KEY_onehalf
#define IBUS_KEY_threequarters
#define IBUS_KEY_questiondown
#define IBUS_KEY_Agrave
#define IBUS_KEY_Aacute
#define IBUS_KEY_Acircumflex
#define IBUS_KEY_Atilde
#define IBUS_KEY_Adiaeresis
#define IBUS_KEY_Aring
#define IBUS_KEY_AE
#define IBUS_KEY_Ccedilla
#define IBUS_KEY_Egrave
#define IBUS_KEY_Eacute
#define IBUS_KEY_Ecircumflex
#define IBUS_KEY_Ediaeresis
#define IBUS_KEY_Igrave
#define IBUS_KEY_Iacute
#define IBUS_KEY_Icircumflex
#define IBUS_KEY_Idiaeresis
#define IBUS_KEY_ETH
#define IBUS_KEY_Eth
#define IBUS_KEY_Ntilde
#define IBUS_KEY_Ograve
#define IBUS_KEY_Oacute
#define IBUS_KEY_Ocircumflex
#define IBUS_KEY_Otilde
#define IBUS_KEY_Odiaeresis
#define IBUS_KEY_multiply
#define IBUS_KEY_Oslash
#define IBUS_KEY_Ooblique
#define IBUS_KEY_Ugrave
#define IBUS_KEY_Uacute
#define IBUS_KEY_Ucircumflex
#define IBUS_KEY_Udiaeresis
#define IBUS_KEY_Yacute
#define IBUS_KEY_THORN
#define IBUS_KEY_Thorn
#define IBUS_KEY_ssharp
#define IBUS_KEY_agrave
#define IBUS_KEY_aacute
#define IBUS_KEY_acircumflex
#define IBUS_KEY_atilde
#define IBUS_KEY_adiaeresis
#define IBUS_KEY_aring
#define IBUS_KEY_ae
#define IBUS_KEY_ccedilla
#define IBUS_KEY_egrave
#define IBUS_KEY_eacute
#define IBUS_KEY_ecircumflex
#define IBUS_KEY_ediaeresis
#define IBUS_KEY_igrave
#define IBUS_KEY_iacute
#define IBUS_KEY_icircumflex
#define IBUS_KEY_idiaeresis
#define IBUS_KEY_eth
#define IBUS_KEY_ntilde
#define IBUS_KEY_ograve
#define IBUS_KEY_oacute
#define IBUS_KEY_ocircumflex
#define IBUS_KEY_otilde
#define IBUS_KEY_odiaeresis
#define IBUS_KEY_division
#define IBUS_KEY_oslash
#define IBUS_KEY_ooblique
#define IBUS_KEY_ugrave
#define IBUS_KEY_uacute
#define IBUS_KEY_ucircumflex
#define IBUS_KEY_udiaeresis
#define IBUS_KEY_yacute
#define IBUS_KEY_thorn
#define IBUS_KEY_ydiaeresis
#define IBUS_KEY_Aogonek
#define IBUS_KEY_breve
#define IBUS_KEY_Lstroke
#define IBUS_KEY_Lcaron
#define IBUS_KEY_Sacute
#define IBUS_KEY_Scaron
#define IBUS_KEY_Scedilla
#define IBUS_KEY_Tcaron
#define IBUS_KEY_Zacute
#define IBUS_KEY_Zcaron
#define IBUS_KEY_Zabovedot
#define IBUS_KEY_aogonek
#define IBUS_KEY_ogonek
#define IBUS_KEY_lstroke
#define IBUS_KEY_lcaron
#define IBUS_KEY_sacute
#define IBUS_KEY_caron
#define IBUS_KEY_scaron
#define IBUS_KEY_scedilla
#define IBUS_KEY_tcaron
#define IBUS_KEY_zacute
#define IBUS_KEY_doubleacute
#define IBUS_KEY_zcaron
#define IBUS_KEY_zabovedot
#define IBUS_KEY_Racute
#define IBUS_KEY_Abreve
#define IBUS_KEY_Lacute
#define IBUS_KEY_Cacute
#define IBUS_KEY_Ccaron
#define IBUS_KEY_Eogonek
#define IBUS_KEY_Ecaron
#define IBUS_KEY_Dcaron
#define IBUS_KEY_Dstroke
#define IBUS_KEY_Nacute
#define IBUS_KEY_Ncaron
#define IBUS_KEY_Odoubleacute
#define IBUS_KEY_Rcaron
#define IBUS_KEY_Uring
#define IBUS_KEY_Udoubleacute
#define IBUS_KEY_Tcedilla
#define IBUS_KEY_racute
#define IBUS_KEY_abreve
#define IBUS_KEY_lacute
#define IBUS_KEY_cacute
#define IBUS_KEY_ccaron
#define IBUS_KEY_eogonek
#define IBUS_KEY_ecaron
#define IBUS_KEY_dcaron
#define IBUS_KEY_dstroke
#define IBUS_KEY_nacute
#define IBUS_KEY_ncaron
#define IBUS_KEY_odoubleacute
#define IBUS_KEY_rcaron
#define IBUS_KEY_uring
#define IBUS_KEY_udoubleacute
#define IBUS_KEY_tcedilla
#define IBUS_KEY_abovedot
#define IBUS_KEY_Hstroke
#define IBUS_KEY_Hcircumflex
#define IBUS_KEY_Iabovedot
#define IBUS_KEY_Gbreve
#define IBUS_KEY_Jcircumflex
#define IBUS_KEY_hstroke
#define IBUS_KEY_hcircumflex
#define IBUS_KEY_idotless
#define IBUS_KEY_gbreve
#define IBUS_KEY_jcircumflex
#define IBUS_KEY_Cabovedot
#define IBUS_KEY_Ccircumflex
#define IBUS_KEY_Gabovedot
#define IBUS_KEY_Gcircumflex
#define IBUS_KEY_Ubreve
#define IBUS_KEY_Scircumflex
#define IBUS_KEY_cabovedot
#define IBUS_KEY_ccircumflex
#define IBUS_KEY_gabovedot
#define IBUS_KEY_gcircumflex
#define IBUS_KEY_ubreve
#define IBUS_KEY_scircumflex
#define IBUS_KEY_kra
#define IBUS_KEY_kappa
#define IBUS_KEY_Rcedilla
#define IBUS_KEY_Itilde
#define IBUS_KEY_Lcedilla
#define IBUS_KEY_Emacron
#define IBUS_KEY_Gcedilla
#define IBUS_KEY_Tslash
#define IBUS_KEY_rcedilla
#define IBUS_KEY_itilde
#define IBUS_KEY_lcedilla
#define IBUS_KEY_emacron
#define IBUS_KEY_gcedilla
#define IBUS_KEY_tslash
#define IBUS_KEY_ENG
#define IBUS_KEY_eng
#define IBUS_KEY_Amacron
#define IBUS_KEY_Iogonek
#define IBUS_KEY_Eabovedot
#define IBUS_KEY_Imacron
#define IBUS_KEY_Ncedilla
#define IBUS_KEY_Omacron
#define IBUS_KEY_Kcedilla
#define IBUS_KEY_Uogonek
#define IBUS_KEY_Utilde
#define IBUS_KEY_Umacron
#define IBUS_KEY_amacron
#define IBUS_KEY_iogonek
#define IBUS_KEY_eabovedot
#define IBUS_KEY_imacron
#define IBUS_KEY_ncedilla
#define IBUS_KEY_omacron
#define IBUS_KEY_kcedilla
#define IBUS_KEY_uogonek
#define IBUS_KEY_utilde
#define IBUS_KEY_umacron
#define IBUS_KEY_Wcircumflex
#define IBUS_KEY_wcircumflex
#define IBUS_KEY_Ycircumflex
#define IBUS_KEY_ycircumflex
#define IBUS_KEY_Babovedot
#define IBUS_KEY_babovedot
#define IBUS_KEY_Dabovedot
#define IBUS_KEY_dabovedot
#define IBUS_KEY_Fabovedot
#define IBUS_KEY_fabovedot
#define IBUS_KEY_Mabovedot
#define IBUS_KEY_mabovedot
#define IBUS_KEY_Pabovedot
#define IBUS_KEY_pabovedot
#define IBUS_KEY_Sabovedot
#define IBUS_KEY_sabovedot
#define IBUS_KEY_Tabovedot
#define IBUS_KEY_tabovedot
#define IBUS_KEY_Wgrave
#define IBUS_KEY_wgrave
#define IBUS_KEY_Wacute
#define IBUS_KEY_wacute
#define IBUS_KEY_Wdiaeresis
#define IBUS_KEY_wdiaeresis
#define IBUS_KEY_Ygrave
#define IBUS_KEY_ygrave
#define IBUS_KEY_OE
#define IBUS_KEY_oe
#define IBUS_KEY_Ydiaeresis
#define IBUS_KEY_overline
#define IBUS_KEY_kana_fullstop
#define IBUS_KEY_kana_openingbracket
#define IBUS_KEY_kana_closingbracket
#define IBUS_KEY_kana_comma
#define IBUS_KEY_kana_conjunctive
#define IBUS_KEY_kana_middledot
#define IBUS_KEY_kana_WO
#define IBUS_KEY_kana_a
#define IBUS_KEY_kana_i
#define IBUS_KEY_kana_u
#define IBUS_KEY_kana_e
#define IBUS_KEY_kana_o
#define IBUS_KEY_kana_ya
#define IBUS_KEY_kana_yu
#define IBUS_KEY_kana_yo
#define IBUS_KEY_kana_tsu
#define IBUS_KEY_kana_tu
#define IBUS_KEY_prolongedsound
#define IBUS_KEY_kana_A
#define IBUS_KEY_kana_I
#define IBUS_KEY_kana_U
#define IBUS_KEY_kana_E
#define IBUS_KEY_kana_O
#define IBUS_KEY_kana_KA
#define IBUS_KEY_kana_KI
#define IBUS_KEY_kana_KU
#define IBUS_KEY_kana_KE
#define IBUS_KEY_kana_KO
#define IBUS_KEY_kana_SA
#define IBUS_KEY_kana_SHI
#define IBUS_KEY_kana_SU
#define IBUS_KEY_kana_SE
#define IBUS_KEY_kana_SO
#define IBUS_KEY_kana_TA
#define IBUS_KEY_kana_CHI
#define IBUS_KEY_kana_TI
#define IBUS_KEY_kana_TSU
#define IBUS_KEY_kana_TU
#define IBUS_KEY_kana_TE
#define IBUS_KEY_kana_TO
#define IBUS_KEY_kana_NA
#define IBUS_KEY_kana_NI
#define IBUS_KEY_kana_NU
#define IBUS_KEY_kana_NE
#define IBUS_KEY_kana_NO
#define IBUS_KEY_kana_HA
#define IBUS_KEY_kana_HI
#define IBUS_KEY_kana_FU
#define IBUS_KEY_kana_HU
#define IBUS_KEY_kana_HE
#define IBUS_KEY_kana_HO
#define IBUS_KEY_kana_MA
#define IBUS_KEY_kana_MI
#define IBUS_KEY_kana_MU
#define IBUS_KEY_kana_ME
#define IBUS_KEY_kana_MO
#define IBUS_KEY_kana_YA
#define IBUS_KEY_kana_YU
#define IBUS_KEY_kana_YO
#define IBUS_KEY_kana_RA
#define IBUS_KEY_kana_RI
#define IBUS_KEY_kana_RU
#define IBUS_KEY_kana_RE
#define IBUS_KEY_kana_RO
#define IBUS_KEY_kana_WA
#define IBUS_KEY_kana_N
#define IBUS_KEY_voicedsound
#define IBUS_KEY_semivoicedsound
#define IBUS_KEY_kana_switch
#define IBUS_KEY_Farsi_0
#define IBUS_KEY_Farsi_1
#define IBUS_KEY_Farsi_2
#define IBUS_KEY_Farsi_3
#define IBUS_KEY_Farsi_4
#define IBUS_KEY_Farsi_5
#define IBUS_KEY_Farsi_6
#define IBUS_KEY_Farsi_7
#define IBUS_KEY_Farsi_8
#define IBUS_KEY_Farsi_9
#define IBUS_KEY_Arabic_percent
#define IBUS_KEY_Arabic_superscript_alef
#define IBUS_KEY_Arabic_tteh
#define IBUS_KEY_Arabic_peh
#define IBUS_KEY_Arabic_tcheh
#define IBUS_KEY_Arabic_ddal
#define IBUS_KEY_Arabic_rreh
#define IBUS_KEY_Arabic_comma
#define IBUS_KEY_Arabic_fullstop
#define IBUS_KEY_Arabic_0
#define IBUS_KEY_Arabic_1
#define IBUS_KEY_Arabic_2
#define IBUS_KEY_Arabic_3
#define IBUS_KEY_Arabic_4
#define IBUS_KEY_Arabic_5
#define IBUS_KEY_Arabic_6
#define IBUS_KEY_Arabic_7
#define IBUS_KEY_Arabic_8
#define IBUS_KEY_Arabic_9
#define IBUS_KEY_Arabic_semicolon
#define IBUS_KEY_Arabic_question_mark
#define IBUS_KEY_Arabic_hamza
#define IBUS_KEY_Arabic_maddaonalef
#define IBUS_KEY_Arabic_hamzaonalef
#define IBUS_KEY_Arabic_hamzaonwaw
#define IBUS_KEY_Arabic_hamzaunderalef
#define IBUS_KEY_Arabic_hamzaonyeh
#define IBUS_KEY_Arabic_alef
#define IBUS_KEY_Arabic_beh
#define IBUS_KEY_Arabic_tehmarbuta
#define IBUS_KEY_Arabic_teh
#define IBUS_KEY_Arabic_theh
#define IBUS_KEY_Arabic_jeem
#define IBUS_KEY_Arabic_hah
#define IBUS_KEY_Arabic_khah
#define IBUS_KEY_Arabic_dal
#define IBUS_KEY_Arabic_thal
#define IBUS_KEY_Arabic_ra
#define IBUS_KEY_Arabic_zain
#define IBUS_KEY_Arabic_seen
#define IBUS_KEY_Arabic_sheen
#define IBUS_KEY_Arabic_sad
#define IBUS_KEY_Arabic_dad
#define IBUS_KEY_Arabic_tah
#define IBUS_KEY_Arabic_zah
#define IBUS_KEY_Arabic_ain
#define IBUS_KEY_Arabic_ghain
#define IBUS_KEY_Arabic_tatweel
#define IBUS_KEY_Arabic_feh
#define IBUS_KEY_Arabic_qaf
#define IBUS_KEY_Arabic_kaf
#define IBUS_KEY_Arabic_lam
#define IBUS_KEY_Arabic_meem
#define IBUS_KEY_Arabic_noon
#define IBUS_KEY_Arabic_ha
#define IBUS_KEY_Arabic_heh
#define IBUS_KEY_Arabic_waw
#define IBUS_KEY_Arabic_alefmaksura
#define IBUS_KEY_Arabic_yeh
#define IBUS_KEY_Arabic_fathatan
#define IBUS_KEY_Arabic_dammatan
#define IBUS_KEY_Arabic_kasratan
#define IBUS_KEY_Arabic_fatha
#define IBUS_KEY_Arabic_damma
#define IBUS_KEY_Arabic_kasra
#define IBUS_KEY_Arabic_shadda
#define IBUS_KEY_Arabic_sukun
#define IBUS_KEY_Arabic_madda_above
#define IBUS_KEY_Arabic_hamza_above
#define IBUS_KEY_Arabic_hamza_below
#define IBUS_KEY_Arabic_jeh
#define IBUS_KEY_Arabic_veh
#define IBUS_KEY_Arabic_keheh
#define IBUS_KEY_Arabic_gaf
#define IBUS_KEY_Arabic_noon_ghunna
#define IBUS_KEY_Arabic_heh_doachashmee
#define IBUS_KEY_Farsi_yeh
#define IBUS_KEY_Arabic_farsi_yeh
#define IBUS_KEY_Arabic_yeh_baree
#define IBUS_KEY_Arabic_heh_goal
#define IBUS_KEY_Arabic_switch
#define IBUS_KEY_Cyrillic_GHE_bar
#define IBUS_KEY_Cyrillic_ghe_bar
#define IBUS_KEY_Cyrillic_ZHE_descender
#define IBUS_KEY_Cyrillic_zhe_descender
#define IBUS_KEY_Cyrillic_KA_descender
#define IBUS_KEY_Cyrillic_ka_descender
#define IBUS_KEY_Cyrillic_KA_vertstroke
#define IBUS_KEY_Cyrillic_ka_vertstroke
#define IBUS_KEY_Cyrillic_EN_descender
#define IBUS_KEY_Cyrillic_en_descender
#define IBUS_KEY_Cyrillic_U_straight
#define IBUS_KEY_Cyrillic_u_straight
#define IBUS_KEY_Cyrillic_U_straight_bar
#define IBUS_KEY_Cyrillic_u_straight_bar
#define IBUS_KEY_Cyrillic_HA_descender
#define IBUS_KEY_Cyrillic_ha_descender
#define IBUS_KEY_Cyrillic_CHE_descender
#define IBUS_KEY_Cyrillic_che_descender
#define IBUS_KEY_Cyrillic_CHE_vertstroke
#define IBUS_KEY_Cyrillic_che_vertstroke
#define IBUS_KEY_Cyrillic_SHHA
#define IBUS_KEY_Cyrillic_shha
#define IBUS_KEY_Cyrillic_SCHWA
#define IBUS_KEY_Cyrillic_schwa
#define IBUS_KEY_Cyrillic_I_macron
#define IBUS_KEY_Cyrillic_i_macron
#define IBUS_KEY_Cyrillic_O_bar
#define IBUS_KEY_Cyrillic_o_bar
#define IBUS_KEY_Cyrillic_U_macron
#define IBUS_KEY_Cyrillic_u_macron
#define IBUS_KEY_Serbian_dje
#define IBUS_KEY_Macedonia_gje
#define IBUS_KEY_Cyrillic_io
#define IBUS_KEY_Ukrainian_ie
#define IBUS_KEY_Ukranian_je
#define IBUS_KEY_Macedonia_dse
#define IBUS_KEY_Ukrainian_i
#define IBUS_KEY_Ukranian_i
#define IBUS_KEY_Ukrainian_yi
#define IBUS_KEY_Ukranian_yi
#define IBUS_KEY_Cyrillic_je
#define IBUS_KEY_Serbian_je
#define IBUS_KEY_Cyrillic_lje
#define IBUS_KEY_Serbian_lje
#define IBUS_KEY_Cyrillic_nje
#define IBUS_KEY_Serbian_nje
#define IBUS_KEY_Serbian_tshe
#define IBUS_KEY_Macedonia_kje
#define IBUS_KEY_Ukrainian_ghe_with_upturn
#define IBUS_KEY_Byelorussian_shortu
#define IBUS_KEY_Cyrillic_dzhe
#define IBUS_KEY_Serbian_dze
#define IBUS_KEY_numerosign
#define IBUS_KEY_Serbian_DJE
#define IBUS_KEY_Macedonia_GJE
#define IBUS_KEY_Cyrillic_IO
#define IBUS_KEY_Ukrainian_IE
#define IBUS_KEY_Ukranian_JE
#define IBUS_KEY_Macedonia_DSE
#define IBUS_KEY_Ukrainian_I
#define IBUS_KEY_Ukranian_I
#define IBUS_KEY_Ukrainian_YI
#define IBUS_KEY_Ukranian_YI
#define IBUS_KEY_Cyrillic_JE
#define IBUS_KEY_Serbian_JE
#define IBUS_KEY_Cyrillic_LJE
#define IBUS_KEY_Serbian_LJE
#define IBUS_KEY_Cyrillic_NJE
#define IBUS_KEY_Serbian_NJE
#define IBUS_KEY_Serbian_TSHE
#define IBUS_KEY_Macedonia_KJE
#define IBUS_KEY_Ukrainian_GHE_WITH_UPTURN
#define IBUS_KEY_Byelorussian_SHORTU
#define IBUS_KEY_Cyrillic_DZHE
#define IBUS_KEY_Serbian_DZE
#define IBUS_KEY_Cyrillic_yu
#define IBUS_KEY_Cyrillic_a
#define IBUS_KEY_Cyrillic_be
#define IBUS_KEY_Cyrillic_tse
#define IBUS_KEY_Cyrillic_de
#define IBUS_KEY_Cyrillic_ie
#define IBUS_KEY_Cyrillic_ef
#define IBUS_KEY_Cyrillic_ghe
#define IBUS_KEY_Cyrillic_ha
#define IBUS_KEY_Cyrillic_i
#define IBUS_KEY_Cyrillic_shorti
#define IBUS_KEY_Cyrillic_ka
#define IBUS_KEY_Cyrillic_el
#define IBUS_KEY_Cyrillic_em
#define IBUS_KEY_Cyrillic_en
#define IBUS_KEY_Cyrillic_o
#define IBUS_KEY_Cyrillic_pe
#define IBUS_KEY_Cyrillic_ya
#define IBUS_KEY_Cyrillic_er
#define IBUS_KEY_Cyrillic_es
#define IBUS_KEY_Cyrillic_te
#define IBUS_KEY_Cyrillic_u
#define IBUS_KEY_Cyrillic_zhe
#define IBUS_KEY_Cyrillic_ve
#define IBUS_KEY_Cyrillic_softsign
#define IBUS_KEY_Cyrillic_yeru
#define IBUS_KEY_Cyrillic_ze
#define IBUS_KEY_Cyrillic_sha
#define IBUS_KEY_Cyrillic_e
#define IBUS_KEY_Cyrillic_shcha
#define IBUS_KEY_Cyrillic_che
#define IBUS_KEY_Cyrillic_hardsign
#define IBUS_KEY_Cyrillic_YU
#define IBUS_KEY_Cyrillic_A
#define IBUS_KEY_Cyrillic_BE
#define IBUS_KEY_Cyrillic_TSE
#define IBUS_KEY_Cyrillic_DE
#define IBUS_KEY_Cyrillic_IE
#define IBUS_KEY_Cyrillic_EF
#define IBUS_KEY_Cyrillic_GHE
#define IBUS_KEY_Cyrillic_HA
#define IBUS_KEY_Cyrillic_I
#define IBUS_KEY_Cyrillic_SHORTI
#define IBUS_KEY_Cyrillic_KA
#define IBUS_KEY_Cyrillic_EL
#define IBUS_KEY_Cyrillic_EM
#define IBUS_KEY_Cyrillic_EN
#define IBUS_KEY_Cyrillic_O
#define IBUS_KEY_Cyrillic_PE
#define IBUS_KEY_Cyrillic_YA
#define IBUS_KEY_Cyrillic_ER
#define IBUS_KEY_Cyrillic_ES
#define IBUS_KEY_Cyrillic_TE
#define IBUS_KEY_Cyrillic_U
#define IBUS_KEY_Cyrillic_ZHE
#define IBUS_KEY_Cyrillic_VE
#define IBUS_KEY_Cyrillic_SOFTSIGN
#define IBUS_KEY_Cyrillic_YERU
#define IBUS_KEY_Cyrillic_ZE
#define IBUS_KEY_Cyrillic_SHA
#define IBUS_KEY_Cyrillic_E
#define IBUS_KEY_Cyrillic_SHCHA
#define IBUS_KEY_Cyrillic_CHE
#define IBUS_KEY_Cyrillic_HARDSIGN
#define IBUS_KEY_Greek_ALPHAaccent
#define IBUS_KEY_Greek_EPSILONaccent
#define IBUS_KEY_Greek_ETAaccent
#define IBUS_KEY_Greek_IOTAaccent
#define IBUS_KEY_Greek_IOTAdieresis
#define IBUS_KEY_Greek_IOTAdiaeresis
#define IBUS_KEY_Greek_OMICRONaccent
#define IBUS_KEY_Greek_UPSILONaccent
#define IBUS_KEY_Greek_UPSILONdieresis
#define IBUS_KEY_Greek_OMEGAaccent
#define IBUS_KEY_Greek_accentdieresis
#define IBUS_KEY_Greek_horizbar
#define IBUS_KEY_Greek_alphaaccent
#define IBUS_KEY_Greek_epsilonaccent
#define IBUS_KEY_Greek_etaaccent
#define IBUS_KEY_Greek_iotaaccent
#define IBUS_KEY_Greek_iotadieresis
#define IBUS_KEY_Greek_iotaaccentdieresis
#define IBUS_KEY_Greek_omicronaccent
#define IBUS_KEY_Greek_upsilonaccent
#define IBUS_KEY_Greek_upsilondieresis
#define IBUS_KEY_Greek_upsilonaccentdieresis
#define IBUS_KEY_Greek_omegaaccent
#define IBUS_KEY_Greek_ALPHA
#define IBUS_KEY_Greek_BETA
#define IBUS_KEY_Greek_GAMMA
#define IBUS_KEY_Greek_DELTA
#define IBUS_KEY_Greek_EPSILON
#define IBUS_KEY_Greek_ZETA
#define IBUS_KEY_Greek_ETA
#define IBUS_KEY_Greek_THETA
#define IBUS_KEY_Greek_IOTA
#define IBUS_KEY_Greek_KAPPA
#define IBUS_KEY_Greek_LAMDA
#define IBUS_KEY_Greek_LAMBDA
#define IBUS_KEY_Greek_MU
#define IBUS_KEY_Greek_NU
#define IBUS_KEY_Greek_XI
#define IBUS_KEY_Greek_OMICRON
#define IBUS_KEY_Greek_PI
#define IBUS_KEY_Greek_RHO
#define IBUS_KEY_Greek_SIGMA
#define IBUS_KEY_Greek_TAU
#define IBUS_KEY_Greek_UPSILON
#define IBUS_KEY_Greek_PHI
#define IBUS_KEY_Greek_CHI
#define IBUS_KEY_Greek_PSI
#define IBUS_KEY_Greek_OMEGA
#define IBUS_KEY_Greek_alpha
#define IBUS_KEY_Greek_beta
#define IBUS_KEY_Greek_gamma
#define IBUS_KEY_Greek_delta
#define IBUS_KEY_Greek_epsilon
#define IBUS_KEY_Greek_zeta
#define IBUS_KEY_Greek_eta
#define IBUS_KEY_Greek_theta
#define IBUS_KEY_Greek_iota
#define IBUS_KEY_Greek_kappa
#define IBUS_KEY_Greek_lamda
#define IBUS_KEY_Greek_lambda
#define IBUS_KEY_Greek_mu
#define IBUS_KEY_Greek_nu
#define IBUS_KEY_Greek_xi
#define IBUS_KEY_Greek_omicron
#define IBUS_KEY_Greek_pi
#define IBUS_KEY_Greek_rho
#define IBUS_KEY_Greek_sigma
#define IBUS_KEY_Greek_finalsmallsigma
#define IBUS_KEY_Greek_tau
#define IBUS_KEY_Greek_upsilon
#define IBUS_KEY_Greek_phi
#define IBUS_KEY_Greek_chi
#define IBUS_KEY_Greek_psi
#define IBUS_KEY_Greek_omega
#define IBUS_KEY_Greek_switch
#define IBUS_KEY_leftradical
#define IBUS_KEY_topleftradical
#define IBUS_KEY_horizconnector
#define IBUS_KEY_topintegral
#define IBUS_KEY_botintegral
#define IBUS_KEY_vertconnector
#define IBUS_KEY_topleftsqbracket
#define IBUS_KEY_botleftsqbracket
#define IBUS_KEY_toprightsqbracket
#define IBUS_KEY_botrightsqbracket
#define IBUS_KEY_topleftparens
#define IBUS_KEY_botleftparens
#define IBUS_KEY_toprightparens
#define IBUS_KEY_botrightparens
#define IBUS_KEY_leftmiddlecurlybrace
#define IBUS_KEY_rightmiddlecurlybrace
#define IBUS_KEY_topleftsummation
#define IBUS_KEY_botleftsummation
#define IBUS_KEY_topvertsummationconnector
#define IBUS_KEY_botvertsummationconnector
#define IBUS_KEY_toprightsummation
#define IBUS_KEY_botrightsummation
#define IBUS_KEY_rightmiddlesummation
#define IBUS_KEY_lessthanequal
#define IBUS_KEY_notequal
#define IBUS_KEY_greaterthanequal
#define IBUS_KEY_integral
#define IBUS_KEY_therefore
#define IBUS_KEY_variation
#define IBUS_KEY_infinity
#define IBUS_KEY_nabla
#define IBUS_KEY_approximate
#define IBUS_KEY_similarequal
#define IBUS_KEY_ifonlyif
#define IBUS_KEY_implies
#define IBUS_KEY_identical
#define IBUS_KEY_radical
#define IBUS_KEY_includedin
#define IBUS_KEY_includes
#define IBUS_KEY_intersection
#define IBUS_KEY_union
#define IBUS_KEY_logicaland
#define IBUS_KEY_logicalor
#define IBUS_KEY_partialderivative
#define IBUS_KEY_function
#define IBUS_KEY_leftarrow
#define IBUS_KEY_uparrow
#define IBUS_KEY_rightarrow
#define IBUS_KEY_downarrow
#define IBUS_KEY_blank
#define IBUS_KEY_soliddiamond
#define IBUS_KEY_checkerboard
#define IBUS_KEY_ht
#define IBUS_KEY_ff
#define IBUS_KEY_cr
#define IBUS_KEY_lf
#define IBUS_KEY_nl
#define IBUS_KEY_vt
#define IBUS_KEY_lowrightcorner
#define IBUS_KEY_uprightcorner
#define IBUS_KEY_upleftcorner
#define IBUS_KEY_lowleftcorner
#define IBUS_KEY_crossinglines
#define IBUS_KEY_horizlinescan1
#define IBUS_KEY_horizlinescan3
#define IBUS_KEY_horizlinescan5
#define IBUS_KEY_horizlinescan7
#define IBUS_KEY_horizlinescan9
#define IBUS_KEY_leftt
#define IBUS_KEY_rightt
#define IBUS_KEY_bott
#define IBUS_KEY_topt
#define IBUS_KEY_vertbar
#define IBUS_KEY_emspace
#define IBUS_KEY_enspace
#define IBUS_KEY_em3space
#define IBUS_KEY_em4space
#define IBUS_KEY_digitspace
#define IBUS_KEY_punctspace
#define IBUS_KEY_thinspace
#define IBUS_KEY_hairspace
#define IBUS_KEY_emdash
#define IBUS_KEY_endash
#define IBUS_KEY_signifblank
#define IBUS_KEY_ellipsis
#define IBUS_KEY_doubbaselinedot
#define IBUS_KEY_onethird
#define IBUS_KEY_twothirds
#define IBUS_KEY_onefifth
#define IBUS_KEY_twofifths
#define IBUS_KEY_threefifths
#define IBUS_KEY_fourfifths
#define IBUS_KEY_onesixth
#define IBUS_KEY_fivesixths
#define IBUS_KEY_careof
#define IBUS_KEY_figdash
#define IBUS_KEY_leftanglebracket
#define IBUS_KEY_decimalpoint
#define IBUS_KEY_rightanglebracket
#define IBUS_KEY_marker
#define IBUS_KEY_oneeighth
#define IBUS_KEY_threeeighths
#define IBUS_KEY_fiveeighths
#define IBUS_KEY_seveneighths
#define IBUS_KEY_trademark
#define IBUS_KEY_signaturemark
#define IBUS_KEY_trademarkincircle
#define IBUS_KEY_leftopentriangle
#define IBUS_KEY_rightopentriangle
#define IBUS_KEY_emopencircle
#define IBUS_KEY_emopenrectangle
#define IBUS_KEY_leftsinglequotemark
#define IBUS_KEY_rightsinglequotemark
#define IBUS_KEY_leftdoublequotemark
#define IBUS_KEY_rightdoublequotemark
#define IBUS_KEY_prescription
#define IBUS_KEY_minutes
#define IBUS_KEY_seconds
#define IBUS_KEY_latincross
#define IBUS_KEY_hexagram
#define IBUS_KEY_filledrectbullet
#define IBUS_KEY_filledlefttribullet
#define IBUS_KEY_filledrighttribullet
#define IBUS_KEY_emfilledcircle
#define IBUS_KEY_emfilledrect
#define IBUS_KEY_enopencircbullet
#define IBUS_KEY_enopensquarebullet
#define IBUS_KEY_openrectbullet
#define IBUS_KEY_opentribulletup
#define IBUS_KEY_opentribulletdown
#define IBUS_KEY_openstar
#define IBUS_KEY_enfilledcircbullet
#define IBUS_KEY_enfilledsqbullet
#define IBUS_KEY_filledtribulletup
#define IBUS_KEY_filledtribulletdown
#define IBUS_KEY_leftpointer
#define IBUS_KEY_rightpointer
#define IBUS_KEY_club
#define IBUS_KEY_diamond
#define IBUS_KEY_heart
#define IBUS_KEY_maltesecross
#define IBUS_KEY_dagger
#define IBUS_KEY_doubledagger
#define IBUS_KEY_checkmark
#define IBUS_KEY_ballotcross
#define IBUS_KEY_musicalsharp
#define IBUS_KEY_musicalflat
#define IBUS_KEY_malesymbol
#define IBUS_KEY_femalesymbol
#define IBUS_KEY_telephone
#define IBUS_KEY_telephonerecorder
#define IBUS_KEY_phonographcopyright
#define IBUS_KEY_caret
#define IBUS_KEY_singlelowquotemark
#define IBUS_KEY_doublelowquotemark
#define IBUS_KEY_cursor
#define IBUS_KEY_leftcaret
#define IBUS_KEY_rightcaret
#define IBUS_KEY_downcaret
#define IBUS_KEY_upcaret
#define IBUS_KEY_overbar
#define IBUS_KEY_downtack
#define IBUS_KEY_upshoe
#define IBUS_KEY_downstile
#define IBUS_KEY_underbar
#define IBUS_KEY_jot
#define IBUS_KEY_quad
#define IBUS_KEY_uptack
#define IBUS_KEY_circle
#define IBUS_KEY_upstile
#define IBUS_KEY_downshoe
#define IBUS_KEY_rightshoe
#define IBUS_KEY_leftshoe
#define IBUS_KEY_lefttack
#define IBUS_KEY_righttack
#define IBUS_KEY_hebrew_doublelowline
#define IBUS_KEY_hebrew_aleph
#define IBUS_KEY_hebrew_bet
#define IBUS_KEY_hebrew_beth
#define IBUS_KEY_hebrew_gimel
#define IBUS_KEY_hebrew_gimmel
#define IBUS_KEY_hebrew_dalet
#define IBUS_KEY_hebrew_daleth
#define IBUS_KEY_hebrew_he
#define IBUS_KEY_hebrew_waw
#define IBUS_KEY_hebrew_zain
#define IBUS_KEY_hebrew_zayin
#define IBUS_KEY_hebrew_chet
#define IBUS_KEY_hebrew_het
#define IBUS_KEY_hebrew_tet
#define IBUS_KEY_hebrew_teth
#define IBUS_KEY_hebrew_yod
#define IBUS_KEY_hebrew_finalkaph
#define IBUS_KEY_hebrew_kaph
#define IBUS_KEY_hebrew_lamed
#define IBUS_KEY_hebrew_finalmem
#define IBUS_KEY_hebrew_mem
#define IBUS_KEY_hebrew_finalnun
#define IBUS_KEY_hebrew_nun
#define IBUS_KEY_hebrew_samech
#define IBUS_KEY_hebrew_samekh
#define IBUS_KEY_hebrew_ayin
#define IBUS_KEY_hebrew_finalpe
#define IBUS_KEY_hebrew_pe
#define IBUS_KEY_hebrew_finalzade
#define IBUS_KEY_hebrew_finalzadi
#define IBUS_KEY_hebrew_zade
#define IBUS_KEY_hebrew_zadi
#define IBUS_KEY_hebrew_qoph
#define IBUS_KEY_hebrew_kuf
#define IBUS_KEY_hebrew_resh
#define IBUS_KEY_hebrew_shin
#define IBUS_KEY_hebrew_taw
#define IBUS_KEY_hebrew_taf
#define IBUS_KEY_Hebrew_switch
#define IBUS_KEY_Thai_kokai
#define IBUS_KEY_Thai_khokhai
#define IBUS_KEY_Thai_khokhuat
#define IBUS_KEY_Thai_khokhwai
#define IBUS_KEY_Thai_khokhon
#define IBUS_KEY_Thai_khorakhang
#define IBUS_KEY_Thai_ngongu
#define IBUS_KEY_Thai_chochan
#define IBUS_KEY_Thai_choching
#define IBUS_KEY_Thai_chochang
#define IBUS_KEY_Thai_soso
#define IBUS_KEY_Thai_chochoe
#define IBUS_KEY_Thai_yoying
#define IBUS_KEY_Thai_dochada
#define IBUS_KEY_Thai_topatak
#define IBUS_KEY_Thai_thothan
#define IBUS_KEY_Thai_thonangmontho
#define IBUS_KEY_Thai_thophuthao
#define IBUS_KEY_Thai_nonen
#define IBUS_KEY_Thai_dodek
#define IBUS_KEY_Thai_totao
#define IBUS_KEY_Thai_thothung
#define IBUS_KEY_Thai_thothahan
#define IBUS_KEY_Thai_thothong
#define IBUS_KEY_Thai_nonu
#define IBUS_KEY_Thai_bobaimai
#define IBUS_KEY_Thai_popla
#define IBUS_KEY_Thai_phophung
#define IBUS_KEY_Thai_fofa
#define IBUS_KEY_Thai_phophan
#define IBUS_KEY_Thai_fofan
#define IBUS_KEY_Thai_phosamphao
#define IBUS_KEY_Thai_moma
#define IBUS_KEY_Thai_yoyak
#define IBUS_KEY_Thai_rorua
#define IBUS_KEY_Thai_ru
#define IBUS_KEY_Thai_loling
#define IBUS_KEY_Thai_lu
#define IBUS_KEY_Thai_wowaen
#define IBUS_KEY_Thai_sosala
#define IBUS_KEY_Thai_sorusi
#define IBUS_KEY_Thai_sosua
#define IBUS_KEY_Thai_hohip
#define IBUS_KEY_Thai_lochula
#define IBUS_KEY_Thai_oang
#define IBUS_KEY_Thai_honokhuk
#define IBUS_KEY_Thai_paiyannoi
#define IBUS_KEY_Thai_saraa
#define IBUS_KEY_Thai_maihanakat
#define IBUS_KEY_Thai_saraaa
#define IBUS_KEY_Thai_saraam
#define IBUS_KEY_Thai_sarai
#define IBUS_KEY_Thai_saraii
#define IBUS_KEY_Thai_saraue
#define IBUS_KEY_Thai_sarauee
#define IBUS_KEY_Thai_sarau
#define IBUS_KEY_Thai_sarauu
#define IBUS_KEY_Thai_phinthu
#define IBUS_KEY_Thai_maihanakat_maitho
#define IBUS_KEY_Thai_baht
#define IBUS_KEY_Thai_sarae
#define IBUS_KEY_Thai_saraae
#define IBUS_KEY_Thai_sarao
#define IBUS_KEY_Thai_saraaimaimuan
#define IBUS_KEY_Thai_saraaimaimalai
#define IBUS_KEY_Thai_lakkhangyao
#define IBUS_KEY_Thai_maiyamok
#define IBUS_KEY_Thai_maitaikhu
#define IBUS_KEY_Thai_maiek
#define IBUS_KEY_Thai_maitho
#define IBUS_KEY_Thai_maitri
#define IBUS_KEY_Thai_maichattawa
#define IBUS_KEY_Thai_thanthakhat
#define IBUS_KEY_Thai_nikhahit
#define IBUS_KEY_Thai_leksun
#define IBUS_KEY_Thai_leknung
#define IBUS_KEY_Thai_leksong
#define IBUS_KEY_Thai_leksam
#define IBUS_KEY_Thai_leksi
#define IBUS_KEY_Thai_lekha
#define IBUS_KEY_Thai_lekhok
#define IBUS_KEY_Thai_lekchet
#define IBUS_KEY_Thai_lekpaet
#define IBUS_KEY_Thai_lekkao
#define IBUS_KEY_Hangul
#define IBUS_KEY_Hangul_Start
#define IBUS_KEY_Hangul_End
#define IBUS_KEY_Hangul_Hanja
#define IBUS_KEY_Hangul_Jamo
#define IBUS_KEY_Hangul_Romaja
#define IBUS_KEY_Hangul_Codeinput
#define IBUS_KEY_Hangul_Jeonja
#define IBUS_KEY_Hangul_Banja
#define IBUS_KEY_Hangul_PreHanja
#define IBUS_KEY_Hangul_PostHanja
#define IBUS_KEY_Hangul_SingleCandidate
#define IBUS_KEY_Hangul_MultipleCandidate
#define IBUS_KEY_Hangul_PreviousCandidate
#define IBUS_KEY_Hangul_Special
#define IBUS_KEY_Hangul_switch
#define IBUS_KEY_Hangul_Kiyeog
#define IBUS_KEY_Hangul_SsangKiyeog
#define IBUS_KEY_Hangul_KiyeogSios
#define IBUS_KEY_Hangul_Nieun
#define IBUS_KEY_Hangul_NieunJieuj
#define IBUS_KEY_Hangul_NieunHieuh
#define IBUS_KEY_Hangul_Dikeud
#define IBUS_KEY_Hangul_SsangDikeud
#define IBUS_KEY_Hangul_Rieul
#define IBUS_KEY_Hangul_RieulKiyeog
#define IBUS_KEY_Hangul_RieulMieum
#define IBUS_KEY_Hangul_RieulPieub
#define IBUS_KEY_Hangul_RieulSios
#define IBUS_KEY_Hangul_RieulTieut
#define IBUS_KEY_Hangul_RieulPhieuf
#define IBUS_KEY_Hangul_RieulHieuh
#define IBUS_KEY_Hangul_Mieum
#define IBUS_KEY_Hangul_Pieub
#define IBUS_KEY_Hangul_SsangPieub
#define IBUS_KEY_Hangul_PieubSios
#define IBUS_KEY_Hangul_Sios
#define IBUS_KEY_Hangul_SsangSios
#define IBUS_KEY_Hangul_Ieung
#define IBUS_KEY_Hangul_Jieuj
#define IBUS_KEY_Hangul_SsangJieuj
#define IBUS_KEY_Hangul_Cieuc
#define IBUS_KEY_Hangul_Khieuq
#define IBUS_KEY_Hangul_Tieut
#define IBUS_KEY_Hangul_Phieuf
#define IBUS_KEY_Hangul_Hieuh
#define IBUS_KEY_Hangul_A
#define IBUS_KEY_Hangul_AE
#define IBUS_KEY_Hangul_YA
#define IBUS_KEY_Hangul_YAE
#define IBUS_KEY_Hangul_EO
#define IBUS_KEY_Hangul_E
#define IBUS_KEY_Hangul_YEO
#define IBUS_KEY_Hangul_YE
#define IBUS_KEY_Hangul_O
#define IBUS_KEY_Hangul_WA
#define IBUS_KEY_Hangul_WAE
#define IBUS_KEY_Hangul_OE
#define IBUS_KEY_Hangul_YO
#define IBUS_KEY_Hangul_U
#define IBUS_KEY_Hangul_WEO
#define IBUS_KEY_Hangul_WE
#define IBUS_KEY_Hangul_WI
#define IBUS_KEY_Hangul_YU
#define IBUS_KEY_Hangul_EU
#define IBUS_KEY_Hangul_YI
#define IBUS_KEY_Hangul_I
#define IBUS_KEY_Hangul_J_Kiyeog
#define IBUS_KEY_Hangul_J_SsangKiyeog
#define IBUS_KEY_Hangul_J_KiyeogSios
#define IBUS_KEY_Hangul_J_Nieun
#define IBUS_KEY_Hangul_J_NieunJieuj
#define IBUS_KEY_Hangul_J_NieunHieuh
#define IBUS_KEY_Hangul_J_Dikeud
#define IBUS_KEY_Hangul_J_Rieul
#define IBUS_KEY_Hangul_J_RieulKiyeog
#define IBUS_KEY_Hangul_J_RieulMieum
#define IBUS_KEY_Hangul_J_RieulPieub
#define IBUS_KEY_Hangul_J_RieulSios
#define IBUS_KEY_Hangul_J_RieulTieut
#define IBUS_KEY_Hangul_J_RieulPhieuf
#define IBUS_KEY_Hangul_J_RieulHieuh
#define IBUS_KEY_Hangul_J_Mieum
#define IBUS_KEY_Hangul_J_Pieub
#define IBUS_KEY_Hangul_J_PieubSios
#define IBUS_KEY_Hangul_J_Sios
#define IBUS_KEY_Hangul_J_SsangSios
#define IBUS_KEY_Hangul_J_Ieung
#define IBUS_KEY_Hangul_J_Jieuj
#define IBUS_KEY_Hangul_J_Cieuc
#define IBUS_KEY_Hangul_J_Khieuq
#define IBUS_KEY_Hangul_J_Tieut
#define IBUS_KEY_Hangul_J_Phieuf
#define IBUS_KEY_Hangul_J_Hieuh
#define IBUS_KEY_Hangul_RieulYeorinHieuh
#define IBUS_KEY_Hangul_SunkyeongeumMieum
#define IBUS_KEY_Hangul_SunkyeongeumPieub
#define IBUS_KEY_Hangul_PanSios
#define IBUS_KEY_Hangul_KkogjiDalrinIeung
#define IBUS_KEY_Hangul_SunkyeongeumPhieuf
#define IBUS_KEY_Hangul_YeorinHieuh
#define IBUS_KEY_Hangul_AraeA
#define IBUS_KEY_Hangul_AraeAE
#define IBUS_KEY_Hangul_J_PanSios
#define IBUS_KEY_Hangul_J_KkogjiDalrinIeung
#define IBUS_KEY_Hangul_J_YeorinHieuh
#define IBUS_KEY_Korean_Won
#define IBUS_KEY_Armenian_ligature_ew
#define IBUS_KEY_Armenian_full_stop
#define IBUS_KEY_Armenian_verjaket
#define IBUS_KEY_Armenian_separation_mark
#define IBUS_KEY_Armenian_but
#define IBUS_KEY_Armenian_hyphen
#define IBUS_KEY_Armenian_yentamna
#define IBUS_KEY_Armenian_exclam
#define IBUS_KEY_Armenian_amanak
#define IBUS_KEY_Armenian_accent
#define IBUS_KEY_Armenian_shesht
#define IBUS_KEY_Armenian_question
#define IBUS_KEY_Armenian_paruyk
#define IBUS_KEY_Armenian_AYB
#define IBUS_KEY_Armenian_ayb
#define IBUS_KEY_Armenian_BEN
#define IBUS_KEY_Armenian_ben
#define IBUS_KEY_Armenian_GIM
#define IBUS_KEY_Armenian_gim
#define IBUS_KEY_Armenian_DA
#define IBUS_KEY_Armenian_da
#define IBUS_KEY_Armenian_YECH
#define IBUS_KEY_Armenian_yech
#define IBUS_KEY_Armenian_ZA
#define IBUS_KEY_Armenian_za
#define IBUS_KEY_Armenian_E
#define IBUS_KEY_Armenian_e
#define IBUS_KEY_Armenian_AT
#define IBUS_KEY_Armenian_at
#define IBUS_KEY_Armenian_TO
#define IBUS_KEY_Armenian_to
#define IBUS_KEY_Armenian_ZHE
#define IBUS_KEY_Armenian_zhe
#define IBUS_KEY_Armenian_INI
#define IBUS_KEY_Armenian_ini
#define IBUS_KEY_Armenian_LYUN
#define IBUS_KEY_Armenian_lyun
#define IBUS_KEY_Armenian_KHE
#define IBUS_KEY_Armenian_khe
#define IBUS_KEY_Armenian_TSA
#define IBUS_KEY_Armenian_tsa
#define IBUS_KEY_Armenian_KEN
#define IBUS_KEY_Armenian_ken
#define IBUS_KEY_Armenian_HO
#define IBUS_KEY_Armenian_ho
#define IBUS_KEY_Armenian_DZA
#define IBUS_KEY_Armenian_dza
#define IBUS_KEY_Armenian_GHAT
#define IBUS_KEY_Armenian_ghat
#define IBUS_KEY_Armenian_TCHE
#define IBUS_KEY_Armenian_tche
#define IBUS_KEY_Armenian_MEN
#define IBUS_KEY_Armenian_men
#define IBUS_KEY_Armenian_HI
#define IBUS_KEY_Armenian_hi
#define IBUS_KEY_Armenian_NU
#define IBUS_KEY_Armenian_nu
#define IBUS_KEY_Armenian_SHA
#define IBUS_KEY_Armenian_sha
#define IBUS_KEY_Armenian_VO
#define IBUS_KEY_Armenian_vo
#define IBUS_KEY_Armenian_CHA
#define IBUS_KEY_Armenian_cha
#define IBUS_KEY_Armenian_PE
#define IBUS_KEY_Armenian_pe
#define IBUS_KEY_Armenian_JE
#define IBUS_KEY_Armenian_je
#define IBUS_KEY_Armenian_RA
#define IBUS_KEY_Armenian_ra
#define IBUS_KEY_Armenian_SE
#define IBUS_KEY_Armenian_se
#define IBUS_KEY_Armenian_VEV
#define IBUS_KEY_Armenian_vev
#define IBUS_KEY_Armenian_TYUN
#define IBUS_KEY_Armenian_tyun
#define IBUS_KEY_Armenian_RE
#define IBUS_KEY_Armenian_re
#define IBUS_KEY_Armenian_TSO
#define IBUS_KEY_Armenian_tso
#define IBUS_KEY_Armenian_VYUN
#define IBUS_KEY_Armenian_vyun
#define IBUS_KEY_Armenian_PYUR
#define IBUS_KEY_Armenian_pyur
#define IBUS_KEY_Armenian_KE
#define IBUS_KEY_Armenian_ke
#define IBUS_KEY_Armenian_O
#define IBUS_KEY_Armenian_o
#define IBUS_KEY_Armenian_FE
#define IBUS_KEY_Armenian_fe
#define IBUS_KEY_Armenian_apostrophe
#define IBUS_KEY_Georgian_an
#define IBUS_KEY_Georgian_ban
#define IBUS_KEY_Georgian_gan
#define IBUS_KEY_Georgian_don
#define IBUS_KEY_Georgian_en
#define IBUS_KEY_Georgian_vin
#define IBUS_KEY_Georgian_zen
#define IBUS_KEY_Georgian_tan
#define IBUS_KEY_Georgian_in
#define IBUS_KEY_Georgian_kan
#define IBUS_KEY_Georgian_las
#define IBUS_KEY_Georgian_man
#define IBUS_KEY_Georgian_nar
#define IBUS_KEY_Georgian_on
#define IBUS_KEY_Georgian_par
#define IBUS_KEY_Georgian_zhar
#define IBUS_KEY_Georgian_rae
#define IBUS_KEY_Georgian_san
#define IBUS_KEY_Georgian_tar
#define IBUS_KEY_Georgian_un
#define IBUS_KEY_Georgian_phar
#define IBUS_KEY_Georgian_khar
#define IBUS_KEY_Georgian_ghan
#define IBUS_KEY_Georgian_qar
#define IBUS_KEY_Georgian_shin
#define IBUS_KEY_Georgian_chin
#define IBUS_KEY_Georgian_can
#define IBUS_KEY_Georgian_jil
#define IBUS_KEY_Georgian_cil
#define IBUS_KEY_Georgian_char
#define IBUS_KEY_Georgian_xan
#define IBUS_KEY_Georgian_jhan
#define IBUS_KEY_Georgian_hae
#define IBUS_KEY_Georgian_he
#define IBUS_KEY_Georgian_hie
#define IBUS_KEY_Georgian_we
#define IBUS_KEY_Georgian_har
#define IBUS_KEY_Georgian_hoe
#define IBUS_KEY_Georgian_fi
#define IBUS_KEY_Xabovedot
#define IBUS_KEY_Ibreve
#define IBUS_KEY_Zstroke
#define IBUS_KEY_Gcaron
#define IBUS_KEY_Ocaron
#define IBUS_KEY_Obarred
#define IBUS_KEY_xabovedot
#define IBUS_KEY_ibreve
#define IBUS_KEY_zstroke
#define IBUS_KEY_gcaron
#define IBUS_KEY_ocaron
#define IBUS_KEY_obarred
#define IBUS_KEY_SCHWA
#define IBUS_KEY_EZH
#define IBUS_KEY_schwa
#define IBUS_KEY_ezh
#define IBUS_KEY_Lbelowdot
#define IBUS_KEY_lbelowdot
#define IBUS_KEY_Abelowdot
#define IBUS_KEY_abelowdot
#define IBUS_KEY_Ahook
#define IBUS_KEY_ahook
#define IBUS_KEY_Acircumflexacute
#define IBUS_KEY_acircumflexacute
#define IBUS_KEY_Acircumflexgrave
#define IBUS_KEY_acircumflexgrave
#define IBUS_KEY_Acircumflexhook
#define IBUS_KEY_acircumflexhook
#define IBUS_KEY_Acircumflextilde
#define IBUS_KEY_acircumflextilde
#define IBUS_KEY_Acircumflexbelowdot
#define IBUS_KEY_acircumflexbelowdot
#define IBUS_KEY_Abreveacute
#define IBUS_KEY_abreveacute
#define IBUS_KEY_Abrevegrave
#define IBUS_KEY_abrevegrave
#define IBUS_KEY_Abrevehook
#define IBUS_KEY_abrevehook
#define IBUS_KEY_Abrevetilde
#define IBUS_KEY_abrevetilde
#define IBUS_KEY_Abrevebelowdot
#define IBUS_KEY_abrevebelowdot
#define IBUS_KEY_Ebelowdot
#define IBUS_KEY_ebelowdot
#define IBUS_KEY_Ehook
#define IBUS_KEY_ehook
#define IBUS_KEY_Etilde
#define IBUS_KEY_etilde
#define IBUS_KEY_Ecircumflexacute
#define IBUS_KEY_ecircumflexacute
#define IBUS_KEY_Ecircumflexgrave
#define IBUS_KEY_ecircumflexgrave
#define IBUS_KEY_Ecircumflexhook
#define IBUS_KEY_ecircumflexhook
#define IBUS_KEY_Ecircumflextilde
#define IBUS_KEY_ecircumflextilde
#define IBUS_KEY_Ecircumflexbelowdot
#define IBUS_KEY_ecircumflexbelowdot
#define IBUS_KEY_Ihook
#define IBUS_KEY_ihook
#define IBUS_KEY_Ibelowdot
#define IBUS_KEY_ibelowdot
#define IBUS_KEY_Obelowdot
#define IBUS_KEY_obelowdot
#define IBUS_KEY_Ohook
#define IBUS_KEY_ohook
#define IBUS_KEY_Ocircumflexacute
#define IBUS_KEY_ocircumflexacute
#define IBUS_KEY_Ocircumflexgrave
#define IBUS_KEY_ocircumflexgrave
#define IBUS_KEY_Ocircumflexhook
#define IBUS_KEY_ocircumflexhook
#define IBUS_KEY_Ocircumflextilde
#define IBUS_KEY_ocircumflextilde
#define IBUS_KEY_Ocircumflexbelowdot
#define IBUS_KEY_ocircumflexbelowdot
#define IBUS_KEY_Ohornacute
#define IBUS_KEY_ohornacute
#define IBUS_KEY_Ohorngrave
#define IBUS_KEY_ohorngrave
#define IBUS_KEY_Ohornhook
#define IBUS_KEY_ohornhook
#define IBUS_KEY_Ohorntilde
#define IBUS_KEY_ohorntilde
#define IBUS_KEY_Ohornbelowdot
#define IBUS_KEY_ohornbelowdot
#define IBUS_KEY_Ubelowdot
#define IBUS_KEY_ubelowdot
#define IBUS_KEY_Uhook
#define IBUS_KEY_uhook
#define IBUS_KEY_Uhornacute
#define IBUS_KEY_uhornacute
#define IBUS_KEY_Uhorngrave
#define IBUS_KEY_uhorngrave
#define IBUS_KEY_Uhornhook
#define IBUS_KEY_uhornhook
#define IBUS_KEY_Uhorntilde
#define IBUS_KEY_uhorntilde
#define IBUS_KEY_Uhornbelowdot
#define IBUS_KEY_uhornbelowdot
#define IBUS_KEY_Ybelowdot
#define IBUS_KEY_ybelowdot
#define IBUS_KEY_Yhook
#define IBUS_KEY_yhook
#define IBUS_KEY_Ytilde
#define IBUS_KEY_ytilde
#define IBUS_KEY_Ohorn
#define IBUS_KEY_ohorn
#define IBUS_KEY_Uhorn
#define IBUS_KEY_uhorn
#define IBUS_KEY_EcuSign
#define IBUS_KEY_ColonSign
#define IBUS_KEY_CruzeiroSign
#define IBUS_KEY_FFrancSign
#define IBUS_KEY_LiraSign
#define IBUS_KEY_MillSign
#define IBUS_KEY_NairaSign
#define IBUS_KEY_PesetaSign
#define IBUS_KEY_RupeeSign
#define IBUS_KEY_WonSign
#define IBUS_KEY_NewSheqelSign
#define IBUS_KEY_DongSign
#define IBUS_KEY_EuroSign
#define IBUS_KEY_zerosuperior
#define IBUS_KEY_foursuperior
#define IBUS_KEY_fivesuperior
#define IBUS_KEY_sixsuperior
#define IBUS_KEY_sevensuperior
#define IBUS_KEY_eightsuperior
#define IBUS_KEY_ninesuperior
#define IBUS_KEY_zerosubscript
#define IBUS_KEY_onesubscript
#define IBUS_KEY_twosubscript
#define IBUS_KEY_threesubscript
#define IBUS_KEY_foursubscript
#define IBUS_KEY_fivesubscript
#define IBUS_KEY_sixsubscript
#define IBUS_KEY_sevensubscript
#define IBUS_KEY_eightsubscript
#define IBUS_KEY_ninesubscript
#define IBUS_KEY_partdifferential
#define IBUS_KEY_emptyset
#define IBUS_KEY_elementof
#define IBUS_KEY_notelementof
#define IBUS_KEY_containsas
#define IBUS_KEY_squareroot
#define IBUS_KEY_cuberoot
#define IBUS_KEY_fourthroot
#define IBUS_KEY_dintegral
#define IBUS_KEY_tintegral
#define IBUS_KEY_because
#define IBUS_KEY_approxeq
#define IBUS_KEY_notapproxeq
#define IBUS_KEY_notidentical
#define IBUS_KEY_stricteq
#define IBUS_KEY_braille_dot_1
#define IBUS_KEY_braille_dot_2
#define IBUS_KEY_braille_dot_3
#define IBUS_KEY_braille_dot_4
#define IBUS_KEY_braille_dot_5
#define IBUS_KEY_braille_dot_6
#define IBUS_KEY_braille_dot_7
#define IBUS_KEY_braille_dot_8
#define IBUS_KEY_braille_dot_9
#define IBUS_KEY_braille_dot_10
#define IBUS_KEY_braille_blank
#define IBUS_KEY_braille_dots_1
#define IBUS_KEY_braille_dots_2
#define IBUS_KEY_braille_dots_12
#define IBUS_KEY_braille_dots_3
#define IBUS_KEY_braille_dots_13
#define IBUS_KEY_braille_dots_23
#define IBUS_KEY_braille_dots_123
#define IBUS_KEY_braille_dots_4
#define IBUS_KEY_braille_dots_14
#define IBUS_KEY_braille_dots_24
#define IBUS_KEY_braille_dots_124
#define IBUS_KEY_braille_dots_34
#define IBUS_KEY_braille_dots_134
#define IBUS_KEY_braille_dots_234
#define IBUS_KEY_braille_dots_1234
#define IBUS_KEY_braille_dots_5
#define IBUS_KEY_braille_dots_15
#define IBUS_KEY_braille_dots_25
#define IBUS_KEY_braille_dots_125
#define IBUS_KEY_braille_dots_35
#define IBUS_KEY_braille_dots_135
#define IBUS_KEY_braille_dots_235
#define IBUS_KEY_braille_dots_1235
#define IBUS_KEY_braille_dots_45
#define IBUS_KEY_braille_dots_145
#define IBUS_KEY_braille_dots_245
#define IBUS_KEY_braille_dots_1245
#define IBUS_KEY_braille_dots_345
#define IBUS_KEY_braille_dots_1345
#define IBUS_KEY_braille_dots_2345
#define IBUS_KEY_braille_dots_12345
#define IBUS_KEY_braille_dots_6
#define IBUS_KEY_braille_dots_16
#define IBUS_KEY_braille_dots_26
#define IBUS_KEY_braille_dots_126
#define IBUS_KEY_braille_dots_36
#define IBUS_KEY_braille_dots_136
#define IBUS_KEY_braille_dots_236
#define IBUS_KEY_braille_dots_1236
#define IBUS_KEY_braille_dots_46
#define IBUS_KEY_braille_dots_146
#define IBUS_KEY_braille_dots_246
#define IBUS_KEY_braille_dots_1246
#define IBUS_KEY_braille_dots_346
#define IBUS_KEY_braille_dots_1346
#define IBUS_KEY_braille_dots_2346
#define IBUS_KEY_braille_dots_12346
#define IBUS_KEY_braille_dots_56
#define IBUS_KEY_braille_dots_156
#define IBUS_KEY_braille_dots_256
#define IBUS_KEY_braille_dots_1256
#define IBUS_KEY_braille_dots_356
#define IBUS_KEY_braille_dots_1356
#define IBUS_KEY_braille_dots_2356
#define IBUS_KEY_braille_dots_12356
#define IBUS_KEY_braille_dots_456
#define IBUS_KEY_braille_dots_1456
#define IBUS_KEY_braille_dots_2456
#define IBUS_KEY_braille_dots_12456
#define IBUS_KEY_braille_dots_3456
#define IBUS_KEY_braille_dots_13456
#define IBUS_KEY_braille_dots_23456
#define IBUS_KEY_braille_dots_123456
#define IBUS_KEY_braille_dots_7
#define IBUS_KEY_braille_dots_17
#define IBUS_KEY_braille_dots_27
#define IBUS_KEY_braille_dots_127
#define IBUS_KEY_braille_dots_37
#define IBUS_KEY_braille_dots_137
#define IBUS_KEY_braille_dots_237
#define IBUS_KEY_braille_dots_1237
#define IBUS_KEY_braille_dots_47
#define IBUS_KEY_braille_dots_147
#define IBUS_KEY_braille_dots_247
#define IBUS_KEY_braille_dots_1247
#define IBUS_KEY_braille_dots_347
#define IBUS_KEY_braille_dots_1347
#define IBUS_KEY_braille_dots_2347
#define IBUS_KEY_braille_dots_12347
#define IBUS_KEY_braille_dots_57
#define IBUS_KEY_braille_dots_157
#define IBUS_KEY_braille_dots_257
#define IBUS_KEY_braille_dots_1257
#define IBUS_KEY_braille_dots_357
#define IBUS_KEY_braille_dots_1357
#define IBUS_KEY_braille_dots_2357
#define IBUS_KEY_braille_dots_12357
#define IBUS_KEY_braille_dots_457
#define IBUS_KEY_braille_dots_1457
#define IBUS_KEY_braille_dots_2457
#define IBUS_KEY_braille_dots_12457
#define IBUS_KEY_braille_dots_3457
#define IBUS_KEY_braille_dots_13457
#define IBUS_KEY_braille_dots_23457
#define IBUS_KEY_braille_dots_123457
#define IBUS_KEY_braille_dots_67
#define IBUS_KEY_braille_dots_167
#define IBUS_KEY_braille_dots_267
#define IBUS_KEY_braille_dots_1267
#define IBUS_KEY_braille_dots_367
#define IBUS_KEY_braille_dots_1367
#define IBUS_KEY_braille_dots_2367
#define IBUS_KEY_braille_dots_12367
#define IBUS_KEY_braille_dots_467
#define IBUS_KEY_braille_dots_1467
#define IBUS_KEY_braille_dots_2467
#define IBUS_KEY_braille_dots_12467
#define IBUS_KEY_braille_dots_3467
#define IBUS_KEY_braille_dots_13467
#define IBUS_KEY_braille_dots_23467
#define IBUS_KEY_braille_dots_123467
#define IBUS_KEY_braille_dots_567
#define IBUS_KEY_braille_dots_1567
#define IBUS_KEY_braille_dots_2567
#define IBUS_KEY_braille_dots_12567
#define IBUS_KEY_braille_dots_3567
#define IBUS_KEY_braille_dots_13567
#define IBUS_KEY_braille_dots_23567
#define IBUS_KEY_braille_dots_123567
#define IBUS_KEY_braille_dots_4567
#define IBUS_KEY_braille_dots_14567
#define IBUS_KEY_braille_dots_24567
#define IBUS_KEY_braille_dots_124567
#define IBUS_KEY_braille_dots_34567
#define IBUS_KEY_braille_dots_134567
#define IBUS_KEY_braille_dots_234567
#define IBUS_KEY_braille_dots_1234567
#define IBUS_KEY_braille_dots_8
#define IBUS_KEY_braille_dots_18
#define IBUS_KEY_braille_dots_28
#define IBUS_KEY_braille_dots_128
#define IBUS_KEY_braille_dots_38
#define IBUS_KEY_braille_dots_138
#define IBUS_KEY_braille_dots_238
#define IBUS_KEY_braille_dots_1238
#define IBUS_KEY_braille_dots_48
#define IBUS_KEY_braille_dots_148
#define IBUS_KEY_braille_dots_248
#define IBUS_KEY_braille_dots_1248
#define IBUS_KEY_braille_dots_348
#define IBUS_KEY_braille_dots_1348
#define IBUS_KEY_braille_dots_2348
#define IBUS_KEY_braille_dots_12348
#define IBUS_KEY_braille_dots_58
#define IBUS_KEY_braille_dots_158
#define IBUS_KEY_braille_dots_258
#define IBUS_KEY_braille_dots_1258
#define IBUS_KEY_braille_dots_358
#define IBUS_KEY_braille_dots_1358
#define IBUS_KEY_braille_dots_2358
#define IBUS_KEY_braille_dots_12358
#define IBUS_KEY_braille_dots_458
#define IBUS_KEY_braille_dots_1458
#define IBUS_KEY_braille_dots_2458
#define IBUS_KEY_braille_dots_12458
#define IBUS_KEY_braille_dots_3458
#define IBUS_KEY_braille_dots_13458
#define IBUS_KEY_braille_dots_23458
#define IBUS_KEY_braille_dots_123458
#define IBUS_KEY_braille_dots_68
#define IBUS_KEY_braille_dots_168
#define IBUS_KEY_braille_dots_268
#define IBUS_KEY_braille_dots_1268
#define IBUS_KEY_braille_dots_368
#define IBUS_KEY_braille_dots_1368
#define IBUS_KEY_braille_dots_2368
#define IBUS_KEY_braille_dots_12368
#define IBUS_KEY_braille_dots_468
#define IBUS_KEY_braille_dots_1468
#define IBUS_KEY_braille_dots_2468
#define IBUS_KEY_braille_dots_12468
#define IBUS_KEY_braille_dots_3468
#define IBUS_KEY_braille_dots_13468
#define IBUS_KEY_braille_dots_23468
#define IBUS_KEY_braille_dots_123468
#define IBUS_KEY_braille_dots_568
#define IBUS_KEY_braille_dots_1568
#define IBUS_KEY_braille_dots_2568
#define IBUS_KEY_braille_dots_12568
#define IBUS_KEY_braille_dots_3568
#define IBUS_KEY_braille_dots_13568
#define IBUS_KEY_braille_dots_23568
#define IBUS_KEY_braille_dots_123568
#define IBUS_KEY_braille_dots_4568
#define IBUS_KEY_braille_dots_14568
#define IBUS_KEY_braille_dots_24568
#define IBUS_KEY_braille_dots_124568
#define IBUS_KEY_braille_dots_34568
#define IBUS_KEY_braille_dots_134568
#define IBUS_KEY_braille_dots_234568
#define IBUS_KEY_braille_dots_1234568
#define IBUS_KEY_braille_dots_78
#define IBUS_KEY_braille_dots_178
#define IBUS_KEY_braille_dots_278
#define IBUS_KEY_braille_dots_1278
#define IBUS_KEY_braille_dots_378
#define IBUS_KEY_braille_dots_1378
#define IBUS_KEY_braille_dots_2378
#define IBUS_KEY_braille_dots_12378
#define IBUS_KEY_braille_dots_478
#define IBUS_KEY_braille_dots_1478
#define IBUS_KEY_braille_dots_2478
#define IBUS_KEY_braille_dots_12478
#define IBUS_KEY_braille_dots_3478
#define IBUS_KEY_braille_dots_13478
#define IBUS_KEY_braille_dots_23478
#define IBUS_KEY_braille_dots_123478
#define IBUS_KEY_braille_dots_578
#define IBUS_KEY_braille_dots_1578
#define IBUS_KEY_braille_dots_2578
#define IBUS_KEY_braille_dots_12578
#define IBUS_KEY_braille_dots_3578
#define IBUS_KEY_braille_dots_13578
#define IBUS_KEY_braille_dots_23578
#define IBUS_KEY_braille_dots_123578
#define IBUS_KEY_braille_dots_4578
#define IBUS_KEY_braille_dots_14578
#define IBUS_KEY_braille_dots_24578
#define IBUS_KEY_braille_dots_124578
#define IBUS_KEY_braille_dots_34578
#define IBUS_KEY_braille_dots_134578
#define IBUS_KEY_braille_dots_234578
#define IBUS_KEY_braille_dots_1234578
#define IBUS_KEY_braille_dots_678
#define IBUS_KEY_braille_dots_1678
#define IBUS_KEY_braille_dots_2678
#define IBUS_KEY_braille_dots_12678
#define IBUS_KEY_braille_dots_3678
#define IBUS_KEY_braille_dots_13678
#define IBUS_KEY_braille_dots_23678
#define IBUS_KEY_braille_dots_123678
#define IBUS_KEY_braille_dots_4678
#define IBUS_KEY_braille_dots_14678
#define IBUS_KEY_braille_dots_24678
#define IBUS_KEY_braille_dots_124678
#define IBUS_KEY_braille_dots_34678
#define IBUS_KEY_braille_dots_134678
#define IBUS_KEY_braille_dots_234678
#define IBUS_KEY_braille_dots_1234678
#define IBUS_KEY_braille_dots_5678
#define IBUS_KEY_braille_dots_15678
#define IBUS_KEY_braille_dots_25678
#define IBUS_KEY_braille_dots_125678
#define IBUS_KEY_braille_dots_35678
#define IBUS_KEY_braille_dots_135678
#define IBUS_KEY_braille_dots_235678
#define IBUS_KEY_braille_dots_1235678
#define IBUS_KEY_braille_dots_45678
#define IBUS_KEY_braille_dots_145678
#define IBUS_KEY_braille_dots_245678
#define IBUS_KEY_braille_dots_1245678
#define IBUS_KEY_braille_dots_345678
#define IBUS_KEY_braille_dots_1345678
#define IBUS_KEY_braille_dots_2345678
#define IBUS_KEY_braille_dots_12345678
#define IBUS_KEY_Sinh_ng
#define IBUS_KEY_Sinh_h2
#define IBUS_KEY_Sinh_a
#define IBUS_KEY_Sinh_aa
#define IBUS_KEY_Sinh_ae
#define IBUS_KEY_Sinh_aee
#define IBUS_KEY_Sinh_i
#define IBUS_KEY_Sinh_ii
#define IBUS_KEY_Sinh_u
#define IBUS_KEY_Sinh_uu
#define IBUS_KEY_Sinh_ri
#define IBUS_KEY_Sinh_rii
#define IBUS_KEY_Sinh_lu
#define IBUS_KEY_Sinh_luu
#define IBUS_KEY_Sinh_e
#define IBUS_KEY_Sinh_ee
#define IBUS_KEY_Sinh_ai
#define IBUS_KEY_Sinh_o
#define IBUS_KEY_Sinh_oo
#define IBUS_KEY_Sinh_au
#define IBUS_KEY_Sinh_ka
#define IBUS_KEY_Sinh_kha
#define IBUS_KEY_Sinh_ga
#define IBUS_KEY_Sinh_gha
#define IBUS_KEY_Sinh_ng2
#define IBUS_KEY_Sinh_nga
#define IBUS_KEY_Sinh_ca
#define IBUS_KEY_Sinh_cha
#define IBUS_KEY_Sinh_ja
#define IBUS_KEY_Sinh_jha
#define IBUS_KEY_Sinh_nya
#define IBUS_KEY_Sinh_jnya
#define IBUS_KEY_Sinh_nja
#define IBUS_KEY_Sinh_tta
#define IBUS_KEY_Sinh_ttha
#define IBUS_KEY_Sinh_dda
#define IBUS_KEY_Sinh_ddha
#define IBUS_KEY_Sinh_nna
#define IBUS_KEY_Sinh_ndda
#define IBUS_KEY_Sinh_tha
#define IBUS_KEY_Sinh_thha
#define IBUS_KEY_Sinh_dha
#define IBUS_KEY_Sinh_dhha
#define IBUS_KEY_Sinh_na
#define IBUS_KEY_Sinh_ndha
#define IBUS_KEY_Sinh_pa
#define IBUS_KEY_Sinh_pha
#define IBUS_KEY_Sinh_ba
#define IBUS_KEY_Sinh_bha
#define IBUS_KEY_Sinh_ma
#define IBUS_KEY_Sinh_mba
#define IBUS_KEY_Sinh_ya
#define IBUS_KEY_Sinh_ra
#define IBUS_KEY_Sinh_la
#define IBUS_KEY_Sinh_va
#define IBUS_KEY_Sinh_sha
#define IBUS_KEY_Sinh_ssha
#define IBUS_KEY_Sinh_sa
#define IBUS_KEY_Sinh_ha
#define IBUS_KEY_Sinh_lla
#define IBUS_KEY_Sinh_fa
#define IBUS_KEY_Sinh_al
#define IBUS_KEY_Sinh_aa2
#define IBUS_KEY_Sinh_ae2
#define IBUS_KEY_Sinh_aee2
#define IBUS_KEY_Sinh_i2
#define IBUS_KEY_Sinh_ii2
#define IBUS_KEY_Sinh_u2
#define IBUS_KEY_Sinh_uu2
#define IBUS_KEY_Sinh_ru2
#define IBUS_KEY_Sinh_e2
#define IBUS_KEY_Sinh_ee2
#define IBUS_KEY_Sinh_ai2
#define IBUS_KEY_Sinh_o2
#define IBUS_KEY_Sinh_oo2
#define IBUS_KEY_Sinh_au2
#define IBUS_KEY_Sinh_lu2
#define IBUS_KEY_Sinh_ruu2
#define IBUS_KEY_Sinh_luu2
#define IBUS_KEY_Sinh_kunddaliya

Description

This section defines the key symbols (keysym) used in IBus. Those keysym data is converted from keysymdef.h in FreeDesktop.

Most of the key symbols are not explicit documented, because they are self-explaining.

see_also: IBusKeymap, IBusHotkeyProfile

Functions

Types and Values

IBUS_KEY_VoidSymbol

#define IBUS_KEY_VoidSymbol 0xffffff

IBUS_KEY_BackSpace

#define IBUS_KEY_BackSpace 0xff08

IBUS_KEY_Tab

#define IBUS_KEY_Tab 0xff09

IBUS_KEY_Linefeed

#define IBUS_KEY_Linefeed 0xff0a

IBUS_KEY_Clear

#define IBUS_KEY_Clear 0xff0b

IBUS_KEY_Return

#define IBUS_KEY_Return 0xff0d

IBUS_KEY_Pause

#define IBUS_KEY_Pause 0xff13

IBUS_KEY_Scroll_Lock

#define IBUS_KEY_Scroll_Lock 0xff14

IBUS_KEY_Sys_Req

#define IBUS_KEY_Sys_Req 0xff15

IBUS_KEY_Escape

#define IBUS_KEY_Escape 0xff1b

IBUS_KEY_Delete

#define IBUS_KEY_Delete 0xffff

IBUS_KEY_Multi_key

#define IBUS_KEY_Multi_key 0xff20

IBUS_KEY_Codeinput

#define IBUS_KEY_Codeinput 0xff37

IBUS_KEY_SingleCandidate

#define IBUS_KEY_SingleCandidate 0xff3c

IBUS_KEY_MultipleCandidate

#define IBUS_KEY_MultipleCandidate 0xff3d

IBUS_KEY_PreviousCandidate

#define IBUS_KEY_PreviousCandidate 0xff3e

IBUS_KEY_Kanji

#define IBUS_KEY_Kanji 0xff21

IBUS_KEY_Muhenkan

#define IBUS_KEY_Muhenkan 0xff22

IBUS_KEY_Henkan_Mode

#define IBUS_KEY_Henkan_Mode 0xff23

IBUS_KEY_Henkan

#define IBUS_KEY_Henkan 0xff23

IBUS_KEY_Romaji

#define IBUS_KEY_Romaji 0xff24

IBUS_KEY_Hiragana

#define IBUS_KEY_Hiragana 0xff25

IBUS_KEY_Katakana

#define IBUS_KEY_Katakana 0xff26

IBUS_KEY_Hiragana_Katakana

#define IBUS_KEY_Hiragana_Katakana 0xff27

IBUS_KEY_Zenkaku

#define IBUS_KEY_Zenkaku 0xff28

IBUS_KEY_Hankaku

#define IBUS_KEY_Hankaku 0xff29

IBUS_KEY_Zenkaku_Hankaku

#define IBUS_KEY_Zenkaku_Hankaku 0xff2a

IBUS_KEY_Touroku

#define IBUS_KEY_Touroku 0xff2b

IBUS_KEY_Massyo

#define IBUS_KEY_Massyo 0xff2c

IBUS_KEY_Kana_Lock

#define IBUS_KEY_Kana_Lock 0xff2d

IBUS_KEY_Kana_Shift

#define IBUS_KEY_Kana_Shift 0xff2e

IBUS_KEY_Eisu_Shift

#define IBUS_KEY_Eisu_Shift 0xff2f

IBUS_KEY_Eisu_toggle

#define IBUS_KEY_Eisu_toggle 0xff30

IBUS_KEY_Kanji_Bangou

#define IBUS_KEY_Kanji_Bangou 0xff37

IBUS_KEY_Zen_Koho

#define IBUS_KEY_Zen_Koho 0xff3d

IBUS_KEY_Mae_Koho

#define IBUS_KEY_Mae_Koho 0xff3e

IBUS_KEY_Home

#define IBUS_KEY_Home 0xff50

IBUS_KEY_Left

#define IBUS_KEY_Left 0xff51

IBUS_KEY_Up

#define IBUS_KEY_Up 0xff52

IBUS_KEY_Right

#define IBUS_KEY_Right 0xff53

IBUS_KEY_Down

#define IBUS_KEY_Down 0xff54

IBUS_KEY_Prior

#define IBUS_KEY_Prior 0xff55

IBUS_KEY_Page_Up

#define IBUS_KEY_Page_Up 0xff55

IBUS_KEY_Next

#define IBUS_KEY_Next 0xff56

IBUS_KEY_Page_Down

#define IBUS_KEY_Page_Down 0xff56

IBUS_KEY_End

#define IBUS_KEY_End 0xff57

IBUS_KEY_Begin

#define IBUS_KEY_Begin 0xff58

IBUS_KEY_Select

#define IBUS_KEY_Select 0xff60

IBUS_KEY_Print

#define IBUS_KEY_Print 0xff61

IBUS_KEY_Execute

#define IBUS_KEY_Execute 0xff62

IBUS_KEY_Insert

#define IBUS_KEY_Insert 0xff63

IBUS_KEY_Undo

#define IBUS_KEY_Undo 0xff65

IBUS_KEY_Redo

#define IBUS_KEY_Redo 0xff66

IBUS_KEY_Menu

#define IBUS_KEY_Menu 0xff67

IBUS_KEY_Find

#define IBUS_KEY_Find 0xff68

IBUS_KEY_Cancel

#define IBUS_KEY_Cancel 0xff69

IBUS_KEY_Help

#define IBUS_KEY_Help 0xff6a

IBUS_KEY_Break

#define IBUS_KEY_Break 0xff6b

IBUS_KEY_Mode_switch

#define IBUS_KEY_Mode_switch 0xff7e

IBUS_KEY_script_switch

#define IBUS_KEY_script_switch 0xff7e

IBUS_KEY_Num_Lock

#define IBUS_KEY_Num_Lock 0xff7f

IBUS_KEY_KP_Space

#define IBUS_KEY_KP_Space 0xff80

IBUS_KEY_KP_Tab

#define IBUS_KEY_KP_Tab 0xff89

IBUS_KEY_KP_Enter

#define IBUS_KEY_KP_Enter 0xff8d

IBUS_KEY_KP_F1

#define IBUS_KEY_KP_F1 0xff91

IBUS_KEY_KP_F2

#define IBUS_KEY_KP_F2 0xff92

IBUS_KEY_KP_F3

#define IBUS_KEY_KP_F3 0xff93

IBUS_KEY_KP_F4

#define IBUS_KEY_KP_F4 0xff94

IBUS_KEY_KP_Home

#define IBUS_KEY_KP_Home 0xff95

IBUS_KEY_KP_Left

#define IBUS_KEY_KP_Left 0xff96

IBUS_KEY_KP_Up

#define IBUS_KEY_KP_Up 0xff97

IBUS_KEY_KP_Right

#define IBUS_KEY_KP_Right 0xff98

IBUS_KEY_KP_Down

#define IBUS_KEY_KP_Down 0xff99

IBUS_KEY_KP_Prior

#define IBUS_KEY_KP_Prior 0xff9a

IBUS_KEY_KP_Page_Up

#define IBUS_KEY_KP_Page_Up 0xff9a

IBUS_KEY_KP_Next

#define IBUS_KEY_KP_Next 0xff9b

IBUS_KEY_KP_Page_Down

#define IBUS_KEY_KP_Page_Down 0xff9b

IBUS_KEY_KP_End

#define IBUS_KEY_KP_End 0xff9c

IBUS_KEY_KP_Begin

#define IBUS_KEY_KP_Begin 0xff9d

IBUS_KEY_KP_Insert

#define IBUS_KEY_KP_Insert 0xff9e

IBUS_KEY_KP_Delete

#define IBUS_KEY_KP_Delete 0xff9f

IBUS_KEY_KP_Equal

#define IBUS_KEY_KP_Equal 0xffbd

IBUS_KEY_KP_Multiply

#define IBUS_KEY_KP_Multiply 0xffaa

IBUS_KEY_KP_Add

#define IBUS_KEY_KP_Add 0xffab

IBUS_KEY_KP_Separator

#define IBUS_KEY_KP_Separator 0xffac

IBUS_KEY_KP_Subtract

#define IBUS_KEY_KP_Subtract 0xffad

IBUS_KEY_KP_Decimal

#define IBUS_KEY_KP_Decimal 0xffae

IBUS_KEY_KP_Divide

#define IBUS_KEY_KP_Divide 0xffaf

IBUS_KEY_KP_0

#define IBUS_KEY_KP_0 0xffb0

IBUS_KEY_KP_1

#define IBUS_KEY_KP_1 0xffb1

IBUS_KEY_KP_2

#define IBUS_KEY_KP_2 0xffb2

IBUS_KEY_KP_3

#define IBUS_KEY_KP_3 0xffb3

IBUS_KEY_KP_4

#define IBUS_KEY_KP_4 0xffb4

IBUS_KEY_KP_5

#define IBUS_KEY_KP_5 0xffb5

IBUS_KEY_KP_6

#define IBUS_KEY_KP_6 0xffb6

IBUS_KEY_KP_7

#define IBUS_KEY_KP_7 0xffb7

IBUS_KEY_KP_8

#define IBUS_KEY_KP_8 0xffb8

IBUS_KEY_KP_9

#define IBUS_KEY_KP_9 0xffb9

IBUS_KEY_F1

#define IBUS_KEY_F1 0xffbe

IBUS_KEY_F2

#define IBUS_KEY_F2 0xffbf

IBUS_KEY_F3

#define IBUS_KEY_F3 0xffc0

IBUS_KEY_F4

#define IBUS_KEY_F4 0xffc1

IBUS_KEY_F5

#define IBUS_KEY_F5 0xffc2

IBUS_KEY_F6

#define IBUS_KEY_F6 0xffc3

IBUS_KEY_F7

#define IBUS_KEY_F7 0xffc4

IBUS_KEY_F8

#define IBUS_KEY_F8 0xffc5

IBUS_KEY_F9

#define IBUS_KEY_F9 0xffc6

IBUS_KEY_F10

#define IBUS_KEY_F10 0xffc7

IBUS_KEY_F11

#define IBUS_KEY_F11 0xffc8

IBUS_KEY_L1

#define IBUS_KEY_L1 0xffc8

IBUS_KEY_F12

#define IBUS_KEY_F12 0xffc9

IBUS_KEY_L2

#define IBUS_KEY_L2 0xffc9

IBUS_KEY_F13

#define IBUS_KEY_F13 0xffca

IBUS_KEY_L3

#define IBUS_KEY_L3 0xffca

IBUS_KEY_F14

#define IBUS_KEY_F14 0xffcb

IBUS_KEY_L4

#define IBUS_KEY_L4 0xffcb

IBUS_KEY_F15

#define IBUS_KEY_F15 0xffcc

IBUS_KEY_L5

#define IBUS_KEY_L5 0xffcc

IBUS_KEY_F16

#define IBUS_KEY_F16 0xffcd

IBUS_KEY_L6

#define IBUS_KEY_L6 0xffcd

IBUS_KEY_F17

#define IBUS_KEY_F17 0xffce

IBUS_KEY_L7

#define IBUS_KEY_L7 0xffce

IBUS_KEY_F18

#define IBUS_KEY_F18 0xffcf

IBUS_KEY_L8

#define IBUS_KEY_L8 0xffcf

IBUS_KEY_F19

#define IBUS_KEY_F19 0xffd0

IBUS_KEY_L9

#define IBUS_KEY_L9 0xffd0

IBUS_KEY_F20

#define IBUS_KEY_F20 0xffd1

IBUS_KEY_L10

#define IBUS_KEY_L10 0xffd1

IBUS_KEY_F21

#define IBUS_KEY_F21 0xffd2

IBUS_KEY_R1

#define IBUS_KEY_R1 0xffd2

IBUS_KEY_F22

#define IBUS_KEY_F22 0xffd3

IBUS_KEY_R2

#define IBUS_KEY_R2 0xffd3

IBUS_KEY_F23

#define IBUS_KEY_F23 0xffd4

IBUS_KEY_R3

#define IBUS_KEY_R3 0xffd4

IBUS_KEY_F24

#define IBUS_KEY_F24 0xffd5

IBUS_KEY_R4

#define IBUS_KEY_R4 0xffd5

IBUS_KEY_F25

#define IBUS_KEY_F25 0xffd6

IBUS_KEY_R5

#define IBUS_KEY_R5 0xffd6

IBUS_KEY_F26

#define IBUS_KEY_F26 0xffd7

IBUS_KEY_R6

#define IBUS_KEY_R6 0xffd7

IBUS_KEY_F27

#define IBUS_KEY_F27 0xffd8

IBUS_KEY_R7

#define IBUS_KEY_R7 0xffd8

IBUS_KEY_F28

#define IBUS_KEY_F28 0xffd9

IBUS_KEY_R8

#define IBUS_KEY_R8 0xffd9

IBUS_KEY_F29

#define IBUS_KEY_F29 0xffda

IBUS_KEY_R9

#define IBUS_KEY_R9 0xffda

IBUS_KEY_F30

#define IBUS_KEY_F30 0xffdb

IBUS_KEY_R10

#define IBUS_KEY_R10 0xffdb

IBUS_KEY_F31

#define IBUS_KEY_F31 0xffdc

IBUS_KEY_R11

#define IBUS_KEY_R11 0xffdc

IBUS_KEY_F32

#define IBUS_KEY_F32 0xffdd

IBUS_KEY_R12

#define IBUS_KEY_R12 0xffdd

IBUS_KEY_F33

#define IBUS_KEY_F33 0xffde

IBUS_KEY_R13

#define IBUS_KEY_R13 0xffde

IBUS_KEY_F34

#define IBUS_KEY_F34 0xffdf

IBUS_KEY_R14

#define IBUS_KEY_R14 0xffdf

IBUS_KEY_F35

#define IBUS_KEY_F35 0xffe0

IBUS_KEY_R15

#define IBUS_KEY_R15 0xffe0

IBUS_KEY_Shift_L

#define IBUS_KEY_Shift_L 0xffe1

IBUS_KEY_Shift_R

#define IBUS_KEY_Shift_R 0xffe2

IBUS_KEY_Control_L

#define IBUS_KEY_Control_L 0xffe3

IBUS_KEY_Control_R

#define IBUS_KEY_Control_R 0xffe4

IBUS_KEY_Caps_Lock

#define IBUS_KEY_Caps_Lock 0xffe5

IBUS_KEY_Shift_Lock

#define IBUS_KEY_Shift_Lock 0xffe6

IBUS_KEY_Meta_L

#define IBUS_KEY_Meta_L 0xffe7

IBUS_KEY_Meta_R

#define IBUS_KEY_Meta_R 0xffe8

IBUS_KEY_Alt_L

#define IBUS_KEY_Alt_L 0xffe9

IBUS_KEY_Alt_R

#define IBUS_KEY_Alt_R 0xffea

IBUS_KEY_Super_L

#define IBUS_KEY_Super_L 0xffeb

IBUS_KEY_Super_R

#define IBUS_KEY_Super_R 0xffec

IBUS_KEY_Hyper_L

#define IBUS_KEY_Hyper_L 0xffed

IBUS_KEY_Hyper_R

#define IBUS_KEY_Hyper_R 0xffee

IBUS_KEY_ISO_Lock

#define IBUS_KEY_ISO_Lock 0xfe01

IBUS_KEY_ISO_Level2_Latch

#define IBUS_KEY_ISO_Level2_Latch 0xfe02

IBUS_KEY_ISO_Level3_Shift

#define IBUS_KEY_ISO_Level3_Shift 0xfe03

IBUS_KEY_ISO_Level3_Latch

#define IBUS_KEY_ISO_Level3_Latch 0xfe04

IBUS_KEY_ISO_Level3_Lock

#define IBUS_KEY_ISO_Level3_Lock 0xfe05

IBUS_KEY_ISO_Level5_Shift

#define IBUS_KEY_ISO_Level5_Shift 0xfe11

IBUS_KEY_ISO_Level5_Latch

#define IBUS_KEY_ISO_Level5_Latch 0xfe12

IBUS_KEY_ISO_Level5_Lock

#define IBUS_KEY_ISO_Level5_Lock 0xfe13

IBUS_KEY_ISO_Group_Shift

#define IBUS_KEY_ISO_Group_Shift 0xff7e

IBUS_KEY_ISO_Group_Latch

#define IBUS_KEY_ISO_Group_Latch 0xfe06

IBUS_KEY_ISO_Group_Lock

#define IBUS_KEY_ISO_Group_Lock 0xfe07

IBUS_KEY_ISO_Next_Group

#define IBUS_KEY_ISO_Next_Group 0xfe08

IBUS_KEY_ISO_Next_Group_Lock

#define IBUS_KEY_ISO_Next_Group_Lock 0xfe09

IBUS_KEY_ISO_Prev_Group

#define IBUS_KEY_ISO_Prev_Group 0xfe0a

IBUS_KEY_ISO_Prev_Group_Lock

#define IBUS_KEY_ISO_Prev_Group_Lock 0xfe0b

IBUS_KEY_ISO_First_Group

#define IBUS_KEY_ISO_First_Group 0xfe0c

IBUS_KEY_ISO_First_Group_Lock

#define IBUS_KEY_ISO_First_Group_Lock 0xfe0d

IBUS_KEY_ISO_Last_Group

#define IBUS_KEY_ISO_Last_Group 0xfe0e

IBUS_KEY_ISO_Last_Group_Lock

#define IBUS_KEY_ISO_Last_Group_Lock 0xfe0f

IBUS_KEY_ISO_Left_Tab

#define IBUS_KEY_ISO_Left_Tab 0xfe20

IBUS_KEY_ISO_Move_Line_Up

#define IBUS_KEY_ISO_Move_Line_Up 0xfe21

IBUS_KEY_ISO_Move_Line_Down

#define IBUS_KEY_ISO_Move_Line_Down 0xfe22

IBUS_KEY_ISO_Partial_Line_Up

#define IBUS_KEY_ISO_Partial_Line_Up 0xfe23

IBUS_KEY_ISO_Partial_Line_Down

#define IBUS_KEY_ISO_Partial_Line_Down 0xfe24

IBUS_KEY_ISO_Partial_Space_Left

#define IBUS_KEY_ISO_Partial_Space_Left 0xfe25

IBUS_KEY_ISO_Partial_Space_Right

#define IBUS_KEY_ISO_Partial_Space_Right 0xfe26

IBUS_KEY_ISO_Set_Margin_Left

#define IBUS_KEY_ISO_Set_Margin_Left 0xfe27

IBUS_KEY_ISO_Set_Margin_Right

#define IBUS_KEY_ISO_Set_Margin_Right 0xfe28

IBUS_KEY_ISO_Release_Margin_Left

#define IBUS_KEY_ISO_Release_Margin_Left 0xfe29

IBUS_KEY_ISO_Release_Margin_Right

#define IBUS_KEY_ISO_Release_Margin_Right 0xfe2a

IBUS_KEY_ISO_Release_Both_Margins

#define IBUS_KEY_ISO_Release_Both_Margins 0xfe2b

IBUS_KEY_ISO_Fast_Cursor_Left

#define IBUS_KEY_ISO_Fast_Cursor_Left 0xfe2c

IBUS_KEY_ISO_Fast_Cursor_Right

#define IBUS_KEY_ISO_Fast_Cursor_Right 0xfe2d

IBUS_KEY_ISO_Fast_Cursor_Up

#define IBUS_KEY_ISO_Fast_Cursor_Up 0xfe2e

IBUS_KEY_ISO_Fast_Cursor_Down

#define IBUS_KEY_ISO_Fast_Cursor_Down 0xfe2f

IBUS_KEY_ISO_Continuous_Underline

#define IBUS_KEY_ISO_Continuous_Underline 0xfe30

IBUS_KEY_ISO_Discontinuous_Underline

#define IBUS_KEY_ISO_Discontinuous_Underline 0xfe31

IBUS_KEY_ISO_Emphasize

#define IBUS_KEY_ISO_Emphasize 0xfe32

IBUS_KEY_ISO_Center_Object

#define IBUS_KEY_ISO_Center_Object 0xfe33

IBUS_KEY_ISO_Enter

#define IBUS_KEY_ISO_Enter 0xfe34

IBUS_KEY_dead_grave

#define IBUS_KEY_dead_grave 0xfe50

IBUS_KEY_dead_acute

#define IBUS_KEY_dead_acute 0xfe51

IBUS_KEY_dead_circumflex

#define IBUS_KEY_dead_circumflex 0xfe52

IBUS_KEY_dead_tilde

#define IBUS_KEY_dead_tilde 0xfe53

IBUS_KEY_dead_perispomeni

#define IBUS_KEY_dead_perispomeni 0xfe53

IBUS_KEY_dead_macron

#define IBUS_KEY_dead_macron 0xfe54

IBUS_KEY_dead_breve

#define IBUS_KEY_dead_breve 0xfe55

IBUS_KEY_dead_abovedot

#define IBUS_KEY_dead_abovedot 0xfe56

IBUS_KEY_dead_diaeresis

#define IBUS_KEY_dead_diaeresis 0xfe57

IBUS_KEY_dead_abovering

#define IBUS_KEY_dead_abovering 0xfe58

IBUS_KEY_dead_doubleacute

#define IBUS_KEY_dead_doubleacute 0xfe59

IBUS_KEY_dead_caron

#define IBUS_KEY_dead_caron 0xfe5a

IBUS_KEY_dead_cedilla

#define IBUS_KEY_dead_cedilla 0xfe5b

IBUS_KEY_dead_ogonek

#define IBUS_KEY_dead_ogonek 0xfe5c

IBUS_KEY_dead_iota

#define IBUS_KEY_dead_iota 0xfe5d

IBUS_KEY_dead_voiced_sound

#define IBUS_KEY_dead_voiced_sound 0xfe5e

IBUS_KEY_dead_semivoiced_sound

#define IBUS_KEY_dead_semivoiced_sound 0xfe5f

IBUS_KEY_dead_belowdot

#define IBUS_KEY_dead_belowdot 0xfe60

IBUS_KEY_dead_hook

#define IBUS_KEY_dead_hook 0xfe61

IBUS_KEY_dead_horn

#define IBUS_KEY_dead_horn 0xfe62

IBUS_KEY_dead_stroke

#define IBUS_KEY_dead_stroke 0xfe63

IBUS_KEY_dead_abovecomma

#define IBUS_KEY_dead_abovecomma 0xfe64

IBUS_KEY_dead_psili

#define IBUS_KEY_dead_psili 0xfe64

IBUS_KEY_dead_abovereversedcomma

#define IBUS_KEY_dead_abovereversedcomma 0xfe65

IBUS_KEY_dead_dasia

#define IBUS_KEY_dead_dasia 0xfe65

IBUS_KEY_dead_doublegrave

#define IBUS_KEY_dead_doublegrave 0xfe66

IBUS_KEY_dead_belowring

#define IBUS_KEY_dead_belowring 0xfe67

IBUS_KEY_dead_belowmacron

#define IBUS_KEY_dead_belowmacron 0xfe68

IBUS_KEY_dead_belowcircumflex

#define IBUS_KEY_dead_belowcircumflex 0xfe69

IBUS_KEY_dead_belowtilde

#define IBUS_KEY_dead_belowtilde 0xfe6a

IBUS_KEY_dead_belowbreve

#define IBUS_KEY_dead_belowbreve 0xfe6b

IBUS_KEY_dead_belowdiaeresis

#define IBUS_KEY_dead_belowdiaeresis 0xfe6c

IBUS_KEY_dead_invertedbreve

#define IBUS_KEY_dead_invertedbreve 0xfe6d

IBUS_KEY_dead_belowcomma

#define IBUS_KEY_dead_belowcomma 0xfe6e

IBUS_KEY_dead_currency

#define IBUS_KEY_dead_currency 0xfe6f

IBUS_KEY_dead_a

#define IBUS_KEY_dead_a 0xfe80

IBUS_KEY_dead_A

#define IBUS_KEY_dead_A 0xfe81

IBUS_KEY_dead_e

#define IBUS_KEY_dead_e 0xfe82

IBUS_KEY_dead_E

#define IBUS_KEY_dead_E 0xfe83

IBUS_KEY_dead_i

#define IBUS_KEY_dead_i 0xfe84

IBUS_KEY_dead_I

#define IBUS_KEY_dead_I 0xfe85

IBUS_KEY_dead_o

#define IBUS_KEY_dead_o 0xfe86

IBUS_KEY_dead_O

#define IBUS_KEY_dead_O 0xfe87

IBUS_KEY_dead_u

#define IBUS_KEY_dead_u 0xfe88

IBUS_KEY_dead_U

#define IBUS_KEY_dead_U 0xfe89

IBUS_KEY_dead_small_schwa

#define IBUS_KEY_dead_small_schwa 0xfe8a

IBUS_KEY_dead_capital_schwa

#define IBUS_KEY_dead_capital_schwa 0xfe8b

IBUS_KEY_dead_greek

#define IBUS_KEY_dead_greek 0xfe8c

IBUS_KEY_First_Virtual_Screen

#define IBUS_KEY_First_Virtual_Screen 0xfed0

IBUS_KEY_Prev_Virtual_Screen

#define IBUS_KEY_Prev_Virtual_Screen 0xfed1

IBUS_KEY_Next_Virtual_Screen

#define IBUS_KEY_Next_Virtual_Screen 0xfed2

IBUS_KEY_Last_Virtual_Screen

#define IBUS_KEY_Last_Virtual_Screen 0xfed4

IBUS_KEY_Terminate_Server

#define IBUS_KEY_Terminate_Server 0xfed5

IBUS_KEY_AccessX_Enable

#define IBUS_KEY_AccessX_Enable 0xfe70

IBUS_KEY_AccessX_Feedback_Enable

#define IBUS_KEY_AccessX_Feedback_Enable 0xfe71

IBUS_KEY_RepeatKeys_Enable

#define IBUS_KEY_RepeatKeys_Enable 0xfe72

IBUS_KEY_SlowKeys_Enable

#define IBUS_KEY_SlowKeys_Enable 0xfe73

IBUS_KEY_BounceKeys_Enable

#define IBUS_KEY_BounceKeys_Enable 0xfe74

IBUS_KEY_StickyKeys_Enable

#define IBUS_KEY_StickyKeys_Enable 0xfe75

IBUS_KEY_MouseKeys_Enable

#define IBUS_KEY_MouseKeys_Enable 0xfe76

IBUS_KEY_MouseKeys_Accel_Enable

#define IBUS_KEY_MouseKeys_Accel_Enable 0xfe77

IBUS_KEY_Overlay1_Enable

#define IBUS_KEY_Overlay1_Enable 0xfe78

IBUS_KEY_Overlay2_Enable

#define IBUS_KEY_Overlay2_Enable 0xfe79

IBUS_KEY_AudibleBell_Enable

#define IBUS_KEY_AudibleBell_Enable 0xfe7a

IBUS_KEY_Pointer_Left

#define IBUS_KEY_Pointer_Left 0xfee0

IBUS_KEY_Pointer_Right

#define IBUS_KEY_Pointer_Right 0xfee1

IBUS_KEY_Pointer_Up

#define IBUS_KEY_Pointer_Up 0xfee2

IBUS_KEY_Pointer_Down

#define IBUS_KEY_Pointer_Down 0xfee3

IBUS_KEY_Pointer_UpLeft

#define IBUS_KEY_Pointer_UpLeft 0xfee4

IBUS_KEY_Pointer_UpRight

#define IBUS_KEY_Pointer_UpRight 0xfee5

IBUS_KEY_Pointer_DownLeft

#define IBUS_KEY_Pointer_DownLeft 0xfee6

IBUS_KEY_Pointer_DownRight

#define IBUS_KEY_Pointer_DownRight 0xfee7

IBUS_KEY_Pointer_Button_Dflt

#define IBUS_KEY_Pointer_Button_Dflt 0xfee8

IBUS_KEY_Pointer_Button1

#define IBUS_KEY_Pointer_Button1 0xfee9

IBUS_KEY_Pointer_Button2

#define IBUS_KEY_Pointer_Button2 0xfeea

IBUS_KEY_Pointer_Button3

#define IBUS_KEY_Pointer_Button3 0xfeeb

IBUS_KEY_Pointer_Button4

#define IBUS_KEY_Pointer_Button4 0xfeec

IBUS_KEY_Pointer_Button5

#define IBUS_KEY_Pointer_Button5 0xfeed

IBUS_KEY_Pointer_DblClick_Dflt

#define IBUS_KEY_Pointer_DblClick_Dflt 0xfeee

IBUS_KEY_Pointer_DblClick1

#define IBUS_KEY_Pointer_DblClick1 0xfeef

IBUS_KEY_Pointer_DblClick2

#define IBUS_KEY_Pointer_DblClick2 0xfef0

IBUS_KEY_Pointer_DblClick3

#define IBUS_KEY_Pointer_DblClick3 0xfef1

IBUS_KEY_Pointer_DblClick4

#define IBUS_KEY_Pointer_DblClick4 0xfef2

IBUS_KEY_Pointer_DblClick5

#define IBUS_KEY_Pointer_DblClick5 0xfef3

IBUS_KEY_Pointer_Drag_Dflt

#define IBUS_KEY_Pointer_Drag_Dflt 0xfef4

IBUS_KEY_Pointer_Drag1

#define IBUS_KEY_Pointer_Drag1 0xfef5

IBUS_KEY_Pointer_Drag2

#define IBUS_KEY_Pointer_Drag2 0xfef6

IBUS_KEY_Pointer_Drag3

#define IBUS_KEY_Pointer_Drag3 0xfef7

IBUS_KEY_Pointer_Drag4

#define IBUS_KEY_Pointer_Drag4 0xfef8

IBUS_KEY_Pointer_Drag5

#define IBUS_KEY_Pointer_Drag5 0xfefd

IBUS_KEY_Pointer_EnableKeys

#define IBUS_KEY_Pointer_EnableKeys 0xfef9

IBUS_KEY_Pointer_Accelerate

#define IBUS_KEY_Pointer_Accelerate 0xfefa

IBUS_KEY_Pointer_DfltBtnNext

#define IBUS_KEY_Pointer_DfltBtnNext 0xfefb

IBUS_KEY_Pointer_DfltBtnPrev

#define IBUS_KEY_Pointer_DfltBtnPrev 0xfefc

IBUS_KEY_ch

#define IBUS_KEY_ch 0xfea0

IBUS_KEY_Ch

#define IBUS_KEY_Ch 0xfea1

IBUS_KEY_CH

#define IBUS_KEY_CH 0xfea2

IBUS_KEY_c_h

#define IBUS_KEY_c_h 0xfea3

IBUS_KEY_C_h

#define IBUS_KEY_C_h 0xfea4

IBUS_KEY_C_H

#define IBUS_KEY_C_H 0xfea5

IBUS_KEY_3270_Duplicate

#define IBUS_KEY_3270_Duplicate 0xfd01

IBUS_KEY_3270_FieldMark

#define IBUS_KEY_3270_FieldMark 0xfd02

IBUS_KEY_3270_Right2

#define IBUS_KEY_3270_Right2 0xfd03

IBUS_KEY_3270_Left2

#define IBUS_KEY_3270_Left2 0xfd04

IBUS_KEY_3270_BackTab

#define IBUS_KEY_3270_BackTab 0xfd05

IBUS_KEY_3270_EraseEOF

#define IBUS_KEY_3270_EraseEOF 0xfd06

IBUS_KEY_3270_EraseInput

#define IBUS_KEY_3270_EraseInput 0xfd07

IBUS_KEY_3270_Reset

#define IBUS_KEY_3270_Reset 0xfd08

IBUS_KEY_3270_Quit

#define IBUS_KEY_3270_Quit 0xfd09

IBUS_KEY_3270_PA1

#define IBUS_KEY_3270_PA1 0xfd0a

IBUS_KEY_3270_PA2

#define IBUS_KEY_3270_PA2 0xfd0b

IBUS_KEY_3270_PA3

#define IBUS_KEY_3270_PA3 0xfd0c

IBUS_KEY_3270_Test

#define IBUS_KEY_3270_Test 0xfd0d

IBUS_KEY_3270_Attn

#define IBUS_KEY_3270_Attn 0xfd0e

IBUS_KEY_3270_CursorBlink

#define IBUS_KEY_3270_CursorBlink 0xfd0f

IBUS_KEY_3270_AltCursor

#define IBUS_KEY_3270_AltCursor 0xfd10

IBUS_KEY_3270_KeyClick

#define IBUS_KEY_3270_KeyClick 0xfd11

IBUS_KEY_3270_Jump

#define IBUS_KEY_3270_Jump 0xfd12

IBUS_KEY_3270_Ident

#define IBUS_KEY_3270_Ident 0xfd13

IBUS_KEY_3270_Rule

#define IBUS_KEY_3270_Rule 0xfd14

IBUS_KEY_3270_Copy

#define IBUS_KEY_3270_Copy 0xfd15

IBUS_KEY_3270_Play

#define IBUS_KEY_3270_Play 0xfd16

IBUS_KEY_3270_Setup

#define IBUS_KEY_3270_Setup 0xfd17

IBUS_KEY_3270_Record

#define IBUS_KEY_3270_Record 0xfd18

IBUS_KEY_3270_ChangeScreen

#define IBUS_KEY_3270_ChangeScreen 0xfd19

IBUS_KEY_3270_DeleteWord

#define IBUS_KEY_3270_DeleteWord 0xfd1a

IBUS_KEY_3270_ExSelect

#define IBUS_KEY_3270_ExSelect 0xfd1b

IBUS_KEY_3270_CursorSelect

#define IBUS_KEY_3270_CursorSelect 0xfd1c

IBUS_KEY_3270_PrintScreen

#define IBUS_KEY_3270_PrintScreen 0xfd1d

IBUS_KEY_3270_Enter

#define IBUS_KEY_3270_Enter 0xfd1e

IBUS_KEY_space

#define IBUS_KEY_space 0x020

IBUS_KEY_exclam

#define IBUS_KEY_exclam 0x021

IBUS_KEY_quotedbl

#define IBUS_KEY_quotedbl 0x022

IBUS_KEY_numbersign

#define IBUS_KEY_numbersign 0x023

IBUS_KEY_dollar

#define IBUS_KEY_dollar 0x024

IBUS_KEY_percent

#define IBUS_KEY_percent 0x025

IBUS_KEY_ampersand

#define IBUS_KEY_ampersand 0x026

IBUS_KEY_apostrophe

#define IBUS_KEY_apostrophe 0x027

IBUS_KEY_quoteright

#define IBUS_KEY_quoteright 0x027

IBUS_KEY_parenleft

#define IBUS_KEY_parenleft 0x028

IBUS_KEY_parenright

#define IBUS_KEY_parenright 0x029

IBUS_KEY_asterisk

#define IBUS_KEY_asterisk 0x02a

IBUS_KEY_plus

#define IBUS_KEY_plus 0x02b

IBUS_KEY_comma

#define IBUS_KEY_comma 0x02c

IBUS_KEY_minus

#define IBUS_KEY_minus 0x02d

IBUS_KEY_period

#define IBUS_KEY_period 0x02e

IBUS_KEY_slash

#define IBUS_KEY_slash 0x02f

IBUS_KEY_0

#define IBUS_KEY_0 0x030

IBUS_KEY_1

#define IBUS_KEY_1 0x031

IBUS_KEY_2

#define IBUS_KEY_2 0x032

IBUS_KEY_3

#define IBUS_KEY_3 0x033

IBUS_KEY_4

#define IBUS_KEY_4 0x034

IBUS_KEY_5

#define IBUS_KEY_5 0x035

IBUS_KEY_6

#define IBUS_KEY_6 0x036

IBUS_KEY_7

#define IBUS_KEY_7 0x037

IBUS_KEY_8

#define IBUS_KEY_8 0x038

IBUS_KEY_9

#define IBUS_KEY_9 0x039

IBUS_KEY_colon

#define IBUS_KEY_colon 0x03a

IBUS_KEY_semicolon

#define IBUS_KEY_semicolon 0x03b

IBUS_KEY_less

#define IBUS_KEY_less 0x03c

IBUS_KEY_equal

#define IBUS_KEY_equal 0x03d

IBUS_KEY_greater

#define IBUS_KEY_greater 0x03e

IBUS_KEY_question

#define IBUS_KEY_question 0x03f

IBUS_KEY_at

#define IBUS_KEY_at 0x040

IBUS_KEY_A

#define IBUS_KEY_A 0x041

IBUS_KEY_B

#define IBUS_KEY_B 0x042

IBUS_KEY_C

#define IBUS_KEY_C 0x043

IBUS_KEY_D

#define IBUS_KEY_D 0x044

IBUS_KEY_E

#define IBUS_KEY_E 0x045

IBUS_KEY_F

#define IBUS_KEY_F 0x046

IBUS_KEY_G

#define IBUS_KEY_G 0x047

IBUS_KEY_H

#define IBUS_KEY_H 0x048

IBUS_KEY_I

#define IBUS_KEY_I 0x049

IBUS_KEY_J

#define IBUS_KEY_J 0x04a

IBUS_KEY_K

#define IBUS_KEY_K 0x04b

IBUS_KEY_L

#define IBUS_KEY_L 0x04c

IBUS_KEY_M

#define IBUS_KEY_M 0x04d

IBUS_KEY_N

#define IBUS_KEY_N 0x04e

IBUS_KEY_O

#define IBUS_KEY_O 0x04f

IBUS_KEY_P

#define IBUS_KEY_P 0x050

IBUS_KEY_Q

#define IBUS_KEY_Q 0x051

IBUS_KEY_R

#define IBUS_KEY_R 0x052

IBUS_KEY_S

#define IBUS_KEY_S 0x053

IBUS_KEY_T

#define IBUS_KEY_T 0x054

IBUS_KEY_U

#define IBUS_KEY_U 0x055

IBUS_KEY_V

#define IBUS_KEY_V 0x056

IBUS_KEY_W

#define IBUS_KEY_W 0x057

IBUS_KEY_X

#define IBUS_KEY_X 0x058

IBUS_KEY_Y

#define IBUS_KEY_Y 0x059

IBUS_KEY_Z

#define IBUS_KEY_Z 0x05a

IBUS_KEY_bracketleft

#define IBUS_KEY_bracketleft 0x05b

IBUS_KEY_backslash

#define IBUS_KEY_backslash 0x05c

IBUS_KEY_bracketright

#define IBUS_KEY_bracketright 0x05d

IBUS_KEY_asciicircum

#define IBUS_KEY_asciicircum 0x05e

IBUS_KEY_underscore

#define IBUS_KEY_underscore 0x05f

IBUS_KEY_grave

#define IBUS_KEY_grave 0x060

IBUS_KEY_quoteleft

#define IBUS_KEY_quoteleft 0x060

IBUS_KEY_a

#define IBUS_KEY_a 0x061

IBUS_KEY_b

#define IBUS_KEY_b 0x062

IBUS_KEY_c

#define IBUS_KEY_c 0x063

IBUS_KEY_d

#define IBUS_KEY_d 0x064

IBUS_KEY_e

#define IBUS_KEY_e 0x065

IBUS_KEY_f

#define IBUS_KEY_f 0x066

IBUS_KEY_g

#define IBUS_KEY_g 0x067

IBUS_KEY_h

#define IBUS_KEY_h 0x068

IBUS_KEY_i

#define IBUS_KEY_i 0x069

IBUS_KEY_j

#define IBUS_KEY_j 0x06a

IBUS_KEY_k

#define IBUS_KEY_k 0x06b

IBUS_KEY_l

#define IBUS_KEY_l 0x06c

IBUS_KEY_m

#define IBUS_KEY_m 0x06d

IBUS_KEY_n

#define IBUS_KEY_n 0x06e

IBUS_KEY_o

#define IBUS_KEY_o 0x06f

IBUS_KEY_p

#define IBUS_KEY_p 0x070

IBUS_KEY_q

#define IBUS_KEY_q 0x071

IBUS_KEY_r

#define IBUS_KEY_r 0x072

IBUS_KEY_s

#define IBUS_KEY_s 0x073

IBUS_KEY_t

#define IBUS_KEY_t 0x074

IBUS_KEY_u

#define IBUS_KEY_u 0x075

IBUS_KEY_v

#define IBUS_KEY_v 0x076

IBUS_KEY_w

#define IBUS_KEY_w 0x077

IBUS_KEY_x

#define IBUS_KEY_x 0x078

IBUS_KEY_y

#define IBUS_KEY_y 0x079

IBUS_KEY_z

#define IBUS_KEY_z 0x07a

IBUS_KEY_braceleft

#define IBUS_KEY_braceleft 0x07b

IBUS_KEY_bar

#define IBUS_KEY_bar 0x07c

IBUS_KEY_braceright

#define IBUS_KEY_braceright 0x07d

IBUS_KEY_asciitilde

#define IBUS_KEY_asciitilde 0x07e

IBUS_KEY_nobreakspace

#define IBUS_KEY_nobreakspace 0x0a0

IBUS_KEY_exclamdown

#define IBUS_KEY_exclamdown 0x0a1

IBUS_KEY_cent

#define IBUS_KEY_cent 0x0a2

IBUS_KEY_sterling

#define IBUS_KEY_sterling 0x0a3

IBUS_KEY_currency

#define IBUS_KEY_currency 0x0a4

IBUS_KEY_yen

#define IBUS_KEY_yen 0x0a5

IBUS_KEY_brokenbar

#define IBUS_KEY_brokenbar 0x0a6

IBUS_KEY_section

#define IBUS_KEY_section 0x0a7

IBUS_KEY_diaeresis

#define IBUS_KEY_diaeresis 0x0a8

IBUS_KEY_copyright

#define IBUS_KEY_copyright 0x0a9

IBUS_KEY_ordfeminine

#define IBUS_KEY_ordfeminine 0x0aa

IBUS_KEY_guillemotleft

#define IBUS_KEY_guillemotleft 0x0ab

IBUS_KEY_notsign

#define IBUS_KEY_notsign 0x0ac

IBUS_KEY_hyphen

#define IBUS_KEY_hyphen 0x0ad

IBUS_KEY_registered

#define IBUS_KEY_registered 0x0ae

IBUS_KEY_macron

#define IBUS_KEY_macron 0x0af

IBUS_KEY_degree

#define IBUS_KEY_degree 0x0b0

IBUS_KEY_plusminus

#define IBUS_KEY_plusminus 0x0b1

IBUS_KEY_twosuperior

#define IBUS_KEY_twosuperior 0x0b2

IBUS_KEY_threesuperior

#define IBUS_KEY_threesuperior 0x0b3

IBUS_KEY_acute

#define IBUS_KEY_acute 0x0b4

IBUS_KEY_mu

#define IBUS_KEY_mu 0x0b5

IBUS_KEY_paragraph

#define IBUS_KEY_paragraph 0x0b6

IBUS_KEY_periodcentered

#define IBUS_KEY_periodcentered 0x0b7

IBUS_KEY_cedilla

#define IBUS_KEY_cedilla 0x0b8

IBUS_KEY_onesuperior

#define IBUS_KEY_onesuperior 0x0b9

IBUS_KEY_masculine

#define IBUS_KEY_masculine 0x0ba

IBUS_KEY_guillemotright

#define IBUS_KEY_guillemotright 0x0bb

IBUS_KEY_onequarter

#define IBUS_KEY_onequarter 0x0bc

IBUS_KEY_onehalf

#define IBUS_KEY_onehalf 0x0bd

IBUS_KEY_threequarters

#define IBUS_KEY_threequarters 0x0be

IBUS_KEY_questiondown

#define IBUS_KEY_questiondown 0x0bf

IBUS_KEY_Agrave

#define IBUS_KEY_Agrave 0x0c0

IBUS_KEY_Aacute

#define IBUS_KEY_Aacute 0x0c1

IBUS_KEY_Acircumflex

#define IBUS_KEY_Acircumflex 0x0c2

IBUS_KEY_Atilde

#define IBUS_KEY_Atilde 0x0c3

IBUS_KEY_Adiaeresis

#define IBUS_KEY_Adiaeresis 0x0c4

IBUS_KEY_Aring

#define IBUS_KEY_Aring 0x0c5

IBUS_KEY_AE

#define IBUS_KEY_AE 0x0c6

IBUS_KEY_Ccedilla

#define IBUS_KEY_Ccedilla 0x0c7

IBUS_KEY_Egrave

#define IBUS_KEY_Egrave 0x0c8

IBUS_KEY_Eacute

#define IBUS_KEY_Eacute 0x0c9

IBUS_KEY_Ecircumflex

#define IBUS_KEY_Ecircumflex 0x0ca

IBUS_KEY_Ediaeresis

#define IBUS_KEY_Ediaeresis 0x0cb

IBUS_KEY_Igrave

#define IBUS_KEY_Igrave 0x0cc

IBUS_KEY_Iacute

#define IBUS_KEY_Iacute 0x0cd

IBUS_KEY_Icircumflex

#define IBUS_KEY_Icircumflex 0x0ce

IBUS_KEY_Idiaeresis

#define IBUS_KEY_Idiaeresis 0x0cf

IBUS_KEY_ETH

#define IBUS_KEY_ETH 0x0d0

IBUS_KEY_Eth

#define IBUS_KEY_Eth 0x0d0

IBUS_KEY_Ntilde

#define IBUS_KEY_Ntilde 0x0d1

IBUS_KEY_Ograve

#define IBUS_KEY_Ograve 0x0d2

IBUS_KEY_Oacute

#define IBUS_KEY_Oacute 0x0d3

IBUS_KEY_Ocircumflex

#define IBUS_KEY_Ocircumflex 0x0d4

IBUS_KEY_Otilde

#define IBUS_KEY_Otilde 0x0d5

IBUS_KEY_Odiaeresis

#define IBUS_KEY_Odiaeresis 0x0d6

IBUS_KEY_multiply

#define IBUS_KEY_multiply 0x0d7

IBUS_KEY_Oslash

#define IBUS_KEY_Oslash 0x0d8

IBUS_KEY_Ooblique

#define IBUS_KEY_Ooblique 0x0d8

IBUS_KEY_Ugrave

#define IBUS_KEY_Ugrave 0x0d9

IBUS_KEY_Uacute

#define IBUS_KEY_Uacute 0x0da

IBUS_KEY_Ucircumflex

#define IBUS_KEY_Ucircumflex 0x0db

IBUS_KEY_Udiaeresis

#define IBUS_KEY_Udiaeresis 0x0dc

IBUS_KEY_Yacute

#define IBUS_KEY_Yacute 0x0dd

IBUS_KEY_THORN

#define IBUS_KEY_THORN 0x0de

IBUS_KEY_Thorn

#define IBUS_KEY_Thorn 0x0de

IBUS_KEY_ssharp

#define IBUS_KEY_ssharp 0x0df

IBUS_KEY_agrave

#define IBUS_KEY_agrave 0x0e0

IBUS_KEY_aacute

#define IBUS_KEY_aacute 0x0e1

IBUS_KEY_acircumflex

#define IBUS_KEY_acircumflex 0x0e2

IBUS_KEY_atilde

#define IBUS_KEY_atilde 0x0e3

IBUS_KEY_adiaeresis

#define IBUS_KEY_adiaeresis 0x0e4

IBUS_KEY_aring

#define IBUS_KEY_aring 0x0e5

IBUS_KEY_ae

#define IBUS_KEY_ae 0x0e6

IBUS_KEY_ccedilla

#define IBUS_KEY_ccedilla 0x0e7

IBUS_KEY_egrave

#define IBUS_KEY_egrave 0x0e8

IBUS_KEY_eacute

#define IBUS_KEY_eacute 0x0e9

IBUS_KEY_ecircumflex

#define IBUS_KEY_ecircumflex 0x0ea

IBUS_KEY_ediaeresis

#define IBUS_KEY_ediaeresis 0x0eb

IBUS_KEY_igrave

#define IBUS_KEY_igrave 0x0ec

IBUS_KEY_iacute

#define IBUS_KEY_iacute 0x0ed

IBUS_KEY_icircumflex

#define IBUS_KEY_icircumflex 0x0ee

IBUS_KEY_idiaeresis

#define IBUS_KEY_idiaeresis 0x0ef

IBUS_KEY_eth

#define IBUS_KEY_eth 0x0f0

IBUS_KEY_ntilde

#define IBUS_KEY_ntilde 0x0f1

IBUS_KEY_ograve

#define IBUS_KEY_ograve 0x0f2

IBUS_KEY_oacute

#define IBUS_KEY_oacute 0x0f3

IBUS_KEY_ocircumflex

#define IBUS_KEY_ocircumflex 0x0f4

IBUS_KEY_otilde

#define IBUS_KEY_otilde 0x0f5

IBUS_KEY_odiaeresis

#define IBUS_KEY_odiaeresis 0x0f6

IBUS_KEY_division

#define IBUS_KEY_division 0x0f7

IBUS_KEY_oslash

#define IBUS_KEY_oslash 0x0f8

IBUS_KEY_ooblique

#define IBUS_KEY_ooblique 0x0f8

IBUS_KEY_ugrave

#define IBUS_KEY_ugrave 0x0f9

IBUS_KEY_uacute

#define IBUS_KEY_uacute 0x0fa

IBUS_KEY_ucircumflex

#define IBUS_KEY_ucircumflex 0x0fb

IBUS_KEY_udiaeresis

#define IBUS_KEY_udiaeresis 0x0fc

IBUS_KEY_yacute

#define IBUS_KEY_yacute 0x0fd

IBUS_KEY_thorn

#define IBUS_KEY_thorn 0x0fe

IBUS_KEY_ydiaeresis

#define IBUS_KEY_ydiaeresis 0x0ff

IBUS_KEY_Aogonek

#define IBUS_KEY_Aogonek 0x1a1

IBUS_KEY_breve

#define IBUS_KEY_breve 0x1a2

IBUS_KEY_Lstroke

#define IBUS_KEY_Lstroke 0x1a3

IBUS_KEY_Lcaron

#define IBUS_KEY_Lcaron 0x1a5

IBUS_KEY_Sacute

#define IBUS_KEY_Sacute 0x1a6

IBUS_KEY_Scaron

#define IBUS_KEY_Scaron 0x1a9

IBUS_KEY_Scedilla

#define IBUS_KEY_Scedilla 0x1aa

IBUS_KEY_Tcaron

#define IBUS_KEY_Tcaron 0x1ab

IBUS_KEY_Zacute

#define IBUS_KEY_Zacute 0x1ac

IBUS_KEY_Zcaron

#define IBUS_KEY_Zcaron 0x1ae

IBUS_KEY_Zabovedot

#define IBUS_KEY_Zabovedot 0x1af

IBUS_KEY_aogonek

#define IBUS_KEY_aogonek 0x1b1

IBUS_KEY_ogonek

#define IBUS_KEY_ogonek 0x1b2

IBUS_KEY_lstroke

#define IBUS_KEY_lstroke 0x1b3

IBUS_KEY_lcaron

#define IBUS_KEY_lcaron 0x1b5

IBUS_KEY_sacute

#define IBUS_KEY_sacute 0x1b6

IBUS_KEY_caron

#define IBUS_KEY_caron 0x1b7

IBUS_KEY_scaron

#define IBUS_KEY_scaron 0x1b9

IBUS_KEY_scedilla

#define IBUS_KEY_scedilla 0x1ba

IBUS_KEY_tcaron

#define IBUS_KEY_tcaron 0x1bb

IBUS_KEY_zacute

#define IBUS_KEY_zacute 0x1bc

IBUS_KEY_doubleacute

#define IBUS_KEY_doubleacute 0x1bd

IBUS_KEY_zcaron

#define IBUS_KEY_zcaron 0x1be

IBUS_KEY_zabovedot

#define IBUS_KEY_zabovedot 0x1bf

IBUS_KEY_Racute

#define IBUS_KEY_Racute 0x1c0

IBUS_KEY_Abreve

#define IBUS_KEY_Abreve 0x1c3

IBUS_KEY_Lacute

#define IBUS_KEY_Lacute 0x1c5

IBUS_KEY_Cacute

#define IBUS_KEY_Cacute 0x1c6

IBUS_KEY_Ccaron

#define IBUS_KEY_Ccaron 0x1c8

IBUS_KEY_Eogonek

#define IBUS_KEY_Eogonek 0x1ca

IBUS_KEY_Ecaron

#define IBUS_KEY_Ecaron 0x1cc

IBUS_KEY_Dcaron

#define IBUS_KEY_Dcaron 0x1cf

IBUS_KEY_Dstroke

#define IBUS_KEY_Dstroke 0x1d0

IBUS_KEY_Nacute

#define IBUS_KEY_Nacute 0x1d1

IBUS_KEY_Ncaron

#define IBUS_KEY_Ncaron 0x1d2

IBUS_KEY_Odoubleacute

#define IBUS_KEY_Odoubleacute 0x1d5

IBUS_KEY_Rcaron

#define IBUS_KEY_Rcaron 0x1d8

IBUS_KEY_Uring

#define IBUS_KEY_Uring 0x1d9

IBUS_KEY_Udoubleacute

#define IBUS_KEY_Udoubleacute 0x1db

IBUS_KEY_Tcedilla

#define IBUS_KEY_Tcedilla 0x1de

IBUS_KEY_racute

#define IBUS_KEY_racute 0x1e0

IBUS_KEY_abreve

#define IBUS_KEY_abreve 0x1e3

IBUS_KEY_lacute

#define IBUS_KEY_lacute 0x1e5

IBUS_KEY_cacute

#define IBUS_KEY_cacute 0x1e6

IBUS_KEY_ccaron

#define IBUS_KEY_ccaron 0x1e8

IBUS_KEY_eogonek

#define IBUS_KEY_eogonek 0x1ea

IBUS_KEY_ecaron

#define IBUS_KEY_ecaron 0x1ec

IBUS_KEY_dcaron

#define IBUS_KEY_dcaron 0x1ef

IBUS_KEY_dstroke

#define IBUS_KEY_dstroke 0x1f0

IBUS_KEY_nacute

#define IBUS_KEY_nacute 0x1f1

IBUS_KEY_ncaron

#define IBUS_KEY_ncaron 0x1f2

IBUS_KEY_odoubleacute

#define IBUS_KEY_odoubleacute 0x1f5

IBUS_KEY_rcaron

#define IBUS_KEY_rcaron 0x1f8

IBUS_KEY_uring

#define IBUS_KEY_uring 0x1f9

IBUS_KEY_udoubleacute

#define IBUS_KEY_udoubleacute 0x1fb

IBUS_KEY_tcedilla

#define IBUS_KEY_tcedilla 0x1fe

IBUS_KEY_abovedot

#define IBUS_KEY_abovedot 0x1ff

IBUS_KEY_Hstroke

#define IBUS_KEY_Hstroke 0x2a1

IBUS_KEY_Hcircumflex

#define IBUS_KEY_Hcircumflex 0x2a6

IBUS_KEY_Iabovedot

#define IBUS_KEY_Iabovedot 0x2a9

IBUS_KEY_Gbreve

#define IBUS_KEY_Gbreve 0x2ab

IBUS_KEY_Jcircumflex

#define IBUS_KEY_Jcircumflex 0x2ac

IBUS_KEY_hstroke

#define IBUS_KEY_hstroke 0x2b1

IBUS_KEY_hcircumflex

#define IBUS_KEY_hcircumflex 0x2b6

IBUS_KEY_idotless

#define IBUS_KEY_idotless 0x2b9

IBUS_KEY_gbreve

#define IBUS_KEY_gbreve 0x2bb

IBUS_KEY_jcircumflex

#define IBUS_KEY_jcircumflex 0x2bc

IBUS_KEY_Cabovedot

#define IBUS_KEY_Cabovedot 0x2c5

IBUS_KEY_Ccircumflex

#define IBUS_KEY_Ccircumflex 0x2c6

IBUS_KEY_Gabovedot

#define IBUS_KEY_Gabovedot 0x2d5

IBUS_KEY_Gcircumflex

#define IBUS_KEY_Gcircumflex 0x2d8

IBUS_KEY_Ubreve

#define IBUS_KEY_Ubreve 0x2dd

IBUS_KEY_Scircumflex

#define IBUS_KEY_Scircumflex 0x2de

IBUS_KEY_cabovedot

#define IBUS_KEY_cabovedot 0x2e5

IBUS_KEY_ccircumflex

#define IBUS_KEY_ccircumflex 0x2e6

IBUS_KEY_gabovedot

#define IBUS_KEY_gabovedot 0x2f5

IBUS_KEY_gcircumflex

#define IBUS_KEY_gcircumflex 0x2f8

IBUS_KEY_ubreve

#define IBUS_KEY_ubreve 0x2fd

IBUS_KEY_scircumflex

#define IBUS_KEY_scircumflex 0x2fe

IBUS_KEY_kra

#define IBUS_KEY_kra 0x3a2

IBUS_KEY_kappa

#define IBUS_KEY_kappa 0x3a2

IBUS_KEY_Rcedilla

#define IBUS_KEY_Rcedilla 0x3a3

IBUS_KEY_Itilde

#define IBUS_KEY_Itilde 0x3a5

IBUS_KEY_Lcedilla

#define IBUS_KEY_Lcedilla 0x3a6

IBUS_KEY_Emacron

#define IBUS_KEY_Emacron 0x3aa

IBUS_KEY_Gcedilla

#define IBUS_KEY_Gcedilla 0x3ab

IBUS_KEY_Tslash

#define IBUS_KEY_Tslash 0x3ac

IBUS_KEY_rcedilla

#define IBUS_KEY_rcedilla 0x3b3

IBUS_KEY_itilde

#define IBUS_KEY_itilde 0x3b5

IBUS_KEY_lcedilla

#define IBUS_KEY_lcedilla 0x3b6

IBUS_KEY_emacron

#define IBUS_KEY_emacron 0x3ba

IBUS_KEY_gcedilla

#define IBUS_KEY_gcedilla 0x3bb

IBUS_KEY_tslash

#define IBUS_KEY_tslash 0x3bc

IBUS_KEY_ENG

#define IBUS_KEY_ENG 0x3bd

IBUS_KEY_eng

#define IBUS_KEY_eng 0x3bf

IBUS_KEY_Amacron

#define IBUS_KEY_Amacron 0x3c0

IBUS_KEY_Iogonek

#define IBUS_KEY_Iogonek 0x3c7

IBUS_KEY_Eabovedot

#define IBUS_KEY_Eabovedot 0x3cc

IBUS_KEY_Imacron

#define IBUS_KEY_Imacron 0x3cf

IBUS_KEY_Ncedilla

#define IBUS_KEY_Ncedilla 0x3d1

IBUS_KEY_Omacron

#define IBUS_KEY_Omacron 0x3d2

IBUS_KEY_Kcedilla

#define IBUS_KEY_Kcedilla 0x3d3

IBUS_KEY_Uogonek

#define IBUS_KEY_Uogonek 0x3d9

IBUS_KEY_Utilde

#define IBUS_KEY_Utilde 0x3dd

IBUS_KEY_Umacron

#define IBUS_KEY_Umacron 0x3de

IBUS_KEY_amacron

#define IBUS_KEY_amacron 0x3e0

IBUS_KEY_iogonek

#define IBUS_KEY_iogonek 0x3e7

IBUS_KEY_eabovedot

#define IBUS_KEY_eabovedot 0x3ec

IBUS_KEY_imacron

#define IBUS_KEY_imacron 0x3ef

IBUS_KEY_ncedilla

#define IBUS_KEY_ncedilla 0x3f1

IBUS_KEY_omacron

#define IBUS_KEY_omacron 0x3f2

IBUS_KEY_kcedilla

#define IBUS_KEY_kcedilla 0x3f3

IBUS_KEY_uogonek

#define IBUS_KEY_uogonek 0x3f9

IBUS_KEY_utilde

#define IBUS_KEY_utilde 0x3fd

IBUS_KEY_umacron

#define IBUS_KEY_umacron 0x3fe

IBUS_KEY_Wcircumflex

#define IBUS_KEY_Wcircumflex 0x1000174

IBUS_KEY_wcircumflex

#define IBUS_KEY_wcircumflex 0x1000175

IBUS_KEY_Ycircumflex

#define IBUS_KEY_Ycircumflex 0x1000176

IBUS_KEY_ycircumflex

#define IBUS_KEY_ycircumflex 0x1000177

IBUS_KEY_Babovedot

#define IBUS_KEY_Babovedot 0x1001e02

IBUS_KEY_babovedot

#define IBUS_KEY_babovedot 0x1001e03

IBUS_KEY_Dabovedot

#define IBUS_KEY_Dabovedot 0x1001e0a

IBUS_KEY_dabovedot

#define IBUS_KEY_dabovedot 0x1001e0b

IBUS_KEY_Fabovedot

#define IBUS_KEY_Fabovedot 0x1001e1e

IBUS_KEY_fabovedot

#define IBUS_KEY_fabovedot 0x1001e1f

IBUS_KEY_Mabovedot

#define IBUS_KEY_Mabovedot 0x1001e40

IBUS_KEY_mabovedot

#define IBUS_KEY_mabovedot 0x1001e41

IBUS_KEY_Pabovedot

#define IBUS_KEY_Pabovedot 0x1001e56

IBUS_KEY_pabovedot

#define IBUS_KEY_pabovedot 0x1001e57

IBUS_KEY_Sabovedot

#define IBUS_KEY_Sabovedot 0x1001e60

IBUS_KEY_sabovedot

#define IBUS_KEY_sabovedot 0x1001e61

IBUS_KEY_Tabovedot

#define IBUS_KEY_Tabovedot 0x1001e6a

IBUS_KEY_tabovedot

#define IBUS_KEY_tabovedot 0x1001e6b

IBUS_KEY_Wgrave

#define IBUS_KEY_Wgrave 0x1001e80

IBUS_KEY_wgrave

#define IBUS_KEY_wgrave 0x1001e81

IBUS_KEY_Wacute

#define IBUS_KEY_Wacute 0x1001e82

IBUS_KEY_wacute

#define IBUS_KEY_wacute 0x1001e83

IBUS_KEY_Wdiaeresis

#define IBUS_KEY_Wdiaeresis 0x1001e84

IBUS_KEY_wdiaeresis

#define IBUS_KEY_wdiaeresis 0x1001e85

IBUS_KEY_Ygrave

#define IBUS_KEY_Ygrave 0x1001ef2

IBUS_KEY_ygrave

#define IBUS_KEY_ygrave 0x1001ef3

IBUS_KEY_OE

#define IBUS_KEY_OE 0x13bc

IBUS_KEY_oe

#define IBUS_KEY_oe 0x13bd

IBUS_KEY_Ydiaeresis

#define IBUS_KEY_Ydiaeresis 0x13be

IBUS_KEY_overline

#define IBUS_KEY_overline 0x47e

IBUS_KEY_kana_fullstop

#define IBUS_KEY_kana_fullstop 0x4a1

IBUS_KEY_kana_openingbracket

#define IBUS_KEY_kana_openingbracket 0x4a2

IBUS_KEY_kana_closingbracket

#define IBUS_KEY_kana_closingbracket 0x4a3

IBUS_KEY_kana_comma

#define IBUS_KEY_kana_comma 0x4a4

IBUS_KEY_kana_conjunctive

#define IBUS_KEY_kana_conjunctive 0x4a5

IBUS_KEY_kana_middledot

#define IBUS_KEY_kana_middledot 0x4a5

IBUS_KEY_kana_WO

#define IBUS_KEY_kana_WO 0x4a6

IBUS_KEY_kana_a

#define IBUS_KEY_kana_a 0x4a7

IBUS_KEY_kana_i

#define IBUS_KEY_kana_i 0x4a8

IBUS_KEY_kana_u

#define IBUS_KEY_kana_u 0x4a9

IBUS_KEY_kana_e

#define IBUS_KEY_kana_e 0x4aa

IBUS_KEY_kana_o

#define IBUS_KEY_kana_o 0x4ab

IBUS_KEY_kana_ya

#define IBUS_KEY_kana_ya 0x4ac

IBUS_KEY_kana_yu

#define IBUS_KEY_kana_yu 0x4ad

IBUS_KEY_kana_yo

#define IBUS_KEY_kana_yo 0x4ae

IBUS_KEY_kana_tsu

#define IBUS_KEY_kana_tsu 0x4af

IBUS_KEY_kana_tu

#define IBUS_KEY_kana_tu 0x4af

IBUS_KEY_prolongedsound

#define IBUS_KEY_prolongedsound 0x4b0

IBUS_KEY_kana_A

#define IBUS_KEY_kana_A 0x4b1

IBUS_KEY_kana_I

#define IBUS_KEY_kana_I 0x4b2

IBUS_KEY_kana_U

#define IBUS_KEY_kana_U 0x4b3

IBUS_KEY_kana_E

#define IBUS_KEY_kana_E 0x4b4

IBUS_KEY_kana_O

#define IBUS_KEY_kana_O 0x4b5

IBUS_KEY_kana_KA

#define IBUS_KEY_kana_KA 0x4b6

IBUS_KEY_kana_KI

#define IBUS_KEY_kana_KI 0x4b7

IBUS_KEY_kana_KU

#define IBUS_KEY_kana_KU 0x4b8

IBUS_KEY_kana_KE

#define IBUS_KEY_kana_KE 0x4b9

IBUS_KEY_kana_KO

#define IBUS_KEY_kana_KO 0x4ba

IBUS_KEY_kana_SA

#define IBUS_KEY_kana_SA 0x4bb

IBUS_KEY_kana_SHI

#define IBUS_KEY_kana_SHI 0x4bc

IBUS_KEY_kana_SU

#define IBUS_KEY_kana_SU 0x4bd

IBUS_KEY_kana_SE

#define IBUS_KEY_kana_SE 0x4be

IBUS_KEY_kana_SO

#define IBUS_KEY_kana_SO 0x4bf

IBUS_KEY_kana_TA

#define IBUS_KEY_kana_TA 0x4c0

IBUS_KEY_kana_CHI

#define IBUS_KEY_kana_CHI 0x4c1

IBUS_KEY_kana_TI

#define IBUS_KEY_kana_TI 0x4c1

IBUS_KEY_kana_TSU

#define IBUS_KEY_kana_TSU 0x4c2

IBUS_KEY_kana_TU

#define IBUS_KEY_kana_TU 0x4c2

IBUS_KEY_kana_TE

#define IBUS_KEY_kana_TE 0x4c3

IBUS_KEY_kana_TO

#define IBUS_KEY_kana_TO 0x4c4

IBUS_KEY_kana_NA

#define IBUS_KEY_kana_NA 0x4c5

IBUS_KEY_kana_NI

#define IBUS_KEY_kana_NI 0x4c6

IBUS_KEY_kana_NU

#define IBUS_KEY_kana_NU 0x4c7

IBUS_KEY_kana_NE

#define IBUS_KEY_kana_NE 0x4c8

IBUS_KEY_kana_NO

#define IBUS_KEY_kana_NO 0x4c9

IBUS_KEY_kana_HA

#define IBUS_KEY_kana_HA 0x4ca

IBUS_KEY_kana_HI

#define IBUS_KEY_kana_HI 0x4cb

IBUS_KEY_kana_FU

#define IBUS_KEY_kana_FU 0x4cc

IBUS_KEY_kana_HU

#define IBUS_KEY_kana_HU 0x4cc

IBUS_KEY_kana_HE

#define IBUS_KEY_kana_HE 0x4cd

IBUS_KEY_kana_HO

#define IBUS_KEY_kana_HO 0x4ce

IBUS_KEY_kana_MA

#define IBUS_KEY_kana_MA 0x4cf

IBUS_KEY_kana_MI

#define IBUS_KEY_kana_MI 0x4d0

IBUS_KEY_kana_MU

#define IBUS_KEY_kana_MU 0x4d1

IBUS_KEY_kana_ME

#define IBUS_KEY_kana_ME 0x4d2

IBUS_KEY_kana_MO

#define IBUS_KEY_kana_MO 0x4d3

IBUS_KEY_kana_YA

#define IBUS_KEY_kana_YA 0x4d4

IBUS_KEY_kana_YU

#define IBUS_KEY_kana_YU 0x4d5

IBUS_KEY_kana_YO

#define IBUS_KEY_kana_YO 0x4d6

IBUS_KEY_kana_RA

#define IBUS_KEY_kana_RA 0x4d7

IBUS_KEY_kana_RI

#define IBUS_KEY_kana_RI 0x4d8

IBUS_KEY_kana_RU

#define IBUS_KEY_kana_RU 0x4d9

IBUS_KEY_kana_RE

#define IBUS_KEY_kana_RE 0x4da

IBUS_KEY_kana_RO

#define IBUS_KEY_kana_RO 0x4db

IBUS_KEY_kana_WA

#define IBUS_KEY_kana_WA 0x4dc

IBUS_KEY_kana_N

#define IBUS_KEY_kana_N 0x4dd

IBUS_KEY_voicedsound

#define IBUS_KEY_voicedsound 0x4de

IBUS_KEY_semivoicedsound

#define IBUS_KEY_semivoicedsound 0x4df

IBUS_KEY_kana_switch

#define IBUS_KEY_kana_switch 0xff7e

IBUS_KEY_Farsi_0

#define IBUS_KEY_Farsi_0 0x10006f0

IBUS_KEY_Farsi_1

#define IBUS_KEY_Farsi_1 0x10006f1

IBUS_KEY_Farsi_2

#define IBUS_KEY_Farsi_2 0x10006f2

IBUS_KEY_Farsi_3

#define IBUS_KEY_Farsi_3 0x10006f3

IBUS_KEY_Farsi_4

#define IBUS_KEY_Farsi_4 0x10006f4

IBUS_KEY_Farsi_5

#define IBUS_KEY_Farsi_5 0x10006f5

IBUS_KEY_Farsi_6

#define IBUS_KEY_Farsi_6 0x10006f6

IBUS_KEY_Farsi_7

#define IBUS_KEY_Farsi_7 0x10006f7

IBUS_KEY_Farsi_8

#define IBUS_KEY_Farsi_8 0x10006f8

IBUS_KEY_Farsi_9

#define IBUS_KEY_Farsi_9 0x10006f9

IBUS_KEY_Arabic_percent

#define IBUS_KEY_Arabic_percent 0x100066a

IBUS_KEY_Arabic_superscript_alef

#define IBUS_KEY_Arabic_superscript_alef 0x1000670

IBUS_KEY_Arabic_tteh

#define IBUS_KEY_Arabic_tteh 0x1000679

IBUS_KEY_Arabic_peh

#define IBUS_KEY_Arabic_peh 0x100067e

IBUS_KEY_Arabic_tcheh

#define IBUS_KEY_Arabic_tcheh 0x1000686

IBUS_KEY_Arabic_ddal

#define IBUS_KEY_Arabic_ddal 0x1000688

IBUS_KEY_Arabic_rreh

#define IBUS_KEY_Arabic_rreh 0x1000691

IBUS_KEY_Arabic_comma

#define IBUS_KEY_Arabic_comma 0x5ac

IBUS_KEY_Arabic_fullstop

#define IBUS_KEY_Arabic_fullstop 0x10006d4

IBUS_KEY_Arabic_0

#define IBUS_KEY_Arabic_0 0x1000660

IBUS_KEY_Arabic_1

#define IBUS_KEY_Arabic_1 0x1000661

IBUS_KEY_Arabic_2

#define IBUS_KEY_Arabic_2 0x1000662

IBUS_KEY_Arabic_3

#define IBUS_KEY_Arabic_3 0x1000663

IBUS_KEY_Arabic_4

#define IBUS_KEY_Arabic_4 0x1000664

IBUS_KEY_Arabic_5

#define IBUS_KEY_Arabic_5 0x1000665

IBUS_KEY_Arabic_6

#define IBUS_KEY_Arabic_6 0x1000666

IBUS_KEY_Arabic_7

#define IBUS_KEY_Arabic_7 0x1000667

IBUS_KEY_Arabic_8

#define IBUS_KEY_Arabic_8 0x1000668

IBUS_KEY_Arabic_9

#define IBUS_KEY_Arabic_9 0x1000669

IBUS_KEY_Arabic_semicolon

#define IBUS_KEY_Arabic_semicolon 0x5bb

IBUS_KEY_Arabic_question_mark

#define IBUS_KEY_Arabic_question_mark 0x5bf

IBUS_KEY_Arabic_hamza

#define IBUS_KEY_Arabic_hamza 0x5c1

IBUS_KEY_Arabic_maddaonalef

#define IBUS_KEY_Arabic_maddaonalef 0x5c2

IBUS_KEY_Arabic_hamzaonalef

#define IBUS_KEY_Arabic_hamzaonalef 0x5c3

IBUS_KEY_Arabic_hamzaonwaw

#define IBUS_KEY_Arabic_hamzaonwaw 0x5c4

IBUS_KEY_Arabic_hamzaunderalef

#define IBUS_KEY_Arabic_hamzaunderalef 0x5c5

IBUS_KEY_Arabic_hamzaonyeh

#define IBUS_KEY_Arabic_hamzaonyeh 0x5c6

IBUS_KEY_Arabic_alef

#define IBUS_KEY_Arabic_alef 0x5c7

IBUS_KEY_Arabic_beh

#define IBUS_KEY_Arabic_beh 0x5c8

IBUS_KEY_Arabic_tehmarbuta

#define IBUS_KEY_Arabic_tehmarbuta 0x5c9

IBUS_KEY_Arabic_teh

#define IBUS_KEY_Arabic_teh 0x5ca

IBUS_KEY_Arabic_theh

#define IBUS_KEY_Arabic_theh 0x5cb

IBUS_KEY_Arabic_jeem

#define IBUS_KEY_Arabic_jeem 0x5cc

IBUS_KEY_Arabic_hah

#define IBUS_KEY_Arabic_hah 0x5cd

IBUS_KEY_Arabic_khah

#define IBUS_KEY_Arabic_khah 0x5ce

IBUS_KEY_Arabic_dal

#define IBUS_KEY_Arabic_dal 0x5cf

IBUS_KEY_Arabic_thal

#define IBUS_KEY_Arabic_thal 0x5d0

IBUS_KEY_Arabic_ra

#define IBUS_KEY_Arabic_ra 0x5d1

IBUS_KEY_Arabic_zain

#define IBUS_KEY_Arabic_zain 0x5d2

IBUS_KEY_Arabic_seen

#define IBUS_KEY_Arabic_seen 0x5d3

IBUS_KEY_Arabic_sheen

#define IBUS_KEY_Arabic_sheen 0x5d4

IBUS_KEY_Arabic_sad

#define IBUS_KEY_Arabic_sad 0x5d5

IBUS_KEY_Arabic_dad

#define IBUS_KEY_Arabic_dad 0x5d6

IBUS_KEY_Arabic_tah

#define IBUS_KEY_Arabic_tah 0x5d7

IBUS_KEY_Arabic_zah

#define IBUS_KEY_Arabic_zah 0x5d8

IBUS_KEY_Arabic_ain

#define IBUS_KEY_Arabic_ain 0x5d9

IBUS_KEY_Arabic_ghain

#define IBUS_KEY_Arabic_ghain 0x5da

IBUS_KEY_Arabic_tatweel

#define IBUS_KEY_Arabic_tatweel 0x5e0

IBUS_KEY_Arabic_feh

#define IBUS_KEY_Arabic_feh 0x5e1

IBUS_KEY_Arabic_qaf

#define IBUS_KEY_Arabic_qaf 0x5e2

IBUS_KEY_Arabic_kaf

#define IBUS_KEY_Arabic_kaf 0x5e3

IBUS_KEY_Arabic_lam

#define IBUS_KEY_Arabic_lam 0x5e4

IBUS_KEY_Arabic_meem

#define IBUS_KEY_Arabic_meem 0x5e5

IBUS_KEY_Arabic_noon

#define IBUS_KEY_Arabic_noon 0x5e6

IBUS_KEY_Arabic_ha

#define IBUS_KEY_Arabic_ha 0x5e7

IBUS_KEY_Arabic_heh

#define IBUS_KEY_Arabic_heh 0x5e7

IBUS_KEY_Arabic_waw

#define IBUS_KEY_Arabic_waw 0x5e8

IBUS_KEY_Arabic_alefmaksura

#define IBUS_KEY_Arabic_alefmaksura 0x5e9

IBUS_KEY_Arabic_yeh

#define IBUS_KEY_Arabic_yeh 0x5ea

IBUS_KEY_Arabic_fathatan

#define IBUS_KEY_Arabic_fathatan 0x5eb

IBUS_KEY_Arabic_dammatan

#define IBUS_KEY_Arabic_dammatan 0x5ec

IBUS_KEY_Arabic_kasratan

#define IBUS_KEY_Arabic_kasratan 0x5ed

IBUS_KEY_Arabic_fatha

#define IBUS_KEY_Arabic_fatha 0x5ee

IBUS_KEY_Arabic_damma

#define IBUS_KEY_Arabic_damma 0x5ef

IBUS_KEY_Arabic_kasra

#define IBUS_KEY_Arabic_kasra 0x5f0

IBUS_KEY_Arabic_shadda

#define IBUS_KEY_Arabic_shadda 0x5f1

IBUS_KEY_Arabic_sukun

#define IBUS_KEY_Arabic_sukun 0x5f2

IBUS_KEY_Arabic_madda_above

#define IBUS_KEY_Arabic_madda_above 0x1000653

IBUS_KEY_Arabic_hamza_above

#define IBUS_KEY_Arabic_hamza_above 0x1000654

IBUS_KEY_Arabic_hamza_below

#define IBUS_KEY_Arabic_hamza_below 0x1000655

IBUS_KEY_Arabic_jeh

#define IBUS_KEY_Arabic_jeh 0x1000698

IBUS_KEY_Arabic_veh

#define IBUS_KEY_Arabic_veh 0x10006a4

IBUS_KEY_Arabic_keheh

#define IBUS_KEY_Arabic_keheh 0x10006a9

IBUS_KEY_Arabic_gaf

#define IBUS_KEY_Arabic_gaf 0x10006af

IBUS_KEY_Arabic_noon_ghunna

#define IBUS_KEY_Arabic_noon_ghunna 0x10006ba

IBUS_KEY_Arabic_heh_doachashmee

#define IBUS_KEY_Arabic_heh_doachashmee 0x10006be

IBUS_KEY_Farsi_yeh

#define IBUS_KEY_Farsi_yeh 0x10006cc

IBUS_KEY_Arabic_farsi_yeh

#define IBUS_KEY_Arabic_farsi_yeh 0x10006cc

IBUS_KEY_Arabic_yeh_baree

#define IBUS_KEY_Arabic_yeh_baree 0x10006d2

IBUS_KEY_Arabic_heh_goal

#define IBUS_KEY_Arabic_heh_goal 0x10006c1

IBUS_KEY_Arabic_switch

#define IBUS_KEY_Arabic_switch 0xff7e

IBUS_KEY_Cyrillic_GHE_bar

#define IBUS_KEY_Cyrillic_GHE_bar 0x1000492

IBUS_KEY_Cyrillic_ghe_bar

#define IBUS_KEY_Cyrillic_ghe_bar 0x1000493

IBUS_KEY_Cyrillic_ZHE_descender

#define IBUS_KEY_Cyrillic_ZHE_descender 0x1000496

IBUS_KEY_Cyrillic_zhe_descender

#define IBUS_KEY_Cyrillic_zhe_descender 0x1000497

IBUS_KEY_Cyrillic_KA_descender

#define IBUS_KEY_Cyrillic_KA_descender 0x100049a

IBUS_KEY_Cyrillic_ka_descender

#define IBUS_KEY_Cyrillic_ka_descender 0x100049b

IBUS_KEY_Cyrillic_KA_vertstroke

#define IBUS_KEY_Cyrillic_KA_vertstroke 0x100049c

IBUS_KEY_Cyrillic_ka_vertstroke

#define IBUS_KEY_Cyrillic_ka_vertstroke 0x100049d

IBUS_KEY_Cyrillic_EN_descender

#define IBUS_KEY_Cyrillic_EN_descender 0x10004a2

IBUS_KEY_Cyrillic_en_descender

#define IBUS_KEY_Cyrillic_en_descender 0x10004a3

IBUS_KEY_Cyrillic_U_straight

#define IBUS_KEY_Cyrillic_U_straight 0x10004ae

IBUS_KEY_Cyrillic_u_straight

#define IBUS_KEY_Cyrillic_u_straight 0x10004af

IBUS_KEY_Cyrillic_U_straight_bar

#define IBUS_KEY_Cyrillic_U_straight_bar 0x10004b0

IBUS_KEY_Cyrillic_u_straight_bar

#define IBUS_KEY_Cyrillic_u_straight_bar 0x10004b1

IBUS_KEY_Cyrillic_HA_descender

#define IBUS_KEY_Cyrillic_HA_descender 0x10004b2

IBUS_KEY_Cyrillic_ha_descender

#define IBUS_KEY_Cyrillic_ha_descender 0x10004b3

IBUS_KEY_Cyrillic_CHE_descender

#define IBUS_KEY_Cyrillic_CHE_descender 0x10004b6

IBUS_KEY_Cyrillic_che_descender

#define IBUS_KEY_Cyrillic_che_descender 0x10004b7

IBUS_KEY_Cyrillic_CHE_vertstroke

#define IBUS_KEY_Cyrillic_CHE_vertstroke 0x10004b8

IBUS_KEY_Cyrillic_che_vertstroke

#define IBUS_KEY_Cyrillic_che_vertstroke 0x10004b9

IBUS_KEY_Cyrillic_SHHA

#define IBUS_KEY_Cyrillic_SHHA 0x10004ba

IBUS_KEY_Cyrillic_shha

#define IBUS_KEY_Cyrillic_shha 0x10004bb

IBUS_KEY_Cyrillic_SCHWA

#define IBUS_KEY_Cyrillic_SCHWA 0x10004d8

IBUS_KEY_Cyrillic_schwa

#define IBUS_KEY_Cyrillic_schwa 0x10004d9

IBUS_KEY_Cyrillic_I_macron

#define IBUS_KEY_Cyrillic_I_macron 0x10004e2

IBUS_KEY_Cyrillic_i_macron

#define IBUS_KEY_Cyrillic_i_macron 0x10004e3

IBUS_KEY_Cyrillic_O_bar

#define IBUS_KEY_Cyrillic_O_bar 0x10004e8

IBUS_KEY_Cyrillic_o_bar

#define IBUS_KEY_Cyrillic_o_bar 0x10004e9

IBUS_KEY_Cyrillic_U_macron

#define IBUS_KEY_Cyrillic_U_macron 0x10004ee

IBUS_KEY_Cyrillic_u_macron

#define IBUS_KEY_Cyrillic_u_macron 0x10004ef

IBUS_KEY_Serbian_dje

#define IBUS_KEY_Serbian_dje 0x6a1

IBUS_KEY_Macedonia_gje

#define IBUS_KEY_Macedonia_gje 0x6a2

IBUS_KEY_Cyrillic_io

#define IBUS_KEY_Cyrillic_io 0x6a3

IBUS_KEY_Ukrainian_ie

#define IBUS_KEY_Ukrainian_ie 0x6a4

IBUS_KEY_Ukranian_je

#define IBUS_KEY_Ukranian_je 0x6a4

IBUS_KEY_Macedonia_dse

#define IBUS_KEY_Macedonia_dse 0x6a5

IBUS_KEY_Ukrainian_i

#define IBUS_KEY_Ukrainian_i 0x6a6

IBUS_KEY_Ukranian_i

#define IBUS_KEY_Ukranian_i 0x6a6

IBUS_KEY_Ukrainian_yi

#define IBUS_KEY_Ukrainian_yi 0x6a7

IBUS_KEY_Ukranian_yi

#define IBUS_KEY_Ukranian_yi 0x6a7

IBUS_KEY_Cyrillic_je

#define IBUS_KEY_Cyrillic_je 0x6a8

IBUS_KEY_Serbian_je

#define IBUS_KEY_Serbian_je 0x6a8

IBUS_KEY_Cyrillic_lje

#define IBUS_KEY_Cyrillic_lje 0x6a9

IBUS_KEY_Serbian_lje

#define IBUS_KEY_Serbian_lje 0x6a9

IBUS_KEY_Cyrillic_nje

#define IBUS_KEY_Cyrillic_nje 0x6aa

IBUS_KEY_Serbian_nje

#define IBUS_KEY_Serbian_nje 0x6aa

IBUS_KEY_Serbian_tshe

#define IBUS_KEY_Serbian_tshe 0x6ab

IBUS_KEY_Macedonia_kje

#define IBUS_KEY_Macedonia_kje 0x6ac

IBUS_KEY_Ukrainian_ghe_with_upturn

#define IBUS_KEY_Ukrainian_ghe_with_upturn 0x6ad

IBUS_KEY_Byelorussian_shortu

#define IBUS_KEY_Byelorussian_shortu 0x6ae

IBUS_KEY_Cyrillic_dzhe

#define IBUS_KEY_Cyrillic_dzhe 0x6af

IBUS_KEY_Serbian_dze

#define IBUS_KEY_Serbian_dze 0x6af

IBUS_KEY_numerosign

#define IBUS_KEY_numerosign 0x6b0

IBUS_KEY_Serbian_DJE

#define IBUS_KEY_Serbian_DJE 0x6b1

IBUS_KEY_Macedonia_GJE

#define IBUS_KEY_Macedonia_GJE 0x6b2

IBUS_KEY_Cyrillic_IO

#define IBUS_KEY_Cyrillic_IO 0x6b3

IBUS_KEY_Ukrainian_IE

#define IBUS_KEY_Ukrainian_IE 0x6b4

IBUS_KEY_Ukranian_JE

#define IBUS_KEY_Ukranian_JE 0x6b4

IBUS_KEY_Macedonia_DSE

#define IBUS_KEY_Macedonia_DSE 0x6b5

IBUS_KEY_Ukrainian_I

#define IBUS_KEY_Ukrainian_I 0x6b6

IBUS_KEY_Ukranian_I

#define IBUS_KEY_Ukranian_I 0x6b6

IBUS_KEY_Ukrainian_YI

#define IBUS_KEY_Ukrainian_YI 0x6b7

IBUS_KEY_Ukranian_YI

#define IBUS_KEY_Ukranian_YI 0x6b7

IBUS_KEY_Cyrillic_JE

#define IBUS_KEY_Cyrillic_JE 0x6b8

IBUS_KEY_Serbian_JE

#define IBUS_KEY_Serbian_JE 0x6b8

IBUS_KEY_Cyrillic_LJE

#define IBUS_KEY_Cyrillic_LJE 0x6b9

IBUS_KEY_Serbian_LJE

#define IBUS_KEY_Serbian_LJE 0x6b9

IBUS_KEY_Cyrillic_NJE

#define IBUS_KEY_Cyrillic_NJE 0x6ba

IBUS_KEY_Serbian_NJE

#define IBUS_KEY_Serbian_NJE 0x6ba

IBUS_KEY_Serbian_TSHE

#define IBUS_KEY_Serbian_TSHE 0x6bb

IBUS_KEY_Macedonia_KJE

#define IBUS_KEY_Macedonia_KJE 0x6bc

IBUS_KEY_Ukrainian_GHE_WITH_UPTURN

#define IBUS_KEY_Ukrainian_GHE_WITH_UPTURN 0x6bd

IBUS_KEY_Byelorussian_SHORTU

#define IBUS_KEY_Byelorussian_SHORTU 0x6be

IBUS_KEY_Cyrillic_DZHE

#define IBUS_KEY_Cyrillic_DZHE 0x6bf

IBUS_KEY_Serbian_DZE

#define IBUS_KEY_Serbian_DZE 0x6bf

IBUS_KEY_Cyrillic_yu

#define IBUS_KEY_Cyrillic_yu 0x6c0

IBUS_KEY_Cyrillic_a

#define IBUS_KEY_Cyrillic_a 0x6c1

IBUS_KEY_Cyrillic_be

#define IBUS_KEY_Cyrillic_be 0x6c2

IBUS_KEY_Cyrillic_tse

#define IBUS_KEY_Cyrillic_tse 0x6c3

IBUS_KEY_Cyrillic_de

#define IBUS_KEY_Cyrillic_de 0x6c4

IBUS_KEY_Cyrillic_ie

#define IBUS_KEY_Cyrillic_ie 0x6c5

IBUS_KEY_Cyrillic_ef

#define IBUS_KEY_Cyrillic_ef 0x6c6

IBUS_KEY_Cyrillic_ghe

#define IBUS_KEY_Cyrillic_ghe 0x6c7

IBUS_KEY_Cyrillic_ha

#define IBUS_KEY_Cyrillic_ha 0x6c8

IBUS_KEY_Cyrillic_i

#define IBUS_KEY_Cyrillic_i 0x6c9

IBUS_KEY_Cyrillic_shorti

#define IBUS_KEY_Cyrillic_shorti 0x6ca

IBUS_KEY_Cyrillic_ka

#define IBUS_KEY_Cyrillic_ka 0x6cb

IBUS_KEY_Cyrillic_el

#define IBUS_KEY_Cyrillic_el 0x6cc

IBUS_KEY_Cyrillic_em

#define IBUS_KEY_Cyrillic_em 0x6cd

IBUS_KEY_Cyrillic_en

#define IBUS_KEY_Cyrillic_en 0x6ce

IBUS_KEY_Cyrillic_o

#define IBUS_KEY_Cyrillic_o 0x6cf

IBUS_KEY_Cyrillic_pe

#define IBUS_KEY_Cyrillic_pe 0x6d0

IBUS_KEY_Cyrillic_ya

#define IBUS_KEY_Cyrillic_ya 0x6d1

IBUS_KEY_Cyrillic_er

#define IBUS_KEY_Cyrillic_er 0x6d2

IBUS_KEY_Cyrillic_es

#define IBUS_KEY_Cyrillic_es 0x6d3

IBUS_KEY_Cyrillic_te

#define IBUS_KEY_Cyrillic_te 0x6d4

IBUS_KEY_Cyrillic_u

#define IBUS_KEY_Cyrillic_u 0x6d5

IBUS_KEY_Cyrillic_zhe

#define IBUS_KEY_Cyrillic_zhe 0x6d6

IBUS_KEY_Cyrillic_ve

#define IBUS_KEY_Cyrillic_ve 0x6d7

IBUS_KEY_Cyrillic_softsign

#define IBUS_KEY_Cyrillic_softsign 0x6d8

IBUS_KEY_Cyrillic_yeru

#define IBUS_KEY_Cyrillic_yeru 0x6d9

IBUS_KEY_Cyrillic_ze

#define IBUS_KEY_Cyrillic_ze 0x6da

IBUS_KEY_Cyrillic_sha

#define IBUS_KEY_Cyrillic_sha 0x6db

IBUS_KEY_Cyrillic_e

#define IBUS_KEY_Cyrillic_e 0x6dc

IBUS_KEY_Cyrillic_shcha

#define IBUS_KEY_Cyrillic_shcha 0x6dd

IBUS_KEY_Cyrillic_che

#define IBUS_KEY_Cyrillic_che 0x6de

IBUS_KEY_Cyrillic_hardsign

#define IBUS_KEY_Cyrillic_hardsign 0x6df

IBUS_KEY_Cyrillic_YU

#define IBUS_KEY_Cyrillic_YU 0x6e0

IBUS_KEY_Cyrillic_A

#define IBUS_KEY_Cyrillic_A 0x6e1

IBUS_KEY_Cyrillic_BE

#define IBUS_KEY_Cyrillic_BE 0x6e2

IBUS_KEY_Cyrillic_TSE

#define IBUS_KEY_Cyrillic_TSE 0x6e3

IBUS_KEY_Cyrillic_DE

#define IBUS_KEY_Cyrillic_DE 0x6e4

IBUS_KEY_Cyrillic_IE

#define IBUS_KEY_Cyrillic_IE 0x6e5

IBUS_KEY_Cyrillic_EF

#define IBUS_KEY_Cyrillic_EF 0x6e6

IBUS_KEY_Cyrillic_GHE

#define IBUS_KEY_Cyrillic_GHE 0x6e7

IBUS_KEY_Cyrillic_HA

#define IBUS_KEY_Cyrillic_HA 0x6e8

IBUS_KEY_Cyrillic_I

#define IBUS_KEY_Cyrillic_I 0x6e9

IBUS_KEY_Cyrillic_SHORTI

#define IBUS_KEY_Cyrillic_SHORTI 0x6ea

IBUS_KEY_Cyrillic_KA

#define IBUS_KEY_Cyrillic_KA 0x6eb

IBUS_KEY_Cyrillic_EL

#define IBUS_KEY_Cyrillic_EL 0x6ec

IBUS_KEY_Cyrillic_EM

#define IBUS_KEY_Cyrillic_EM 0x6ed

IBUS_KEY_Cyrillic_EN

#define IBUS_KEY_Cyrillic_EN 0x6ee

IBUS_KEY_Cyrillic_O

#define IBUS_KEY_Cyrillic_O 0x6ef

IBUS_KEY_Cyrillic_PE

#define IBUS_KEY_Cyrillic_PE 0x6f0

IBUS_KEY_Cyrillic_YA

#define IBUS_KEY_Cyrillic_YA 0x6f1

IBUS_KEY_Cyrillic_ER

#define IBUS_KEY_Cyrillic_ER 0x6f2

IBUS_KEY_Cyrillic_ES

#define IBUS_KEY_Cyrillic_ES 0x6f3

IBUS_KEY_Cyrillic_TE

#define IBUS_KEY_Cyrillic_TE 0x6f4

IBUS_KEY_Cyrillic_U

#define IBUS_KEY_Cyrillic_U 0x6f5

IBUS_KEY_Cyrillic_ZHE

#define IBUS_KEY_Cyrillic_ZHE 0x6f6

IBUS_KEY_Cyrillic_VE

#define IBUS_KEY_Cyrillic_VE 0x6f7

IBUS_KEY_Cyrillic_SOFTSIGN

#define IBUS_KEY_Cyrillic_SOFTSIGN 0x6f8

IBUS_KEY_Cyrillic_YERU

#define IBUS_KEY_Cyrillic_YERU 0x6f9

IBUS_KEY_Cyrillic_ZE

#define IBUS_KEY_Cyrillic_ZE 0x6fa

IBUS_KEY_Cyrillic_SHA

#define IBUS_KEY_Cyrillic_SHA 0x6fb

IBUS_KEY_Cyrillic_E

#define IBUS_KEY_Cyrillic_E 0x6fc

IBUS_KEY_Cyrillic_SHCHA

#define IBUS_KEY_Cyrillic_SHCHA 0x6fd

IBUS_KEY_Cyrillic_CHE

#define IBUS_KEY_Cyrillic_CHE 0x6fe

IBUS_KEY_Cyrillic_HARDSIGN

#define IBUS_KEY_Cyrillic_HARDSIGN 0x6ff

IBUS_KEY_Greek_ALPHAaccent

#define IBUS_KEY_Greek_ALPHAaccent 0x7a1

IBUS_KEY_Greek_EPSILONaccent

#define IBUS_KEY_Greek_EPSILONaccent 0x7a2

IBUS_KEY_Greek_ETAaccent

#define IBUS_KEY_Greek_ETAaccent 0x7a3

IBUS_KEY_Greek_IOTAaccent

#define IBUS_KEY_Greek_IOTAaccent 0x7a4

IBUS_KEY_Greek_IOTAdieresis

#define IBUS_KEY_Greek_IOTAdieresis 0x7a5

IBUS_KEY_Greek_IOTAdiaeresis

#define IBUS_KEY_Greek_IOTAdiaeresis 0x7a5

IBUS_KEY_Greek_OMICRONaccent

#define IBUS_KEY_Greek_OMICRONaccent 0x7a7

IBUS_KEY_Greek_UPSILONaccent

#define IBUS_KEY_Greek_UPSILONaccent 0x7a8

IBUS_KEY_Greek_UPSILONdieresis

#define IBUS_KEY_Greek_UPSILONdieresis 0x7a9

IBUS_KEY_Greek_OMEGAaccent

#define IBUS_KEY_Greek_OMEGAaccent 0x7ab

IBUS_KEY_Greek_accentdieresis

#define IBUS_KEY_Greek_accentdieresis 0x7ae

IBUS_KEY_Greek_horizbar

#define IBUS_KEY_Greek_horizbar 0x7af

IBUS_KEY_Greek_alphaaccent

#define IBUS_KEY_Greek_alphaaccent 0x7b1

IBUS_KEY_Greek_epsilonaccent

#define IBUS_KEY_Greek_epsilonaccent 0x7b2

IBUS_KEY_Greek_etaaccent

#define IBUS_KEY_Greek_etaaccent 0x7b3

IBUS_KEY_Greek_iotaaccent

#define IBUS_KEY_Greek_iotaaccent 0x7b4

IBUS_KEY_Greek_iotadieresis

#define IBUS_KEY_Greek_iotadieresis 0x7b5

IBUS_KEY_Greek_iotaaccentdieresis

#define IBUS_KEY_Greek_iotaaccentdieresis 0x7b6

IBUS_KEY_Greek_omicronaccent

#define IBUS_KEY_Greek_omicronaccent 0x7b7

IBUS_KEY_Greek_upsilonaccent

#define IBUS_KEY_Greek_upsilonaccent 0x7b8

IBUS_KEY_Greek_upsilondieresis

#define IBUS_KEY_Greek_upsilondieresis 0x7b9

IBUS_KEY_Greek_upsilonaccentdieresis

#define IBUS_KEY_Greek_upsilonaccentdieresis 0x7ba

IBUS_KEY_Greek_omegaaccent

#define IBUS_KEY_Greek_omegaaccent 0x7bb

IBUS_KEY_Greek_ALPHA

#define IBUS_KEY_Greek_ALPHA 0x7c1

IBUS_KEY_Greek_BETA

#define IBUS_KEY_Greek_BETA 0x7c2

IBUS_KEY_Greek_GAMMA

#define IBUS_KEY_Greek_GAMMA 0x7c3

IBUS_KEY_Greek_DELTA

#define IBUS_KEY_Greek_DELTA 0x7c4

IBUS_KEY_Greek_EPSILON

#define IBUS_KEY_Greek_EPSILON 0x7c5

IBUS_KEY_Greek_ZETA

#define IBUS_KEY_Greek_ZETA 0x7c6

IBUS_KEY_Greek_ETA

#define IBUS_KEY_Greek_ETA 0x7c7

IBUS_KEY_Greek_THETA

#define IBUS_KEY_Greek_THETA 0x7c8

IBUS_KEY_Greek_IOTA

#define IBUS_KEY_Greek_IOTA 0x7c9

IBUS_KEY_Greek_KAPPA

#define IBUS_KEY_Greek_KAPPA 0x7ca

IBUS_KEY_Greek_LAMDA

#define IBUS_KEY_Greek_LAMDA 0x7cb

IBUS_KEY_Greek_LAMBDA

#define IBUS_KEY_Greek_LAMBDA 0x7cb

IBUS_KEY_Greek_MU

#define IBUS_KEY_Greek_MU 0x7cc

IBUS_KEY_Greek_NU

#define IBUS_KEY_Greek_NU 0x7cd

IBUS_KEY_Greek_XI

#define IBUS_KEY_Greek_XI 0x7ce

IBUS_KEY_Greek_OMICRON

#define IBUS_KEY_Greek_OMICRON 0x7cf

IBUS_KEY_Greek_PI

#define IBUS_KEY_Greek_PI 0x7d0

IBUS_KEY_Greek_RHO

#define IBUS_KEY_Greek_RHO 0x7d1

IBUS_KEY_Greek_SIGMA

#define IBUS_KEY_Greek_SIGMA 0x7d2

IBUS_KEY_Greek_TAU

#define IBUS_KEY_Greek_TAU 0x7d4

IBUS_KEY_Greek_UPSILON

#define IBUS_KEY_Greek_UPSILON 0x7d5

IBUS_KEY_Greek_PHI

#define IBUS_KEY_Greek_PHI 0x7d6

IBUS_KEY_Greek_CHI

#define IBUS_KEY_Greek_CHI 0x7d7

IBUS_KEY_Greek_PSI

#define IBUS_KEY_Greek_PSI 0x7d8

IBUS_KEY_Greek_OMEGA

#define IBUS_KEY_Greek_OMEGA 0x7d9

IBUS_KEY_Greek_alpha

#define IBUS_KEY_Greek_alpha 0x7e1

IBUS_KEY_Greek_beta

#define IBUS_KEY_Greek_beta 0x7e2

IBUS_KEY_Greek_gamma

#define IBUS_KEY_Greek_gamma 0x7e3

IBUS_KEY_Greek_delta

#define IBUS_KEY_Greek_delta 0x7e4

IBUS_KEY_Greek_epsilon

#define IBUS_KEY_Greek_epsilon 0x7e5

IBUS_KEY_Greek_zeta

#define IBUS_KEY_Greek_zeta 0x7e6

IBUS_KEY_Greek_eta

#define IBUS_KEY_Greek_eta 0x7e7

IBUS_KEY_Greek_theta

#define IBUS_KEY_Greek_theta 0x7e8

IBUS_KEY_Greek_iota

#define IBUS_KEY_Greek_iota 0x7e9

IBUS_KEY_Greek_kappa

#define IBUS_KEY_Greek_kappa 0x7ea

IBUS_KEY_Greek_lamda

#define IBUS_KEY_Greek_lamda 0x7eb

IBUS_KEY_Greek_lambda

#define IBUS_KEY_Greek_lambda 0x7eb

IBUS_KEY_Greek_mu

#define IBUS_KEY_Greek_mu 0x7ec

IBUS_KEY_Greek_nu

#define IBUS_KEY_Greek_nu 0x7ed

IBUS_KEY_Greek_xi

#define IBUS_KEY_Greek_xi 0x7ee

IBUS_KEY_Greek_omicron

#define IBUS_KEY_Greek_omicron 0x7ef

IBUS_KEY_Greek_pi

#define IBUS_KEY_Greek_pi 0x7f0

IBUS_KEY_Greek_rho

#define IBUS_KEY_Greek_rho 0x7f1

IBUS_KEY_Greek_sigma

#define IBUS_KEY_Greek_sigma 0x7f2

IBUS_KEY_Greek_finalsmallsigma

#define IBUS_KEY_Greek_finalsmallsigma 0x7f3

IBUS_KEY_Greek_tau

#define IBUS_KEY_Greek_tau 0x7f4

IBUS_KEY_Greek_upsilon

#define IBUS_KEY_Greek_upsilon 0x7f5

IBUS_KEY_Greek_phi

#define IBUS_KEY_Greek_phi 0x7f6

IBUS_KEY_Greek_chi

#define IBUS_KEY_Greek_chi 0x7f7

IBUS_KEY_Greek_psi

#define IBUS_KEY_Greek_psi 0x7f8

IBUS_KEY_Greek_omega

#define IBUS_KEY_Greek_omega 0x7f9

IBUS_KEY_Greek_switch

#define IBUS_KEY_Greek_switch 0xff7e

IBUS_KEY_leftradical

#define IBUS_KEY_leftradical 0x8a1

IBUS_KEY_topleftradical

#define IBUS_KEY_topleftradical 0x8a2

IBUS_KEY_horizconnector

#define IBUS_KEY_horizconnector 0x8a3

IBUS_KEY_topintegral

#define IBUS_KEY_topintegral 0x8a4

IBUS_KEY_botintegral

#define IBUS_KEY_botintegral 0x8a5

IBUS_KEY_vertconnector

#define IBUS_KEY_vertconnector 0x8a6

IBUS_KEY_topleftsqbracket

#define IBUS_KEY_topleftsqbracket 0x8a7

IBUS_KEY_botleftsqbracket

#define IBUS_KEY_botleftsqbracket 0x8a8

IBUS_KEY_toprightsqbracket

#define IBUS_KEY_toprightsqbracket 0x8a9

IBUS_KEY_botrightsqbracket

#define IBUS_KEY_botrightsqbracket 0x8aa

IBUS_KEY_topleftparens

#define IBUS_KEY_topleftparens 0x8ab

IBUS_KEY_botleftparens

#define IBUS_KEY_botleftparens 0x8ac

IBUS_KEY_toprightparens

#define IBUS_KEY_toprightparens 0x8ad

IBUS_KEY_botrightparens

#define IBUS_KEY_botrightparens 0x8ae

IBUS_KEY_leftmiddlecurlybrace

#define IBUS_KEY_leftmiddlecurlybrace 0x8af

IBUS_KEY_rightmiddlecurlybrace

#define IBUS_KEY_rightmiddlecurlybrace 0x8b0

IBUS_KEY_topleftsummation

#define IBUS_KEY_topleftsummation 0x8b1

IBUS_KEY_botleftsummation

#define IBUS_KEY_botleftsummation 0x8b2

IBUS_KEY_topvertsummationconnector

#define IBUS_KEY_topvertsummationconnector 0x8b3

IBUS_KEY_botvertsummationconnector

#define IBUS_KEY_botvertsummationconnector 0x8b4

IBUS_KEY_toprightsummation

#define IBUS_KEY_toprightsummation 0x8b5

IBUS_KEY_botrightsummation

#define IBUS_KEY_botrightsummation 0x8b6

IBUS_KEY_rightmiddlesummation

#define IBUS_KEY_rightmiddlesummation 0x8b7

IBUS_KEY_lessthanequal

#define IBUS_KEY_lessthanequal 0x8bc

IBUS_KEY_notequal

#define IBUS_KEY_notequal 0x8bd

IBUS_KEY_greaterthanequal

#define IBUS_KEY_greaterthanequal 0x8be

IBUS_KEY_integral

#define IBUS_KEY_integral 0x8bf

IBUS_KEY_therefore

#define IBUS_KEY_therefore 0x8c0

IBUS_KEY_variation

#define IBUS_KEY_variation 0x8c1

IBUS_KEY_infinity

#define IBUS_KEY_infinity 0x8c2

IBUS_KEY_nabla

#define IBUS_KEY_nabla 0x8c5

IBUS_KEY_approximate

#define IBUS_KEY_approximate 0x8c8

IBUS_KEY_similarequal

#define IBUS_KEY_similarequal 0x8c9

IBUS_KEY_ifonlyif

#define IBUS_KEY_ifonlyif 0x8cd

IBUS_KEY_implies

#define IBUS_KEY_implies 0x8ce

IBUS_KEY_identical

#define IBUS_KEY_identical 0x8cf

IBUS_KEY_radical

#define IBUS_KEY_radical 0x8d6

IBUS_KEY_includedin

#define IBUS_KEY_includedin 0x8da

IBUS_KEY_includes

#define IBUS_KEY_includes 0x8db

IBUS_KEY_intersection

#define IBUS_KEY_intersection 0x8dc

IBUS_KEY_union

#define IBUS_KEY_union 0x8dd

IBUS_KEY_logicaland

#define IBUS_KEY_logicaland 0x8de

IBUS_KEY_logicalor

#define IBUS_KEY_logicalor 0x8df

IBUS_KEY_partialderivative

#define IBUS_KEY_partialderivative 0x8ef

IBUS_KEY_function

#define IBUS_KEY_function 0x8f6

IBUS_KEY_leftarrow

#define IBUS_KEY_leftarrow 0x8fb

IBUS_KEY_uparrow

#define IBUS_KEY_uparrow 0x8fc

IBUS_KEY_rightarrow

#define IBUS_KEY_rightarrow 0x8fd

IBUS_KEY_downarrow

#define IBUS_KEY_downarrow 0x8fe

IBUS_KEY_blank

#define IBUS_KEY_blank 0x9df

IBUS_KEY_soliddiamond

#define IBUS_KEY_soliddiamond 0x9e0

IBUS_KEY_checkerboard

#define IBUS_KEY_checkerboard 0x9e1

IBUS_KEY_ht

#define IBUS_KEY_ht 0x9e2

IBUS_KEY_ff

#define IBUS_KEY_ff 0x9e3

IBUS_KEY_cr

#define IBUS_KEY_cr 0x9e4

IBUS_KEY_lf

#define IBUS_KEY_lf 0x9e5

IBUS_KEY_nl

#define IBUS_KEY_nl 0x9e8

IBUS_KEY_vt

#define IBUS_KEY_vt 0x9e9

IBUS_KEY_lowrightcorner

#define IBUS_KEY_lowrightcorner 0x9ea

IBUS_KEY_uprightcorner

#define IBUS_KEY_uprightcorner 0x9eb

IBUS_KEY_upleftcorner

#define IBUS_KEY_upleftcorner 0x9ec

IBUS_KEY_lowleftcorner

#define IBUS_KEY_lowleftcorner 0x9ed

IBUS_KEY_crossinglines

#define IBUS_KEY_crossinglines 0x9ee

IBUS_KEY_horizlinescan1

#define IBUS_KEY_horizlinescan1 0x9ef

IBUS_KEY_horizlinescan3

#define IBUS_KEY_horizlinescan3 0x9f0

IBUS_KEY_horizlinescan5

#define IBUS_KEY_horizlinescan5 0x9f1

IBUS_KEY_horizlinescan7

#define IBUS_KEY_horizlinescan7 0x9f2

IBUS_KEY_horizlinescan9

#define IBUS_KEY_horizlinescan9 0x9f3

IBUS_KEY_leftt

#define IBUS_KEY_leftt 0x9f4

IBUS_KEY_rightt

#define IBUS_KEY_rightt 0x9f5

IBUS_KEY_bott

#define IBUS_KEY_bott 0x9f6

IBUS_KEY_topt

#define IBUS_KEY_topt 0x9f7

IBUS_KEY_vertbar

#define IBUS_KEY_vertbar 0x9f8

IBUS_KEY_emspace

#define IBUS_KEY_emspace 0xaa1

IBUS_KEY_enspace

#define IBUS_KEY_enspace 0xaa2

IBUS_KEY_em3space

#define IBUS_KEY_em3space 0xaa3

IBUS_KEY_em4space

#define IBUS_KEY_em4space 0xaa4

IBUS_KEY_digitspace

#define IBUS_KEY_digitspace 0xaa5

IBUS_KEY_punctspace

#define IBUS_KEY_punctspace 0xaa6

IBUS_KEY_thinspace

#define IBUS_KEY_thinspace 0xaa7

IBUS_KEY_hairspace

#define IBUS_KEY_hairspace 0xaa8

IBUS_KEY_emdash

#define IBUS_KEY_emdash 0xaa9

IBUS_KEY_endash

#define IBUS_KEY_endash 0xaaa

IBUS_KEY_signifblank

#define IBUS_KEY_signifblank 0xaac

IBUS_KEY_ellipsis

#define IBUS_KEY_ellipsis 0xaae

IBUS_KEY_doubbaselinedot

#define IBUS_KEY_doubbaselinedot 0xaaf

IBUS_KEY_onethird

#define IBUS_KEY_onethird 0xab0

IBUS_KEY_twothirds

#define IBUS_KEY_twothirds 0xab1

IBUS_KEY_onefifth

#define IBUS_KEY_onefifth 0xab2

IBUS_KEY_twofifths

#define IBUS_KEY_twofifths 0xab3

IBUS_KEY_threefifths

#define IBUS_KEY_threefifths 0xab4

IBUS_KEY_fourfifths

#define IBUS_KEY_fourfifths 0xab5

IBUS_KEY_onesixth

#define IBUS_KEY_onesixth 0xab6

IBUS_KEY_fivesixths

#define IBUS_KEY_fivesixths 0xab7

IBUS_KEY_careof

#define IBUS_KEY_careof 0xab8

IBUS_KEY_figdash

#define IBUS_KEY_figdash 0xabb

IBUS_KEY_leftanglebracket

#define IBUS_KEY_leftanglebracket 0xabc

IBUS_KEY_decimalpoint

#define IBUS_KEY_decimalpoint 0xabd

IBUS_KEY_rightanglebracket

#define IBUS_KEY_rightanglebracket 0xabe

IBUS_KEY_marker

#define IBUS_KEY_marker 0xabf

IBUS_KEY_oneeighth

#define IBUS_KEY_oneeighth 0xac3

IBUS_KEY_threeeighths

#define IBUS_KEY_threeeighths 0xac4

IBUS_KEY_fiveeighths

#define IBUS_KEY_fiveeighths 0xac5

IBUS_KEY_seveneighths

#define IBUS_KEY_seveneighths 0xac6

IBUS_KEY_trademark

#define IBUS_KEY_trademark 0xac9

IBUS_KEY_signaturemark

#define IBUS_KEY_signaturemark 0xaca

IBUS_KEY_trademarkincircle

#define IBUS_KEY_trademarkincircle 0xacb

IBUS_KEY_leftopentriangle

#define IBUS_KEY_leftopentriangle 0xacc

IBUS_KEY_rightopentriangle

#define IBUS_KEY_rightopentriangle 0xacd

IBUS_KEY_emopencircle

#define IBUS_KEY_emopencircle 0xace

IBUS_KEY_emopenrectangle

#define IBUS_KEY_emopenrectangle 0xacf

IBUS_KEY_leftsinglequotemark

#define IBUS_KEY_leftsinglequotemark 0xad0

IBUS_KEY_rightsinglequotemark

#define IBUS_KEY_rightsinglequotemark 0xad1

IBUS_KEY_leftdoublequotemark

#define IBUS_KEY_leftdoublequotemark 0xad2

IBUS_KEY_rightdoublequotemark

#define IBUS_KEY_rightdoublequotemark 0xad3

IBUS_KEY_prescription

#define IBUS_KEY_prescription 0xad4

IBUS_KEY_minutes

#define IBUS_KEY_minutes 0xad6

IBUS_KEY_seconds

#define IBUS_KEY_seconds 0xad7

IBUS_KEY_latincross

#define IBUS_KEY_latincross 0xad9

IBUS_KEY_hexagram

#define IBUS_KEY_hexagram 0xada

IBUS_KEY_filledrectbullet

#define IBUS_KEY_filledrectbullet 0xadb

IBUS_KEY_filledlefttribullet

#define IBUS_KEY_filledlefttribullet 0xadc

IBUS_KEY_filledrighttribullet

#define IBUS_KEY_filledrighttribullet 0xadd

IBUS_KEY_emfilledcircle

#define IBUS_KEY_emfilledcircle 0xade

IBUS_KEY_emfilledrect

#define IBUS_KEY_emfilledrect 0xadf

IBUS_KEY_enopencircbullet

#define IBUS_KEY_enopencircbullet 0xae0

IBUS_KEY_enopensquarebullet

#define IBUS_KEY_enopensquarebullet 0xae1

IBUS_KEY_openrectbullet

#define IBUS_KEY_openrectbullet 0xae2

IBUS_KEY_opentribulletup

#define IBUS_KEY_opentribulletup 0xae3

IBUS_KEY_opentribulletdown

#define IBUS_KEY_opentribulletdown 0xae4

IBUS_KEY_openstar

#define IBUS_KEY_openstar 0xae5

IBUS_KEY_enfilledcircbullet

#define IBUS_KEY_enfilledcircbullet 0xae6

IBUS_KEY_enfilledsqbullet

#define IBUS_KEY_enfilledsqbullet 0xae7

IBUS_KEY_filledtribulletup

#define IBUS_KEY_filledtribulletup 0xae8

IBUS_KEY_filledtribulletdown

#define IBUS_KEY_filledtribulletdown 0xae9

IBUS_KEY_leftpointer

#define IBUS_KEY_leftpointer 0xaea

IBUS_KEY_rightpointer

#define IBUS_KEY_rightpointer 0xaeb

IBUS_KEY_club

#define IBUS_KEY_club 0xaec

IBUS_KEY_diamond

#define IBUS_KEY_diamond 0xaed

IBUS_KEY_heart

#define IBUS_KEY_heart 0xaee

IBUS_KEY_maltesecross

#define IBUS_KEY_maltesecross 0xaf0

IBUS_KEY_dagger

#define IBUS_KEY_dagger 0xaf1

IBUS_KEY_doubledagger

#define IBUS_KEY_doubledagger 0xaf2

IBUS_KEY_checkmark

#define IBUS_KEY_checkmark 0xaf3

IBUS_KEY_ballotcross

#define IBUS_KEY_ballotcross 0xaf4

IBUS_KEY_musicalsharp

#define IBUS_KEY_musicalsharp 0xaf5

IBUS_KEY_musicalflat

#define IBUS_KEY_musicalflat 0xaf6

IBUS_KEY_malesymbol

#define IBUS_KEY_malesymbol 0xaf7

IBUS_KEY_femalesymbol

#define IBUS_KEY_femalesymbol 0xaf8

IBUS_KEY_telephone

#define IBUS_KEY_telephone 0xaf9

IBUS_KEY_telephonerecorder

#define IBUS_KEY_telephonerecorder 0xafa

IBUS_KEY_phonographcopyright

#define IBUS_KEY_phonographcopyright 0xafb

IBUS_KEY_caret

#define IBUS_KEY_caret 0xafc

IBUS_KEY_singlelowquotemark

#define IBUS_KEY_singlelowquotemark 0xafd

IBUS_KEY_doublelowquotemark

#define IBUS_KEY_doublelowquotemark 0xafe

IBUS_KEY_cursor

#define IBUS_KEY_cursor 0xaff

IBUS_KEY_leftcaret

#define IBUS_KEY_leftcaret 0xba3

IBUS_KEY_rightcaret

#define IBUS_KEY_rightcaret 0xba6

IBUS_KEY_downcaret

#define IBUS_KEY_downcaret 0xba8

IBUS_KEY_upcaret

#define IBUS_KEY_upcaret 0xba9

IBUS_KEY_overbar

#define IBUS_KEY_overbar 0xbc0

IBUS_KEY_downtack

#define IBUS_KEY_downtack 0xbc2

IBUS_KEY_upshoe

#define IBUS_KEY_upshoe 0xbc3

IBUS_KEY_downstile

#define IBUS_KEY_downstile 0xbc4

IBUS_KEY_underbar

#define IBUS_KEY_underbar 0xbc6

IBUS_KEY_jot

#define IBUS_KEY_jot 0xbca

IBUS_KEY_quad

#define IBUS_KEY_quad 0xbcc

IBUS_KEY_uptack

#define IBUS_KEY_uptack 0xbce

IBUS_KEY_circle

#define IBUS_KEY_circle 0xbcf

IBUS_KEY_upstile

#define IBUS_KEY_upstile 0xbd3

IBUS_KEY_downshoe

#define IBUS_KEY_downshoe 0xbd6

IBUS_KEY_rightshoe

#define IBUS_KEY_rightshoe 0xbd8

IBUS_KEY_leftshoe

#define IBUS_KEY_leftshoe 0xbda

IBUS_KEY_lefttack

#define IBUS_KEY_lefttack 0xbdc

IBUS_KEY_righttack

#define IBUS_KEY_righttack 0xbfc

IBUS_KEY_hebrew_doublelowline

#define IBUS_KEY_hebrew_doublelowline 0xcdf

IBUS_KEY_hebrew_aleph

#define IBUS_KEY_hebrew_aleph 0xce0

IBUS_KEY_hebrew_bet

#define IBUS_KEY_hebrew_bet 0xce1

IBUS_KEY_hebrew_beth

#define IBUS_KEY_hebrew_beth 0xce1

IBUS_KEY_hebrew_gimel

#define IBUS_KEY_hebrew_gimel 0xce2

IBUS_KEY_hebrew_gimmel

#define IBUS_KEY_hebrew_gimmel 0xce2

IBUS_KEY_hebrew_dalet

#define IBUS_KEY_hebrew_dalet 0xce3

IBUS_KEY_hebrew_daleth

#define IBUS_KEY_hebrew_daleth 0xce3

IBUS_KEY_hebrew_he

#define IBUS_KEY_hebrew_he 0xce4

IBUS_KEY_hebrew_waw

#define IBUS_KEY_hebrew_waw 0xce5

IBUS_KEY_hebrew_zain

#define IBUS_KEY_hebrew_zain 0xce6

IBUS_KEY_hebrew_zayin

#define IBUS_KEY_hebrew_zayin 0xce6

IBUS_KEY_hebrew_chet

#define IBUS_KEY_hebrew_chet 0xce7

IBUS_KEY_hebrew_het

#define IBUS_KEY_hebrew_het 0xce7

IBUS_KEY_hebrew_tet

#define IBUS_KEY_hebrew_tet 0xce8

IBUS_KEY_hebrew_teth

#define IBUS_KEY_hebrew_teth 0xce8

IBUS_KEY_hebrew_yod

#define IBUS_KEY_hebrew_yod 0xce9

IBUS_KEY_hebrew_finalkaph

#define IBUS_KEY_hebrew_finalkaph 0xcea

IBUS_KEY_hebrew_kaph

#define IBUS_KEY_hebrew_kaph 0xceb

IBUS_KEY_hebrew_lamed

#define IBUS_KEY_hebrew_lamed 0xcec

IBUS_KEY_hebrew_finalmem

#define IBUS_KEY_hebrew_finalmem 0xced

IBUS_KEY_hebrew_mem

#define IBUS_KEY_hebrew_mem 0xcee

IBUS_KEY_hebrew_finalnun

#define IBUS_KEY_hebrew_finalnun 0xcef

IBUS_KEY_hebrew_nun

#define IBUS_KEY_hebrew_nun 0xcf0

IBUS_KEY_hebrew_samech

#define IBUS_KEY_hebrew_samech 0xcf1

IBUS_KEY_hebrew_samekh

#define IBUS_KEY_hebrew_samekh 0xcf1

IBUS_KEY_hebrew_ayin

#define IBUS_KEY_hebrew_ayin 0xcf2

IBUS_KEY_hebrew_finalpe

#define IBUS_KEY_hebrew_finalpe 0xcf3

IBUS_KEY_hebrew_pe

#define IBUS_KEY_hebrew_pe 0xcf4

IBUS_KEY_hebrew_finalzade

#define IBUS_KEY_hebrew_finalzade 0xcf5

IBUS_KEY_hebrew_finalzadi

#define IBUS_KEY_hebrew_finalzadi 0xcf5

IBUS_KEY_hebrew_zade

#define IBUS_KEY_hebrew_zade 0xcf6

IBUS_KEY_hebrew_zadi

#define IBUS_KEY_hebrew_zadi 0xcf6

IBUS_KEY_hebrew_qoph

#define IBUS_KEY_hebrew_qoph 0xcf7

IBUS_KEY_hebrew_kuf

#define IBUS_KEY_hebrew_kuf 0xcf7

IBUS_KEY_hebrew_resh

#define IBUS_KEY_hebrew_resh 0xcf8

IBUS_KEY_hebrew_shin

#define IBUS_KEY_hebrew_shin 0xcf9

IBUS_KEY_hebrew_taw

#define IBUS_KEY_hebrew_taw 0xcfa

IBUS_KEY_hebrew_taf

#define IBUS_KEY_hebrew_taf 0xcfa

IBUS_KEY_Hebrew_switch

#define IBUS_KEY_Hebrew_switch 0xff7e

IBUS_KEY_Thai_kokai

#define IBUS_KEY_Thai_kokai 0xda1

IBUS_KEY_Thai_khokhai

#define IBUS_KEY_Thai_khokhai 0xda2

IBUS_KEY_Thai_khokhuat

#define IBUS_KEY_Thai_khokhuat 0xda3

IBUS_KEY_Thai_khokhwai

#define IBUS_KEY_Thai_khokhwai 0xda4

IBUS_KEY_Thai_khokhon

#define IBUS_KEY_Thai_khokhon 0xda5

IBUS_KEY_Thai_khorakhang

#define IBUS_KEY_Thai_khorakhang 0xda6

IBUS_KEY_Thai_ngongu

#define IBUS_KEY_Thai_ngongu 0xda7

IBUS_KEY_Thai_chochan

#define IBUS_KEY_Thai_chochan 0xda8

IBUS_KEY_Thai_choching

#define IBUS_KEY_Thai_choching 0xda9

IBUS_KEY_Thai_chochang

#define IBUS_KEY_Thai_chochang 0xdaa

IBUS_KEY_Thai_soso

#define IBUS_KEY_Thai_soso 0xdab

IBUS_KEY_Thai_chochoe

#define IBUS_KEY_Thai_chochoe 0xdac

IBUS_KEY_Thai_yoying

#define IBUS_KEY_Thai_yoying 0xdad

IBUS_KEY_Thai_dochada

#define IBUS_KEY_Thai_dochada 0xdae

IBUS_KEY_Thai_topatak

#define IBUS_KEY_Thai_topatak 0xdaf

IBUS_KEY_Thai_thothan

#define IBUS_KEY_Thai_thothan 0xdb0

IBUS_KEY_Thai_thonangmontho

#define IBUS_KEY_Thai_thonangmontho 0xdb1

IBUS_KEY_Thai_thophuthao

#define IBUS_KEY_Thai_thophuthao 0xdb2

IBUS_KEY_Thai_nonen

#define IBUS_KEY_Thai_nonen 0xdb3

IBUS_KEY_Thai_dodek

#define IBUS_KEY_Thai_dodek 0xdb4

IBUS_KEY_Thai_totao

#define IBUS_KEY_Thai_totao 0xdb5

IBUS_KEY_Thai_thothung

#define IBUS_KEY_Thai_thothung 0xdb6

IBUS_KEY_Thai_thothahan

#define IBUS_KEY_Thai_thothahan 0xdb7

IBUS_KEY_Thai_thothong

#define IBUS_KEY_Thai_thothong 0xdb8

IBUS_KEY_Thai_nonu

#define IBUS_KEY_Thai_nonu 0xdb9

IBUS_KEY_Thai_bobaimai

#define IBUS_KEY_Thai_bobaimai 0xdba

IBUS_KEY_Thai_popla

#define IBUS_KEY_Thai_popla 0xdbb

IBUS_KEY_Thai_phophung

#define IBUS_KEY_Thai_phophung 0xdbc

IBUS_KEY_Thai_fofa

#define IBUS_KEY_Thai_fofa 0xdbd

IBUS_KEY_Thai_phophan

#define IBUS_KEY_Thai_phophan 0xdbe

IBUS_KEY_Thai_fofan

#define IBUS_KEY_Thai_fofan 0xdbf

IBUS_KEY_Thai_phosamphao

#define IBUS_KEY_Thai_phosamphao 0xdc0

IBUS_KEY_Thai_moma

#define IBUS_KEY_Thai_moma 0xdc1

IBUS_KEY_Thai_yoyak

#define IBUS_KEY_Thai_yoyak 0xdc2

IBUS_KEY_Thai_rorua

#define IBUS_KEY_Thai_rorua 0xdc3

IBUS_KEY_Thai_ru

#define IBUS_KEY_Thai_ru 0xdc4

IBUS_KEY_Thai_loling

#define IBUS_KEY_Thai_loling 0xdc5

IBUS_KEY_Thai_lu

#define IBUS_KEY_Thai_lu 0xdc6

IBUS_KEY_Thai_wowaen

#define IBUS_KEY_Thai_wowaen 0xdc7

IBUS_KEY_Thai_sosala

#define IBUS_KEY_Thai_sosala 0xdc8

IBUS_KEY_Thai_sorusi

#define IBUS_KEY_Thai_sorusi 0xdc9

IBUS_KEY_Thai_sosua

#define IBUS_KEY_Thai_sosua 0xdca

IBUS_KEY_Thai_hohip

#define IBUS_KEY_Thai_hohip 0xdcb

IBUS_KEY_Thai_lochula

#define IBUS_KEY_Thai_lochula 0xdcc

IBUS_KEY_Thai_oang

#define IBUS_KEY_Thai_oang 0xdcd

IBUS_KEY_Thai_honokhuk

#define IBUS_KEY_Thai_honokhuk 0xdce

IBUS_KEY_Thai_paiyannoi

#define IBUS_KEY_Thai_paiyannoi 0xdcf

IBUS_KEY_Thai_saraa

#define IBUS_KEY_Thai_saraa 0xdd0

IBUS_KEY_Thai_maihanakat

#define IBUS_KEY_Thai_maihanakat 0xdd1

IBUS_KEY_Thai_saraaa

#define IBUS_KEY_Thai_saraaa 0xdd2

IBUS_KEY_Thai_saraam

#define IBUS_KEY_Thai_saraam 0xdd3

IBUS_KEY_Thai_sarai

#define IBUS_KEY_Thai_sarai 0xdd4

IBUS_KEY_Thai_saraii

#define IBUS_KEY_Thai_saraii 0xdd5

IBUS_KEY_Thai_saraue

#define IBUS_KEY_Thai_saraue 0xdd6

IBUS_KEY_Thai_sarauee

#define IBUS_KEY_Thai_sarauee 0xdd7

IBUS_KEY_Thai_sarau

#define IBUS_KEY_Thai_sarau 0xdd8

IBUS_KEY_Thai_sarauu

#define IBUS_KEY_Thai_sarauu 0xdd9

IBUS_KEY_Thai_phinthu

#define IBUS_KEY_Thai_phinthu 0xdda

IBUS_KEY_Thai_maihanakat_maitho

#define IBUS_KEY_Thai_maihanakat_maitho 0xdde

IBUS_KEY_Thai_baht

#define IBUS_KEY_Thai_baht 0xddf

IBUS_KEY_Thai_sarae

#define IBUS_KEY_Thai_sarae 0xde0

IBUS_KEY_Thai_saraae

#define IBUS_KEY_Thai_saraae 0xde1

IBUS_KEY_Thai_sarao

#define IBUS_KEY_Thai_sarao 0xde2

IBUS_KEY_Thai_saraaimaimuan

#define IBUS_KEY_Thai_saraaimaimuan 0xde3

IBUS_KEY_Thai_saraaimaimalai

#define IBUS_KEY_Thai_saraaimaimalai 0xde4

IBUS_KEY_Thai_lakkhangyao

#define IBUS_KEY_Thai_lakkhangyao 0xde5

IBUS_KEY_Thai_maiyamok

#define IBUS_KEY_Thai_maiyamok 0xde6

IBUS_KEY_Thai_maitaikhu

#define IBUS_KEY_Thai_maitaikhu 0xde7

IBUS_KEY_Thai_maiek

#define IBUS_KEY_Thai_maiek 0xde8

IBUS_KEY_Thai_maitho

#define IBUS_KEY_Thai_maitho 0xde9

IBUS_KEY_Thai_maitri

#define IBUS_KEY_Thai_maitri 0xdea

IBUS_KEY_Thai_maichattawa

#define IBUS_KEY_Thai_maichattawa 0xdeb

IBUS_KEY_Thai_thanthakhat

#define IBUS_KEY_Thai_thanthakhat 0xdec

IBUS_KEY_Thai_nikhahit

#define IBUS_KEY_Thai_nikhahit 0xded

IBUS_KEY_Thai_leksun

#define IBUS_KEY_Thai_leksun 0xdf0

IBUS_KEY_Thai_leknung

#define IBUS_KEY_Thai_leknung 0xdf1

IBUS_KEY_Thai_leksong

#define IBUS_KEY_Thai_leksong 0xdf2

IBUS_KEY_Thai_leksam

#define IBUS_KEY_Thai_leksam 0xdf3

IBUS_KEY_Thai_leksi

#define IBUS_KEY_Thai_leksi 0xdf4

IBUS_KEY_Thai_lekha

#define IBUS_KEY_Thai_lekha 0xdf5

IBUS_KEY_Thai_lekhok

#define IBUS_KEY_Thai_lekhok 0xdf6

IBUS_KEY_Thai_lekchet

#define IBUS_KEY_Thai_lekchet 0xdf7

IBUS_KEY_Thai_lekpaet

#define IBUS_KEY_Thai_lekpaet 0xdf8

IBUS_KEY_Thai_lekkao

#define IBUS_KEY_Thai_lekkao 0xdf9

IBUS_KEY_Hangul

#define IBUS_KEY_Hangul 0xff31

IBUS_KEY_Hangul_Start

#define IBUS_KEY_Hangul_Start 0xff32

IBUS_KEY_Hangul_End

#define IBUS_KEY_Hangul_End 0xff33

IBUS_KEY_Hangul_Hanja

#define IBUS_KEY_Hangul_Hanja 0xff34

IBUS_KEY_Hangul_Jamo

#define IBUS_KEY_Hangul_Jamo 0xff35

IBUS_KEY_Hangul_Romaja

#define IBUS_KEY_Hangul_Romaja 0xff36

IBUS_KEY_Hangul_Codeinput

#define IBUS_KEY_Hangul_Codeinput 0xff37

IBUS_KEY_Hangul_Jeonja

#define IBUS_KEY_Hangul_Jeonja 0xff38

IBUS_KEY_Hangul_Banja

#define IBUS_KEY_Hangul_Banja 0xff39

IBUS_KEY_Hangul_PreHanja

#define IBUS_KEY_Hangul_PreHanja 0xff3a

IBUS_KEY_Hangul_PostHanja

#define IBUS_KEY_Hangul_PostHanja 0xff3b

IBUS_KEY_Hangul_SingleCandidate

#define IBUS_KEY_Hangul_SingleCandidate 0xff3c

IBUS_KEY_Hangul_MultipleCandidate

#define IBUS_KEY_Hangul_MultipleCandidate 0xff3d

IBUS_KEY_Hangul_PreviousCandidate

#define IBUS_KEY_Hangul_PreviousCandidate 0xff3e

IBUS_KEY_Hangul_Special

#define IBUS_KEY_Hangul_Special 0xff3f

IBUS_KEY_Hangul_switch

#define IBUS_KEY_Hangul_switch 0xff7e

IBUS_KEY_Hangul_Kiyeog

#define IBUS_KEY_Hangul_Kiyeog 0xea1

IBUS_KEY_Hangul_SsangKiyeog

#define IBUS_KEY_Hangul_SsangKiyeog 0xea2

IBUS_KEY_Hangul_KiyeogSios

#define IBUS_KEY_Hangul_KiyeogSios 0xea3

IBUS_KEY_Hangul_Nieun

#define IBUS_KEY_Hangul_Nieun 0xea4

IBUS_KEY_Hangul_NieunJieuj

#define IBUS_KEY_Hangul_NieunJieuj 0xea5

IBUS_KEY_Hangul_NieunHieuh

#define IBUS_KEY_Hangul_NieunHieuh 0xea6

IBUS_KEY_Hangul_Dikeud

#define IBUS_KEY_Hangul_Dikeud 0xea7

IBUS_KEY_Hangul_SsangDikeud

#define IBUS_KEY_Hangul_SsangDikeud 0xea8

IBUS_KEY_Hangul_Rieul

#define IBUS_KEY_Hangul_Rieul 0xea9

IBUS_KEY_Hangul_RieulKiyeog

#define IBUS_KEY_Hangul_RieulKiyeog 0xeaa

IBUS_KEY_Hangul_RieulMieum

#define IBUS_KEY_Hangul_RieulMieum 0xeab

IBUS_KEY_Hangul_RieulPieub

#define IBUS_KEY_Hangul_RieulPieub 0xeac

IBUS_KEY_Hangul_RieulSios

#define IBUS_KEY_Hangul_RieulSios 0xead

IBUS_KEY_Hangul_RieulTieut

#define IBUS_KEY_Hangul_RieulTieut 0xeae

IBUS_KEY_Hangul_RieulPhieuf

#define IBUS_KEY_Hangul_RieulPhieuf 0xeaf

IBUS_KEY_Hangul_RieulHieuh

#define IBUS_KEY_Hangul_RieulHieuh 0xeb0

IBUS_KEY_Hangul_Mieum

#define IBUS_KEY_Hangul_Mieum 0xeb1

IBUS_KEY_Hangul_Pieub

#define IBUS_KEY_Hangul_Pieub 0xeb2

IBUS_KEY_Hangul_SsangPieub

#define IBUS_KEY_Hangul_SsangPieub 0xeb3

IBUS_KEY_Hangul_PieubSios

#define IBUS_KEY_Hangul_PieubSios 0xeb4

IBUS_KEY_Hangul_Sios

#define IBUS_KEY_Hangul_Sios 0xeb5

IBUS_KEY_Hangul_SsangSios

#define IBUS_KEY_Hangul_SsangSios 0xeb6

IBUS_KEY_Hangul_Ieung

#define IBUS_KEY_Hangul_Ieung 0xeb7

IBUS_KEY_Hangul_Jieuj

#define IBUS_KEY_Hangul_Jieuj 0xeb8

IBUS_KEY_Hangul_SsangJieuj

#define IBUS_KEY_Hangul_SsangJieuj 0xeb9

IBUS_KEY_Hangul_Cieuc

#define IBUS_KEY_Hangul_Cieuc 0xeba

IBUS_KEY_Hangul_Khieuq

#define IBUS_KEY_Hangul_Khieuq 0xebb

IBUS_KEY_Hangul_Tieut

#define IBUS_KEY_Hangul_Tieut 0xebc

IBUS_KEY_Hangul_Phieuf

#define IBUS_KEY_Hangul_Phieuf 0xebd

IBUS_KEY_Hangul_Hieuh

#define IBUS_KEY_Hangul_Hieuh 0xebe

IBUS_KEY_Hangul_A

#define IBUS_KEY_Hangul_A 0xebf

IBUS_KEY_Hangul_AE

#define IBUS_KEY_Hangul_AE 0xec0

IBUS_KEY_Hangul_YA

#define IBUS_KEY_Hangul_YA 0xec1

IBUS_KEY_Hangul_YAE

#define IBUS_KEY_Hangul_YAE 0xec2

IBUS_KEY_Hangul_EO

#define IBUS_KEY_Hangul_EO 0xec3

IBUS_KEY_Hangul_E

#define IBUS_KEY_Hangul_E 0xec4

IBUS_KEY_Hangul_YEO

#define IBUS_KEY_Hangul_YEO 0xec5

IBUS_KEY_Hangul_YE

#define IBUS_KEY_Hangul_YE 0xec6

IBUS_KEY_Hangul_O

#define IBUS_KEY_Hangul_O 0xec7

IBUS_KEY_Hangul_WA

#define IBUS_KEY_Hangul_WA 0xec8

IBUS_KEY_Hangul_WAE

#define IBUS_KEY_Hangul_WAE 0xec9

IBUS_KEY_Hangul_OE

#define IBUS_KEY_Hangul_OE 0xeca

IBUS_KEY_Hangul_YO

#define IBUS_KEY_Hangul_YO 0xecb

IBUS_KEY_Hangul_U

#define IBUS_KEY_Hangul_U 0xecc

IBUS_KEY_Hangul_WEO

#define IBUS_KEY_Hangul_WEO 0xecd

IBUS_KEY_Hangul_WE

#define IBUS_KEY_Hangul_WE 0xece

IBUS_KEY_Hangul_WI

#define IBUS_KEY_Hangul_WI 0xecf

IBUS_KEY_Hangul_YU

#define IBUS_KEY_Hangul_YU 0xed0

IBUS_KEY_Hangul_EU

#define IBUS_KEY_Hangul_EU 0xed1

IBUS_KEY_Hangul_YI

#define IBUS_KEY_Hangul_YI 0xed2

IBUS_KEY_Hangul_I

#define IBUS_KEY_Hangul_I 0xed3

IBUS_KEY_Hangul_J_Kiyeog

#define IBUS_KEY_Hangul_J_Kiyeog 0xed4

IBUS_KEY_Hangul_J_SsangKiyeog

#define IBUS_KEY_Hangul_J_SsangKiyeog 0xed5

IBUS_KEY_Hangul_J_KiyeogSios

#define IBUS_KEY_Hangul_J_KiyeogSios 0xed6

IBUS_KEY_Hangul_J_Nieun

#define IBUS_KEY_Hangul_J_Nieun 0xed7

IBUS_KEY_Hangul_J_NieunJieuj

#define IBUS_KEY_Hangul_J_NieunJieuj 0xed8

IBUS_KEY_Hangul_J_NieunHieuh

#define IBUS_KEY_Hangul_J_NieunHieuh 0xed9

IBUS_KEY_Hangul_J_Dikeud

#define IBUS_KEY_Hangul_J_Dikeud 0xeda

IBUS_KEY_Hangul_J_Rieul

#define IBUS_KEY_Hangul_J_Rieul 0xedb

IBUS_KEY_Hangul_J_RieulKiyeog

#define IBUS_KEY_Hangul_J_RieulKiyeog 0xedc

IBUS_KEY_Hangul_J_RieulMieum

#define IBUS_KEY_Hangul_J_RieulMieum 0xedd

IBUS_KEY_Hangul_J_RieulPieub

#define IBUS_KEY_Hangul_J_RieulPieub 0xede

IBUS_KEY_Hangul_J_RieulSios

#define IBUS_KEY_Hangul_J_RieulSios 0xedf

IBUS_KEY_Hangul_J_RieulTieut

#define IBUS_KEY_Hangul_J_RieulTieut 0xee0

IBUS_KEY_Hangul_J_RieulPhieuf

#define IBUS_KEY_Hangul_J_RieulPhieuf 0xee1

IBUS_KEY_Hangul_J_RieulHieuh

#define IBUS_KEY_Hangul_J_RieulHieuh 0xee2

IBUS_KEY_Hangul_J_Mieum

#define IBUS_KEY_Hangul_J_Mieum 0xee3

IBUS_KEY_Hangul_J_Pieub

#define IBUS_KEY_Hangul_J_Pieub 0xee4

IBUS_KEY_Hangul_J_PieubSios

#define IBUS_KEY_Hangul_J_PieubSios 0xee5

IBUS_KEY_Hangul_J_Sios

#define IBUS_KEY_Hangul_J_Sios 0xee6

IBUS_KEY_Hangul_J_SsangSios

#define IBUS_KEY_Hangul_J_SsangSios 0xee7

IBUS_KEY_Hangul_J_Ieung

#define IBUS_KEY_Hangul_J_Ieung 0xee8

IBUS_KEY_Hangul_J_Jieuj

#define IBUS_KEY_Hangul_J_Jieuj 0xee9

IBUS_KEY_Hangul_J_Cieuc

#define IBUS_KEY_Hangul_J_Cieuc 0xeea

IBUS_KEY_Hangul_J_Khieuq

#define IBUS_KEY_Hangul_J_Khieuq 0xeeb

IBUS_KEY_Hangul_J_Tieut

#define IBUS_KEY_Hangul_J_Tieut 0xeec

IBUS_KEY_Hangul_J_Phieuf

#define IBUS_KEY_Hangul_J_Phieuf 0xeed

IBUS_KEY_Hangul_J_Hieuh

#define IBUS_KEY_Hangul_J_Hieuh 0xeee

IBUS_KEY_Hangul_RieulYeorinHieuh

#define IBUS_KEY_Hangul_RieulYeorinHieuh 0xeef

IBUS_KEY_Hangul_SunkyeongeumMieum

#define IBUS_KEY_Hangul_SunkyeongeumMieum 0xef0

IBUS_KEY_Hangul_SunkyeongeumPieub

#define IBUS_KEY_Hangul_SunkyeongeumPieub 0xef1

IBUS_KEY_Hangul_PanSios

#define IBUS_KEY_Hangul_PanSios 0xef2

IBUS_KEY_Hangul_KkogjiDalrinIeung

#define IBUS_KEY_Hangul_KkogjiDalrinIeung 0xef3

IBUS_KEY_Hangul_SunkyeongeumPhieuf

#define IBUS_KEY_Hangul_SunkyeongeumPhieuf 0xef4

IBUS_KEY_Hangul_YeorinHieuh

#define IBUS_KEY_Hangul_YeorinHieuh 0xef5

IBUS_KEY_Hangul_AraeA

#define IBUS_KEY_Hangul_AraeA 0xef6

IBUS_KEY_Hangul_AraeAE

#define IBUS_KEY_Hangul_AraeAE 0xef7

IBUS_KEY_Hangul_J_PanSios

#define IBUS_KEY_Hangul_J_PanSios 0xef8

IBUS_KEY_Hangul_J_KkogjiDalrinIeung

#define IBUS_KEY_Hangul_J_KkogjiDalrinIeung 0xef9

IBUS_KEY_Hangul_J_YeorinHieuh

#define IBUS_KEY_Hangul_J_YeorinHieuh 0xefa

IBUS_KEY_Korean_Won

#define IBUS_KEY_Korean_Won 0xeff

IBUS_KEY_Armenian_ligature_ew

#define IBUS_KEY_Armenian_ligature_ew 0x1000587

IBUS_KEY_Armenian_full_stop

#define IBUS_KEY_Armenian_full_stop 0x1000589

IBUS_KEY_Armenian_verjaket

#define IBUS_KEY_Armenian_verjaket 0x1000589

IBUS_KEY_Armenian_separation_mark

#define IBUS_KEY_Armenian_separation_mark 0x100055d

IBUS_KEY_Armenian_but

#define IBUS_KEY_Armenian_but 0x100055d

IBUS_KEY_Armenian_hyphen

#define IBUS_KEY_Armenian_hyphen 0x100058a

IBUS_KEY_Armenian_yentamna

#define IBUS_KEY_Armenian_yentamna 0x100058a

IBUS_KEY_Armenian_exclam

#define IBUS_KEY_Armenian_exclam 0x100055c

IBUS_KEY_Armenian_amanak

#define IBUS_KEY_Armenian_amanak 0x100055c

IBUS_KEY_Armenian_accent

#define IBUS_KEY_Armenian_accent 0x100055b

IBUS_KEY_Armenian_shesht

#define IBUS_KEY_Armenian_shesht 0x100055b

IBUS_KEY_Armenian_question

#define IBUS_KEY_Armenian_question 0x100055e

IBUS_KEY_Armenian_paruyk

#define IBUS_KEY_Armenian_paruyk 0x100055e

IBUS_KEY_Armenian_AYB

#define IBUS_KEY_Armenian_AYB 0x1000531

IBUS_KEY_Armenian_ayb

#define IBUS_KEY_Armenian_ayb 0x1000561

IBUS_KEY_Armenian_BEN

#define IBUS_KEY_Armenian_BEN 0x1000532

IBUS_KEY_Armenian_ben

#define IBUS_KEY_Armenian_ben 0x1000562

IBUS_KEY_Armenian_GIM

#define IBUS_KEY_Armenian_GIM 0x1000533

IBUS_KEY_Armenian_gim

#define IBUS_KEY_Armenian_gim 0x1000563

IBUS_KEY_Armenian_DA

#define IBUS_KEY_Armenian_DA 0x1000534

IBUS_KEY_Armenian_da

#define IBUS_KEY_Armenian_da 0x1000564

IBUS_KEY_Armenian_YECH

#define IBUS_KEY_Armenian_YECH 0x1000535

IBUS_KEY_Armenian_yech

#define IBUS_KEY_Armenian_yech 0x1000565

IBUS_KEY_Armenian_ZA

#define IBUS_KEY_Armenian_ZA 0x1000536

IBUS_KEY_Armenian_za

#define IBUS_KEY_Armenian_za 0x1000566

IBUS_KEY_Armenian_E

#define IBUS_KEY_Armenian_E 0x1000537

IBUS_KEY_Armenian_e

#define IBUS_KEY_Armenian_e 0x1000567

IBUS_KEY_Armenian_AT

#define IBUS_KEY_Armenian_AT 0x1000538

IBUS_KEY_Armenian_at

#define IBUS_KEY_Armenian_at 0x1000568

IBUS_KEY_Armenian_TO

#define IBUS_KEY_Armenian_TO 0x1000539

IBUS_KEY_Armenian_to

#define IBUS_KEY_Armenian_to 0x1000569

IBUS_KEY_Armenian_ZHE

#define IBUS_KEY_Armenian_ZHE 0x100053a

IBUS_KEY_Armenian_zhe

#define IBUS_KEY_Armenian_zhe 0x100056a

IBUS_KEY_Armenian_INI

#define IBUS_KEY_Armenian_INI 0x100053b

IBUS_KEY_Armenian_ini

#define IBUS_KEY_Armenian_ini 0x100056b

IBUS_KEY_Armenian_LYUN

#define IBUS_KEY_Armenian_LYUN 0x100053c

IBUS_KEY_Armenian_lyun

#define IBUS_KEY_Armenian_lyun 0x100056c

IBUS_KEY_Armenian_KHE

#define IBUS_KEY_Armenian_KHE 0x100053d

IBUS_KEY_Armenian_khe

#define IBUS_KEY_Armenian_khe 0x100056d

IBUS_KEY_Armenian_TSA

#define IBUS_KEY_Armenian_TSA 0x100053e

IBUS_KEY_Armenian_tsa

#define IBUS_KEY_Armenian_tsa 0x100056e

IBUS_KEY_Armenian_KEN

#define IBUS_KEY_Armenian_KEN 0x100053f

IBUS_KEY_Armenian_ken

#define IBUS_KEY_Armenian_ken 0x100056f

IBUS_KEY_Armenian_HO

#define IBUS_KEY_Armenian_HO 0x1000540

IBUS_KEY_Armenian_ho

#define IBUS_KEY_Armenian_ho 0x1000570

IBUS_KEY_Armenian_DZA

#define IBUS_KEY_Armenian_DZA 0x1000541

IBUS_KEY_Armenian_dza

#define IBUS_KEY_Armenian_dza 0x1000571

IBUS_KEY_Armenian_GHAT

#define IBUS_KEY_Armenian_GHAT 0x1000542

IBUS_KEY_Armenian_ghat

#define IBUS_KEY_Armenian_ghat 0x1000572

IBUS_KEY_Armenian_TCHE

#define IBUS_KEY_Armenian_TCHE 0x1000543

IBUS_KEY_Armenian_tche

#define IBUS_KEY_Armenian_tche 0x1000573

IBUS_KEY_Armenian_MEN

#define IBUS_KEY_Armenian_MEN 0x1000544

IBUS_KEY_Armenian_men

#define IBUS_KEY_Armenian_men 0x1000574

IBUS_KEY_Armenian_HI

#define IBUS_KEY_Armenian_HI 0x1000545

IBUS_KEY_Armenian_hi

#define IBUS_KEY_Armenian_hi 0x1000575

IBUS_KEY_Armenian_NU

#define IBUS_KEY_Armenian_NU 0x1000546

IBUS_KEY_Armenian_nu

#define IBUS_KEY_Armenian_nu 0x1000576

IBUS_KEY_Armenian_SHA

#define IBUS_KEY_Armenian_SHA 0x1000547

IBUS_KEY_Armenian_sha

#define IBUS_KEY_Armenian_sha 0x1000577

IBUS_KEY_Armenian_VO

#define IBUS_KEY_Armenian_VO 0x1000548

IBUS_KEY_Armenian_vo

#define IBUS_KEY_Armenian_vo 0x1000578

IBUS_KEY_Armenian_CHA

#define IBUS_KEY_Armenian_CHA 0x1000549

IBUS_KEY_Armenian_cha

#define IBUS_KEY_Armenian_cha 0x1000579

IBUS_KEY_Armenian_PE

#define IBUS_KEY_Armenian_PE 0x100054a

IBUS_KEY_Armenian_pe

#define IBUS_KEY_Armenian_pe 0x100057a

IBUS_KEY_Armenian_JE

#define IBUS_KEY_Armenian_JE 0x100054b

IBUS_KEY_Armenian_je

#define IBUS_KEY_Armenian_je 0x100057b

IBUS_KEY_Armenian_RA

#define IBUS_KEY_Armenian_RA 0x100054c

IBUS_KEY_Armenian_ra

#define IBUS_KEY_Armenian_ra 0x100057c

IBUS_KEY_Armenian_SE

#define IBUS_KEY_Armenian_SE 0x100054d

IBUS_KEY_Armenian_se

#define IBUS_KEY_Armenian_se 0x100057d

IBUS_KEY_Armenian_VEV

#define IBUS_KEY_Armenian_VEV 0x100054e

IBUS_KEY_Armenian_vev

#define IBUS_KEY_Armenian_vev 0x100057e

IBUS_KEY_Armenian_TYUN

#define IBUS_KEY_Armenian_TYUN 0x100054f

IBUS_KEY_Armenian_tyun

#define IBUS_KEY_Armenian_tyun 0x100057f

IBUS_KEY_Armenian_RE

#define IBUS_KEY_Armenian_RE 0x1000550

IBUS_KEY_Armenian_re

#define IBUS_KEY_Armenian_re 0x1000580

IBUS_KEY_Armenian_TSO

#define IBUS_KEY_Armenian_TSO 0x1000551

IBUS_KEY_Armenian_tso

#define IBUS_KEY_Armenian_tso 0x1000581

IBUS_KEY_Armenian_VYUN

#define IBUS_KEY_Armenian_VYUN 0x1000552

IBUS_KEY_Armenian_vyun

#define IBUS_KEY_Armenian_vyun 0x1000582

IBUS_KEY_Armenian_PYUR

#define IBUS_KEY_Armenian_PYUR 0x1000553

IBUS_KEY_Armenian_pyur

#define IBUS_KEY_Armenian_pyur 0x1000583

IBUS_KEY_Armenian_KE

#define IBUS_KEY_Armenian_KE 0x1000554

IBUS_KEY_Armenian_ke

#define IBUS_KEY_Armenian_ke 0x1000584

IBUS_KEY_Armenian_O

#define IBUS_KEY_Armenian_O 0x1000555

IBUS_KEY_Armenian_o

#define IBUS_KEY_Armenian_o 0x1000585

IBUS_KEY_Armenian_FE

#define IBUS_KEY_Armenian_FE 0x1000556

IBUS_KEY_Armenian_fe

#define IBUS_KEY_Armenian_fe 0x1000586

IBUS_KEY_Armenian_apostrophe

#define IBUS_KEY_Armenian_apostrophe 0x100055a

IBUS_KEY_Georgian_an

#define IBUS_KEY_Georgian_an 0x10010d0

IBUS_KEY_Georgian_ban

#define IBUS_KEY_Georgian_ban 0x10010d1

IBUS_KEY_Georgian_gan

#define IBUS_KEY_Georgian_gan 0x10010d2

IBUS_KEY_Georgian_don

#define IBUS_KEY_Georgian_don 0x10010d3

IBUS_KEY_Georgian_en

#define IBUS_KEY_Georgian_en 0x10010d4

IBUS_KEY_Georgian_vin

#define IBUS_KEY_Georgian_vin 0x10010d5

IBUS_KEY_Georgian_zen

#define IBUS_KEY_Georgian_zen 0x10010d6

IBUS_KEY_Georgian_tan

#define IBUS_KEY_Georgian_tan 0x10010d7

IBUS_KEY_Georgian_in

#define IBUS_KEY_Georgian_in 0x10010d8

IBUS_KEY_Georgian_kan

#define IBUS_KEY_Georgian_kan 0x10010d9

IBUS_KEY_Georgian_las

#define IBUS_KEY_Georgian_las 0x10010da

IBUS_KEY_Georgian_man

#define IBUS_KEY_Georgian_man 0x10010db

IBUS_KEY_Georgian_nar

#define IBUS_KEY_Georgian_nar 0x10010dc

IBUS_KEY_Georgian_on

#define IBUS_KEY_Georgian_on 0x10010dd

IBUS_KEY_Georgian_par

#define IBUS_KEY_Georgian_par 0x10010de

IBUS_KEY_Georgian_zhar

#define IBUS_KEY_Georgian_zhar 0x10010df

IBUS_KEY_Georgian_rae

#define IBUS_KEY_Georgian_rae 0x10010e0

IBUS_KEY_Georgian_san

#define IBUS_KEY_Georgian_san 0x10010e1

IBUS_KEY_Georgian_tar

#define IBUS_KEY_Georgian_tar 0x10010e2

IBUS_KEY_Georgian_un

#define IBUS_KEY_Georgian_un 0x10010e3

IBUS_KEY_Georgian_phar

#define IBUS_KEY_Georgian_phar 0x10010e4

IBUS_KEY_Georgian_khar

#define IBUS_KEY_Georgian_khar 0x10010e5

IBUS_KEY_Georgian_ghan

#define IBUS_KEY_Georgian_ghan 0x10010e6

IBUS_KEY_Georgian_qar

#define IBUS_KEY_Georgian_qar 0x10010e7

IBUS_KEY_Georgian_shin

#define IBUS_KEY_Georgian_shin 0x10010e8

IBUS_KEY_Georgian_chin

#define IBUS_KEY_Georgian_chin 0x10010e9

IBUS_KEY_Georgian_can

#define IBUS_KEY_Georgian_can 0x10010ea

IBUS_KEY_Georgian_jil

#define IBUS_KEY_Georgian_jil 0x10010eb

IBUS_KEY_Georgian_cil

#define IBUS_KEY_Georgian_cil 0x10010ec

IBUS_KEY_Georgian_char

#define IBUS_KEY_Georgian_char 0x10010ed

IBUS_KEY_Georgian_xan

#define IBUS_KEY_Georgian_xan 0x10010ee

IBUS_KEY_Georgian_jhan

#define IBUS_KEY_Georgian_jhan 0x10010ef

IBUS_KEY_Georgian_hae

#define IBUS_KEY_Georgian_hae 0x10010f0

IBUS_KEY_Georgian_he

#define IBUS_KEY_Georgian_he 0x10010f1

IBUS_KEY_Georgian_hie

#define IBUS_KEY_Georgian_hie 0x10010f2

IBUS_KEY_Georgian_we

#define IBUS_KEY_Georgian_we 0x10010f3

IBUS_KEY_Georgian_har

#define IBUS_KEY_Georgian_har 0x10010f4

IBUS_KEY_Georgian_hoe

#define IBUS_KEY_Georgian_hoe 0x10010f5

IBUS_KEY_Georgian_fi

#define IBUS_KEY_Georgian_fi 0x10010f6

IBUS_KEY_Xabovedot

#define IBUS_KEY_Xabovedot 0x1001e8a

IBUS_KEY_Ibreve

#define IBUS_KEY_Ibreve 0x100012c

IBUS_KEY_Zstroke

#define IBUS_KEY_Zstroke 0x10001b5

IBUS_KEY_Gcaron

#define IBUS_KEY_Gcaron 0x10001e6

IBUS_KEY_Ocaron

#define IBUS_KEY_Ocaron 0x10001d1

IBUS_KEY_Obarred

#define IBUS_KEY_Obarred 0x100019f

IBUS_KEY_xabovedot

#define IBUS_KEY_xabovedot 0x1001e8b

IBUS_KEY_ibreve

#define IBUS_KEY_ibreve 0x100012d

IBUS_KEY_zstroke

#define IBUS_KEY_zstroke 0x10001b6

IBUS_KEY_gcaron

#define IBUS_KEY_gcaron 0x10001e7

IBUS_KEY_ocaron

#define IBUS_KEY_ocaron 0x10001d2

IBUS_KEY_obarred

#define IBUS_KEY_obarred 0x1000275

IBUS_KEY_SCHWA

#define IBUS_KEY_SCHWA 0x100018f

IBUS_KEY_EZH

#define IBUS_KEY_EZH 0x10001b7

IBUS_KEY_schwa

#define IBUS_KEY_schwa 0x1000259

IBUS_KEY_ezh

#define IBUS_KEY_ezh 0x1000292

IBUS_KEY_Lbelowdot

#define IBUS_KEY_Lbelowdot 0x1001e36

IBUS_KEY_lbelowdot

#define IBUS_KEY_lbelowdot 0x1001e37

IBUS_KEY_Abelowdot

#define IBUS_KEY_Abelowdot 0x1001ea0

IBUS_KEY_abelowdot

#define IBUS_KEY_abelowdot 0x1001ea1

IBUS_KEY_Ahook

#define IBUS_KEY_Ahook 0x1001ea2

IBUS_KEY_ahook

#define IBUS_KEY_ahook 0x1001ea3

IBUS_KEY_Acircumflexacute

#define IBUS_KEY_Acircumflexacute 0x1001ea4

IBUS_KEY_acircumflexacute

#define IBUS_KEY_acircumflexacute 0x1001ea5

IBUS_KEY_Acircumflexgrave

#define IBUS_KEY_Acircumflexgrave 0x1001ea6

IBUS_KEY_acircumflexgrave

#define IBUS_KEY_acircumflexgrave 0x1001ea7

IBUS_KEY_Acircumflexhook

#define IBUS_KEY_Acircumflexhook 0x1001ea8

IBUS_KEY_acircumflexhook

#define IBUS_KEY_acircumflexhook 0x1001ea9

IBUS_KEY_Acircumflextilde

#define IBUS_KEY_Acircumflextilde 0x1001eaa

IBUS_KEY_acircumflextilde

#define IBUS_KEY_acircumflextilde 0x1001eab

IBUS_KEY_Acircumflexbelowdot

#define IBUS_KEY_Acircumflexbelowdot 0x1001eac

IBUS_KEY_acircumflexbelowdot

#define IBUS_KEY_acircumflexbelowdot 0x1001ead

IBUS_KEY_Abreveacute

#define IBUS_KEY_Abreveacute 0x1001eae

IBUS_KEY_abreveacute

#define IBUS_KEY_abreveacute 0x1001eaf

IBUS_KEY_Abrevegrave

#define IBUS_KEY_Abrevegrave 0x1001eb0

IBUS_KEY_abrevegrave

#define IBUS_KEY_abrevegrave 0x1001eb1

IBUS_KEY_Abrevehook

#define IBUS_KEY_Abrevehook 0x1001eb2

IBUS_KEY_abrevehook

#define IBUS_KEY_abrevehook 0x1001eb3

IBUS_KEY_Abrevetilde

#define IBUS_KEY_Abrevetilde 0x1001eb4

IBUS_KEY_abrevetilde

#define IBUS_KEY_abrevetilde 0x1001eb5

IBUS_KEY_Abrevebelowdot

#define IBUS_KEY_Abrevebelowdot 0x1001eb6

IBUS_KEY_abrevebelowdot

#define IBUS_KEY_abrevebelowdot 0x1001eb7

IBUS_KEY_Ebelowdot

#define IBUS_KEY_Ebelowdot 0x1001eb8

IBUS_KEY_ebelowdot

#define IBUS_KEY_ebelowdot 0x1001eb9

IBUS_KEY_Ehook

#define IBUS_KEY_Ehook 0x1001eba

IBUS_KEY_ehook

#define IBUS_KEY_ehook 0x1001ebb

IBUS_KEY_Etilde

#define IBUS_KEY_Etilde 0x1001ebc

IBUS_KEY_etilde

#define IBUS_KEY_etilde 0x1001ebd

IBUS_KEY_Ecircumflexacute

#define IBUS_KEY_Ecircumflexacute 0x1001ebe

IBUS_KEY_ecircumflexacute

#define IBUS_KEY_ecircumflexacute 0x1001ebf

IBUS_KEY_Ecircumflexgrave

#define IBUS_KEY_Ecircumflexgrave 0x1001ec0

IBUS_KEY_ecircumflexgrave

#define IBUS_KEY_ecircumflexgrave 0x1001ec1

IBUS_KEY_Ecircumflexhook

#define IBUS_KEY_Ecircumflexhook 0x1001ec2

IBUS_KEY_ecircumflexhook

#define IBUS_KEY_ecircumflexhook 0x1001ec3

IBUS_KEY_Ecircumflextilde

#define IBUS_KEY_Ecircumflextilde 0x1001ec4

IBUS_KEY_ecircumflextilde

#define IBUS_KEY_ecircumflextilde 0x1001ec5

IBUS_KEY_Ecircumflexbelowdot

#define IBUS_KEY_Ecircumflexbelowdot 0x1001ec6

IBUS_KEY_ecircumflexbelowdot

#define IBUS_KEY_ecircumflexbelowdot 0x1001ec7

IBUS_KEY_Ihook

#define IBUS_KEY_Ihook 0x1001ec8

IBUS_KEY_ihook

#define IBUS_KEY_ihook 0x1001ec9

IBUS_KEY_Ibelowdot

#define IBUS_KEY_Ibelowdot 0x1001eca

IBUS_KEY_ibelowdot

#define IBUS_KEY_ibelowdot 0x1001ecb

IBUS_KEY_Obelowdot

#define IBUS_KEY_Obelowdot 0x1001ecc

IBUS_KEY_obelowdot

#define IBUS_KEY_obelowdot 0x1001ecd

IBUS_KEY_Ohook

#define IBUS_KEY_Ohook 0x1001ece

IBUS_KEY_ohook

#define IBUS_KEY_ohook 0x1001ecf

IBUS_KEY_Ocircumflexacute

#define IBUS_KEY_Ocircumflexacute 0x1001ed0

IBUS_KEY_ocircumflexacute

#define IBUS_KEY_ocircumflexacute 0x1001ed1

IBUS_KEY_Ocircumflexgrave

#define IBUS_KEY_Ocircumflexgrave 0x1001ed2

IBUS_KEY_ocircumflexgrave

#define IBUS_KEY_ocircumflexgrave 0x1001ed3

IBUS_KEY_Ocircumflexhook

#define IBUS_KEY_Ocircumflexhook 0x1001ed4

IBUS_KEY_ocircumflexhook

#define IBUS_KEY_ocircumflexhook 0x1001ed5

IBUS_KEY_Ocircumflextilde

#define IBUS_KEY_Ocircumflextilde 0x1001ed6

IBUS_KEY_ocircumflextilde

#define IBUS_KEY_ocircumflextilde 0x1001ed7

IBUS_KEY_Ocircumflexbelowdot

#define IBUS_KEY_Ocircumflexbelowdot 0x1001ed8

IBUS_KEY_ocircumflexbelowdot

#define IBUS_KEY_ocircumflexbelowdot 0x1001ed9

IBUS_KEY_Ohornacute

#define IBUS_KEY_Ohornacute 0x1001eda

IBUS_KEY_ohornacute

#define IBUS_KEY_ohornacute 0x1001edb

IBUS_KEY_Ohorngrave

#define IBUS_KEY_Ohorngrave 0x1001edc

IBUS_KEY_ohorngrave

#define IBUS_KEY_ohorngrave 0x1001edd

IBUS_KEY_Ohornhook

#define IBUS_KEY_Ohornhook 0x1001ede

IBUS_KEY_ohornhook

#define IBUS_KEY_ohornhook 0x1001edf

IBUS_KEY_Ohorntilde

#define IBUS_KEY_Ohorntilde 0x1001ee0

IBUS_KEY_ohorntilde

#define IBUS_KEY_ohorntilde 0x1001ee1

IBUS_KEY_Ohornbelowdot

#define IBUS_KEY_Ohornbelowdot 0x1001ee2

IBUS_KEY_ohornbelowdot

#define IBUS_KEY_ohornbelowdot 0x1001ee3

IBUS_KEY_Ubelowdot

#define IBUS_KEY_Ubelowdot 0x1001ee4

IBUS_KEY_ubelowdot

#define IBUS_KEY_ubelowdot 0x1001ee5

IBUS_KEY_Uhook

#define IBUS_KEY_Uhook 0x1001ee6

IBUS_KEY_uhook

#define IBUS_KEY_uhook 0x1001ee7

IBUS_KEY_Uhornacute

#define IBUS_KEY_Uhornacute 0x1001ee8

IBUS_KEY_uhornacute

#define IBUS_KEY_uhornacute 0x1001ee9

IBUS_KEY_Uhorngrave

#define IBUS_KEY_Uhorngrave 0x1001eea

IBUS_KEY_uhorngrave

#define IBUS_KEY_uhorngrave 0x1001eeb

IBUS_KEY_Uhornhook

#define IBUS_KEY_Uhornhook 0x1001eec

IBUS_KEY_uhornhook

#define IBUS_KEY_uhornhook 0x1001eed

IBUS_KEY_Uhorntilde

#define IBUS_KEY_Uhorntilde 0x1001eee

IBUS_KEY_uhorntilde

#define IBUS_KEY_uhorntilde 0x1001eef

IBUS_KEY_Uhornbelowdot

#define IBUS_KEY_Uhornbelowdot 0x1001ef0

IBUS_KEY_uhornbelowdot

#define IBUS_KEY_uhornbelowdot 0x1001ef1

IBUS_KEY_Ybelowdot

#define IBUS_KEY_Ybelowdot 0x1001ef4

IBUS_KEY_ybelowdot

#define IBUS_KEY_ybelowdot 0x1001ef5

IBUS_KEY_Yhook

#define IBUS_KEY_Yhook 0x1001ef6

IBUS_KEY_yhook

#define IBUS_KEY_yhook 0x1001ef7

IBUS_KEY_Ytilde

#define IBUS_KEY_Ytilde 0x1001ef8

IBUS_KEY_ytilde

#define IBUS_KEY_ytilde 0x1001ef9

IBUS_KEY_Ohorn

#define IBUS_KEY_Ohorn 0x10001a0

IBUS_KEY_ohorn

#define IBUS_KEY_ohorn 0x10001a1

IBUS_KEY_Uhorn

#define IBUS_KEY_Uhorn 0x10001af

IBUS_KEY_uhorn

#define IBUS_KEY_uhorn 0x10001b0

IBUS_KEY_EcuSign

#define IBUS_KEY_EcuSign 0x10020a0

IBUS_KEY_ColonSign

#define IBUS_KEY_ColonSign 0x10020a1

IBUS_KEY_CruzeiroSign

#define IBUS_KEY_CruzeiroSign 0x10020a2

IBUS_KEY_FFrancSign

#define IBUS_KEY_FFrancSign 0x10020a3

IBUS_KEY_LiraSign

#define IBUS_KEY_LiraSign 0x10020a4

IBUS_KEY_MillSign

#define IBUS_KEY_MillSign 0x10020a5

IBUS_KEY_NairaSign

#define IBUS_KEY_NairaSign 0x10020a6

IBUS_KEY_PesetaSign

#define IBUS_KEY_PesetaSign 0x10020a7

IBUS_KEY_RupeeSign

#define IBUS_KEY_RupeeSign 0x10020a8

IBUS_KEY_WonSign

#define IBUS_KEY_WonSign 0x10020a9

IBUS_KEY_NewSheqelSign

#define IBUS_KEY_NewSheqelSign 0x10020aa

IBUS_KEY_DongSign

#define IBUS_KEY_DongSign 0x10020ab

IBUS_KEY_EuroSign

#define IBUS_KEY_EuroSign 0x20ac

IBUS_KEY_zerosuperior

#define IBUS_KEY_zerosuperior 0x1002070

IBUS_KEY_foursuperior

#define IBUS_KEY_foursuperior 0x1002074

IBUS_KEY_fivesuperior

#define IBUS_KEY_fivesuperior 0x1002075

IBUS_KEY_sixsuperior

#define IBUS_KEY_sixsuperior 0x1002076

IBUS_KEY_sevensuperior

#define IBUS_KEY_sevensuperior 0x1002077

IBUS_KEY_eightsuperior

#define IBUS_KEY_eightsuperior 0x1002078

IBUS_KEY_ninesuperior

#define IBUS_KEY_ninesuperior 0x1002079

IBUS_KEY_zerosubscript

#define IBUS_KEY_zerosubscript 0x1002080

IBUS_KEY_onesubscript

#define IBUS_KEY_onesubscript 0x1002081

IBUS_KEY_twosubscript

#define IBUS_KEY_twosubscript 0x1002082

IBUS_KEY_threesubscript

#define IBUS_KEY_threesubscript 0x1002083

IBUS_KEY_foursubscript

#define IBUS_KEY_foursubscript 0x1002084

IBUS_KEY_fivesubscript

#define IBUS_KEY_fivesubscript 0x1002085

IBUS_KEY_sixsubscript

#define IBUS_KEY_sixsubscript 0x1002086

IBUS_KEY_sevensubscript

#define IBUS_KEY_sevensubscript 0x1002087

IBUS_KEY_eightsubscript

#define IBUS_KEY_eightsubscript 0x1002088

IBUS_KEY_ninesubscript

#define IBUS_KEY_ninesubscript 0x1002089

IBUS_KEY_partdifferential

#define IBUS_KEY_partdifferential 0x1002202

IBUS_KEY_emptyset

#define IBUS_KEY_emptyset 0x1002205

IBUS_KEY_elementof

#define IBUS_KEY_elementof 0x1002208

IBUS_KEY_notelementof

#define IBUS_KEY_notelementof 0x1002209

IBUS_KEY_containsas

#define IBUS_KEY_containsas 0x100220b

IBUS_KEY_squareroot

#define IBUS_KEY_squareroot 0x100221a

IBUS_KEY_cuberoot

#define IBUS_KEY_cuberoot 0x100221b

IBUS_KEY_fourthroot

#define IBUS_KEY_fourthroot 0x100221c

IBUS_KEY_dintegral

#define IBUS_KEY_dintegral 0x100222c

IBUS_KEY_tintegral

#define IBUS_KEY_tintegral 0x100222d

IBUS_KEY_because

#define IBUS_KEY_because 0x1002235

IBUS_KEY_approxeq

#define IBUS_KEY_approxeq 0x1002248

IBUS_KEY_notapproxeq

#define IBUS_KEY_notapproxeq 0x1002247

IBUS_KEY_notidentical

#define IBUS_KEY_notidentical 0x1002262

IBUS_KEY_stricteq

#define IBUS_KEY_stricteq 0x1002263

IBUS_KEY_braille_dot_1

#define IBUS_KEY_braille_dot_1 0xfff1

IBUS_KEY_braille_dot_2

#define IBUS_KEY_braille_dot_2 0xfff2

IBUS_KEY_braille_dot_3

#define IBUS_KEY_braille_dot_3 0xfff3

IBUS_KEY_braille_dot_4

#define IBUS_KEY_braille_dot_4 0xfff4

IBUS_KEY_braille_dot_5

#define IBUS_KEY_braille_dot_5 0xfff5

IBUS_KEY_braille_dot_6

#define IBUS_KEY_braille_dot_6 0xfff6

IBUS_KEY_braille_dot_7

#define IBUS_KEY_braille_dot_7 0xfff7

IBUS_KEY_braille_dot_8

#define IBUS_KEY_braille_dot_8 0xfff8

IBUS_KEY_braille_dot_9

#define IBUS_KEY_braille_dot_9 0xfff9

IBUS_KEY_braille_dot_10

#define IBUS_KEY_braille_dot_10 0xfffa

IBUS_KEY_braille_blank

#define IBUS_KEY_braille_blank 0x1002800

IBUS_KEY_braille_dots_1

#define IBUS_KEY_braille_dots_1 0x1002801

IBUS_KEY_braille_dots_2

#define IBUS_KEY_braille_dots_2 0x1002802

IBUS_KEY_braille_dots_12

#define IBUS_KEY_braille_dots_12 0x1002803

IBUS_KEY_braille_dots_3

#define IBUS_KEY_braille_dots_3 0x1002804

IBUS_KEY_braille_dots_13

#define IBUS_KEY_braille_dots_13 0x1002805

IBUS_KEY_braille_dots_23

#define IBUS_KEY_braille_dots_23 0x1002806

IBUS_KEY_braille_dots_123

#define IBUS_KEY_braille_dots_123 0x1002807

IBUS_KEY_braille_dots_4

#define IBUS_KEY_braille_dots_4 0x1002808

IBUS_KEY_braille_dots_14

#define IBUS_KEY_braille_dots_14 0x1002809

IBUS_KEY_braille_dots_24

#define IBUS_KEY_braille_dots_24 0x100280a

IBUS_KEY_braille_dots_124

#define IBUS_KEY_braille_dots_124 0x100280b

IBUS_KEY_braille_dots_34

#define IBUS_KEY_braille_dots_34 0x100280c

IBUS_KEY_braille_dots_134

#define IBUS_KEY_braille_dots_134 0x100280d

IBUS_KEY_braille_dots_234

#define IBUS_KEY_braille_dots_234 0x100280e

IBUS_KEY_braille_dots_1234

#define IBUS_KEY_braille_dots_1234 0x100280f

IBUS_KEY_braille_dots_5

#define IBUS_KEY_braille_dots_5 0x1002810

IBUS_KEY_braille_dots_15

#define IBUS_KEY_braille_dots_15 0x1002811

IBUS_KEY_braille_dots_25

#define IBUS_KEY_braille_dots_25 0x1002812

IBUS_KEY_braille_dots_125

#define IBUS_KEY_braille_dots_125 0x1002813

IBUS_KEY_braille_dots_35

#define IBUS_KEY_braille_dots_35 0x1002814

IBUS_KEY_braille_dots_135

#define IBUS_KEY_braille_dots_135 0x1002815

IBUS_KEY_braille_dots_235

#define IBUS_KEY_braille_dots_235 0x1002816

IBUS_KEY_braille_dots_1235

#define IBUS_KEY_braille_dots_1235 0x1002817

IBUS_KEY_braille_dots_45

#define IBUS_KEY_braille_dots_45 0x1002818

IBUS_KEY_braille_dots_145

#define IBUS_KEY_braille_dots_145 0x1002819

IBUS_KEY_braille_dots_245

#define IBUS_KEY_braille_dots_245 0x100281a

IBUS_KEY_braille_dots_1245

#define IBUS_KEY_braille_dots_1245 0x100281b

IBUS_KEY_braille_dots_345

#define IBUS_KEY_braille_dots_345 0x100281c

IBUS_KEY_braille_dots_1345

#define IBUS_KEY_braille_dots_1345 0x100281d

IBUS_KEY_braille_dots_2345

#define IBUS_KEY_braille_dots_2345 0x100281e

IBUS_KEY_braille_dots_12345

#define IBUS_KEY_braille_dots_12345 0x100281f

IBUS_KEY_braille_dots_6

#define IBUS_KEY_braille_dots_6 0x1002820

IBUS_KEY_braille_dots_16

#define IBUS_KEY_braille_dots_16 0x1002821

IBUS_KEY_braille_dots_26

#define IBUS_KEY_braille_dots_26 0x1002822

IBUS_KEY_braille_dots_126

#define IBUS_KEY_braille_dots_126 0x1002823

IBUS_KEY_braille_dots_36

#define IBUS_KEY_braille_dots_36 0x1002824

IBUS_KEY_braille_dots_136

#define IBUS_KEY_braille_dots_136 0x1002825

IBUS_KEY_braille_dots_236

#define IBUS_KEY_braille_dots_236 0x1002826

IBUS_KEY_braille_dots_1236

#define IBUS_KEY_braille_dots_1236 0x1002827

IBUS_KEY_braille_dots_46

#define IBUS_KEY_braille_dots_46 0x1002828

IBUS_KEY_braille_dots_146

#define IBUS_KEY_braille_dots_146 0x1002829

IBUS_KEY_braille_dots_246

#define IBUS_KEY_braille_dots_246 0x100282a

IBUS_KEY_braille_dots_1246

#define IBUS_KEY_braille_dots_1246 0x100282b

IBUS_KEY_braille_dots_346

#define IBUS_KEY_braille_dots_346 0x100282c

IBUS_KEY_braille_dots_1346

#define IBUS_KEY_braille_dots_1346 0x100282d

IBUS_KEY_braille_dots_2346

#define IBUS_KEY_braille_dots_2346 0x100282e

IBUS_KEY_braille_dots_12346

#define IBUS_KEY_braille_dots_12346 0x100282f

IBUS_KEY_braille_dots_56

#define IBUS_KEY_braille_dots_56 0x1002830

IBUS_KEY_braille_dots_156

#define IBUS_KEY_braille_dots_156 0x1002831

IBUS_KEY_braille_dots_256

#define IBUS_KEY_braille_dots_256 0x1002832

IBUS_KEY_braille_dots_1256

#define IBUS_KEY_braille_dots_1256 0x1002833

IBUS_KEY_braille_dots_356

#define IBUS_KEY_braille_dots_356 0x1002834

IBUS_KEY_braille_dots_1356

#define IBUS_KEY_braille_dots_1356 0x1002835

IBUS_KEY_braille_dots_2356

#define IBUS_KEY_braille_dots_2356 0x1002836

IBUS_KEY_braille_dots_12356

#define IBUS_KEY_braille_dots_12356 0x1002837

IBUS_KEY_braille_dots_456

#define IBUS_KEY_braille_dots_456 0x1002838

IBUS_KEY_braille_dots_1456

#define IBUS_KEY_braille_dots_1456 0x1002839

IBUS_KEY_braille_dots_2456

#define IBUS_KEY_braille_dots_2456 0x100283a

IBUS_KEY_braille_dots_12456

#define IBUS_KEY_braille_dots_12456 0x100283b

IBUS_KEY_braille_dots_3456

#define IBUS_KEY_braille_dots_3456 0x100283c

IBUS_KEY_braille_dots_13456

#define IBUS_KEY_braille_dots_13456 0x100283d

IBUS_KEY_braille_dots_23456

#define IBUS_KEY_braille_dots_23456 0x100283e

IBUS_KEY_braille_dots_123456

#define IBUS_KEY_braille_dots_123456 0x100283f

IBUS_KEY_braille_dots_7

#define IBUS_KEY_braille_dots_7 0x1002840

IBUS_KEY_braille_dots_17

#define IBUS_KEY_braille_dots_17 0x1002841

IBUS_KEY_braille_dots_27

#define IBUS_KEY_braille_dots_27 0x1002842

IBUS_KEY_braille_dots_127

#define IBUS_KEY_braille_dots_127 0x1002843

IBUS_KEY_braille_dots_37

#define IBUS_KEY_braille_dots_37 0x1002844

IBUS_KEY_braille_dots_137

#define IBUS_KEY_braille_dots_137 0x1002845

IBUS_KEY_braille_dots_237

#define IBUS_KEY_braille_dots_237 0x1002846

IBUS_KEY_braille_dots_1237

#define IBUS_KEY_braille_dots_1237 0x1002847

IBUS_KEY_braille_dots_47

#define IBUS_KEY_braille_dots_47 0x1002848

IBUS_KEY_braille_dots_147

#define IBUS_KEY_braille_dots_147 0x1002849

IBUS_KEY_braille_dots_247

#define IBUS_KEY_braille_dots_247 0x100284a

IBUS_KEY_braille_dots_1247

#define IBUS_KEY_braille_dots_1247 0x100284b

IBUS_KEY_braille_dots_347

#define IBUS_KEY_braille_dots_347 0x100284c

IBUS_KEY_braille_dots_1347

#define IBUS_KEY_braille_dots_1347 0x100284d

IBUS_KEY_braille_dots_2347

#define IBUS_KEY_braille_dots_2347 0x100284e

IBUS_KEY_braille_dots_12347

#define IBUS_KEY_braille_dots_12347 0x100284f

IBUS_KEY_braille_dots_57

#define IBUS_KEY_braille_dots_57 0x1002850

IBUS_KEY_braille_dots_157

#define IBUS_KEY_braille_dots_157 0x1002851

IBUS_KEY_braille_dots_257

#define IBUS_KEY_braille_dots_257 0x1002852

IBUS_KEY_braille_dots_1257

#define IBUS_KEY_braille_dots_1257 0x1002853

IBUS_KEY_braille_dots_357

#define IBUS_KEY_braille_dots_357 0x1002854

IBUS_KEY_braille_dots_1357

#define IBUS_KEY_braille_dots_1357 0x1002855

IBUS_KEY_braille_dots_2357

#define IBUS_KEY_braille_dots_2357 0x1002856

IBUS_KEY_braille_dots_12357

#define IBUS_KEY_braille_dots_12357 0x1002857

IBUS_KEY_braille_dots_457

#define IBUS_KEY_braille_dots_457 0x1002858

IBUS_KEY_braille_dots_1457

#define IBUS_KEY_braille_dots_1457 0x1002859

IBUS_KEY_braille_dots_2457

#define IBUS_KEY_braille_dots_2457 0x100285a

IBUS_KEY_braille_dots_12457

#define IBUS_KEY_braille_dots_12457 0x100285b

IBUS_KEY_braille_dots_3457

#define IBUS_KEY_braille_dots_3457 0x100285c

IBUS_KEY_braille_dots_13457

#define IBUS_KEY_braille_dots_13457 0x100285d

IBUS_KEY_braille_dots_23457

#define IBUS_KEY_braille_dots_23457 0x100285e

IBUS_KEY_braille_dots_123457

#define IBUS_KEY_braille_dots_123457 0x100285f

IBUS_KEY_braille_dots_67

#define IBUS_KEY_braille_dots_67 0x1002860

IBUS_KEY_braille_dots_167

#define IBUS_KEY_braille_dots_167 0x1002861

IBUS_KEY_braille_dots_267

#define IBUS_KEY_braille_dots_267 0x1002862

IBUS_KEY_braille_dots_1267

#define IBUS_KEY_braille_dots_1267 0x1002863

IBUS_KEY_braille_dots_367

#define IBUS_KEY_braille_dots_367 0x1002864

IBUS_KEY_braille_dots_1367

#define IBUS_KEY_braille_dots_1367 0x1002865

IBUS_KEY_braille_dots_2367

#define IBUS_KEY_braille_dots_2367 0x1002866

IBUS_KEY_braille_dots_12367

#define IBUS_KEY_braille_dots_12367 0x1002867

IBUS_KEY_braille_dots_467

#define IBUS_KEY_braille_dots_467 0x1002868

IBUS_KEY_braille_dots_1467

#define IBUS_KEY_braille_dots_1467 0x1002869

IBUS_KEY_braille_dots_2467

#define IBUS_KEY_braille_dots_2467 0x100286a

IBUS_KEY_braille_dots_12467

#define IBUS_KEY_braille_dots_12467 0x100286b

IBUS_KEY_braille_dots_3467

#define IBUS_KEY_braille_dots_3467 0x100286c

IBUS_KEY_braille_dots_13467

#define IBUS_KEY_braille_dots_13467 0x100286d

IBUS_KEY_braille_dots_23467

#define IBUS_KEY_braille_dots_23467 0x100286e

IBUS_KEY_braille_dots_123467

#define IBUS_KEY_braille_dots_123467 0x100286f

IBUS_KEY_braille_dots_567

#define IBUS_KEY_braille_dots_567 0x1002870

IBUS_KEY_braille_dots_1567

#define IBUS_KEY_braille_dots_1567 0x1002871

IBUS_KEY_braille_dots_2567

#define IBUS_KEY_braille_dots_2567 0x1002872

IBUS_KEY_braille_dots_12567

#define IBUS_KEY_braille_dots_12567 0x1002873

IBUS_KEY_braille_dots_3567

#define IBUS_KEY_braille_dots_3567 0x1002874

IBUS_KEY_braille_dots_13567

#define IBUS_KEY_braille_dots_13567 0x1002875

IBUS_KEY_braille_dots_23567

#define IBUS_KEY_braille_dots_23567 0x1002876

IBUS_KEY_braille_dots_123567

#define IBUS_KEY_braille_dots_123567 0x1002877

IBUS_KEY_braille_dots_4567

#define IBUS_KEY_braille_dots_4567 0x1002878

IBUS_KEY_braille_dots_14567

#define IBUS_KEY_braille_dots_14567 0x1002879

IBUS_KEY_braille_dots_24567

#define IBUS_KEY_braille_dots_24567 0x100287a

IBUS_KEY_braille_dots_124567

#define IBUS_KEY_braille_dots_124567 0x100287b

IBUS_KEY_braille_dots_34567

#define IBUS_KEY_braille_dots_34567 0x100287c

IBUS_KEY_braille_dots_134567

#define IBUS_KEY_braille_dots_134567 0x100287d

IBUS_KEY_braille_dots_234567

#define IBUS_KEY_braille_dots_234567 0x100287e

IBUS_KEY_braille_dots_1234567

#define IBUS_KEY_braille_dots_1234567 0x100287f

IBUS_KEY_braille_dots_8

#define IBUS_KEY_braille_dots_8 0x1002880

IBUS_KEY_braille_dots_18

#define IBUS_KEY_braille_dots_18 0x1002881

IBUS_KEY_braille_dots_28

#define IBUS_KEY_braille_dots_28 0x1002882

IBUS_KEY_braille_dots_128

#define IBUS_KEY_braille_dots_128 0x1002883

IBUS_KEY_braille_dots_38

#define IBUS_KEY_braille_dots_38 0x1002884

IBUS_KEY_braille_dots_138

#define IBUS_KEY_braille_dots_138 0x1002885

IBUS_KEY_braille_dots_238

#define IBUS_KEY_braille_dots_238 0x1002886

IBUS_KEY_braille_dots_1238

#define IBUS_KEY_braille_dots_1238 0x1002887

IBUS_KEY_braille_dots_48

#define IBUS_KEY_braille_dots_48 0x1002888

IBUS_KEY_braille_dots_148

#define IBUS_KEY_braille_dots_148 0x1002889

IBUS_KEY_braille_dots_248

#define IBUS_KEY_braille_dots_248 0x100288a

IBUS_KEY_braille_dots_1248

#define IBUS_KEY_braille_dots_1248 0x100288b

IBUS_KEY_braille_dots_348

#define IBUS_KEY_braille_dots_348 0x100288c

IBUS_KEY_braille_dots_1348

#define IBUS_KEY_braille_dots_1348 0x100288d

IBUS_KEY_braille_dots_2348

#define IBUS_KEY_braille_dots_2348 0x100288e

IBUS_KEY_braille_dots_12348

#define IBUS_KEY_braille_dots_12348 0x100288f

IBUS_KEY_braille_dots_58

#define IBUS_KEY_braille_dots_58 0x1002890

IBUS_KEY_braille_dots_158

#define IBUS_KEY_braille_dots_158 0x1002891

IBUS_KEY_braille_dots_258

#define IBUS_KEY_braille_dots_258 0x1002892

IBUS_KEY_braille_dots_1258

#define IBUS_KEY_braille_dots_1258 0x1002893

IBUS_KEY_braille_dots_358

#define IBUS_KEY_braille_dots_358 0x1002894

IBUS_KEY_braille_dots_1358

#define IBUS_KEY_braille_dots_1358 0x1002895

IBUS_KEY_braille_dots_2358

#define IBUS_KEY_braille_dots_2358 0x1002896

IBUS_KEY_braille_dots_12358

#define IBUS_KEY_braille_dots_12358 0x1002897

IBUS_KEY_braille_dots_458

#define IBUS_KEY_braille_dots_458 0x1002898

IBUS_KEY_braille_dots_1458

#define IBUS_KEY_braille_dots_1458 0x1002899

IBUS_KEY_braille_dots_2458

#define IBUS_KEY_braille_dots_2458 0x100289a

IBUS_KEY_braille_dots_12458

#define IBUS_KEY_braille_dots_12458 0x100289b

IBUS_KEY_braille_dots_3458

#define IBUS_KEY_braille_dots_3458 0x100289c

IBUS_KEY_braille_dots_13458

#define IBUS_KEY_braille_dots_13458 0x100289d

IBUS_KEY_braille_dots_23458

#define IBUS_KEY_braille_dots_23458 0x100289e

IBUS_KEY_braille_dots_123458

#define IBUS_KEY_braille_dots_123458 0x100289f

IBUS_KEY_braille_dots_68

#define IBUS_KEY_braille_dots_68 0x10028a0

IBUS_KEY_braille_dots_168

#define IBUS_KEY_braille_dots_168 0x10028a1

IBUS_KEY_braille_dots_268

#define IBUS_KEY_braille_dots_268 0x10028a2

IBUS_KEY_braille_dots_1268

#define IBUS_KEY_braille_dots_1268 0x10028a3

IBUS_KEY_braille_dots_368

#define IBUS_KEY_braille_dots_368 0x10028a4

IBUS_KEY_braille_dots_1368

#define IBUS_KEY_braille_dots_1368 0x10028a5

IBUS_KEY_braille_dots_2368

#define IBUS_KEY_braille_dots_2368 0x10028a6

IBUS_KEY_braille_dots_12368

#define IBUS_KEY_braille_dots_12368 0x10028a7

IBUS_KEY_braille_dots_468

#define IBUS_KEY_braille_dots_468 0x10028a8

IBUS_KEY_braille_dots_1468

#define IBUS_KEY_braille_dots_1468 0x10028a9

IBUS_KEY_braille_dots_2468

#define IBUS_KEY_braille_dots_2468 0x10028aa

IBUS_KEY_braille_dots_12468

#define IBUS_KEY_braille_dots_12468 0x10028ab

IBUS_KEY_braille_dots_3468

#define IBUS_KEY_braille_dots_3468 0x10028ac

IBUS_KEY_braille_dots_13468

#define IBUS_KEY_braille_dots_13468 0x10028ad

IBUS_KEY_braille_dots_23468

#define IBUS_KEY_braille_dots_23468 0x10028ae

IBUS_KEY_braille_dots_123468

#define IBUS_KEY_braille_dots_123468 0x10028af

IBUS_KEY_braille_dots_568

#define IBUS_KEY_braille_dots_568 0x10028b0

IBUS_KEY_braille_dots_1568

#define IBUS_KEY_braille_dots_1568 0x10028b1

IBUS_KEY_braille_dots_2568

#define IBUS_KEY_braille_dots_2568 0x10028b2

IBUS_KEY_braille_dots_12568

#define IBUS_KEY_braille_dots_12568 0x10028b3

IBUS_KEY_braille_dots_3568

#define IBUS_KEY_braille_dots_3568 0x10028b4

IBUS_KEY_braille_dots_13568

#define IBUS_KEY_braille_dots_13568 0x10028b5

IBUS_KEY_braille_dots_23568

#define IBUS_KEY_braille_dots_23568 0x10028b6

IBUS_KEY_braille_dots_123568

#define IBUS_KEY_braille_dots_123568 0x10028b7

IBUS_KEY_braille_dots_4568

#define IBUS_KEY_braille_dots_4568 0x10028b8

IBUS_KEY_braille_dots_14568

#define IBUS_KEY_braille_dots_14568 0x10028b9

IBUS_KEY_braille_dots_24568

#define IBUS_KEY_braille_dots_24568 0x10028ba

IBUS_KEY_braille_dots_124568

#define IBUS_KEY_braille_dots_124568 0x10028bb

IBUS_KEY_braille_dots_34568

#define IBUS_KEY_braille_dots_34568 0x10028bc

IBUS_KEY_braille_dots_134568

#define IBUS_KEY_braille_dots_134568 0x10028bd

IBUS_KEY_braille_dots_234568

#define IBUS_KEY_braille_dots_234568 0x10028be

IBUS_KEY_braille_dots_1234568

#define IBUS_KEY_braille_dots_1234568 0x10028bf

IBUS_KEY_braille_dots_78

#define IBUS_KEY_braille_dots_78 0x10028c0

IBUS_KEY_braille_dots_178

#define IBUS_KEY_braille_dots_178 0x10028c1

IBUS_KEY_braille_dots_278

#define IBUS_KEY_braille_dots_278 0x10028c2

IBUS_KEY_braille_dots_1278

#define IBUS_KEY_braille_dots_1278 0x10028c3

IBUS_KEY_braille_dots_378

#define IBUS_KEY_braille_dots_378 0x10028c4

IBUS_KEY_braille_dots_1378

#define IBUS_KEY_braille_dots_1378 0x10028c5

IBUS_KEY_braille_dots_2378

#define IBUS_KEY_braille_dots_2378 0x10028c6

IBUS_KEY_braille_dots_12378

#define IBUS_KEY_braille_dots_12378 0x10028c7

IBUS_KEY_braille_dots_478

#define IBUS_KEY_braille_dots_478 0x10028c8

IBUS_KEY_braille_dots_1478

#define IBUS_KEY_braille_dots_1478 0x10028c9

IBUS_KEY_braille_dots_2478

#define IBUS_KEY_braille_dots_2478 0x10028ca

IBUS_KEY_braille_dots_12478

#define IBUS_KEY_braille_dots_12478 0x10028cb

IBUS_KEY_braille_dots_3478

#define IBUS_KEY_braille_dots_3478 0x10028cc

IBUS_KEY_braille_dots_13478

#define IBUS_KEY_braille_dots_13478 0x10028cd

IBUS_KEY_braille_dots_23478

#define IBUS_KEY_braille_dots_23478 0x10028ce

IBUS_KEY_braille_dots_123478

#define IBUS_KEY_braille_dots_123478 0x10028cf

IBUS_KEY_braille_dots_578

#define IBUS_KEY_braille_dots_578 0x10028d0

IBUS_KEY_braille_dots_1578

#define IBUS_KEY_braille_dots_1578 0x10028d1

IBUS_KEY_braille_dots_2578

#define IBUS_KEY_braille_dots_2578 0x10028d2

IBUS_KEY_braille_dots_12578

#define IBUS_KEY_braille_dots_12578 0x10028d3

IBUS_KEY_braille_dots_3578

#define IBUS_KEY_braille_dots_3578 0x10028d4

IBUS_KEY_braille_dots_13578

#define IBUS_KEY_braille_dots_13578 0x10028d5

IBUS_KEY_braille_dots_23578

#define IBUS_KEY_braille_dots_23578 0x10028d6

IBUS_KEY_braille_dots_123578

#define IBUS_KEY_braille_dots_123578 0x10028d7

IBUS_KEY_braille_dots_4578

#define IBUS_KEY_braille_dots_4578 0x10028d8

IBUS_KEY_braille_dots_14578

#define IBUS_KEY_braille_dots_14578 0x10028d9

IBUS_KEY_braille_dots_24578

#define IBUS_KEY_braille_dots_24578 0x10028da

IBUS_KEY_braille_dots_124578

#define IBUS_KEY_braille_dots_124578 0x10028db

IBUS_KEY_braille_dots_34578

#define IBUS_KEY_braille_dots_34578 0x10028dc

IBUS_KEY_braille_dots_134578

#define IBUS_KEY_braille_dots_134578 0x10028dd

IBUS_KEY_braille_dots_234578

#define IBUS_KEY_braille_dots_234578 0x10028de

IBUS_KEY_braille_dots_1234578

#define IBUS_KEY_braille_dots_1234578 0x10028df

IBUS_KEY_braille_dots_678

#define IBUS_KEY_braille_dots_678 0x10028e0

IBUS_KEY_braille_dots_1678

#define IBUS_KEY_braille_dots_1678 0x10028e1

IBUS_KEY_braille_dots_2678

#define IBUS_KEY_braille_dots_2678 0x10028e2

IBUS_KEY_braille_dots_12678

#define IBUS_KEY_braille_dots_12678 0x10028e3

IBUS_KEY_braille_dots_3678

#define IBUS_KEY_braille_dots_3678 0x10028e4

IBUS_KEY_braille_dots_13678

#define IBUS_KEY_braille_dots_13678 0x10028e5

IBUS_KEY_braille_dots_23678

#define IBUS_KEY_braille_dots_23678 0x10028e6

IBUS_KEY_braille_dots_123678

#define IBUS_KEY_braille_dots_123678 0x10028e7

IBUS_KEY_braille_dots_4678

#define IBUS_KEY_braille_dots_4678 0x10028e8

IBUS_KEY_braille_dots_14678

#define IBUS_KEY_braille_dots_14678 0x10028e9

IBUS_KEY_braille_dots_24678

#define IBUS_KEY_braille_dots_24678 0x10028ea

IBUS_KEY_braille_dots_124678

#define IBUS_KEY_braille_dots_124678 0x10028eb

IBUS_KEY_braille_dots_34678

#define IBUS_KEY_braille_dots_34678 0x10028ec

IBUS_KEY_braille_dots_134678

#define IBUS_KEY_braille_dots_134678 0x10028ed

IBUS_KEY_braille_dots_234678

#define IBUS_KEY_braille_dots_234678 0x10028ee

IBUS_KEY_braille_dots_1234678

#define IBUS_KEY_braille_dots_1234678 0x10028ef

IBUS_KEY_braille_dots_5678

#define IBUS_KEY_braille_dots_5678 0x10028f0

IBUS_KEY_braille_dots_15678

#define IBUS_KEY_braille_dots_15678 0x10028f1

IBUS_KEY_braille_dots_25678

#define IBUS_KEY_braille_dots_25678 0x10028f2

IBUS_KEY_braille_dots_125678

#define IBUS_KEY_braille_dots_125678 0x10028f3

IBUS_KEY_braille_dots_35678

#define IBUS_KEY_braille_dots_35678 0x10028f4

IBUS_KEY_braille_dots_135678

#define IBUS_KEY_braille_dots_135678 0x10028f5

IBUS_KEY_braille_dots_235678

#define IBUS_KEY_braille_dots_235678 0x10028f6

IBUS_KEY_braille_dots_1235678

#define IBUS_KEY_braille_dots_1235678 0x10028f7

IBUS_KEY_braille_dots_45678

#define IBUS_KEY_braille_dots_45678 0x10028f8

IBUS_KEY_braille_dots_145678

#define IBUS_KEY_braille_dots_145678 0x10028f9

IBUS_KEY_braille_dots_245678

#define IBUS_KEY_braille_dots_245678 0x10028fa

IBUS_KEY_braille_dots_1245678

#define IBUS_KEY_braille_dots_1245678 0x10028fb

IBUS_KEY_braille_dots_345678

#define IBUS_KEY_braille_dots_345678 0x10028fc

IBUS_KEY_braille_dots_1345678

#define IBUS_KEY_braille_dots_1345678 0x10028fd

IBUS_KEY_braille_dots_2345678

#define IBUS_KEY_braille_dots_2345678 0x10028fe

IBUS_KEY_braille_dots_12345678

#define IBUS_KEY_braille_dots_12345678 0x10028ff

IBUS_KEY_Sinh_ng

#define IBUS_KEY_Sinh_ng 0x1000d82

IBUS_KEY_Sinh_h2

#define IBUS_KEY_Sinh_h2 0x1000d83

IBUS_KEY_Sinh_a

#define IBUS_KEY_Sinh_a 0x1000d85

IBUS_KEY_Sinh_aa

#define IBUS_KEY_Sinh_aa 0x1000d86

IBUS_KEY_Sinh_ae

#define IBUS_KEY_Sinh_ae 0x1000d87

IBUS_KEY_Sinh_aee

#define IBUS_KEY_Sinh_aee 0x1000d88

IBUS_KEY_Sinh_i

#define IBUS_KEY_Sinh_i 0x1000d89

IBUS_KEY_Sinh_ii

#define IBUS_KEY_Sinh_ii 0x1000d8a

IBUS_KEY_Sinh_u

#define IBUS_KEY_Sinh_u 0x1000d8b

IBUS_KEY_Sinh_uu

#define IBUS_KEY_Sinh_uu 0x1000d8c

IBUS_KEY_Sinh_ri

#define IBUS_KEY_Sinh_ri 0x1000d8d

IBUS_KEY_Sinh_rii

#define IBUS_KEY_Sinh_rii 0x1000d8e

IBUS_KEY_Sinh_lu

#define IBUS_KEY_Sinh_lu 0x1000d8f

IBUS_KEY_Sinh_luu

#define IBUS_KEY_Sinh_luu 0x1000d90

IBUS_KEY_Sinh_e

#define IBUS_KEY_Sinh_e 0x1000d91

IBUS_KEY_Sinh_ee

#define IBUS_KEY_Sinh_ee 0x1000d92

IBUS_KEY_Sinh_ai

#define IBUS_KEY_Sinh_ai 0x1000d93

IBUS_KEY_Sinh_o

#define IBUS_KEY_Sinh_o 0x1000d94

IBUS_KEY_Sinh_oo

#define IBUS_KEY_Sinh_oo 0x1000d95

IBUS_KEY_Sinh_au

#define IBUS_KEY_Sinh_au 0x1000d96

IBUS_KEY_Sinh_ka

#define IBUS_KEY_Sinh_ka 0x1000d9a

IBUS_KEY_Sinh_kha

#define IBUS_KEY_Sinh_kha 0x1000d9b

IBUS_KEY_Sinh_ga

#define IBUS_KEY_Sinh_ga 0x1000d9c

IBUS_KEY_Sinh_gha

#define IBUS_KEY_Sinh_gha 0x1000d9d

IBUS_KEY_Sinh_ng2

#define IBUS_KEY_Sinh_ng2 0x1000d9e

IBUS_KEY_Sinh_nga

#define IBUS_KEY_Sinh_nga 0x1000d9f

IBUS_KEY_Sinh_ca

#define IBUS_KEY_Sinh_ca 0x1000da0

IBUS_KEY_Sinh_cha

#define IBUS_KEY_Sinh_cha 0x1000da1

IBUS_KEY_Sinh_ja

#define IBUS_KEY_Sinh_ja 0x1000da2

IBUS_KEY_Sinh_jha

#define IBUS_KEY_Sinh_jha 0x1000da3

IBUS_KEY_Sinh_nya

#define IBUS_KEY_Sinh_nya 0x1000da4

IBUS_KEY_Sinh_jnya

#define IBUS_KEY_Sinh_jnya 0x1000da5

IBUS_KEY_Sinh_nja

#define IBUS_KEY_Sinh_nja 0x1000da6

IBUS_KEY_Sinh_tta

#define IBUS_KEY_Sinh_tta 0x1000da7

IBUS_KEY_Sinh_ttha

#define IBUS_KEY_Sinh_ttha 0x1000da8

IBUS_KEY_Sinh_dda

#define IBUS_KEY_Sinh_dda 0x1000da9

IBUS_KEY_Sinh_ddha

#define IBUS_KEY_Sinh_ddha 0x1000daa

IBUS_KEY_Sinh_nna

#define IBUS_KEY_Sinh_nna 0x1000dab

IBUS_KEY_Sinh_ndda

#define IBUS_KEY_Sinh_ndda 0x1000dac

IBUS_KEY_Sinh_tha

#define IBUS_KEY_Sinh_tha 0x1000dad

IBUS_KEY_Sinh_thha

#define IBUS_KEY_Sinh_thha 0x1000dae

IBUS_KEY_Sinh_dha

#define IBUS_KEY_Sinh_dha 0x1000daf

IBUS_KEY_Sinh_dhha

#define IBUS_KEY_Sinh_dhha 0x1000db0

IBUS_KEY_Sinh_na

#define IBUS_KEY_Sinh_na 0x1000db1

IBUS_KEY_Sinh_ndha

#define IBUS_KEY_Sinh_ndha 0x1000db3

IBUS_KEY_Sinh_pa

#define IBUS_KEY_Sinh_pa 0x1000db4

IBUS_KEY_Sinh_pha

#define IBUS_KEY_Sinh_pha 0x1000db5

IBUS_KEY_Sinh_ba

#define IBUS_KEY_Sinh_ba 0x1000db6

IBUS_KEY_Sinh_bha

#define IBUS_KEY_Sinh_bha 0x1000db7

IBUS_KEY_Sinh_ma

#define IBUS_KEY_Sinh_ma 0x1000db8

IBUS_KEY_Sinh_mba

#define IBUS_KEY_Sinh_mba 0x1000db9

IBUS_KEY_Sinh_ya

#define IBUS_KEY_Sinh_ya 0x1000dba

IBUS_KEY_Sinh_ra

#define IBUS_KEY_Sinh_ra 0x1000dbb

IBUS_KEY_Sinh_la

#define IBUS_KEY_Sinh_la 0x1000dbd

IBUS_KEY_Sinh_va

#define IBUS_KEY_Sinh_va 0x1000dc0

IBUS_KEY_Sinh_sha

#define IBUS_KEY_Sinh_sha 0x1000dc1

IBUS_KEY_Sinh_ssha

#define IBUS_KEY_Sinh_ssha 0x1000dc2

IBUS_KEY_Sinh_sa

#define IBUS_KEY_Sinh_sa 0x1000dc3

IBUS_KEY_Sinh_ha

#define IBUS_KEY_Sinh_ha 0x1000dc4

IBUS_KEY_Sinh_lla

#define IBUS_KEY_Sinh_lla 0x1000dc5

IBUS_KEY_Sinh_fa

#define IBUS_KEY_Sinh_fa 0x1000dc6

IBUS_KEY_Sinh_al

#define IBUS_KEY_Sinh_al 0x1000dca

IBUS_KEY_Sinh_aa2

#define IBUS_KEY_Sinh_aa2 0x1000dcf

IBUS_KEY_Sinh_ae2

#define IBUS_KEY_Sinh_ae2 0x1000dd0

IBUS_KEY_Sinh_aee2

#define IBUS_KEY_Sinh_aee2 0x1000dd1

IBUS_KEY_Sinh_i2

#define IBUS_KEY_Sinh_i2 0x1000dd2

IBUS_KEY_Sinh_ii2

#define IBUS_KEY_Sinh_ii2 0x1000dd3

IBUS_KEY_Sinh_u2

#define IBUS_KEY_Sinh_u2 0x1000dd4

IBUS_KEY_Sinh_uu2

#define IBUS_KEY_Sinh_uu2 0x1000dd6

IBUS_KEY_Sinh_ru2

#define IBUS_KEY_Sinh_ru2 0x1000dd8

IBUS_KEY_Sinh_e2

#define IBUS_KEY_Sinh_e2 0x1000dd9

IBUS_KEY_Sinh_ee2

#define IBUS_KEY_Sinh_ee2 0x1000dda

IBUS_KEY_Sinh_ai2

#define IBUS_KEY_Sinh_ai2 0x1000ddb

IBUS_KEY_Sinh_o2

#define IBUS_KEY_Sinh_o2 0x1000ddc

IBUS_KEY_Sinh_oo2

#define IBUS_KEY_Sinh_oo2 0x1000ddd

IBUS_KEY_Sinh_au2

#define IBUS_KEY_Sinh_au2 0x1000dde

IBUS_KEY_Sinh_lu2

#define IBUS_KEY_Sinh_lu2 0x1000ddf

IBUS_KEY_Sinh_ruu2

#define IBUS_KEY_Sinh_ruu2 0x1000df2

IBUS_KEY_Sinh_luu2

#define IBUS_KEY_Sinh_luu2 0x1000df3

IBUS_KEY_Sinh_kunddaliya

#define IBUS_KEY_Sinh_kunddaliya 0x1000df4
ibus-1.5.11/docs/reference/ibus/html/ibus-ibuserror.html0000644000000000000000000001064312551655043020100 00000000000000 ibuserror: IBus Reference Manual

ibuserror

ibuserror — Error functions and definition.

Stability Level

Stable, unless otherwise indicated

Functions

Types and Values

#define IBUS_ERROR

Description

This file defines some error functions and definition.

Functions

ibus_error_quark ()

GQuark
ibus_error_quark (void);

Types and Values

IBUS_ERROR

#define IBUS_ERROR ibus_error_quark()
ibus-1.5.11/docs/reference/ibus/html/up.png0000644000000000000000000000040412551655042015361 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ ”èÁ‘IDAT8Ëí’1 ƒ@DŸ•¶{ƒxa™ƒØÄ;$]r =JR´È1,Ë øSd„-©}0°ÌŸÙÏÂÂÎàüo¹L:m-˜¤QÞOäÀ[› Éäåkå T¸zþMÞ Lè¬Ì,š:ךuÀ!tÁK;æ ðP¦õÌôÀp Ot@£l¼ÿò/̵*á§l}IEND®B`‚ibus-1.5.11/docs/reference/ibus/html/IBusAttrList.html0000644000000000000000000002512012551655043017451 00000000000000 IBusAttrList: IBus Reference Manual

IBusAttrList

IBusAttrList — AttrList of IBusText.

Stability Level

Stable, unless otherwise indicated

Types and Values

struct IBusAttrList

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusAttrList

Description

Functions

ibus_attr_list_new ()

IBusAttrList *
ibus_attr_list_new ();

Creates an new IBusAttrList.

Returns

A newly allocated IBusAttrList.


ibus_attr_list_append ()

void
ibus_attr_list_append (IBusAttrList *attr_list,
                       IBusAttribute *attr);

Append an IBusAttribute to IBusAttrList, and increase reference.

Parameters

attr_list

An IBusAttrList instance.

 

attr

The IBusAttribute instance to be appended.

 

ibus_attr_list_get ()

IBusAttribute *
ibus_attr_list_get (IBusAttrList *attr_list,
                    guint index);

Returns IBusAttribute at given index. Borrowed reference.

Parameters

attr_list

An IBusAttrList instance.

 

index

Index of the attr_list .

 

Returns

IBusAttribute at given index, NULL if no such IBusAttribute.

[transfer none]

Types and Values

struct IBusAttrList

struct IBusAttrList {
    GArray *attributes;
};

Array of IBusAttribute.

Members

GArray *attributes;

GArray that holds IBusAttribute.

 
ibus-1.5.11/docs/reference/ibus/html/IBusKeymap.html0000644000000000000000000003143512551655043017137 00000000000000 IBusKeymap: IBus Reference Manual

IBusKeymap

IBusKeymap — Keyboard mapping handling.

Stability Level

Stable, unless otherwise indicated

Types and Values

struct IBusKeymap

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusKeymap

Description

An IBusKeymap defines the mapping between keyboard scancodes and keyboard symbols such as numbers, alphabets, and punctuation marks.

Some input methods assume certain keyboard layout (such as Chewing and Wubi requires an US-QWERTY layout), and expect key symbols to be arranged in that order. These input methods should new an IBusKeymap instance and define the keyboard layout. Then ibus_keymap_lookup_keysym() can convert scancodes back to the key symbols.

see_also: IBusComponent, IBusEngineDesc

Functions

ibus_keymap_new ()

IBusKeymap *
ibus_keymap_new (const gchar *name);

ibus_keymap_new is deprecated and should not be used in newly-written code.

This function has been deprecated and should not be used in newly written code. Please use ibus_keymap_get().

Get an IBusKeymap associated with the giving name.

This function loads the keymap file specified in name in the IBUS_DATA_DIR/keymaps directory.

Parameters

name

The keymap file to be loaded, such as 'us', 'jp'.

 

Returns

An IBusKeymap associated with the giving name; or NULL if failed.


ibus_keymap_get ()

IBusKeymap *
ibus_keymap_get (const gchar *name);

Get an IBusKeymap associated with the giving name.

This function loads the keymap file specified in name in the IBUS_DATA_DIR/keymaps directory.

Parameters

name

The keymap file to be loaded, such as 'us', 'jp'.

 

Returns

An IBusKeymap associated with the giving name; or NULL if failed.

[transfer full]


ibus_keymap_lookup_keysym ()

guint
ibus_keymap_lookup_keysym (IBusKeymap *keymap,
                           guint16 keycode,
                           guint32 state);

Converts the scancode to keysym, given the keymap.

Parameters

keymap

An IBusKeymap.

 

keycode

A scancode to be converted.

 

state

Modifier flags(such as Ctrl, Shift).

 

Returns

Corresponding keysym.

Types and Values

struct IBusKeymap

struct IBusKeymap {
    gchar *name;
    guint keymap[256][7];
};

A keymap object in IBus.

Members

gchar *name;

The name of the keymap, such as 'us', 'jp'.

 

guint keymap[256][7];

Keymap table. IME developers normally don have to touch this.

 
ibus-1.5.11/docs/reference/ibus/html/IBusEngineDesc.html0000644000000000000000000015737412551655043017730 00000000000000 IBusEngineDesc: IBus Reference Manual

IBusEngineDesc

IBusEngineDesc — Input method engine description data.

Stability Level

Stable, unless otherwise indicated

Properties

gchar * author Read / Write / Construct Only
gchar * description Read / Write / Construct Only
gchar * hotkeys Read / Write / Construct Only
gchar * icon Read / Write / Construct Only
gchar * icon-prop-key Read / Write / Construct Only
gchar * language Read / Write / Construct Only
gchar * layout Read / Write / Construct Only
gchar * layout-option Read / Write / Construct Only
gchar * layout-variant Read / Write / Construct Only
gchar * license Read / Write / Construct Only
gchar * longname Read / Write / Construct Only
gchar * name Read / Write / Construct Only
guint rank Read / Write / Construct Only
gchar * setup Read / Write / Construct Only
gchar * symbol Read / Write / Construct Only
gchar * textdomain Read / Write / Construct Only
gchar * version Read / Write / Construct Only

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusEngineDesc

Description

An IBusEngineDesc stores description data of IBusEngine. The description data can either be passed to ibus_engine_desc_new(), or loaded from an XML node through ibus_engine_desc_new_from_xml_node() to construct IBusEngineDesc.

However, the recommended way to load engine description data is using ibus_component_new_from_file() to load a component file, which also includes engine description data.

see_also: IBusComponent, IBusEngine

Functions

ibus_engine_desc_new ()

IBusEngineDesc *
ibus_engine_desc_new (const gchar *name,
                      const gchar *longname,
                      const gchar *description,
                      const gchar *language,
                      const gchar *license,
                      const gchar *author,
                      const gchar *icon,
                      const gchar *layout);

Creates a new IBusEngineDesc.

Parameters

name

Name of the engine.

 

longname

Long name of the input method engine.

 

description

Input method engine description.

 

language

Language (e.g. zh, jp) supported by this input method engine.

 

license

License of the input method engine.

 

author

Author of the input method engine.

 

icon

Icon file of this engine.

 

layout

Keyboard layout

 

Returns

A newly allocated IBusEngineDesc.


ibus_engine_desc_new_varargs ()

IBusEngineDesc *
ibus_engine_desc_new_varargs (const gchar *first_property_name,
                              ...);

Creates a new IBusEngineDesc. ibus_engine_desc_new_varargs() supports the va_list format. name property is required. e.g. ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL)

Parameters

first_property_name

Name of the first property.

 

...

the NULL-terminated arguments of the properties and values.

 

Returns

A newly allocated IBusEngineDesc.


ibus_engine_desc_new_from_xml_node ()

IBusEngineDesc *
ibus_engine_desc_new_from_xml_node (XMLNode *node);

Creates a new IBusEngineDesc from an XML node.

This function is called by ibus_component_new_from_file(), so developers normally do not need to call it directly.

Parameters

node

An XML node

 

Returns

A newly allocated IBusEngineDesc that contains description from node .


ibus_engine_desc_get_name ()

const gchar *
ibus_engine_desc_get_name (IBusEngineDesc *info);

Gets the name property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

name property in IBusEngineDesc


ibus_engine_desc_get_longname ()

const gchar *
ibus_engine_desc_get_longname (IBusEngineDesc *info);

Gets the longname property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

longname property in IBusEngineDesc


ibus_engine_desc_get_description ()

const gchar *
ibus_engine_desc_get_description (IBusEngineDesc *info);

Gets the description property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

description property in IBusEngineDesc


ibus_engine_desc_get_language ()

const gchar *
ibus_engine_desc_get_language (IBusEngineDesc *info);

Gets the language property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

language property in IBusEngineDesc


ibus_engine_desc_get_license ()

const gchar *
ibus_engine_desc_get_license (IBusEngineDesc *info);

Gets the license property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

license property in IBusEngineDesc


ibus_engine_desc_get_author ()

const gchar *
ibus_engine_desc_get_author (IBusEngineDesc *info);

Gets the author property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

author property in IBusEngineDesc


ibus_engine_desc_get_icon ()

const gchar *
ibus_engine_desc_get_icon (IBusEngineDesc *info);

Gets the icon property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

icon property in IBusEngineDesc


ibus_engine_desc_get_layout ()

const gchar *
ibus_engine_desc_get_layout (IBusEngineDesc *info);

Gets the layout property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

layout property in IBusEngineDesc


ibus_engine_desc_get_layout_variant ()

const gchar *
ibus_engine_desc_get_layout_variant (IBusEngineDesc *info);

Gets the keyboard variant property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

keyboard variant property in IBusEngineDesc


ibus_engine_desc_get_layout_option ()

const gchar *
ibus_engine_desc_get_layout_option (IBusEngineDesc *info);

Gets the keyboard option property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

keyboard option property in IBusEngineDesc


ibus_engine_desc_get_rank ()

guint
ibus_engine_desc_get_rank (IBusEngineDesc *info);

Gets the rank property in IBusEngineDesc.

Parameters

info

An IBusEngineDesc

 

Returns

rank property in IBusEngineDesc


ibus_engine_desc_get_hotkeys ()

const gchar *
ibus_engine_desc_get_hotkeys (IBusEngineDesc *info);

Gets the hotkeys property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

hotkeys property in IBusEngineDesc


ibus_engine_desc_get_symbol ()

const gchar *
ibus_engine_desc_get_symbol (IBusEngineDesc *info);

Gets the symbol property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

symbol property in IBusEngineDesc


ibus_engine_desc_get_setup ()

const gchar *
ibus_engine_desc_get_setup (IBusEngineDesc *info);

Gets the setup property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

setup property in IBusEngineDesc


ibus_engine_desc_get_version ()

const gchar *
ibus_engine_desc_get_version (IBusEngineDesc *info);

Gets the version property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

version in IBusEngineDesc


ibus_engine_desc_get_textdomain ()

const gchar *
ibus_engine_desc_get_textdomain (IBusEngineDesc *info);

Gets the textdomain property in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

textdomain in IBusEngineDesc


ibus_engine_desc_get_icon_prop_key ()

const gchar *
ibus_engine_desc_get_icon_prop_key (IBusEngineDesc *info);

Gets the key of IBusProperty to load the panel icon dynamically in IBusEngineDesc. It should not be freed.

Parameters

info

An IBusEngineDesc

 

Returns

IBusProperty.key for dynamic panel icon in IBusEngineDesc


ibus_engine_desc_output ()

void
ibus_engine_desc_output (IBusEngineDesc *info,
                         GString *output,
                         gint indent);

Output XML-formatted input method engine description. The result will be append to GString specified in output .

Parameters

info

An IBusEngineDesc

 

output

XML-formatted Input method engine description.

 

indent

Number of indent (showed as 4 spaces).

 

Types and Values

struct IBusEngineDesc

struct IBusEngineDesc;

Input method engine description data. You can get extended values with g_object_get_properties.

Property Details

The “author†property

  “author†                  gchar *

The author of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “description†property

  “description†             gchar *

The description of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “hotkeys†property

  “hotkeys†                 gchar *

The hotkeys of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “icon†property

  “icon†                    gchar *

The icon of engine description

Flags: Read / Write / Construct Only

Default value: "ibus-engine"


The “icon-prop-key†property

  “icon-prop-key†           gchar *

The key of IBusProperty to change panel icon dynamically.

Flags: Read / Write / Construct Only

Default value: ""


The “language†property

  “language†                gchar *

The language of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “layout†property

  “layout†                  gchar *

The layout of engine description

Flags: Read / Write / Construct Only

Default value: "us"


The “layout-option†property

  “layout-option†           gchar *

The keyboard option of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “layout-variant†property

  “layout-variant†          gchar *

The keyboard variant of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “license†property

  “license†                 gchar *

The license of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “longname†property

  “longname†                gchar *

The longname of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “name†property

  “name†                    gchar *

The name of engine description

Flags: Read / Write / Construct Only

Default value: NULL


The “rank†property

  “rank†                    guint

The rank of engine description

Flags: Read / Write / Construct Only

Default value: 0


The “setup†property

  “setup†                   gchar *

The exec lists of the engine setup command

Flags: Read / Write / Construct Only

Default value: ""


The “symbol†property

  “symbol†                  gchar *

The symbol chars of engine description instead of icon image

Flags: Read / Write / Construct Only

Default value: ""


The “textdomain†property

  “textdomain†              gchar *

The textdomain of engine description

Flags: Read / Write / Construct Only

Default value: ""


The “version†property

  “version†                 gchar *

The version number of engine description

Flags: Read / Write / Construct Only

Default value: ""

ibus-1.5.11/docs/reference/ibus/html/ibus.devhelp20000644000000000000000000174511712551655042016646 00000000000000 ibus-1.5.11/docs/reference/ibus/html/IBusComponent.html0000644000000000000000000014520512551655043017654 00000000000000 IBusComponent: IBus Reference Manual

IBusComponent

IBusComponent — Component (executable) specification.

Stability Level

Stable, unless otherwise indicated

Properties

gchar * author Read / Write / Construct Only
gchar * command-line Read / Write / Construct Only
gchar * description Read / Write / Construct Only
gchar * homepage Read / Write / Construct Only
gchar * license Read / Write / Construct Only
gchar * name Read / Write / Construct Only
gchar * textdomain Read / Write / Construct Only
gchar * version Read / Write / Construct Only

Types and Values

struct IBusComponent

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusComponent

Description

An IBusComponent is an executable program. It provides services such as user interface, configuration, and input method engine (IME).

It is recommended that IME developers provide a component XML file and load the XML file by ibus_component_new_from_file().

The format of a component XML file is described at

https://github.com/ibus/ibus/wiki/DevXML

Functions

ibus_component_new ()

IBusComponent *
ibus_component_new (const gchar *name,
                    const gchar *description,
                    const gchar *version,
                    const gchar *license,
                    const gchar *author,
                    const gchar *homepage,
                    const gchar *command_line,
                    const gchar *textdomain);

Creates a new IBusComponent.

Parameters

name

Name of the component.

 

description

Detailed description of component.

 

version

Component version.

 

license

Distribution license of this component.

 

author

Author(s) of the component.

 

homepage

Homepage of the component.

 

command_line

path to component executable.

 

textdomain

Domain name for dgettext()

 

Returns

A newly allocated IBusComponent.


ibus_component_new_varargs ()

IBusComponent *
ibus_component_new_varargs (const gchar *first_property_name,
                            ...);

Creates a new IBusComponent. ibus_component_new_varargs() supports the va_list format. name property is required. e.g. IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo", "command_line", "/usr/libexec/ibus-engine-foo --ibus", NULL)

Parameters

first_property_name

Name of the first property.

 

...

the NULL-terminated arguments of the properties and values.

 

Returns

A newly allocated IBusComponent.


ibus_component_new_from_xml_node ()

IBusComponent *
ibus_component_new_from_xml_node (XMLNode *node);

Creates a new IBusComponent from an XML tree.

Parameters

node

Root node of component XML tree.

 

Returns

A newly allocated IBusComponent.


ibus_component_new_from_file ()

IBusComponent *
ibus_component_new_from_file (const gchar *filename);

Creates a new IBusComponent from an XML file. Note that a component file usually contains engine descriptions, if it does, ibus_engine_desc_new_from_xml_node() will be called to load the engine descriptions.

Parameters

filename

An XML file that contains component information.

 

Returns

A newly allocated IBusComponent.


ibus_component_get_name ()

const gchar *
ibus_component_get_name (IBusComponent *component);

Gets the name property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

name property in IBusComponent


ibus_component_get_description ()

const gchar *
ibus_component_get_description (IBusComponent *component);

Gets the description property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

description property in IBusComponent


ibus_component_get_version ()

const gchar *
ibus_component_get_version (IBusComponent *component);

Gets the version property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

version property in IBusComponent


ibus_component_get_license ()

const gchar *
ibus_component_get_license (IBusComponent *component);

Gets the license property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

license property in IBusComponent


ibus_component_get_author ()

const gchar *
ibus_component_get_author (IBusComponent *component);

Gets the author property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

author property in IBusComponent


ibus_component_get_homepage ()

const gchar *
ibus_component_get_homepage (IBusComponent *component);

Gets the homepage property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

homepage property in IBusComponent


ibus_component_get_exec ()

const gchar *
ibus_component_get_exec (IBusComponent *component);

Gets the exec property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

exec property in IBusComponent


ibus_component_get_textdomain ()

const gchar *
ibus_component_get_textdomain (IBusComponent *component);

Gets the textdomain property in IBusComponent. It should not be freed.

Parameters

component

An IBusComponent

 

Returns

textdomain property in IBusComponent


ibus_component_add_observed_path ()

void
ibus_component_add_observed_path (IBusComponent *component,
                                  const gchar *path,
                                  gboolean access_fs);

Add an observed path to IBusComponent.

Parameters

component

An IBusComponent

 

path

Observed path to be added.

 

access_fs

TRUE for filling the file status; FALSE otherwise.

 

ibus_component_add_engine ()

void
ibus_component_add_engine (IBusComponent *component,
                           IBusEngineDesc *engine);

Add an engine to IBusComponent according to the description in engine .

Parameters

component

An IBusComponent

 

engine

A description of an engine.

 

ibus_component_get_engines ()

GList *
ibus_component_get_engines (IBusComponent *component);

Gets the engines of this component.

Parameters

component

An IBusComponent.

 

Returns

A newly allocated GList that contains engines.

[transfer container][element-type IBusEngineDesc]


ibus_component_output ()

void
ibus_component_output (IBusComponent *component,
                       GString *output,
                       gint indent);

Output IBusComponent as an XML-formatted string. The output string can be then shown on the screen or written to file.

Parameters

component

An IBusComponent.

 

output

GString that holds the result.

 

indent

level of indent.

 

ibus_component_output_engines ()

void
ibus_component_output_engines (IBusComponent *component,
                               GString *output,
                               gint indent);

Output engine description as an XML-formatted string. The output string can be then shown on the screen or written to file.

Parameters

component

An IBusComponent.

 

output

GString that holds the result.

 

indent

level of indent.

 

ibus_component_check_modification ()

gboolean
ibus_component_check_modification (IBusComponent *component);

Check whether the observed paths of component is modified.

Parameters

component

An IBusComponent.

 

Returns

TRUE if at least one of the observed paths is modified; FALSE otherwise.


ibus_component_get_observed_paths ()

GList *
ibus_component_get_observed_paths (IBusComponent *component);

Gets the observed paths of this component.

Parameters

component

An IBusComponent.

 

Returns

A newly allocated GList that contains observed paths.

[transfer container][element-type IBusObservedPath]

Types and Values

struct IBusComponent

struct IBusComponent {
};

An IBusComponent stores component information. You can get extended values with g_object_get_properties.

Property Details

The “author†property

  “author†                  gchar *

The author of component

Flags: Read / Write / Construct Only

Default value: NULL


The “command-line†property

  “command-line†            gchar *

The exec path of component

Flags: Read / Write / Construct Only

Default value: NULL


The “description†property

  “description†             gchar *

The description of component

Flags: Read / Write / Construct Only

Default value: NULL


The “homepage†property

  “homepage†                gchar *

The homepage of component

Flags: Read / Write / Construct Only

Default value: NULL


The “license†property

  “license†                 gchar *

The license of component

Flags: Read / Write / Construct Only

Default value: NULL


The “name†property

  “name†                    gchar *

The name of component

Flags: Read / Write / Construct Only

Default value: NULL


The “textdomain†property

  “textdomain†              gchar *

The textdomain of component

Flags: Read / Write / Construct Only

Default value: NULL


The “version†property

  “version†                 gchar *

The version of component

Flags: Read / Write / Construct Only

Default value: NULL

ibus-1.5.11/docs/reference/ibus/html/ch03.html0000644000000000000000000000674212551655043015666 00000000000000 Input method engine: IBus Reference Manual

Input method engine

IBusComponent — Component (executable) specification.
IBusEngine — Input method engine abstract.
IBusEngineDesc — Input method engine description data.
IBusEngineSimple — Input method engine supporting table-based input method
IBusFactory — Factory for creating engine instances.
IBusInputContext — IBus input context proxy object.
ibuskeys
IBusKeymap — Keyboard mapping handling.
ibuskeysyms-compat
IBusKeysyms — Key symbol definition.
ibusutil — Utilities with C-Language.

An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts.

ibus-1.5.11/docs/reference/ibus/html/IBusEngine.html0000644000000000000000000030664712551655043017130 00000000000000 IBusEngine: IBus Reference Manual

IBusEngine

IBusEngine — Input method engine abstract.

Stability Level

Stable, unless otherwise indicated

Properties

gchar * engine-name Read / Write / Construct Only

Types and Values

struct IBusEngine

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusService
                ╰── IBusEngine
                    ╰── IBusEngineSimple

Description

An IBusEngine provides infrastructure for input method engine. Developers can "extend" this class for input method engine development.

see_also: IBusComponent, IBusEngineDesc

Functions

ibus_engine_new ()

IBusEngine *
ibus_engine_new (const gchar *engine_name,
                 const gchar *object_path,
                 GDBusConnection *connection);

Create a new IBusEngine.

Parameters

engine_name

Name of the IBusObject.

 

object_path

Path for IBusService.

 

connection

An opened GDBusConnection.

 

Returns

A newly allocated IBusEngine.


ibus_engine_new_with_type ()

IBusEngine *
ibus_engine_new_with_type (GType engine_type,
                           const gchar *engine_name,
                           const gchar *object_path,
                           GDBusConnection *connection);

Create a new IBusEngine.

Parameters

engine_type

GType of IBusEngine.

 

engine_name

Name of the IBusObject.

 

object_path

Path for IBusService.

 

connection

An opened GDBusConnection.

 

Returns

A newly allocated IBusEngine.


ibus_engine_commit_text ()

void
ibus_engine_commit_text (IBusEngine *engine,
                         IBusText *text);

Commit output of input method to IBus client.

(Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

text

String commit to IBusEngine.

 

ibus_engine_update_preedit_text ()

void
ibus_engine_update_preedit_text (IBusEngine *engine,
                                 IBusText *text,
                                 guint cursor_pos,
                                 gboolean visible);

Update the pre-edit buffer.

(Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

text

Update content.

 

cursor_pos

Current position of cursor

 

visible

Whether the pre-edit buffer is visible.

 

ibus_engine_update_preedit_text_with_mode ()

void
ibus_engine_update_preedit_text_with_mode
                               (IBusEngine *engine,
                                IBusText *text,
                                guint cursor_pos,
                                gboolean visible,
                                IBusPreeditFocusMode mode);

Update the pre-edit buffer with commit mode. Similar to ibus_engine_update_preedit_text(), this function allows users to specify the behavior on focus out when the pre-edit buffer is visible.

If mode is IBUS_ENGINE_PREEDIT_COMMIT, contents of the pre-edit buffer will be comitted and cleared. If mode is IBUS_ENGINE_PREEDIT_CLEAR, contents of the pre-edit buffer will be cleared only.

(Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

text

Update content.

 

cursor_pos

Current position of cursor

 

visible

Whether the pre-edit buffer is visible.

 

mode

Pre-edit commit mode when the focus is lost.

 

ibus_engine_show_preedit_text ()

void
ibus_engine_show_preedit_text (IBusEngine *engine);

Show the pre-edit buffer.

Parameters

engine

An IBusEngine.

 

ibus_engine_hide_preedit_text ()

void
ibus_engine_hide_preedit_text (IBusEngine *engine);

Hide the pre-edit buffer.

Parameters

engine

An IBusEngine.

 

ibus_engine_update_auxiliary_text ()

void
ibus_engine_update_auxiliary_text (IBusEngine *engine,
                                   IBusText *text,
                                   gboolean visible);

Update the auxiliary bar.

(Note: The text object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

text

Update content.

 

visible

Whether the auxiliary text bar is visible.

 

ibus_engine_show_auxiliary_text ()

void
ibus_engine_show_auxiliary_text (IBusEngine *engine);

Show the auxiliary bar.

Parameters

engine

An IBusEngine.

 

ibus_engine_hide_auxiliary_text ()

void
ibus_engine_hide_auxiliary_text (IBusEngine *engine);

Hide the auxiliary bar.

Parameters

engine

An IBusEngine.

 

ibus_engine_update_lookup_table ()

void
ibus_engine_update_lookup_table (IBusEngine *engine,
                                 IBusLookupTable *lookup_table,
                                 gboolean visible);

Update the lookup table.

(Note: The table object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

lookup_table

An lookup_table.

 

visible

Whether the lookup_table is visible.

 

ibus_engine_update_lookup_table_fast ()

void
ibus_engine_update_lookup_table_fast (IBusEngine *engine,
                                      IBusLookupTable *lookup_table,
                                      gboolean visible);

Fast update for big lookup table.

If size of lookup table is not over table page size *4, then it calls ibus_engine_update_lookup_table().

(Note: The table object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

lookup_table

An lookup_table.

 

visible

Whether the lookup_table is visible.

 

ibus_engine_show_lookup_table ()

void
ibus_engine_show_lookup_table (IBusEngine *engine);

Show the lookup table.

Parameters

engine

An IBusEngine.

 

ibus_engine_hide_lookup_table ()

void
ibus_engine_hide_lookup_table (IBusEngine *engine);

Hide the lookup table.

Parameters

engine

An IBusEngine.

 

ibus_engine_forward_key_event ()

void
ibus_engine_forward_key_event (IBusEngine *engine,
                               guint keyval,
                               guint keycode,
                               guint state);

Forward the key event.

Parameters

engine

An IBusEngine.

 

keyval

KeySym.

 

keycode

keyboard scancode.

 

state

Key modifier flags.

 

ibus_engine_register_properties ()

void
ibus_engine_register_properties (IBusEngine *engine,
                                 IBusPropList *prop_list);

Register and show properties in language bar.

(Note: The prop_list object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

prop_list

Property List.

 

ibus_engine_update_property ()

void
ibus_engine_update_property (IBusEngine *engine,
                             IBusProperty *prop);

Update the state displayed in language bar.

(Note: The prop object will be released, if it is floating. If caller want to keep the object, caller should make the object sink by g_object_ref_sink.)

Parameters

engine

An IBusEngine.

 

prop

IBusProperty to be updated.

 

ibus_engine_delete_surrounding_text ()

void
ibus_engine_delete_surrounding_text (IBusEngine *engine,
                                     gint offset,
                                     guint nchars);

Delete surrounding text.

Parameters

engine

An IBusEngine.

 

offset

The offset of the first char.

 

nchars

Number of chars to be deleted.

 

ibus_engine_get_surrounding_text ()

void
ibus_engine_get_surrounding_text (IBusEngine *engine,
                                  IBusText **text,
                                  guint *cursor_pos,
                                  guint *anchor_pos);

Get surrounding text.

It is also used to tell the input-context that the engine will utilize surrounding-text. In that case, it must be called in “enable†handler, with both text and cursor set to NULL.

See also: “set-surrounding-textâ€

Parameters

engine

An IBusEngine.

 

text

Location to store surrounding text.

[out][transfer none][allow-none]

cursor_pos

Cursor position in characters in text .

[out][allow-none]

anchor_pos

Anchor position of selection in text .

[out][allow-none]

ibus_engine_get_content_type ()

void
ibus_engine_get_content_type (IBusEngine *engine,
                              guint *purpose,
                              guint *hints);

Get content-type (primary purpose and hints) of the current input context.

See also: “set-content-typeâ€

Parameters

engine

An IBusEngine.

 

purpose

Primary purpose of the input context.

[out][allow-none]

hints

Hints that augument purpose .

[out][allow-none]

ibus_engine_get_name ()

const gchar *
ibus_engine_get_name (IBusEngine *engine);

Return the name of IBusEngine.

Parameters

engine

An IBusEngine.

 

Returns

Name of IBusEngine.

Types and Values

struct IBusEngine

struct IBusEngine {
    gboolean enabled;
    gboolean has_focus;

    /* cursor location */
    IBusRectangle cursor_area;
    guint client_capabilities;
};

IBusEngine properties.

Members

gboolean enabled;

Whether the engine is enabled.

 

gboolean has_focus;

Whether the engine has focus.

 

IBusRectangle cursor_area;

Area of cursor.

 

guint client_capabilities;

IBusCapabilite (client capabilities) flags.

 

Property Details

The “engine-name†property

  “engine-name†             gchar *

engine name.

Flags: Read / Write / Construct Only

Default value: "noname"

Signal Details

The “cancel-hand-writing†signal

void
user_function (IBusEngine *engine,
               guint       n_strokes,
               gpointer    user_data)

Emitted when a hand writing operation is cancelled. Implement the member function IBusEngineClass::cancel_hand_writing in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

n_strokes

The number of strokes to be removed. 0 means "remove all".

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “candidate-clicked†signal

void
user_function (IBusEngine *engine,
               guint       index,
               guint       button,
               guint       state,
               gpointer    user_data)

Emitted when candidate on lookup table is clicked. Implement the member function IBusEngineClass::candidate_clicked in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

index

Index of candidate be clicked.

 

button

Mouse button.

 

state

Keyboard state.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “cursor-down†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the down cursor button is pressed. Implement the member function IBusEngineClass::cursor_down in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “cursor-up†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the up cursor button is pressed. Implement the member function IBusEngineClass::cursor_up in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “disable†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the IME is disabled. Implement the member function IBusEngineClass::disable in extended class to receive this signal.

See also: ibus_bus_set_global_engine().

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “enable†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the IME is enabled. Implement the member function IBusEngineClass::enable in extended class to receive this signal.

See also: ibus_bus_set_global_engine().

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “focus-in†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the client application get the focus. Implement the member function IBusEngineClass::focus_in in extended class to receive this signal.

See also: ibus_input_context_focus_in()

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “focus-out†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the client application lost the focus. Implement the member function IBusEngineClass::focus_out in extended class to receive this signal.

See also: ibus_input_context_focus_out()

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-down†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the page-down button is pressed. Implement the member function IBusEngineClass::page_down in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-up†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the page-up button is pressed. Implement the member function IBusEngineClass::page_up in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “process-hand-writing-event†signal

void
user_function (IBusEngine *engine,
               gpointer    coordinates,
               guint       coordinates_len,
               gpointer    user_data)

Emitted when a hand writing operation is cancelled. Implement the member function IBusEngineClass::cancel_hand_writing in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

coordinates

An array of double (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]).

 

coordinates_len

The number of elements in the array.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “process-key-event†signal

gboolean
user_function (IBusEngine *engine,
               guint       keyval,
               guint       keycode,
               guint       state,
               gpointer    user_data)

Emitted when a key event is received. Implement the member function IBusEngineClass::process_key_event in extended class to receive this signal. Both the key symbol and keycode are passed to the member function. See ibus_input_context_process_key_event() for further explanation of key symbol, keycode and which to use.

Parameters

engine

An IBusEngine.

 

keyval

Key symbol of the key press.

 

keycode

KeyCode of the key press.

 

state

Key modifier flags.

 

user_data

user data set when the signal handler was connected.

 

Returns

TRUE for successfully process the key; FALSE otherwise. See also: ibus_input_context_process_key_event().

Argument user_data is ignored in this function.

Flags: Run Last


The “property-activate†signal

void
user_function (IBusEngine *engine,
               gchar      *name,
               guint       state,
               gpointer    user_data)

Emitted when a property is activated or change changed. Implement the member function IBusEngineClass::property_activate in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

name

Property name.

 

state

Property state.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “property-hide†signal

void
user_function (IBusEngine *engine,
               gchar      *name,
               gpointer    user_data)

Emitted when a property is hidden. Implement the member function IBusEngineClass::property_hide in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

name

Property name.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “property-show†signal

void
user_function (IBusEngine *engine,
               gchar      *name,
               gpointer    user_data)

Emitted when a property is shown. Implement the member function IBusEngineClass::property_side in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

name

Property name.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “reset†signal

void
user_function (IBusEngine *engine,
               gpointer    user_data)

Emitted when the IME is reset. Implement the member function IBusEngineClass::reset in extended class to receive this signal.

See also: ibus_input_context_reset().

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-capabilities†signal

void
user_function (IBusEngine *engine,
               guint       caps,
               gpointer    user_data)

Emitted when the client application capabilities is set. Implement the member function IBusEngineClass::set_capabilities in extended class to receive this signal.

See also: ibus_input_context_set_capabilities().

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

caps

Capabilities flags of IBusEngine, see IBusCapabilite

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-content-type†signal

void
user_function (IBusEngine *engine,
               guint       purpose,
               guint       hints,
               gpointer    user_data)

Emitted when the client application content-type (primary purpose and hints) is set. The engine could change the behavior according to the content-type. Implement the member function IBusEngineClass::set_content_type in extended class to receive this signal.

For example, if the client application wants to restrict input to numbers, this signal will be emitted with purpose set to IBUS_INPUT_PURPOSE_NUMBER, so the engine can switch the input mode to latin.

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

purpose

Primary purpose of the input context, as an IBusInputPurpose.

 

hints

Hints that augment purpose , as an IBusInputHints.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-cursor-location†signal

void
user_function (IBusEngine *engine,
               gint        x,
               gint        y,
               gint        w,
               gint        h,
               gpointer    user_data)

Emitted when the location of IME is set. Implement the member function IBusEngineClass::set_cursor_location in extended class to receive this signal.

See also: ibus_input_context_set_cursor_location().

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

x

X coordinate of the cursor.

 

y

Y coordinate of the cursor.

 

w

Width of the cursor.

 

h

Height of the cursor.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “set-surrounding-text†signal

void
user_function (IBusEngine *engine,
               GObject    *text,
               guint       cursor_pos,
               guint       anchor_pos,
               gpointer    user_data)

Emitted when a surrounding text is set. Implement the member function IBusEngineClass::set_surrounding_text in extended class to receive this signal. If anchor_pos equals to cursor_pos, it means "there are no selection" or "does not support selection retrival".

Argument user_data is ignored in this function.

Parameters

engine

An IBusEngine.

 

text

The surrounding text.

 

cursor_pos

The cursor position on surrounding text.

 

anchor_pos

The anchor position on selection area.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/left-insensitive.png0000644000000000000000000000061312551655042020227 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝÆ«q‡IDAT8ËÍ’­NQ…¿éö†…@¡p üdsÛÀÖ`*š4Á@ò„W@ A!ÈÔ†@6Ü^ƒ 5hxèIH R`sQpäÌ™339þBÊó|Ês¤ªKEQTÛíöK°@·ÛÎià¦^¯Ï~îWʆ½÷‹ÀÕûðå`0˜åTJ6·Tõ˜‘cYn6›AÞû Æ€½~¿ß±Ö>}Ç­Žœs;ªº ¨ˆlYkwËÞürˆ¼†ºó£ Þû5U= °/"›ÖÚç  ¬µ‡"ÒuU=ɲlü×ArÎÕDä˜zÃáp5I’ûà4^E+ÀP3Æœçàq_«êp Ì¥iñ¯ðUY¥‚p=#IEND®B`‚ibus-1.5.11/docs/reference/ibus/html/right.png0000644000000000000000000000040512551655042016053 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ!ÜG’IDAT8ËÕÒ¯aÇñ?›M´½IdErš,¾Ù-¸ÑhîAâIl’Í ¯r’äy§ž}¿ç·s¿X6èæ ö!9¢Ÿ#èD‚ Œr$-¬BrÃ$GÒÀ"$”¹;™á‰æŸÍú—WZêä&–!¸cš·±øŠq \`ðÃÔ軀Oä¾ò=QouføòIEND®B`‚ibus-1.5.11/docs/reference/ibus/html/ch05.html0000644000000000000000000000427712551655043015671 00000000000000 Communication: IBus Reference Manual

Communication

IBusBus — Connect with IBus daemon.
IBusProxy — Base proxy object.
IBusSerializable — A serializable object.
IBusService — IBus service back-end.

Here lists the service communication functions.

ibus-1.5.11/docs/reference/ibus/html/IBusSerializable.html0000644000000000000000000010704412551655043020317 00000000000000 IBusSerializable: IBus Reference Manual

IBusSerializable

IBusSerializable — A serializable object.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ├── IBusHotkeyProfile
                ├── IBusText
                ├── IBusAttribute
                ├── IBusAttrList
                ├── IBusEngineDesc
                ├── IBusLookupTable
                ├── IBusComponent
                ├── IBusProperty
                ├── IBusPropList
                ├── IBusObservedPath
                ╰── IBusRegistry

Description

An IBusSerializable is an IBus object which can be serialized, that is, to be to and from a GVariant.

This class is to be extended by other class that requires serialization. An extended class should overrides following methods:

  • serialize(object,iter): for serialize.

  • deserialize(object,iter): for deserialize.

  • copy(desc,src): for copy between IBusSerializable.

See IBusSerializableSerializeFunc(), IBusSerializableDeserializeFunc(), IBusSerializableCopyFunc() for function prototype.

Functions

ibus_serializable_set_attachment()

#define             ibus_serializable_set_attachment(o, k, v)

Attach a value to an IBusSerializable. This macro is an convenient wrapper of ibus_serializable_set_qattachment().

Parameters

o

An IBusSerializable.

 

k

String formatted key for indexing value.

 

v

Value to be attached. Should be also serializable.

 

ibus_serializable_get_attachment()

#define             ibus_serializable_get_attachment(o, k)

Get a value from attachment of an IBusSerializable. This macro is an convenient wrapper of ibus_serializable_get_qattachment().

Parameters

o

An IBusSerializable.

 

k

String formatted key for indexing value.

 

ibus_serializable_remove_attachment()

#define             ibus_serializable_remove_attachment(o, k)

Remove a value from attachment of an IBusSerializable. This macro is an convenient wrapper of ibus_serializable_remove_qattachment().

Parameters

o

An IBusSerializable.

 

k

String formatted key for indexing value.

 

IBusSerializableSerializeFunc ()

gboolean
(*IBusSerializableSerializeFunc) (IBusSerializable *serializable,
                                  GVariantBuilder *builder);

Prototype of serialize function. Serialize function convert an IBusSerializable to GVariantBuilder. Returns a gboolean value which indicates whether the conversion is success. Return TRUE if succeed.

Parameters

serializable

An IBusSerializable.

 

builder

A GVariantBuilder.

 

Returns

TRUE if succeed; FALSE otherwise.


IBusSerializableDeserializeFunc ()

gint
(*IBusSerializableDeserializeFunc) (IBusSerializable *serializable,
                                    GVariant *variant);

Prototype of deserialize function. Deserialize function convert a GVariant to IBusSerializable. Returns an integer value which indicates how many values in the variant(tuple) are consumed.

Parameters

serializable

An IBusSerializable.

 

variant

A GVariant contains a tuple.

 

Returns

The number of values in the variant(tuple) are consumed.


IBusSerializableCopyFunc ()

gboolean
(*IBusSerializableCopyFunc) (IBusSerializable *dest,
                             const IBusSerializable *src);

Prototype of copy function. Copy function copy from source IBusSerializable to the destination one. Returns a gboolean value which indicates whether the copying is success.

Parameters

dest

The destination IBusSerializable.

 

src

A source IBusSerializable.

 

Returns

TRUE if succeed; FALSE otherwise.


ibus_serializable_new ()

IBusSerializable *
ibus_serializable_new (void);

Creates a new instance of an IBusSerializable.

Returns

a new instance of IBusSerializable.


ibus_serializable_set_qattachment ()

void
ibus_serializable_set_qattachment (IBusSerializable *serializable,
                                   GQuark key,
                                   GVariant *value);

Attach a value to an IBusSerializable. If the value is floating, the serializable will take the ownership.

See also: ibus_serializable_set_attachment().

Parameters

serializable

An IBusSerializable.

 

key

String formatted key for indexing value.

 

value

Value to be attached or NULL to remove any prevoius value.

 

ibus_serializable_get_qattachment ()

GVariant *
ibus_serializable_get_qattachment (IBusSerializable *serializable,
                                   GQuark key);

Gets a value from attachment of an IBusSerializable.

Parameters

serializable

An IBusSerializable.

 

key

String formatted key for indexing value.

 

Returns

The attached value; or NULL if fail to retrieve the value.

See also: ibus_serializable_set_attachment().


ibus_serializable_remove_qattachment ()

void
ibus_serializable_remove_qattachment (IBusSerializable *serializable,
                                      GQuark key);

Remove a value from attachment of an IBusSerializable. See also: ibus_serializable_remove_attachment().

Parameters

serializable

An IBusSerializable.

 

key

String formatted key for indexing value.

 

ibus_serializable_copy ()

IBusSerializable *
ibus_serializable_copy (IBusSerializable *serializable);

Clone an IBusSerializable. The copy method should be implemented in extended class.

Parameters

serializable

An IBusSerializable.

 

Returns

A newly allocated clone object; or NULL if object is not serializable.

See also: IBusSerializableCopyFunc().

[transfer none]


ibus_serializable_serialize ()

GVariant *
ibus_serializable_serialize (IBusSerializable *serializable);

Serialize an IBusSerializable to a GVariant. The serialize method should be implemented in extended class.

Parameters

serializable

An IBusSerializable.

 

Returns

A GVariant.

See also: IBusSerializableCopyFunc().


ibus_serializable_deserialize ()

IBusSerializable *
ibus_serializable_deserialize (GVariant *variant);

Deserialize a GVariant to an IBusSerializable/ The deserialize method should be implemented in extended class.

Parameters

variant

A GVariant.

 

Returns

The deserialized IBusSerializable.

See also: IBusSerializableCopyFunc().

[transfer none]

Types and Values

struct IBusSerializable

struct IBusSerializable;

All the fields in the IBusSerializable structure are private to the IBusSerializable and should never be accessed directly.

ibus-1.5.11/docs/reference/ibus/html/IBusProxy.html0000644000000000000000000002652212551655043017033 00000000000000 IBusProxy: IBus Reference Manual

IBusProxy

IBusProxy — Base proxy object.

Stability Level

Stable, unless otherwise indicated

Functions

Signals

Types and Values

struct IBusProxy

Object Hierarchy

    GObject
    ╰── GDBusProxy
        ╰── IBusProxy
            ├── IBusConfig
            ╰── IBusInputContext

Implemented Interfaces

IBusProxy implements GDBusInterface, GInitable and GAsyncInitable.

Description

An IBusProxy is the base of all proxy objects, which communicate the corresponding IBusServices on the other end of IBusConnection. For example, IBus clients (such as editors, web browsers) invoke the proxy object, IBusInputContext to communicate with the InputContext service of the ibus-daemon.

Almost all services have corresponding proxies, except very simple services.

Functions

IBUS_PROXY_FLAGS()

#define IBUS_PROXY_FLAGS(obj)             (IBUS_PROXY (obj)->flags)

IBUS_PROXY_SET_FLAGS()

#define IBUS_PROXY_SET_FLAGS(obj,flag)    G_STMT_START{ (IBUS_PROXY_FLAGS (obj) |= (flag)); }G_STMT_END

IBUS_PROXY_UNSET_FLAGS()

#define IBUS_PROXY_UNSET_FLAGS(obj,flag)  G_STMT_START{ (IBUS_PROXY_FLAGS (obj) &= ~(flag)); }G_STMT_END

IBUS_PROXY_DESTROYED()

#define IBUS_PROXY_DESTROYED(obj)         (IBUS_PROXY_FLAGS (obj) & IBUS_DESTROYED)

ibus_proxy_destroy ()

void
ibus_proxy_destroy (IBusProxy *proxy);

Dispose the proxy object. If the dbus connection is alive and the own variable above is TRUE (which is the default), org.freedesktop.IBus.Service.Destroy method will be called. Note that "destroy" signal might be emitted when ibus_proxy_destroy is called or the underlying dbus connection for the proxy is terminated. In the callback of the destroy signal, you might have to call something like 'g_object_unref(the_proxy);'.

Parameters

proxy

An IBusProxy

 

Types and Values

struct IBusProxy

struct IBusProxy;

An opaque data type representing an IBusProxy.

Signal Details

The “destroy†signal

void
user_function (IBusProxy *object,
               gpointer   user_data)

Destroy and free an IBusProxy

See also: ibus_proxy_destroy().

Argument user_data is ignored in this function.

Parameters

object

An IBusProxy.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

ibus-1.5.11/docs/reference/ibus/html/IBusProperty.html0000644000000000000000000016777512551655043017556 00000000000000 IBusProperty: IBus Reference Manual

IBusProperty

IBusProperty — UI component for input method engine property.

Stability Level

Stable, unless otherwise indicated

Properties

gchar * icon Read / Write
gchar * key Read / Write / Construct Only
IBusText * label Read / Write / Construct
IBusPropType prop-type Read / Write / Construct Only
gboolean sensitive Read / Write
IBusPropState state Read / Write
IBusPropList * sub-props Read / Write
IBusText * symbol Read / Write / Construct
IBusText * tooltip Read / Write
gboolean visible Read / Write

Types and Values

Object Hierarchy

    GEnum
    ├── IBusPropState
    ╰── IBusPropType
    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ├── IBusPropList
                ╰── IBusProperty

Description

An IBusProperty is an UI component like a button or a menu item which shows the status of corresponding input method engine property. End user can operate and see the current status of IME through these components. For example, ibus-chewing users change the English/Chinese input mode by pressing ctrl-space or click on the Eng/Chi switch button. And the IBusProperty shows the change correspondingly.

see_also: IBusPropList, IBusEngine

Functions

ibus_property_new ()

IBusProperty *
ibus_property_new (const gchar *key,
                   IBusPropType type,
                   IBusText *label,
                   const gchar *icon,
                   IBusText *tooltip,
                   gboolean sensitive,
                   gboolean visible,
                   IBusPropState state,
                   IBusPropList *prop_list);

Creates a new IBusProperty.

Parameters

key

Unique Identity for the IBusProperty.

 

type

IBusPropType of IBusProperty.

 

label

Text shown in UI.

 

icon

Icon file for the IBusProperty.

[allow-none]

tooltip

Message shown if mouse hovered the IBusProperty.

 

sensitive

Whether the IBusProperty is sensitive to keyboard and mouse event.

 

visible

Whether the IBusProperty is visible.

 

state

IBusPropState of IBusProperty.

 

prop_list

IBusPropList that contains sub IBusProperties.

[allow-none]

Returns

A newly allocated IBusProperty.


ibus_property_new_varargs ()

IBusProperty *
ibus_property_new_varargs (const gchar *first_property_name,
                           ...);

Creates a new IBusProperty. ibus_property_new_varargs() supports the va_list format. name property is required. e.g. ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL)

Parameters

first_property_name

Name of the first property.

 

...

the NULL-terminated arguments of the properties and values.

 

Returns

A newly allocated IBusProperty.


ibus_property_get_key ()

const gchar *
ibus_property_get_key (IBusProperty *prop);

Get the key of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the key of IBusProperty. Should not be freed.


ibus_property_get_label ()

IBusText *
ibus_property_get_label (IBusProperty *prop);

Get the label of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the label of IBusProperty. Should not be freed.

[transfer none]


ibus_property_set_label ()

void
ibus_property_set_label (IBusProperty *prop,
                         IBusText *label);

Set the label of IBusProperty.

Parameters

prop

An IBusProperty.

 

label

Text shown in UI.

 

ibus_property_get_symbol ()

IBusText *
ibus_property_get_symbol (IBusProperty *prop);

Get the symbol of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the symbol of IBusProperty. Should not be freed.

[transfer none]


ibus_property_set_symbol ()

void
ibus_property_set_symbol (IBusProperty *prop,
                          IBusText *symbol);

Set the symbol of IBusProperty.

Parameters

prop

An IBusProperty.

 

symbol

Text shown in UI.

 

ibus_property_get_icon ()

const gchar *
ibus_property_get_icon (IBusProperty *prop);

Get the icon of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the icon of IBusProperty. Should not be freed.


ibus_property_set_icon ()

void
ibus_property_set_icon (IBusProperty *prop,
                        const gchar *icon);

Set the icon of IBusProperty.

Parameters

prop

An IBusProperty.

 

icon

Icon shown in UI. It could be a full path of an icon file or an icon name.

 

ibus_property_get_tooltip ()

IBusText *
ibus_property_get_tooltip (IBusProperty *prop);

Get the tooltip of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the tooltip of IBusProperty. Should not be freed.

[transfer none]


ibus_property_set_tooltip ()

void
ibus_property_set_tooltip (IBusProperty *prop,
                           IBusText *tooltip);

Set the tooltip of IBusProperty.

Parameters

prop

An IBusProperty.

 

tooltip

Text of the tooltip.

 

ibus_property_get_sensitive ()

gboolean
ibus_property_get_sensitive (IBusProperty *prop);

Get the sensitive of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the sensitive of IBusProperty.


ibus_property_set_sensitive ()

void
ibus_property_set_sensitive (IBusProperty *prop,
                             gboolean sensitive);

Set whether the IBusProperty is sensitive.

Parameters

prop

An IBusProperty.

 

sensitive

Whether the IBusProperty is sensitive.

 

ibus_property_get_visible ()

gboolean
ibus_property_get_visible (IBusProperty *prop);

Get the visible of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the visible of IBusProperty.


ibus_property_set_visible ()

void
ibus_property_set_visible (IBusProperty *prop,
                           gboolean visible);

Set whether the IBusProperty is visible.

Parameters

prop

An IBusProperty.

 

visible

Whether the IBusProperty is visible.

 

ibus_property_get_prop_type ()

IBusPropType
ibus_property_get_prop_type (IBusProperty *prop);

ibus_property_get_state ()

IBusPropState
ibus_property_get_state (IBusProperty *prop);

Get the state of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the state of IBusProperty.


ibus_property_set_state ()

void
ibus_property_set_state (IBusProperty *prop,
                         IBusPropState state);

Set the state of the IBusProperty.

Parameters

prop

An IBusProperty.

 

state

The state of the IBusProperty.

 

ibus_property_get_sub_props ()

IBusPropList *
ibus_property_get_sub_props (IBusProperty *prop);

Get the IBusPropList of IBusProperty.

Parameters

prop

An IBusProperty.

 

Returns

the IBusPropList of IBusProperty. Should not be freed.

[transfer none]


ibus_property_set_sub_props ()

void
ibus_property_set_sub_props (IBusProperty *prop,
                             IBusPropList *prop_list);

Set the sub IBusProperties.

Parameters

prop

An IBusProperty.

 

prop_list

IBusPropList that contains sub IBusProperties.

 

ibus_property_update ()

gboolean
ibus_property_update (IBusProperty *prop,
                      IBusProperty *prop_update);

Update the content of an IBusProperty. IBusProperty prop_update can either be sub-property of prop , or holds new values for prop .

Parameters

prop

An IBusProperty.

 

prop_update

IBusPropList that contains sub IBusProperties.

 

Returns

TRUE for update suceeded; FALSE otherwise.

Types and Values

enum IBusPropType

Type enumeration of IBusProperty.

Members

PROP_TYPE_NORMAL

Property is shown as normal text.

 

PROP_TYPE_TOGGLE

Property is shown as a toggle button.

 

PROP_TYPE_RADIO

Property is shown as a radio selection option.

 

PROP_TYPE_MENU

Property is shown as a menu, usually imply it has sub menu items.

 

PROP_TYPE_SEPARATOR

A separator for menu.

 

enum IBusPropState

State of IBusProperty. The actual effect depends on IBusPropType of the IBusProperty.

PROP_TYPE_TOGGLE

Emphasized if PROP_STATE_CHECKED, normal otherwise.

PROP_TYPE_RADIO

Option checked if PROP_STATE_CHECKED, unchecked otherwise.

No effect on other types.

Members

PROP_STATE_UNCHECKED

Property option is unchecked.

 

PROP_STATE_CHECKED

Property option is checked.

 

PROP_STATE_INCONSISTENT

The state is inconsistent with the associated IME property.

 

struct IBusProperty

struct IBusProperty;

IBusPropList

typedef struct {
    GArray *properties;
} IBusPropList;

An array of IBusProperties.

Members

GArray *properties;

GArray that holds IBusProperties.

 

IBusPropListClass

typedef struct {
    IBusSerializableClass parent;
} IBusPropListClass;

Class structure for IBusPropList.

Members

IBusSerializableClass parent;

The parent class.

 

Property Details

The “icon†property

  “icon†                    gchar *

The icon of property.

Flags: Read / Write

Default value: ""


The “key†property

  “key†                     gchar *

The key of property.

Flags: Read / Write / Construct Only

Default value: ""


The “label†property

  “label†                   IBusText *

The label of property.

Flags: Read / Write / Construct


The “prop-type†property

  “prop-type†               IBusPropType

The type of property.

Flags: Read / Write / Construct Only

Default value: PROP_TYPE_NORMAL


The “sensitive†property

  “sensitive†               gboolean

The sensitive of property.

Flags: Read / Write

Default value: TRUE


The “state†property

  “state†                   IBusPropState

The state of property.

Flags: Read / Write

Default value: PROP_STATE_UNCHECKED


The “sub-props†property

  “sub-props†               IBusPropList *

The sub properties of property.

Flags: Read / Write


The “symbol†property

  “symbol†                  IBusText *

The symbol of property.

Flags: Read / Write / Construct


The “tooltip†property

  “tooltip†                 IBusText *

The tooltip of property.

Flags: Read / Write


The “visible†property

  “visible†                 gboolean

The visible of property.

Flags: Read / Write

Default value: TRUE

ibus-1.5.11/docs/reference/ibus/html/IBusHotkeyProfile.html0000644000000000000000000006025412551655043020476 00000000000000 IBusHotkeyProfile: IBus Reference Manual

IBusHotkeyProfile

IBusHotkeyProfile — Hotkeys and associated events.

Stability Level

Stable, unless otherwise indicated

Signals

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusHotkeyProfile

Description

An IBusHotkeyProfile associates a hotkey and an event.

Functions

ibus_hotkey_profile_add_hotkey ()

gboolean
ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile,
                                guint keyval,
                                guint modifiers,
                                GQuark event);

Adds a hotkey and its associated event to an IBusHotkeyProfile.

Parameters

profile

An IBusHotkeyProfile.

 

keyval

Keycode of the hotkey.

 

modifiers

Modifiers of the hotkey.

 

event

The event to be associated.

 

Returns

Always TRUE.


ibus_hotkey_profile_add_hotkey_from_string ()

gboolean
ibus_hotkey_profile_add_hotkey_from_string
                               (IBusHotkeyProfile *profile,
                                const gchar *str,
                                GQuark event);

Adds a hotkey and its associated event to an IBusHotkeyProfile. The hotkey is in string format, such like

Control+Shift+A.

Parameters

profile

An IBusHotkeyProfile.

 

str

Key in string representation. '+' is the separator.

 

event

The event to be associated.

 

Returns

FALSE if str contains invalid symbol; TRUE otherwise.


ibus_hotkey_profile_remove_hotkey ()

gboolean
ibus_hotkey_profile_remove_hotkey (IBusHotkeyProfile *profile,
                                   guint keyval,
                                   guint modifiers);

Removes the hotkey for an IBusHotkeyProfile.

Parameters

profile

An IBusHotkeyProfile.

 

keyval

Keycode of the hotkey.

 

modifiers

Modifiers of the hotkey.

 

Returns

FALSE if the key is not in profile , TRUE otherwise.


ibus_hotkey_profile_remove_hotkey_by_event ()

gboolean
ibus_hotkey_profile_remove_hotkey_by_event
                               (IBusHotkeyProfile *profile,
                                GQuark event);

Removes the hotkey for an IBusHotkeyProfile by event.

Parameters

profile

An IBusHotkeyProfile.

 

event

The associated event.

 

Returns

FALSE if no such event in profile , TRUE otherwise.


ibus_hotkey_profile_filter_key_event ()

GQuark
ibus_hotkey_profile_filter_key_event (IBusHotkeyProfile *profile,
                                      guint keyval,
                                      guint modifiers,
                                      guint prev_keyval,
                                      guint prev_modifiers,
                                      gpointer user_data);

Emits a ::trigger signal when a hotkey is in a profile.

Parameters

profile

An IBusHotkeyProfile.

 

keyval

Keycode of the hotkey.

 

modifiers

Modifiers of the hotkey.

 

prev_keyval

Keycode of the hotkey.

 

prev_modifiers

Modifiers of the hotkey.

 

user_data

user data for signal "trigger".

 

Returns

0 if releasing a hotkey and the hotkey is not in the profile; an associated event otherwise.

See also: ::trigger


ibus_hotkey_profile_lookup_hotkey ()

GQuark
ibus_hotkey_profile_lookup_hotkey (IBusHotkeyProfile *profile,
                                   guint keyval,
                                   guint modifiers);

Parameters

profile

An IBusHotkeyProfile.

 

keyval

Keycode of the hotkey.

 

modifiers

Modifiers of the hotkey.

 

Returns

The event associated to the hotkey or 0 if the hotkey is not in the profile.

Types and Values

struct IBusHotkeyProfile

struct IBusHotkeyProfile;

An opaque data type representing an IBusHotkeyProfile.

Signal Details

The “trigger†signal

void
user_function (IBusHotkeyProfile *profile,
               guint              event,
               gpointer           user_data,
               gpointer           user_data)

Emitted when a hotkey is pressed and the hotkey is in profile. Implement the member function trigger() in extended class to receive this signal.

The last parameter, user_data is not actually a valid parameter. It is displayed because of GtkDoc bug.

Parameters

profile

An IBusHotkeyProfile.

 

event

An event in GQuark.

 

user_data

User data for callback.

 

user_data

user data set when the signal handler was connected.

 

Flags: Has Details

ibus-1.5.11/docs/reference/ibus/html/IBusPropList.html0000644000000000000000000003313012551655043017457 00000000000000 IBusPropList: IBus Reference Manual

IBusPropList

IBusPropList — An IBusProperty container.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── IBusObject
            ╰── IBusSerializable
                ╰── IBusPropList

Description

See_also: IBusProperty, IBusEngine

Functions

ibus_prop_list_new ()

IBusPropList *
ibus_prop_list_new ();

Create a new IBusPropList.

Returns

A newly allocated IBusPropList.


ibus_prop_list_append ()

void
ibus_prop_list_append (IBusPropList *prop_list,
                       IBusProperty *prop);

Append an IBusProperty to an IBusPropList, and increase reference.

Parameters

prop_list

An IBusPropList.

 

prop

IBusProperty to be append to prop_list .

 

ibus_prop_list_get ()

IBusProperty *
ibus_prop_list_get (IBusPropList *prop_list,
                    guint index);

Gets IBusProperty at given index. Borrowed reference.

Parameters

prop_list

An IBusPropList.

 

index

Index of an IBusPropList.

 

Returns

IBusProperty at given index, NULL if no such IBusProperty.

[transfer none]


ibus_prop_list_update_property ()

gboolean
ibus_prop_list_update_property (IBusPropList *prop_list,
                                IBusProperty *prop);

Update an IBusProperty in IBusPropList.

Parameters

prop_list

An IBusPropList.

 

prop

IBusProperty to be update.

 

Returns

TRUE if succeeded, FALSE otherwise.

Types and Values

IBusPropList

typedef struct {
    GArray *properties;
} IBusPropList;

An array of IBusProperties.

Members

GArray *properties;

GArray that holds IBusProperties.

 

IBusPropListClass

typedef struct {
    IBusSerializableClass parent;
} IBusPropListClass;

Class structure for IBusPropList.

Members

IBusSerializableClass parent;

The parent class.

 
ibus-1.5.11/docs/reference/ibus/trim.sed0000755000000000000000000000020212551654123014731 00000000000000#!/bin/sed -f /IBusObjectFlags/d; /IBUS_OBJECT_FLAGS/d; /IBUS_OBJECT_SET_FLAGS/d; /IBUS_OBJECT_UNSET_FLAGS/d; /IBus.*Private/d; ibus-1.5.11/docs/reference/ibus/ibus-docs.sgml0000644000000000000000000001230612551654345016050 00000000000000 IBus Reference Manual Intelligent Input Bus (IBus) 1.5.11 reference manual. The latest version of this documentation can be found on-line at https://github.com/ibus/ibus/wiki. Overview This manual is the API specification for the IBus. IBus is built upon GObject and D-Bus, so you may find that modules are named as classes and objects in the sense of GObject, and may D-Bus wrapper API. According to the puroposes of modules, we categorized them into following parts: Panel A IBus-panel is an UI which provides UI components such as language bar, property buttons and so on. Input method engine (IME) An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts. Configuration This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here. Communication Here lists the service communication functions. Internal Definition and functions for IBus internal use. Normally input method developers need only to read the first three parts. Panel (User Interfaces) These API pages directly related to user interfaces, such as pre-edit buffer, auxiliary text, language bar, button, radio boxes, and so on. Input method engine An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts. Configuration This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here. Communication Here lists the service communication functions. Internal Definition and functions for IBus internal use. Index Index of deprecated symbols ibus-1.5.11/docs/reference/ibus/ibus-docs.sgml.in0000644000000000000000000001231112551654123016443 00000000000000 IBus Reference Manual Intelligent Input Bus (IBus) @VERSION@ reference manual. The latest version of this documentation can be found on-line at https://github.com/ibus/ibus/wiki. Overview This manual is the API specification for the IBus. IBus is built upon GObject and D-Bus, so you may find that modules are named as classes and objects in the sense of GObject, and may D-Bus wrapper API. According to the puroposes of modules, we categorized them into following parts: Panel A IBus-panel is an UI which provides UI components such as language bar, property buttons and so on. Input method engine (IME) An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts. Configuration This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here. Communication Here lists the service communication functions. Internal Definition and functions for IBus internal use. Normally input method developers need only to read the first three parts. Panel (User Interfaces) These API pages directly related to user interfaces, such as pre-edit buffer, auxiliary text, language bar, button, radio boxes, and so on. Input method engine An Input method engine is an implementation of certain input method. Here lists essential classes and functions for input method engine building, such as engine specification, and class abstracts. Configuration This part lists functions for configuring IBus and engines. Since most configuration files are in XML format, XML handling functions are also listed here. Communication Here lists the service communication functions. Internal Definition and functions for IBus internal use. Index Index of deprecated symbols ibus-1.5.11/docs/reference/ibus/Makefile.in0000644000000000000000000007652012551654257015353 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # Copyright (c) 2015 Takao Fujiwara # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/reference/ibus ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = ibus-docs.sgml CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ibus-docs.sgml.in \ $(top_srcdir)/gtk-doc.make DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = ibus # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml # The directory containing the source code. Relative to $(srcdir). # gtk-doc will search all .c & .h files beneath here for inline comments # documenting the functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk DOC_SOURCE_DIR = $(top_srcdir)/src $(top_builddir)/src # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = --rebuild-sections # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/src/*.h CFILE_GLOB = $(top_srcdir)/src/*.c # Header files to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h IGNORE_HFILES = \ ibuscomposetable.h \ ibusconfigprivate.h \ ibusinternal.h \ keyname-table.h \ keysymdef.h \ ibusenumtypes.h \ stamp-ibusenumtypes.h \ ibusmarshalers.h \ stamp-ibusmarshalers.h \ $(NULL) # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = \ @GLIB2_CFLAGS@ \ @GOBJECT2_CFLAGS@ \ @GIO2_CFLAGS@ \ @DBUS_CFLAGS@ \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) GTKDOC_LIBS = \ @GLIB2_LIBS@ \ @GOBJECT2_LIBS@ \ @GIO2_LIBS@ \ @DBUS_LIBS@ \ $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ $(NULL) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) trim.sed DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt # clean-local: # rm -rf tmpl ${DOC_MODULE) CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \ gtkdoc-check.test *.stamp @GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt DISTCLEANFILES = $(DOC_MODULE)-sections.txt # Comment this out if you want 'make check' to test you doc status # and run some sanity checks @ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ @ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ @ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/ibus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/reference/ibus/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/gtk-doc.make $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): ibus-docs.sgml: $(top_builddir)/config.status $(srcdir)/ibus-docs.sgml.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am @ENABLE_GTK_DOC_FALSE@all-local: all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc @ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs @HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" @HAVE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs #TESTS = $(GTKDOC_CHECK) trim-build.stamp: scan-build.stamp $(AM_V_GEN) \ $(SED) -f $(srcdir)/trim.sed -i.bak \ $(builddir)/$(DOC_MODULE)-sections.txt && \ $(RM) $(builddir)/$(DOC_MODULE)-sections.txt.bak && \ touch trim-build.stamp tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-overrides.txt -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/docs/reference/ibus/Makefile.am0000644000000000000000000001164712551654123015331 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2007-2015 Red Hat, Inc. # Copyright (c) 2015 Takao Fujiwara # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=ibus # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # The directory containing the source code. Relative to $(srcdir). # gtk-doc will search all .c & .h files beneath here for inline comments # documenting the functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS= --rebuild-sections # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/src/*.h CFILE_GLOB=$(top_srcdir)/src/*.c # Header files to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h IGNORE_HFILES= \ ibuscomposetable.h \ ibusconfigprivate.h \ ibusinternal.h \ keyname-table.h \ keysymdef.h \ ibusenumtypes.h \ stamp-ibusenumtypes.h \ ibusmarshalers.h \ stamp-ibusmarshalers.h \ $(NULL) # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files= # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= \ @GLIB2_CFLAGS@ \ @GOBJECT2_CFLAGS@ \ @GIO2_CFLAGS@ \ @DBUS_CFLAGS@ \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) GTKDOC_LIBS= \ @GLIB2_LIBS@ \ @GOBJECT2_LIBS@ \ @GIO2_LIBS@ \ @DBUS_LIBS@ \ $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ $(NULL) # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += trim.sed # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt DISTCLEANFILES = $(DOC_MODULE)-sections.txt # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = cd $(srcdir) && \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif trim-build.stamp: scan-build.stamp $(AM_V_GEN) \ $(SED) -f $(srcdir)/trim.sed -i.bak \ $(builddir)/$(DOC_MODULE)-sections.txt && \ $(RM) $(builddir)/$(DOC_MODULE)-sections.txt.bak && \ touch trim-build.stamp tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-overrides.txt # clean-local: # rm -rf tmpl ${DOC_MODULE) CLEANFILES+= *.stamp -include $(top_srcdir)/git.mk ibus-1.5.11/docs/reference/ibus/ibus-overrides.txt0000644000000000000000000000000012551654545016765 00000000000000ibus-1.5.11/docs/reference/Makefile.in0000644000000000000000000005642012551654257014406 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/reference ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ ibus \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/reference/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/docs/reference/Makefile.am0000644000000000000000000000166112551654123014362 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SUBDIRS = \ ibus \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/docs/Makefile.in0000644000000000000000000005636712551654257012462 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ reference \ $(NULL) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/docs/Makefile.am0000644000000000000000000000166712551654123012432 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA SUBDIRS = \ reference \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.11/depcomp0000755000000000000000000005601612551654262011025 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ibus-1.5.11/Makefile.in0000644000000000000000000010735012551654253011513 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gconf-2.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = ibus-1.0.pc ibus.spec CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = src bindings util conf client tools data m4 po docs \ engine ui bus ibus setup am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/ibus-1.0.pc.in $(srcdir)/ibus.spec.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README compile config.guess \ config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DATE_DISPLAY = @DATE_DISPLAY@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DBUS_PYTHON_CFLAGS = @DBUS_PYTHON_CFLAGS@ DBUS_PYTHON_LIBS = @DBUS_PYTHON_LIBS@ DCONF_CFLAGS = @DCONF_CFLAGS@ DCONF_LIBS = @DCONF_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCONFTOOL = @GCONFTOOL@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO2_CFLAGS = @GIO2_CFLAGS@ GIO2_LIBS = @GIO2_LIBS@ GLIB2_CFLAGS = @GLIB2_CFLAGS@ GLIB2_LIBS = @GLIB2_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_LOCALE_DIR = @GLIB_LOCALE_DIR@ GLIB_MKENUMS = @GLIB_MKENUMS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ GOBJECT2_LIBS = @GOBJECT2_LIBS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ GTHREAD2_LIBS = @GTHREAD2_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_IM_MODULEDIR = @GTK2_IM_MODULEDIR@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_IM_MODULEDIR = @GTK3_IM_MODULEDIR@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IBUS_ABI_AGE = @IBUS_ABI_AGE@ IBUS_ABI_CURRENT = @IBUS_ABI_CURRENT@ IBUS_ABI_REVISION = @IBUS_ABI_REVISION@ IBUS_API_VERSION = @IBUS_API_VERSION@ IBUS_BINARY_VERSION = @IBUS_BINARY_VERSION@ IBUS_GIR_SCANNERFLAGS = @IBUS_GIR_SCANNERFLAGS@ IBUS_ICON_KEYBOARD = @IBUS_ICON_KEYBOARD@ IBUS_MAJOR_VERSION = @IBUS_MAJOR_VERSION@ IBUS_MICRO_VERSION = @IBUS_MICRO_VERSION@ IBUS_MINOR_VERSION = @IBUS_MINOR_VERSION@ IBUS_VERSION = @IBUS_VERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ ISOCODES_CFLAGS = @ISOCODES_CFLAGS@ ISOCODES_LIBS = @ISOCODES_LIBS@ ISOCODES_PREFIX = @ISOCODES_PREFIX@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON2 = @PYTHON2@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VALAC = @VALAC@ VALA_TARGET_GLIB_VERSION = @VALA_TARGET_GLIB_VERSION@ VAPIGEN = @VAPIGEN@ VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ VERSION = @VERSION@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ WAYLAND_LIBS = @WAYLAND_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpython2dir = @pkgpython2dir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py2overridesdir = @py2overridesdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = @ENABLE_UI_TRUE@UI_DIR = ui @ENABLE_ENGINE_TRUE@ENGINE_DIR = engine @ENABLE_SETUP_TRUE@SETUP_DIR = setup @ENABLE_PYTHON_LIBRARY_TRUE@PYTHON_LIB_DIRS = ibus @ENABLE_DAEMON_TRUE@DAEMON_DIR = \ @ENABLE_DAEMON_TRUE@ bus \ @ENABLE_DAEMON_TRUE@ $(NULL) SUBDIRS = \ src \ bindings \ util \ conf \ client \ tools \ data \ m4 \ po \ docs \ $(ENGINE_DIR) \ $(UI_DIR) \ $(DAEMON_DIR) \ $(PYTHON_LIB_DIRS) \ $(SETUP_DIR) \ $(NULL) ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = ibus-@IBUS_API_VERSION@.pc ibus_pc_in = ibus-@IBUS_API_VERSION@.pc.in EXTRA_DIST = \ autogen.sh \ $(ibus_pc_in) \ ibus.spec.in \ python-config.py \ xinput-ibus \ $(NULL) noinst_DIST = \ $(NULL) DISTCLEANFILES = \ po/stamp-it \ $(NULL) DISTCHECK_CONFIGURE_FLAGS = \ --enable-gtk-doc \ --disable-schemas-install \ --disable-introspection \ $(NULL) MAINTAINERCLEANFILES = \ $(srcdir)/ChangeLog \ $(NULL) GITIGNOREFILES = \ INSTALL \ aclocal.m4 \ compile \ config.guess \ config.h.in \ config.sub \ depcomp \ gtk-doc.make \ install-sh \ ltmain.sh \ missing \ mkinstalldirs \ py-compile \ stamp-h* \ $(NULL) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 ibus-1.0.pc: $(top_builddir)/config.status $(srcdir)/ibus-1.0.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ ibus.spec: $(top_builddir)/config.status $(srcdir)/ibus.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-data-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool clean-local cscope cscopelist-am ctags ctags-am \ dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \ dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-local distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA .PRECIOUS: Makefile install-data-hook: $(MKDIR_P) $(DESTDIR)${pkgdatadir}/engine dist-hook: if test -d .git ; then \ git log --name-status --date=iso > $(distdir)/ChangeLog ; \ fi distclean-local: if test "x$(srcdir)" = "x."; then :; else \ rm -f ChangeLog; \ fi rpm: dist @PACKAGE_NAME@.spec rpmbuild -bb \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`/rpm" \ --define "_srcrpmdir `pwd`/rpm" \ --define "_rpmdir `pwd`"/rpm \ --define "_specdir `pwd`/rpm" \ @PACKAGE_NAME@.spec srpm: dist @PACKAGE_NAME@.spec rpmbuild -bs \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`/rpm" \ --define "_srcrpmdir `pwd`/rpm" \ --define "_rpmdir `pwd`/rpm" \ --define "_specdir `pwd`/rpm" \ @PACKAGE_NAME@.spec .PHONY: debian/changelog debian/changelog: $(AM_V_GEN) \ ( \ . /etc/lsb-release; \ date=`date -R`; \ version=@VERSION@; \ serie=$(serie); \ if test -z "$$serie"; then \ serie=$$DISTRIB_CODENAME; \ fi; \ if test -z "$$release"; then \ release=1; \ fi; \ s=`cat debian/changelog.in`; \ eval "echo \"$${s}\""; \ ) > $@ ppa: dist debian/changelog $(AM_V_GEN) \ ( \ mkdir ppa; \ cd ppa; \ tar zxvf ../$(distdir).tar.gz ; \ cd $(distdir); \ cp -a ../../debian . ; \ cd debian; \ debuild -S -sa ; \ ) dpkg: dist debian/changelog $(AM_V_GEN) \ ( \ mkdir ppa; \ cd ppa; \ tar zxvf ../$(distdir).tar.gz ; \ cd $(distdir); \ cp -a ../../debian . ; \ cd debian; \ debuild -b -us -uc; \ ) clean-rpm: $(RM) -r "`uname -i`" clean-local: clean-rpm git-tag: git tag -s @PACKAGE_VERSION@ git-clean-tree: git clean -d -f -x -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ibus-1.5.11/Makefile.am0000644000000000000000000000714012551654123011472 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2010 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA NULL = if ENABLE_UI UI_DIR = ui endif if ENABLE_ENGINE ENGINE_DIR = engine endif if ENABLE_SETUP SETUP_DIR = setup endif if ENABLE_PYTHON_LIBRARY PYTHON_LIB_DIRS = ibus endif if ENABLE_DAEMON DAEMON_DIR = \ bus \ $(NULL) endif SUBDIRS = \ src \ bindings \ util \ conf \ client \ tools \ data \ m4 \ po \ docs \ $(ENGINE_DIR) \ $(UI_DIR) \ $(DAEMON_DIR) \ $(PYTHON_LIB_DIRS) \ $(SETUP_DIR) \ $(NULL) ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = ibus-@IBUS_API_VERSION@.pc ibus_pc_in = ibus-@IBUS_API_VERSION@.pc.in EXTRA_DIST = \ autogen.sh \ $(ibus_pc_in) \ ibus.spec.in \ python-config.py \ xinput-ibus \ $(NULL) noinst_DIST = \ $(NULL) DISTCLEANFILES = \ po/stamp-it \ $(NULL) install-data-hook: $(MKDIR_P) $(DESTDIR)${pkgdatadir}/engine DISTCHECK_CONFIGURE_FLAGS = \ --enable-gtk-doc \ --disable-schemas-install \ --disable-introspection \ $(NULL) dist-hook: if test -d .git ; then \ git log --name-status --date=iso > $(distdir)/ChangeLog ; \ fi distclean-local: if test "x$(srcdir)" = "x."; then :; else \ rm -f ChangeLog; \ fi MAINTAINERCLEANFILES = \ $(srcdir)/ChangeLog \ $(NULL) rpm: dist @PACKAGE_NAME@.spec rpmbuild -bb \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`/rpm" \ --define "_srcrpmdir `pwd`/rpm" \ --define "_rpmdir `pwd`"/rpm \ --define "_specdir `pwd`/rpm" \ @PACKAGE_NAME@.spec srpm: dist @PACKAGE_NAME@.spec rpmbuild -bs \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`/rpm" \ --define "_srcrpmdir `pwd`/rpm" \ --define "_rpmdir `pwd`/rpm" \ --define "_specdir `pwd`/rpm" \ @PACKAGE_NAME@.spec .PHONY: debian/changelog debian/changelog: $(AM_V_GEN) \ ( \ . /etc/lsb-release; \ date=`date -R`; \ version=@VERSION@; \ serie=$(serie); \ if test -z "$$serie"; then \ serie=$$DISTRIB_CODENAME; \ fi; \ if test -z "$$release"; then \ release=1; \ fi; \ s=`cat debian/changelog.in`; \ eval "echo \"$${s}\""; \ ) > $@ ppa: dist debian/changelog $(AM_V_GEN) \ ( \ mkdir ppa; \ cd ppa; \ tar zxvf ../$(distdir).tar.gz ; \ cd $(distdir); \ cp -a ../../debian . ; \ cd debian; \ debuild -S -sa ; \ ) dpkg: dist debian/changelog $(AM_V_GEN) \ ( \ mkdir ppa; \ cd ppa; \ tar zxvf ../$(distdir).tar.gz ; \ cd $(distdir); \ cp -a ../../debian . ; \ cd debian; \ debuild -b -us -uc; \ ) clean-rpm: $(RM) -r "`uname -i`" clean-local: clean-rpm git-tag: git tag -s @PACKAGE_VERSION@ git-clean-tree: git clean -d -f -x GITIGNOREFILES = \ INSTALL \ aclocal.m4 \ compile \ config.guess \ config.h.in \ config.sub \ depcomp \ gtk-doc.make \ install-sh \ ltmain.sh \ missing \ mkinstalldirs \ py-compile \ stamp-h* \ $(NULL) -include $(top_srcdir)/git.mk

IBusInputContext

IBusInputContext — IBus input context proxy object.

Stability Level

Stable, unless otherwise indicated

Types and Values

Object Hierarchy

    GObject
    ╰── GDBusProxy
        ╰── IBusProxy
            ╰── IBusInputContext

Implemented Interfaces

IBusInputContext implements GDBusInterface, GInitable and GAsyncInitable.

Description

An IBusInputContext is a proxy object of BusInputContext, which manages the context for input methods that supports text input in various natural languages.

Clients call the IBusInputContext to invoke BusInputContext, through which invokes IBusEngine.

Functions

ibus_input_context_new ()

IBusInputContext *
ibus_input_context_new (const gchar *path,
                        GDBusConnection *connection,
                        GCancellable *cancellable,
                        GError **error);

Creates a new IBusInputContext.

Parameters

path

The path to the object that emitting the signal.

 

connection

A GDBusConnection.

 

cancellable

A GCancellable or NULL.

 

error

Return location for error or NULL.

 

Returns

A newly allocated IBusInputContext.


ibus_input_context_new_async ()

void
ibus_input_context_new_async (const gchar *path,
                              GDBusConnection *connection,
                              GCancellable *cancellable,
                              GAsyncReadyCallback callback,
                              gpointer user_data);

Creates a new IBusInputContext asynchronously.

Parameters

path

The path to the object that emitting the signal.

 

connection

A GDBusConnection.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied. The callback should not be NULL.

 

user_data

The data to pass to callback.

 

ibus_input_context_new_async_finish ()

IBusInputContext *
ibus_input_context_new_async_finish (GAsyncResult *res,
                                     GError **error);

Finishes an operation started with ibus_input_context_new_async().

Parameters

res

A GAsyncResult obtained from the GAsyncReadyCallback pass to ibus_input_context_new_async().

 

error

Return location for error or NULL.

 

Returns

A newly allocated IBusInputContext.


ibus_input_context_get_input_context ()

IBusInputContext *
ibus_input_context_get_input_context (const gchar *path,
                                      GDBusConnection *connection);

Gets an existing IBusInputContext.

Parameters

path

The path to the object that emitting the signal.

 

connection

A GDBusConnection.

 

Returns

An existing IBusInputContext.

[transfer none]


ibus_input_context_get_input_context_async ()

void
ibus_input_context_get_input_context_async
                               (const gchar *path,
                                GDBusConnection *connection,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Gets an existing IBusInputContext asynchronously.

Parameters

path

The path to the object that emitting the signal.

 

connection

A GDBusConnection.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied. The callback should not be NULL.

 

user_data

The data to pass to callback.

 

ibus_input_context_get_input_context_async_finish ()

IBusInputContext *
ibus_input_context_get_input_context_async_finish
                               (GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_input_context_get_input_context_async().

Parameters

res

A GAsyncResult obtained from the GAsyncReadyCallback pass to ibus_input_context_get_input_context_async().

 

error

Return location for error or NULL.

 

Returns

An existing IBusInputContext.

[transfer none]


ibus_input_context_process_hand_writing_event ()

void
ibus_input_context_process_hand_writing_event
                               (IBusInputContext *context,
                                const gdouble *coordinates,
                                guint coordinates_len);

Pass a handwriting stroke to an input method engine.

In this API, a coordinate (0.0, 0.0) represents the top-left corner of an area for handwriting, and (1.0, 1.0) does the bottom-right. Therefore, for example, if a user writes a character 'L', the array would be something like [0.0, 0.0, 0.0, 1.0, 1.0, 1.0] and coordinates_len would be 6.

The function is usually called when a user releases the mouse button in a hand writing area.

see_also: “process-hand-writing-eventâ€

Parameters

context

An IBusInputContext.

 

coordinates

An array of gdouble (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]).

 

coordinates_len

The number of elements in the array. The number should be even and >= 4.

 

ibus_input_context_cancel_hand_writing ()

void
ibus_input_context_cancel_hand_writing
                               (IBusInputContext *context,
                                guint n_strokes);

Clear handwriting stroke(s) in the current input method engine.

see_also: “cancel-hand-writingâ€

Parameters

context

An IBusInputContext.

 

n_strokes

The number of strokes to be removed. Pass 0 to remove all.

 

ibus_input_context_process_key_event_async ()

void
ibus_input_context_process_key_event_async
                               (IBusInputContext *context,
                                guint32 keyval,
                                guint32 keycode,
                                guint32 state,
                                gint timeout_msec,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Pass the key event to input method engine.

Key symbols are characters/symbols produced by key press, for example, pressing "s" generates key symbol "s"; pressing shift-"s" generates key symbol "S". Same key on keyboard may produce different key symbols on different keyboard layout. e.g., "s" key on QWERTY keyboard produces "o" in DVORAK layout.

Unlike key symbol, keycode is only determined by the location of the key, and irrelevant of the keyboard layout.

Briefly speaking, input methods that expect certain keyboard layout should use keycode; otherwise keyval is sufficient. For example, Chewing, Cangjie, Wubi expect an en-US QWERTY keyboard, these should use keycode; while pinyin can rely on keyval only, as it is less sensitive to the keyboard layout change, DVORAK users can still use DVORAK layout to input pinyin.

Use ibus_keymap_lookup_keysym() to convert keycode to keysym in given keyboard layout.

see_also: “process-key-eventâ€

Parameters

context

An IBusInputContext.

 

keyval

Key symbol of a key event.

 

keycode

Keycode of a key event.

 

state

Key modifier flags.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_input_context_process_key_event_async_finish ()

gboolean
ibus_input_context_process_key_event_async_finish
                               (IBusInputContext *context,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_input_context_process_key_event_async().

Parameters

context

An IBusInputContext.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_input_context_process_key_event_async().

 

error

Return location for error or NULL.

 

Returns

TRUE if the key event is processed; FALSE otherwise or some errors happen and the error will be set.


ibus_input_context_process_key_event ()

gboolean
ibus_input_context_process_key_event (IBusInputContext *context,
                                      guint32 keyval,
                                      guint32 keycode,
                                      guint32 state);

Pass the key event to input method engine and wait for the reply from ibus (i.e. synchronous IPC).

Parameters

context

An IBusInputContext.

 

keyval

Key symbol of a key event.

 

keycode

Keycode of a key event.

 

state

Key modifier flags.

 

Returns

TRUE for successfully process the key; FALSE otherwise.

See also: ibus_input_context_process_key_event_async()


ibus_input_context_set_cursor_location ()

void
ibus_input_context_set_cursor_location
                               (IBusInputContext *context,
                                gint32 x,
                                gint32 y,
                                gint32 w,
                                gint32 h);

Set the cursor location of IBus input context asynchronously.

see_also: “set-cursor-locationâ€

Parameters

context

An IBusInputContext.

 

x

X coordinate of the cursor.

 

y

Y coordinate of the cursor.

 

w

Width of the cursor.

 

h

Height of the cursor.

 

ibus_input_context_set_capabilities ()

void
ibus_input_context_set_capabilities (IBusInputContext *context,
                                     guint32 capabilities);

Set the capabilities flags of client application asynchronously. When IBUS_CAP_FOCUS is not set, IBUS_CAP_PREEDIT_TEXT, IBUS_CAP_AUXILIARY_TEXT, IBUS_CAP_LOOKUP_TABLE, and IBUS_CAP_PROPERTY have to be all set. The panel component does nothing for an application that doesn't support focus.

see_also: “set-capabilitiesâ€

Parameters

context

An IBusInputContext.

 

capabilities

Capabilities flags of IBusEngine, see IBusCapabilite

 

ibus_input_context_property_activate ()

void
ibus_input_context_property_activate (IBusInputContext *context,
                                      const gchar *prop_name,
                                      guint32 state);

Activate the property asynchronously.

See also: “property_activateâ€

Parameters

context

An IBusInputContext.

 

prop_name

A property name (e.g. "InputMode.WideLatin")

 

state

A status of the property (e.g. PROP_STATE_CHECKED)

 

ibus_input_context_focus_in ()

void
ibus_input_context_focus_in (IBusInputContext *context);

Invoked when the client application get focus. An asynchronous IPC will be performed.

see_also: “focus_inâ€.

Parameters

context

An IBusInputContext.

 

ibus_input_context_focus_out ()

void
ibus_input_context_focus_out (IBusInputContext *context);

Invoked when the client application get focus. An asynchronous IPC will be performed.

see_also: “focus_outâ€.

Parameters

context

An IBusInputContext.

 

ibus_input_context_reset ()

void
ibus_input_context_reset (IBusInputContext *context);

Invoked when the IME is reset. An asynchronous IPC will be performed.

see_also: “resetâ€

Parameters

context

An IBusInputContext.

 

ibus_input_context_get_engine_async ()

void
ibus_input_context_get_engine_async (IBusInputContext *context,
                                     gint timeout_msec,
                                     GCancellable *cancellable,
                                     GAsyncReadyCallback callback,
                                     gpointer user_data);

An asynchronous IPC will be performed.

Parameters

context

An IBusInputContext.

 

timeout_msec

The timeout in milliseconds or -1 to use the default timeout.

 

cancellable

A GCancellable or NULL.

 

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't care about the result of the method invocation.

 

user_data

The data to pass to callback.

 

ibus_input_context_get_engine_async_finish ()

IBusEngineDesc *
ibus_input_context_get_engine_async_finish
                               (IBusInputContext *context,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with ibus_input_context_get_engine_async().

Parameters

context

An IBusInputContext.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to ibus_input_context_get_engine_async().

 

error

Return location for error or NULL.

 

Returns

An IME engine description for the context, or NULL.

[transfer none]


ibus_input_context_get_engine ()

IBusEngineDesc *
ibus_input_context_get_engine (IBusInputContext *context);

Gets an IME engine description for the context. A synchronous IPC will be performed.

Parameters

context

An IBusInputContext.

 

Returns

An IME engine description for the context, or NULL.

[transfer none]


ibus_input_context_set_engine ()

void
ibus_input_context_set_engine (IBusInputContext *context,
                               const gchar *name);

Invoked when the IME engine is changed. An asynchronous IPC will be performed.

Parameters

context

An IBusInputContext.

 

name

A name of the engine.

 

ibus_input_context_set_surrounding_text ()

void
ibus_input_context_set_surrounding_text
                               (IBusInputContext *context,
                                IBusText *text,
                                guint32 cursor_pos,
                                guint32 anchor_pos);

Parameters

context

An IBusInputContext.

 

text

An IBusText surrounding the current cursor on the application.

 

cursor_pos

Current cursor position in characters in text .

 

anchor_pos

Anchor position of selection in text .

 

ibus_input_context_needs_surrounding_text ()

gboolean
ibus_input_context_needs_surrounding_text
                               (IBusInputContext *context);

Check whether the current engine requires surrounding-text.

Parameters

context

An IBusInputContext.

 

Returns

TRUE if surrounding-text is needed by the current engine; FALSE otherwise.


ibus_input_context_set_content_type ()

void
ibus_input_context_set_content_type (IBusInputContext *context,
                                     guint purpose,
                                     guint hints);

Set content-type (primary purpose and hints) of the context. This information is particularly useful to implement intelligent behavior in engines, such as automatic input-mode switch and text prediction. For example, to restrict input to numbers, the client can call this function with purpose set to IBUS_INPUT_PURPOSE_NUMBER.

See also: “set-content-typeâ€

Parameters

context

An IBusInputContext.

 

purpose

Primary purpose of the input context, as an IBusInputPurpose.

 

hints

Hints that augment purpose , as an IBusInputHints.

 

Types and Values

struct IBusInputContext

struct IBusInputContext;

An opaque data type representing an IBusInputContext.

Signal Details

The “commit-text†signal

void
user_function (IBusInputContext *context,
               IBusText         *text,
               gpointer          user_data)

Emitted when the text is going to be committed.

(Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

text

Text to be committed.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “cursor-down-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to select next candidate of lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “cursor-up-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to select previous candidate of lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “delete-surrounding-text†signal

void
user_function (IBusInputContext *context,
               gint              offset,
               guint             n_chars,
               gpointer          user_data)

Emitted to delete surrounding text event from IME to client of IME.

Parameters

context

An IBusInputContext.

 

offset

the character offset from the cursor position of the text to be deleted. A negative value indicates a position before the cursor.

 

n_chars

the number of characters to be deleted.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “disabled†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted when an IME is disabled.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “enabled†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted when an IME is enabled.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “forward-key-event†signal

void
user_function (IBusInputContext *context,
               guint             keyval,
               guint             keycode,
               guint             modifiers,
               gpointer          user_data)

Emitted to forward key event from IME to client of IME.

Parameters

context

An IBusInputContext.

 

keyval

Key symbol of the keyboard event.

 

keycode

Key symbol of the keyboard event.

 

modifiers

Key modifier flags.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-auxiliary-text†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to hide auxiliary text.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to hide lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “hide-preedit-text†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to hide preedit text.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-down-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to view the next page of lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “page-up-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to view the previous page of lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “register-properties†signal

void
user_function (IBusInputContext *context,
               IBusPropList     *props,
               gpointer          user_data)

Emitted to register the properties in props .

(Note: The props object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

props

An IBusPropList that contains properties.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-auxiliary-text†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to show auxiliary text.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-lookup-table†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to show lookup table.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “show-preedit-text†signal

void
user_function (IBusInputContext *context,
               gpointer          user_data)

Emitted to show preedit text.

Parameters

context

An IBusInputContext.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-auxiliary-text†signal

void
user_function (IBusInputContext *context,
               IBusText         *text,
               gboolean          visible,
               gpointer          user_data)

Emitted to hide auxilary text.

(Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

text

An auxiliary text

 

visible

The visibility of text

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-lookup-table†signal

void
user_function (IBusInputContext *context,
               IBusLookupTable  *table,
               gboolean          visible,
               gpointer          user_data)

Emitted to update lookup table.

(Note: The table object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

table

An IBusLookupTable to be updated.

 

visible

Whether the table should be visible.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-preedit-text†signal

void
user_function (IBusInputContext *context,
               IBusText         *text,
               guint             cursor_pos,
               gboolean          visible,
               gpointer          user_data)

Emitted to update preedit text.

(Note: The text object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

text

Text to be updated.

 

cursor_pos

Cursor position.

 

visible

Whether the update is visible.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “update-property†signal

void
user_function (IBusInputContext *context,
               IBusProperty     *prop,
               gpointer          user_data)

Emitted to update the property prop .

(Note: The prop object is floating, and it will be released after the signal. If signal handler wants to keep the object, the handler should use g_object_ref_sink() to get the ownership of the object.)

Parameters

context

An IBusInputContext.

 

prop

The IBusProperty to be updated.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last